pax_global_header00006660000000000000000000000064131650121110014501gustar00rootroot0000000000000052 comment=519303bf34ef0b2d42b8d8299f6f3048400bafb5 AUTHORS000066400000000000000000000010051316501211100121110ustar00rootroot00000000000000Gnucap is primarily the work of Albert Davis. Here is a list of some of the contributors who have contributed more than a bug report: Dan McMahill - "autoconf" interface, NetBSD package Stuart Brorson - configuration mods Hamish Moffatt - Debian package Telford Tendys - documentation and convergence Dmitry Nadezhin - "electric" interface Simon Hoffe - Command line editing and history Gennady Serdyuk - lots of new work in progress Felix Salfelder - lots of new work in progress COPYING000066400000000000000000001045131316501211100121040ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ChangeLog000066400000000000000000001122501316501211100126200ustar00rootroot00000000000000Gnucap revision history ------------------------------------------------------------------ ------------------------------------------------------------------ Gnucap 0.34 release notes (02/01/2004) This is a bug fix and compatibility release. 1. Fix bug causing incorrect interpolation of backwards tables. 2. Fix tanh overflow bug. 3. Fix some parsing bugs. 4. Fix occasional "double load" bug. 5. Fix AC sweep with one point. 6. Transient start time really works. 7. Fix occasional assert fail after option short is changed. 8. Fix memory leak resulting from failure to delete unused common. 9. Fix a Z probe bug that sometimes gave wrong answers. 10. Fix a limiting bug that sometimes caused non-convergence. 11. Configure handles isnan. 12. Improvements to logic initialization. It is still not correct. ------------------------------------------------------------------ Gnucap 0.33 release notes (01/12/2003) This is a bug fix and compatibility release. 0.32 was not widely distributed due to password problems and a heavy work load, so the release notes are repeated after the current ones. New features: 1. Add inductance probes, like capacitor. Bug fixes: 1. Fix xprobe duplicate default arg bug - shows in g++3.2. 2. Fix bug that sometimes caused a crash when changing a model after analysis. 3. Fix bug that caused an assert to fail (debug build) after removing a probe from an element. 4. Fix a dumb typo hack bug ddHAS_READLINE. Now history and command line editing really works. It was working, but somehow the hack slipped into the release code. ------------------------------------------------------------------ Gnucap 0.32 release notes (09/30/2002) New features: 1. Series resistance in the diode. It took 5 minutes to do, so it is embarrasing that it wasn't done before. 2. History and command line editing, using Gnu Readline. Thanks to Simon Hoffe for sending me the patch. 3. More parameters in the BJT model. This gives it better compatibility with commercial simulators. These parameters are beyond Spice 3f5. 4. "M" parameter in diode, BJT and MOS devices. M is the number of parallel devices. Some commercial simulators have this. Changes that may or may not be improvements. 1. The definition of the transient option "UIC" has changed. It is now Spice compatible, which means to not attempt to do any solution or consistency check. Just apply the values, assuming anything that isn't specified is 0. The old behavior was to attempt a solution while holding the IC values. Bug fixes: 1. voltage sync bug. It still doesn't fix the MOS 2 convergence problem. 2. Fix memory leak in POLY components. 3. Fix bug in Fourier that sometimes causes overrun (crash) and time sync errors. 4. Modelgen: fix bug in list parsing. 5. Some changes to eliminate warnings when compiling with g++ 3.1. 6. Use Euler differentiation on first step, because trap used a value that cannot be known then. Usually, this doesn't make much difference, but there are a few cases where the error can get magnified and trigger trapezoidal ringing, leading to a totally bogus result. It most cases, you could hide it with small enough steps. These cases should work with default settings now. 7. Fix bug that sometimes caused incorrect handling of initial conditions (UIC), 8. Fix bug that caused continuing a transient analysis to give incorrect results. Significant internal changes: 1. The inductor uses all of the same support functions as the capacitor, including "integrate", which is now correctly called "differentiate". 2. Most of the code is in place for named nodes. It mostly works and can be turned on with the option "namednodes". It is off by default because it is not complete. Most likely, it will be finished in the next release. Some things that are still partially implemented: 1. BSIM models, charge effects, "alpha0" parameter. (computed then ignored) 2. Configure still doesn't handle everything. 3. The model compiler still requires too much raw coding. 4. Named nodes. If you set the option "namednodes", it will support named nodes, but some things don't work, so it is off by default. 5. The preliminary IBIS code is now included. For now, it is a standalone executable, that reads an IBIS file and generates a netlist. The netlist requires some editing to use, and is not fully compatible anyway. It is included in hopes of recruiting help in finishing the project. Bugs (nothing new, but needs repeating): 1. The transmission line initial conditions are not propagated until the transient analysis runs. 2. An occasional bogus calculation in MOSFETS occurs when a device is reversed. This sometimes causes nonconvergence. 3. The "modify" command with multiple arguments seems to take only the first one. It used to work, but is broken in this release. I am not sure when it broke. ------------------------------------------------------------------ Gnucap 0.31 release notes (03/25/2002) The most significant changes are the BJT model and "binning". New features: 1. BJT model. 2. "Binning" for all MOS models. 3. Internal element: non-quasi-static poly-capacitor. (needed by BJT). 4. Enhancements to the data structures and model compiler to support binning in general. 5. A line prefixed by "*>" is not ignored, in spite of the fact that "*" usually begins a comment. This is a deliberate incompatibility with Spice. If you prefix a line by "*>" it will be interpreted as a non-comment in Gnucap, but a comment in Spice. 6. Circuit line prefixes of ">" and command prefixes of "-->" are ignored. This is so you can copy and paste whole lines, without having to manually remove the prompt string. Changes that may or may not be improvements. 1. It is not the default to include stray resistance in device models. The option "norstray" will revert to the old behavior. This is only a change to the default value of "rstray". Significant internal changes: 1. The internal element non-quasi-static poly-capacitor actually works. It is used by the BJT model, and will eventually be used by MOSFET models. 2. There are now two poly_g devices: "CPOLY_G" and "FPOLY_G". There are interface differences that impact modeling. Previously, there was only one, which is equivalent to the "FPOLY_G". Some things that are still partially implemented: 1. BSIM models, charge effects, "alpha0" parameter. (computed then ignored) 2. Configure still doesn't handle everything. 3. The model compiler still requires too much raw coding. General comments: The new BJT model seems to pass the CircuitSim90 test cases as well as anything else, except where a missing feature prevented it from working. A few files would not run because of named nodes. One file (ring11) failed completely. This file also has MOSFETs, with level 2 models. The MOS level 2 model is not as robust as the BJT. I believe the problem is due to the voltage sync bug that still impacts the MOS model. Most of the models have has a reasonable amount of testing in DC, but inadequate testing in AC and transient. The BJT model has had more testing than the others in AC and transient. All differences (relative to other simulators) that were observed can be attributed to differences in transient step size control or tolerance checking. Bugs (nothing new, but needs repeating): 1. The transmission line initial conditions are not propagated until the transient analysis runs. ------------------------------------------------------------------ GNUCAP 0.30 release notes (10/29/2001) The primary effort has been to finish the model compiler, to the point where it can handle most modeling issues. The second change is to re-release as "gnucap", and add some configuration features to be more consistent with other GNU software. New features: 1. More complete model compiler. 2. "./configure" makes compiling more like other GNU software. Some things that are still partially implemented: 1. Internal element: non-quasi-static poly-capacitor. 2. BSIM models, charge effects, "alpha0" parameter. (computed then ignored) 3. Configure still doesn't handle everything. 4. The model compiler still requires too much raw coding. Bugs (nothing new, but needs repeating): 1. The transmission line initial conditions are not propagated until the transient analysis runs. ------------------------------------------------------------------ ACS 0.29 release notes (06/30/2001) The primary effort has been to implement IBIS, which is still not done. The changes here are mostly infrastructure changes needed to support IBIS. New features: 1. "Fit" function has choice of fit order and extrapolation. You can have order 0, 1, 2, or 3. 2. "Posy" has even and odd options, to determine what happens in the negative region. 3. Modelgen improvements. It now is useful for the whole device, sometimes. It now handles probes and the device side of the model. The diode uses it completely. There are still a few missing features needed for the MOSFET and BJT. 4. Spice-3 compatible semiconductor resistor and capacitor. 5. "Table" model statement. Improvements, bug fixes, etc. 1. Option "numdgt" really works. 2. Better error messages from modelgen. 3. Code changes for optimization of commons. This should reduce memory use, sometimes, by sharing commons. Common sharing is still not fully implemented. 4. Fix two bugs that sometimes caused problems after a "modify" or on a "fault". 5. Better handling of "vmin" and "vmax". It should be much less likely that limiting causes convergence to a nonsense result. Some things that are still partially implemented: 1. Internal element: non-quasi-static poly-capacitor. 2. BSIM models, charge effects, "alpha0" parameter. (computed then ignored) Bugs (nothing new, but needs repeating): 1. The transmission line initial conditions are not propagated until the transient analysis runs. 2. The makefile does not set up the proper link for the model compiler. You need to do it manually. 3. On some systems, you will get a warning from the linker that "the use of 'tmpnam' is dangerous". You can ignore this warning. ------------------------------------------------------------------ ACS 0.28 release notes (09/05/2000) New features: 1. New probes: diode G, mos IBD, IBS, GBD, GBS. 2. New options: "floor" and "vfloor". (Floor was in the manual, but not in the simulator.) Improvements, bug fixes, etc. 1. There is a change to the way behavioral modeling conditionals are handled. It should now be 100% compatible with SPICE, considering the subset that duplicates SPICE. There are still significant extensions beyond SPICE, particularly that you can have behavioral resistors, capacitors, inductors, etc. 2. Parameter default calculations are now done in a manner consistent with Spice 3f5. Previously, it was supposedly consistent with Spice 2g6. 3. A bug in calculation of threshold voltage of the level 6 model, for P channel devices, has been fixed. 4. A bug in calculation of Meyer capacitances when the device is reversed has been fixed. This bug sometimes caused a discontinuity at vds=0. 5. I have added some smoothing to the Meyer mos capacitor models. This improves convergence. The down side is that sometimes the answers are different. It is probably a little better, when considering closeness to reality, but it is still Meyer's model. 6. MOSFET parasitic diodes are now the same as those used in Spice. 7. There are subtle changes in the diode model. I think this usually improves convergence. 8. Charge calculation in Meyer capacitors and diode capacitiors is now supposedly Spice 3 compatible. 9. An error in BSIM3 scaling has been fixed. Some things that are still partially implemented: 1. Internal element: non-quasi-static poly-capacitor. 2. BSIM models, charge effects. Bugs (nothing new, but needs repeating): 1. The transmission line initial conditions are not propagated until the transient analysis runs. 2. The makefile does not set up the proper link for the model compiler. You need to do it manually. 3. A bad setting of "vmax" and "vmin" can lead to convergence to a nonsense result. It is not as bad now as it used to be. ------------------------------------------------------------------ ACS 0.27 release notes (06/03/2000) New features: 1. BSIM3 model, DC. They work for AC and transient analysis, but only the DC effects actually work. The next release should have the charge effects. For now, it fakes it with Meyer's model. 2. A first cut at a model compiler, to aid in development of new models. Models are described in a ".model" file, which is processed to automatically generate the ".h" and ".cc" files. This version fully handles the ".model" statement part of it, but leaves the device and common sections the old way. Eventually, the entire process will be automated. The old way still works. 3. "Fit" behavioral modeling function, which fits a curve to a set of data. You can specify the order of the fit, which is piecewise polynomials. For now, the order may be 1 (linear, like PWL) or 3 (cubic splines). You may also specify the boundary consitions. 4. More probes. Some things that are partially implemented: 1. Internal element: non-quasi-static poly-capacitor. It is needed by the BSIM3 and EKV models. Eventually, it will be available as a netlist item, but not yet. Bug fixes: 1. PWL could fail if there were duplicate points at the beginning. It still does, but gives a reasonable error message. 2. Some "dot commands" were ignored if there were spaces before the dot. This was particularly annoying if the line was supposed to be ".end" which should make it exit. It didn't, leaving it in interactive mode, a major annoyance in a script. Other improvements: 1. There is a change to the way integration in capacitors is done. It is now strictly based on charge (i = dq/dt). The old version was based on capacitance (i = C * dv/dt) which is strictly incorrect. The dC/dt term was missing (i = C * dv/dt + v * dC/dt). This is a non-issue when C is constant. 2. More documentation on internals. Changes that I think are improvements, but some may disagree: 1. The command line is a little different. In the old version, "acs file" would run it, and whether it exited or not depended on whether there was an ".end" line. Now, by default, it just loads the file in preparation for interactive use. If you want batch mode, say "acs -b file". 2. The regression suite is included in the standard distribution. Changes that are not really improvements: 1. Due to the model compiler, the build process is a little more complicated. To do a complete build, you must build the model compiler first, then the simulator. If you are not making any new models, you can probably get away with just building the simulator. This will change in a future release. Bugs: 1. The transmission line initial conditions are not propagated until the transient analysis runs. 2. The makefile does not set up the proper link for the model compiler. You need to do it manually. ------------------------------------------------------------------ ACS 0.26 release notes (02/02/2000) New features: 1. BSIM1, BSIM2 models -- DC only. They work for AC and transient analysis, but only the DC effects actually work. The next release should have the charge effects. 2. New elements: trans-capacitor voltage controlled capacitor voltage controlled conductance voltage controlled resistor This is a side effect of the BSIM work. 3. Optional new syntax, with type first so component labels can start with any letter, and the choice of components is no longer limited by the 26 letters. This was necessary for a clean syntax for #2. 4. Some new parameters on existing devices, also a side effect of the BSIM work. 5. The manual in HTML form. The manual source is still in LaTeX, which can be used to generate HTML, PDF, Postscript, or many other formats. Bug fixes: 1. An error causing truncation error to be underestimated has been fixed. Other improvements: 1. MOSFET model evaluation is a little faster, due to use of one of the new elements to replace several old ones. I have seen 40%, but 20% is more likely. The improvement is most evident on busy circuits, where the ACS speed enhancements based on latency exploitation contribute more overhead than their value, that is .. the type of circuit that has run faster in Spice than ACS. 2. More documentation on internals. Changes that I think are improvements, but some may disagree: 1. Truncation error based step control is disabled when Euler's method is selected. The justification for this is that the reason for selecting Euler's method is to avoid the artifacts of high order methods on "stiff" poles. Without this change, a "stiff" pole would cause an unreasonably small step size. This did not appear to be much of a problem in the old release because the use of an incorrect formula for estimating truncation error. A "stiff" pole is one that has a response so fast it can be thought of as instantaneous. 2. The "help" command, with its 4 year old help file, has been removed. The concept is really obsolete. With the HTML form of the manual, a full online manual is a better replacement. ------------------------------------------------------------------ ACS 0.25 release notes (11/04/99) New features: None! Bug fixes: 1. A name conflict that caused compile to fail with gcc 2.95 has been fixed. 2. A problem that caused switches to lose state when a simulation is stopped and restarted when a switch is in transition has been fixed. 3. Two unrelated problems with transmission lines have been fixed. (Short lines and lines in subcircuits.) Changes that may or may not be improvements: 1. Several queues have been added, to manage model evaluation scheduling. This is part of work on multi-rate and mixed-mode simulation, and it replaces the traditional bypass scheme. In this release, probably the only noticeable difference will be that it runs a little faster. Known bugs: 1. The help file has not been updated for 4 years. ------------------------------------------------------------------ ACS 0.24 release notes (08/21/99) New features: 1. Enhanced (now documented) behavioral modeling. 2. Transmission line in transient analysis. 3. More documentation of internals. 4. Better batch mode error handling. Bug fixes: 1. Control-C trap works. 2. A bug that could cause a crash when a device had an improper number of nodes has been fixed. It now issues a warning, and grounds the unspecified nodes. 3. A bug that could cause a crash when a model or subcircuit is deleted then accessed has been fixed. 4. A scoping bug that sometimes put subckt parts in the root circuit has been fixed. 5. A bug in "fanout" that listed internal subckt nodes incorrectly has been fixed. Changes that may or may not be improvements: 1. "Make2" files for some systems have been removed. These have not been tested in years, and ACS and the compilers have both evolved significantly, so any portability patches that old are probably completely wrong now. Known bugs: 1. The help file has not been updated for 4 years. ------------------------------------------------------------------ ACS 0.23 release notes (06/15/99) New features: 1. Level 6 mos model. 2. HSpice style PWL and POLY(1). 3. "Table" behavioral modeling function. 4. Mixed-mode digital initialization. The bug fixes: 1. The alarm range worked backwards, now fixed. 2. Keep track of commons better. 3. Improved mixed-mode simulation. It still has not been tested as well as I would like, but is better. Digital initialization works now. 4. Another case of "zero time step" has been fixed. This one was relatively benign, in that it only caused a single extra full evaluation, with immediate recovery to a normal step size. 5. "Z" probe gave wrong results when probing a voltage source. Other improvements: (?) 1. Some subtractions now de-noise the result, eliminating the tiny numbers that result from subtracting two nearly equal numbers. The threshold can be set by the option "roundofftol". It is best left set at 1e-13. This improves speed slightly because 0 will prevent a matrix reload, but any non-zero number will not. It improves convergence slightly because the tiny numbers (which result from numerical problems) tend to cause further numerical problems. These tiny numbers are an artifact of the machine math, and vary depending on optimization and machine implementation details. 2. MOS temperature effects are computed at run time, instead of at load time, so you can change the temperature after loading and get correct results. 3. The options for integration method have changed, and are more flexible. The default is still trapezoidal, but that may change in a future release. You can specify the mode individually for capacitors and inductors. The information is in the data structure for all components, but it isn't always parsed. A future release will let you specify it by component or by model. The names are Spectre compatible, not Spice compatible, because it is more flexible. The Spice names are accepted, but may not act the same as they do in Spice. Choices are: unknown, euler, euleronly, trap, traponly. Options accepted and coerced into something else are: gear2, gear2only, trapgear, trapeuler. In general, gear is treated as euler, and each element will use either euler or trap. The device choice wins over the option command choice, but "only" wins over non-only. 4. Logic device syntax is changed. There are two more nodes, so power, ground, and enable are passed in. Power and enable are not used (except possibly in subckt models) but are required for consistency. 5. In many (not all) cases, arbitrary limits, due to fixed size arrays, have been removed. 6. More rigorous testing. I actually have a regression suite now. It is still not rigorous enough. 7. More rigorous convergence criteria. This should solve some of the false convergence problems. ACS convergence criteria has always been more rigorous than Spice. The cosmetic changes: 1. Convert most containers to STL. 2. Complete migration to the "common" tree, and eliminating reference to the old C "x" structure extensions. 3. Rearrangement of MOS model hierarchy, to make it easier to install other models. (BSIM family is coming.) ------------------------------------------------------------------ ACS 0.22 release notes (10/16/98) This release contains a few bug fixes, and a few cosmetic changes to the code. The bug fixes: 1. Fixes convergence failures in circuits with linear inductors, linear mutual inductors, and linear current controlled sources. 2. Fixes a bypass problem, which shows as transient analysis failure with the message "very backward time step". 3. Failed assertion on switch. The cosmetic changes: 1. The "OMSTREAM" class, as a step in migrating the i/o to C++ style. 2. A cleaner event queue, using a generic heap class. That's really all. I have not been actively working on ACS, mostly due to employment at a semiconductor company in their "corporate CAD" department. This will change soon, because my new employer (a CAD tool vendor) says it is ok to work on ACS. ------------------------------------------------------------------ ACS 0.21 release notes (03/30/96) There are several changes, most of which are only visible in subtle ways from the outside. 1. The code is more conformant with the upcoming standard, particularly in the use of complex, templates, lifetime of temporaries, and for scope. This should fix problems compiling with g++ 2.7. 2. Element commons are freed properly. 3. The manner in which elements are loaded into the matrix is different, and should be faster for large circuits with latency. Model bypass is more complete, because it is no longer necessary to do anything with a latent model. It makes little difference for small circuits, and circuits that are mostly active. Speed gains on small circuits are offset by #4. 4. The bypass criteria are more strict. It was possible to get incorrect results through interaction between model evaluation bypass and iteration damping. This release will not bypass anything when damping is in effect. There is a slight speed penalty. 5. Logic devices work even when there is no analog model. The bug causing a failure in this case has been fixed. The "bug" (that could in a twisted sense be called a feature) that leads to random mapping on start-up is still there. The logic model still needs work. 6. The code is somewhat more object-oriented. Some classes have been changed to be more general. ------------------------------------------------------------------ ACS 0.20 release notes (11/22/95) This release adds the level-3 MOSFET model. It is Spice compatible. Actually, it was there a long time ago but was removed because it didn't work correctly. This one has been tested and seems to match Spice results, and have convergence characteristics a little better than Spice 2g6. Like the level 1 and 2 models, only Meyer's capacitance model is implemented. (like Spice 3). ------------------------------------------------------------------ ACS 0.19 release notes (10/31/95) This release offers "improved" convergence. Several new options have been added to control iteration damping. In some cases, the program will take a partial step in an attempt to tame the wild fluctuations that can occur during iteration with Newton's method. This version appears to be considerably more robust than Spice 2g6. Several test circuits that fail to converge on Spice do converge on ACS. The cost of this is sometimes slower convergence. It generally takes about 2 more iterations per step than the previous version. This can be turned off, using the "dampstrategy" option at a slight cost in robustness. See the manual on the options command for more information. ------------------------------------------------------------------ ACS 0.18 release notes (05/12/95) This release offers improved memory management and exception handling, primarily aimed at MSDOS systems. Bug fixes: 1. For all ... Out of memory exceptions are properly trapped. Version 0.17 would crash if it ran out of memory. Now you get a reasonable message. It was only a real problem on MSDOS systems. 2. MSDOS floating point exceptions are trapped. In 0.17, underflow exceptions and null floating point exceptions could sometimes cause an abort. I don't know why, but the 80287 can generate a null exception when apparently nothing is wrong. 3. MSDOS only: Evade underflow in exp(). A large negative argument to exp can give bogus results. This was a known (to me) in Microsoft C 5.1. Apparently Borland has the same behavior. It may be a hardware problem. The fix is to not call exp with an argument beyond -200, and return 0 instead. 4. Don't use "-fast-math" with g++. (Makefile change). It doesn't make any difference in speed, and it sometimes causes problems, particularly the one in #3 above. Performance improvements: 1. Most elements no longer store values from the past. Only inductors and capacitors do. This means that some probes are no longer available. Some other data has been moved to improve memory usage. This change increases the capacity of the MSDOS version by about 10 transistors. Unix systems will swap less. Other visible changes: 1. The method of attaching models to devices has been changed, to improve maintainability. There are a few noticeable side effects. a. The default models -d-, -n- are no longer available. These were not documented. b. Model names must now be unique. If you have a diode model named "foo", you may not also have a mosfet model named "foo". c. A diode can reference a mosfet model. The diode will be equivalent to the source-bulk diode in the mosfet. This is a byproduct of using C++ derived classes. The mosfet model is derived from the diode model. 2. Exception handling in batch mode is different. It is still not right. ------------------------------------------------------------------ ACS 0.17 release notes (04/21/95) The primary difference in this release is reorganization and C++. A side benefit is that it is slightly faster, and uses slightly less memory. (The program is bigger, but it stores data more efficiently, for a net improvement.) It is a transitional release, with some of the code still in C. I hope to have a full C++ version this summer. Bug fixes: 1. Voltage source (vs, vcvs, ccvs) probes (current, power, etc.) now really work. 2. Fixed bug that caused strange results with mutual inductance after other parts of the circuit are changed. 3. Fixed memory leak in subcircuits and complex devices. 4. Fixed bug that caused a crash when probed elements were deleted. ------------------------------------------------------------------ ACS 0.16 release notes (12/10/94) New features: 1. New components: current controlled switch, current controlled current source, current controlled voltage source. Any simple two terminal element (not a diode) can be used as a probe, not just a voltage source. 2. Diode transit time parameter works. 3. Mutual inductance. The coupled coils must be linear. Only pairs of coupled inductors are supported in this release. A future release will probably support multiply coupled inductors. Bug fixes: 1. Continuing a transient analysis now works as documented. ------------------------------------------------------------------ ACS 0.15 release notes (07/31/94) Version 0.15 is supposed to be a minimal bug fix release to 0.14, but does have one new component. 1. Some additional ports are supported, including VMS. An HP port is supplied as a user contribution, but I have not tested it. 2. New component: voltage controlled switch. Spice-3 compatible. 3. Fixed bug that caused unpredictable behavior (usually loss of a probe, sometimes a crash) after replacing a component. 4. Fixed bug that caused incorrect evaluation and initialization of logic devices when there is no analog model. 5. Fixed a bug in truncation error control that sometimes caused it to become a no-op. It still seems to usually work the same as Spice, except that ACS will actually use at least the time steps you ask for. Spice will pick all the steps and interpolate for the points you ask for. This will usually cause ACS to use more time steps than Spice, hence often slower simulations. 6. Fixed another bug in truncation error that sometimes caused a divide by zero. ------------------------------------------------------------------ ACS 0.14 release notes (07/05/94) Version 0.14 was supposed to be a minimal bug fix release to 0.13. The same bugs are still there and there are a few small additions mostly aimed at coping with convergence problems. 1. The truncation error formula was changed to use the third derivative of charge instead of the second derivative of current. These two numbers are theoretically equal, but in practice they are not. The second derivative of current uses 3 terms to compute by divided differences. The third derivative of charge uses 4 terms. Using the odd number of terms catches the error due to the oscillatory nature of the trapezoid rule. An even number of terms tends to lose this error. Also, using charge tends to mask it. So, I have changed it to a less accurate, more optimistic method, the same as Spice. It now seems to work about the same as Spice, in the sense that it usually chooses about the same step sizes. Strictly, the old method is "better" but it tends to run away on stiff poles, trying for excess accuracy that doesn't matter. Your comments on this matter are welcome. If you know of any good papers on this, please let me know. 2. The "stiff" option has been removed from the transient command. Instead, use the .options "trapezoid" or "gear". For now, "gear" implies first order and is equivalent to the old "stiff". (A cop-out.) Actually, for stiff poles you want a first order method because the error is lower. 3. You can specify the integration method individually on any capacitor or inductor. 4. A bug causing the MSDOS version (2 byte integers) to mess up probes of other than nodes was fixed. 5. A bug that sometimes caused it to perpetually repeat the same time step was fixed. (SPICE would have reported "time step too small" and stopped.) 6. A bug that messed up step control when a dormant model wakes up and finds out it has been sleeping too long has been fixed. 7. "Mosflags" and "diodeflags" are different and there are more of them. There are lots of them and they may be useful in taming convergence problems. They control the heuristics that are applied when there appears to be a convergence problem. I have yet to find a circuit that could not be made to converge by judicious application of the flags and options, but any one setting is no better than Spice, and many are worse. One combination of flags gives Spice style limiting, which more often than not makes convergence worse. 8. "vmax" and "vmin" options as part of convergence heuristics. The default value of "limit" now large enough to essentially remove it. These limits sometimes help convergence, but more often hurt. 9. The "damp" option actually works. 10. The diode "off" flag works correctly. 11. There is a new command "alarm" that prints a message when a value exceeds a range. The syntax is the same as the "plot" command. ------------------------------------------------------------------ ACS 0.13 release notes (03/11/94) Version 0.13 adds several new features and has several bug fixes and performance improvements. 1. Fourier analysis really works. The "Fourier" command does a transient analysis but prints the results in the frequency domain. It is similar to the Spice command of the same name but not exactly the same. It is significantly more accurate than Spice because the transient time steps are chosen for the best match to the Fast Fourier Transform. Considerably more flexibility is available than in Spice. 2. Transient time step control by truncation error (finally). 3. Several options have been added to display diagnostics. 4. Fixed the default value for idsat, issat, ad, and as in the mos-diode. In 0.12, the default area was 1 square meter, which gave mosfet capacitors in the 500 uf range. This sometimes caused strange results. 5. Added some node probes, mostly for diagnostic use. 6. Fixed the "F" probe on linear elements. (Capacitor charge, inductor flux, admittance current, resistor voltage) It used to give an obviously bogus answer. Other changes: 1. Some general changes in the interest of improving code quality in general. 2. Function headers are in ANSI style, rather than K&R style. This version will compile as either C or C++. Future versions will require a C++ compiler. ------------------------------------------------------------------ ACS 0.12 release notes (10/09/93) Version 0.12 is a maintenance release. It adds no features (except Ultrix support) but fixes several bugs and changes some porting details. It should be easier to port this version than previous versions. The bug fixes are significant enough that you should upgrade to 0.12 even if you are not having any problems. ------------------------------------------------------------------ ACS 0.11 release notes (07/26/93) Version 0.11 fixes a few bugs in 0.10. 0.10 was supposed to be posted on alt.sources but due to a problem with the feed it never happened. New features: 1. New MOSFET and diode probes. All information available from the Spice 2 "op" analysis is now available as probes. For MOSFET these include cbd, cbs, cgsovl, cgdovl, cgbovl, cgs, cgd, cgb, vdsat, vth. Other (non-spice) new probes include cgst, cgdt, cgbt. (cgst = Cgs total = cgsovl + cgs.) These were available before by probing the value of the internal element but it was less convenient. Now it is simple and has the same name as in Spice. These probes are also available in transient analysis, so you can see (for example) the dynamic variations in capacitance. Bugs fixed: 1. Pass arguments to tr_volts and family by pointer instead of the whole structure. This is less likely to tickle a bug in Microsoft C. The MSDOS version of ACS 0.10 crashed frequently due to this bug. (Strictly, this is a Microsoft-C bug, not an ACS bug but the effect is the same.) 2. The AC "Z" probes work again. They were broken in 0.10. 3. The size of the buffer for text plots is increased allowing support for wider screens. The old version would crash if you did plots with outwidth set to wider than 128. The fix is to make it bigger, with a new constant MAXWIDTH, and trap the width setting bigger than MAXWIDTH. The current max is 256 for MSDOS and 512 for unix. The plotting code should probably be redone. 4. Width is narrower by 1 so setting width to 80 won't leave blank lines on an 80 column screen. 5. MOSFET capacitance now matches Spice (Meyer model) 6. Level 1 model linear region gds calculation was wrong, but close enough to often go unnoticed. It is correct and matches Spice now. 7. The value of an AC source now is compatible with Spice. That is, plain value is the DC-tran value. In old versions of ACS a plain value applied to all analyses including AC. You needed to prefix the value with "DC" to make it not apply to AC. Actually, it worked as documented. Now it works like Spice, which makes more sense. This was a major source of strange results in AC analysis. ------------------------------------------------------------------ ------------------------------------------------------------------ INSTALL000066400000000000000000000021771316501211100121050ustar00rootroot00000000000000Installation Instructions ************************* This program does not use "autoconf" but rather uses a simple script that provides a subset with a similar interface. In most cases, you can do: ======= ./configure make sudo make install ======= The scripts are recursive, so you can cd to any of the subdirectories and do the same. By default, it installs in /usr/local . To change it, you can specify a prefix: ./configure --prefix=/usr/share If you have already compiled it, you do not need to recompile to change the install directory. Just ./configure and make install. Other targets: "make clean" removes object files. "make debug" builds a development version with additional debugging code enabled. It runs about 2x slower than the standard build. "make depend" builds the files "Make.depend" which are used to decide what to rebuild. You need to do this only if you modify the code in a way that changes what files are included by #include. "make tags" builds cross reference files that can be used by some editors, such as emacs, to navigate the code. "make manifest" builds a list of the files included in a distribution. Make3000066400000000000000000000067161316501211100117420ustar00rootroot00000000000000#$Id: Make3 2016/04/19 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ # Part 3 of a Makefile #------------------------------------------------------------------------ tags: $(HDRS) $(SRCS) etags --c++ $(HDRS) $(SRCS) #------------------------------------------------------------------------ checkout: co $(RAW) #------------------------------------------------------------------------ install-debug : install install : $(INSTALL_FILES) $(DATA_FILES) echo ================== mkdir -p $(DESTDIR)$(INSTALL_DIR) cp $(INSTALL_FILES) $(DESTDIR)$(INSTALL_DIR) [ -z "$(INSTALL_DATA_DIR)" ] || \ mkdir -p $(DESTDIR)$(INSTALL_DATA_DIR) [ -z "$(INSTALL_DATA_FILES)" ] || \ cp $(INSTALL_DATA_FILES) $(DESTDIR)$(INSTALL_DATA_DIR) [ -z "$(INSTALL_SYSCONF_DIR)" ] || \ mkdir -p $(DESTDIR)$(INSTALL_SYSCONF_DIR) [ -z "$(INSTALL_SYSCONF_FILES)" ] || \ cp $(INSTALL_SYSCONF_FILES) $(DESTDIR)$(INSTALL_SYSCONF_DIR) #------------------------------------------------------------------------ uninstall : (cd $(DESTDIR)$(INSTALL_DIR) ; rm $(INSTALL_FILES)) #------------------------------------------------------------------------ #unclean: # rm $(ALL) #------------------------------------------------------------------------ backup: -mkdir BACKUP cp $(RAW) BACKUP #------------------------------------------------------------------------ depend: Make.depend Make.depend: $(SRCS) $(HDRS) $(CCC) -MM $(CCFLAGS) $(SRCS) > Make.depend #----------------------------------------------------------------------------- date: date "+#define PATCHLEVEL \"`git branch | awk '/\*/ { print $$2; }'` %Y.%m.%d\"" \ >patchlev.h #----------------------------------------------------------------------------- header-check: -$(CCC) -I../include -o /dev/null $(RAW_HDRS) #----------------------------------------------------------------------------- manifest: MANIFEST MANIFEST: $(DISTFILES) echo $(DISTFILES) | sed 's/ /\n/g' >MANIFEST #----------------------------------------------------------------------------- md5sums: MD5SUMS MD5SUMS: $(DISTFILES) md5sum $(DISTFILES) | grep -v MD5SUMS >MD5SUMS #----------------------------------------------------------------------------- mostlyclean: rm -rf $(MOSTLYCLEANFILES) rm -f */*.o */*.obj */*.h */*.cc clean: rm -rf $(CLEANFILES) rm -f */*.o */*.obj */*.h */*.cc distclean: rm -rf $(DISTCLEANFILES) rm -f */*.o */*.obj */*.h */*.cc rm -f *~ \#*\# maintainer-clean: rm -rf $(MAINTAINERCLEANFILES) rm -f */*.o */*.obj */*.h */*.cc rm -f *~ \#*\# #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- Makefile000066400000000000000000000041511316501211100125060ustar00rootroot00000000000000 gnucap: nothing #(cd include; ${MAKE} gnucap) (cd lib; ${MAKE} -k) (cd modelgen; ${MAKE} -k) (cd main; ${MAKE} -k) (cd apps; ${MAKE} -k) debug: #(cd include; ${MAKE} debug) (cd lib; ${MAKE} debug) (cd modelgen; ${MAKE} debug) (cd main; ${MAKE} debug) (cd apps; ${MAKE} debug) g++: #(cd include; ${MAKE} g++) (cd lib; ${MAKE} g++) (cd modelgen; ${MAKE} g++) (cd main; ${MAKE} g++) (cd apps; ${MAKE} g++) mingw: #(cd include; ${MAKE} mingw) (cd lib; ${MAKE} mingw) (cd modelgen; ${MAKE} mingw) (cd main; ${MAKE} mingw) (cd apps; ${MAKE} mingw) clean: #(cd include; ${MAKE} clean) (cd lib; ${MAKE} clean) (cd modelgen; ${MAKE} clean) (cd main; ${MAKE} clean) (cd apps; ${MAKE} clean) -rm *~ \#*\# depend: #(cd include; ${MAKE} depend) (cd lib; ${MAKE} depend) (cd modelgen; ${MAKE} depend) (cd main; ${MAKE} depend) (cd apps; ${MAKE} depend) tags: #(cd include; ${MAKE} tags) (cd lib; ${MAKE} tags) (cd modelgen; ${MAKE} tags) (cd main; ${MAKE} tags) (cd apps; ${MAKE} tags) unconfig: #(cd include; ${MAKE} unconfig) (cd lib; ${MAKE} unconfig) (cd modelgen; ${MAKE} unconfig) (cd main; ${MAKE} unconfig) (cd apps; ${MAKE} unconfig) install: nothing (cd include; ${MAKE} install) (cd lib; ${MAKE} install) (cd modelgen; ${MAKE} install) (cd main; ${MAKE} install) (cd apps; ${MAKE} install) install-debug: nothing (cd include; ${MAKE} install-debug) (cd lib; ${MAKE} install-debug) (cd modelgen; ${MAKE} install-debug) (cd main; ${MAKE} install-debug) (cd apps; ${MAKE} install-debug) uninstall: nothing (cd include; ${MAKE} uninstall) (cd lib; ${MAKE} uninstall) (cd modelgen; ${MAKE} uninstall) (cd main; ${MAKE} uninstall) (cd apps; ${MAKE} uninstall) manifest: (cd include; ${MAKE} manifest) (cd lib; ${MAKE} manifest) (cd modelgen; ${MAKE} manifest) (cd main; ${MAKE} manifest) (cd apps; ${MAKE} manifest) header-check: (cd include; ${MAKE} header-check) (cd lib; ${MAKE} header-check) (cd modelgen; ${MAKE} header-check) (cd main; ${MAKE} header-check) (cd apps; ${MAKE} header-check) date: (cd include; ${MAKE} date) checkin: $(MAKE) date -git commit -a nothing: Makefile.template000066400000000000000000000125741316501211100143300ustar00rootroot00000000000000#$Id: Makefile.template $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ # In most cases you can just type "make" to build it. # Generally, you will want "make your-system". # Look in this file for the choices. # If yours is not here, look for a similar one and copy. # The special configurations listed here allow you to do multiple builds # from the same source directory, and patch some problems. #----------------------------------------------------------------------------- # The default is to use the makefile built by "configure" default: nothing -mkdir O cat Make1 Make2 ../Make3 Make.depend >O/Makefile (cd O; ${MAKE} -k) #----------------------------------------------------------------------------- # The most common configuration is g++ # This should work if it is properly installed # and has the proper libraries and headers. # It is optimized for speed. Debugging is off. g++: nothing -mkdir O cat Make1 Make2.g++ ../Make3 Make.depend >O/Makefile (cd O; ${MAKE} -k) #----------------------------------------------------------------------------- # This one makes a "debug" build ... # Asserts and some tracing is turned on. # It prints a trace when "untested" code is exercised. # "Untested" means the regressions don't test it. # It doesn't mean TOTALLY untested. debug: nothing -mkdir O-DEBUG cat Make1 Make2.Debug ../Make3 Make.depend >O-DEBUG/Makefile (cd O-DEBUG; ${MAKE} -k) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # MS Windows using mingw32 mingw: nothing -mkdir MSW cat Make1 Make2.mingw32 ../Make3 Make.depend >MSW/Makefile (cd MSW; ${MAKE} -k) #----------------------------------------------------------------------------- tags: nothing cat Make1 Make2 ../Make3 >Make.aux (${MAKE} tags -f Make.aux) #----------------------------------------------------------------------------- depend: nothing cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux depend #----------------------------------------------------------------------------- checkin: nothing cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux checkin #----------------------------------------------------------------------------- checkout: nothing cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux checkout #----------------------------------------------------------------------------- install: nothing ${MAKE} default (cd O; ${MAKE} install) #----------------------------------------------------------------------------- install-debug: nothing ${MAKE} debug (cd O-DEBUG; ${MAKE} install) #----------------------------------------------------------------------------- uninstall: nothing cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux uninstall #----------------------------------------------------------------------------- # Note that the /usr/local directory is overwritten by configure. not_install: nothing if test -d /usr/local/bin; then \ cp O/gnucap /usr/local/bin/gnucap; \ else \ mkdir -p /usr/local/bin && \ cp O/gnucap /usr/local/bin/gnucap; \ fi #----------------------------------------------------------------------------- not_uninstall: clean -rm /usr/local/bin/gnucap #----------------------------------------------------------------------------- unconfig: rm -f Makefile #----------------------------------------------------------------------------- date: nothing cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux date #----------------------------------------------------------------------------- header-check: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux header-check #----------------------------------------------------------------------------- manifest: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux manifest #----------------------------------------------------------------------------- md5sums: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux md5sums #----------------------------------------------------------------------------- mostlyclean: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux mostlyclean clean: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux clean distclean: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux distclean maintainer-clean: cat Make1 Make2 ../Make3 >Make.aux ${MAKE} -f Make.aux maintainer-clean #----------------------------------------------------------------------------- nothing: #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- NEWS000066400000000000000000000000001316501211100115320ustar00rootroot00000000000000README000066400000000000000000000023751316501211100117340ustar00rootroot00000000000000Readme for development snapshot 2013-04-23 This is a development snapshot. As such, there may be problems due to new work. This snapshot splits the code into sections "lib", "apps", "main". "main" is a simple main program "gnucap" that dynamically links to libgnucap. "lib" is the core library "libgnucap.so", required for all programs in the gnucap collection. This library can also be used with different front-ends, possibly in other languages. "apps" is a set of plugins that are loaded by default. It builds "libgnucap-default-plugins.so". The ".cc" files here are mostly independent of each other. To add or remove one of them from the build, just edit "Make1" and recompile. Alternatively, any of them can be extracted and built separately. "modelgen" is the old model compiler, which now links to libgnucap.so. Installation (still "make install") installs the parts as expected. It also installs the header files in $PREFIX/include/gnucap, to build plugins. Although it does not use autoconf, the configure/make procedure is the same as it would be with autoconf. Model plugin tarballs have not been updated yet, but have been repackaged for date consistency. This snapshot lifts the biggest block that has been getting in the way of a stable release. apps/000077500000000000000000000000001316501211100120105ustar00rootroot00000000000000apps/Make.depend000066400000000000000000001362101316501211100140510ustar00rootroot00000000000000d_mos1.o: d_mos1.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos1.h d_mos123.h d_mos_base.h d_mos.h d_diode.h \ ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_mos2.o: d_mos2.cc ../include/l_compar.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_denoise.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/globals.h ../include/l_dispatcher.h ../include/e_base.h \ ../include/l_stlextra.h ../include/ap.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/m_matrix.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_card.h d_mos2.h d_mos123.h \ d_mos_base.h d_mos.h d_diode.h ../include/u_sdp.h ../include/e_node.h \ ../include/e_subckt.h ../include/e_model.h d_mos3.o: d_mos3.cc ../include/l_denoise.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/l_stlextra.h \ ../include/ap.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos3.h d_mos123.h d_mos_base.h d_mos.h d_diode.h \ ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_mos4.o: d_mos4.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos4.h d_mos_base.h d_mos.h d_diode.h \ ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_mos5.o: d_mos5.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos5.h d_mos_base.h d_mos.h d_diode.h \ ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_mos6.o: d_mos6.cc ../include/l_denoise.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/l_stlextra.h \ ../include/ap.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos6.h d_mos123.h d_mos_base.h d_mos.h d_diode.h \ ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_mos7.o: d_mos7.cc ../include/l_compar.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_denoise.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/globals.h ../include/l_dispatcher.h ../include/e_base.h \ ../include/l_stlextra.h ../include/ap.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/m_matrix.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_card.h d_mos7.h d_mos_base.h \ d_mos.h d_diode.h ../include/u_sdp.h ../include/e_node.h \ ../include/e_subckt.h ../include/e_model.h d_mos8.o: d_mos8.cc ../include/l_compar.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_denoise.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/globals.h ../include/l_dispatcher.h ../include/e_base.h \ ../include/l_stlextra.h ../include/ap.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/m_matrix.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_card.h d_mos8.h d_mos_base.h \ d_mos.h d_diode.h ../include/u_sdp.h ../include/e_node.h \ ../include/e_subckt.h ../include/e_model.h d_mos123.o: d_mos123.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos123.h d_mos_base.h d_mos.h d_diode.h \ ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_mos_base.o: d_mos_base.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_mos_base.h d_mos.h d_diode.h ../include/u_sdp.h \ ../include/e_node.h ../include/e_subckt.h ../include/e_model.h d_mos.o: d_mos.cc ../include/u_limit.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/e_storag.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/ap.h \ ../include/e_cardlist.h ../include/e_card.h d_mos_base.h d_mos.h \ d_diode.h ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h ../include/globals.h ../include/l_dispatcher.h \ ../include/e_elemnt.h d_bjt.o: d_bjt.cc ../include/u_limit.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_bjt.h d_diode.h ../include/u_sdp.h \ ../include/e_node.h ../include/e_subckt.h ../include/e_model.h d_diode.o: d_diode.cc ../include/e_aux.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_compar.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/e_storag.h ../include/e_elemnt.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/e_card.h \ ../include/globals.h ../include/l_dispatcher.h ../include/e_elemnt.h \ d_diode.h ../include/u_sdp.h ../include/e_node.h ../include/e_subckt.h \ ../include/e_model.h d_admit.o: d_admit.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_cap.o: d_cap.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_storag.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_cccs.o: d_cccs.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_ccsrc.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_ccvs.o: d_ccvs.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_ccsrc.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_coil.o: d_coil.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_subckt.h ../include/e_compon.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/e_ccsrc.h ../include/e_elemnt.h \ ../include/e_node.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_storag.h d_cs.o: d_cs.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_poly_g.o: d_poly_g.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_poly_cap.o: d_poly_cap.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/e_storag.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/m_matrix.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_card.h d_res.o: d_res.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_switch.o: d_switch.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_model.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/e_card.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h d_trln.o: d_trln.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/constant.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/l_compar.h \ ../include/m_matrix.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_card.h d_vcg.o: d_vcg.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_vcr.o: d_vcr.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_vcvs.o: d_vcvs.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_vs.o: d_vs.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h d_meter.o: d_meter.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/u_xprobe.h bm_complex.o: bm_complex.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h bm_exp.o: bm_exp.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/u_lang.h ../include/bm.h bm_fit.o: bm_fit.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/m_spline.h ../include/bm.h bm_generator.o: bm_generator.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h bm_model.o: bm_model.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_model.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h ../include/e_compon.h \ ../include/u_sim_data.h ../include/l_compar.h ../include/m_matrix.h \ ../include/u_time_pair.h bm_poly.o: bm_poly.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h bm_posy.o: bm_posy.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h bm_pulse.o: bm_pulse.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/u_lang.h ../include/bm.h bm_pwl.o: bm_pwl.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/m_interp.h ../include/bm.h bm_sffm.o: bm_sffm.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/l_denoise.h ../include/u_lang.h \ ../include/bm.h bm_sin.o: bm_sin.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/u_lang.h ../include/l_denoise.h \ ../include/bm.h bm_tanh.o: bm_tanh.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h bmm_table.o: bmm_table.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/m_spline.h ../include/e_model.h \ ../include/bm.h bmm_semi.o: bmm_semi.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_model.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/constant.h \ ../include/e_cardlist.h ../include/e_card.h ../include/bm.h \ ../include/e_compon.h ../include/u_sim_data.h ../include/l_compar.h \ ../include/m_matrix.h ../include/u_time_pair.h c_clear.o: c_clear.cc ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/globals.h ../include/l_dispatcher.h \ ../include/l_stlextra.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/ap.h c_comand.o: c_comand.cc ../include/constant.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/c_comand.h \ ../include/e_card.h ../include/e_base.h ../include/globals.h \ ../include/l_dispatcher.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h c_delete.o: c_delete.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_cardlist.h ../include/c_comand.h ../include/e_card.h c_exp.o: c_exp.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/m_expression.h ../include/m_base.h ../include/constant.h \ ../include/c_comand.h ../include/e_card.h c_genrat.o: c_genrat.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/ap.h ../include/c_comand.h \ ../include/e_card.h c_help.o: c_help.cc ../include/l_dispatcher.h ../include/e_base.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_stlextra.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/c_comand.h ../include/e_card.h ../include/globals.h \ ../include/l_dispatcher.h c_list.o: c_list.cc ../include/e_cardlist.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/u_lang.h \ ../include/e_base.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/c_comand.h \ ../include/e_card.h ../include/globals.h ../include/l_dispatcher.h \ ../include/l_stlextra.h ../include/ap.h c_measure.o: c_measure.cc ../include/u_parameter.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/m_expression.h \ ../include/m_base.h ../include/ap.h ../include/constant.h \ ../include/e_cardlist.h ../include/u_function.h ../include/e_base.h \ ../include/c_comand.h ../include/e_card.h ../include/globals.h \ ../include/l_dispatcher.h ../include/l_stlextra.h c_modify.o: c_modify.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/u_cardst.h ../include/c_comand.h c_param.o: c_param.cc ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/u_parameter.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_expression.h ../include/m_base.h ../include/ap.h \ ../include/constant.h ../include/e_cardlist.h ../include/globals.h \ ../include/l_dispatcher.h ../include/l_stlextra.h c_prbcmd.o: c_prbcmd.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/u_prblst.h ../include/u_probe.h \ ../include/globals.h ../include/l_dispatcher.h ../include/ap.h c_status.o: c_status.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/u_status.h ../include/l_timer.h \ ../include/c_comand.h ../include/e_card.h ../include/e_base.h \ ../include/globals.h ../include/l_dispatcher.h ../include/ap.h c_sweep.o: c_sweep.cc ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/globals.h ../include/l_dispatcher.h \ ../include/l_stlextra.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/ap.h c_sim.o: c_sim.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/globals.h ../include/l_dispatcher.h \ ../include/ap.h c_system.o: c_system.cc ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/globals.h ../include/l_dispatcher.h \ ../include/l_stlextra.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/ap.h s__init.o: s__init.cc ../include/e_cardlist.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/u_status.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/l_timer.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/u_opt.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/s__.h ../include/c_comand.h \ ../include/e_card.h ../include/e_base.h s__out.o: s__out.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/u_status.h ../include/l_timer.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_prblst.h ../include/u_probe.h \ ../include/e_base.h ../include/declare.h ../include/s__.h \ ../include/c_comand.h ../include/e_card.h s__solve.o: s__solve.cc ../include/e_cardlist.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/u_status.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/l_timer.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/u_opt.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/s__.h ../include/c_comand.h ../include/e_card.h s_ac.o: s_ac.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/u_status.h ../include/l_timer.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/u_prblst.h ../include/u_probe.h \ ../include/s__.h ../include/c_comand.h ../include/e_card.h s_dc.o: s_dc.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_status.h ../include/l_timer.h ../include/u_prblst.h \ ../include/u_probe.h ../include/l_compar.h ../include/u_cardst.h \ ../include/e_compon.h ../include/u_sim_data.h ../include/constant.h \ ../include/m_matrix.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/e_elemnt.h ../include/e_node.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/s__.h \ ../include/c_comand.h s_fo.o: s_fo.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/u_status.h ../include/l_timer.h \ ../include/m_phase.h ../include/declare.h ../include/u_prblst.h \ ../include/u_probe.h ../include/s_tr.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/s__.h ../include/c_comand.h ../include/e_card.h s_tr.o: s_tr.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/u_status.h ../include/l_timer.h \ ../include/s_tr.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/e_cardlist.h ../include/s__.h \ ../include/c_comand.h ../include/e_card.h s_tr_set.o: s_tr_set.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/u_prblst.h ../include/u_probe.h \ ../include/e_base.h ../include/ap.h ../include/s_tr.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/s__.h \ ../include/c_comand.h ../include/e_card.h s_tr_swp.o: s_tr_swp.cc ../include/u_time_pair.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/u_sim_data.h ../include/l_compar.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/u_status.h \ ../include/l_timer.h ../include/declare.h ../include/s_tr.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/s__.h \ ../include/c_comand.h ../include/e_card.h ../include/e_base.h lang_spice.o: lang_spice.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_status.h ../include/l_timer.h \ ../include/c_comand.h ../include/e_card.h ../include/d_dot.h \ ../include/d_coment.h ../include/e_subckt.h ../include/e_compon.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/u_lang.h ../include/d_logic.h ../include/e_model.h \ ../include/e_elemnt.h ../include/e_node.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/bm.h lang_spectre.o: lang_spectre.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/c_comand.h ../include/e_card.h \ ../include/d_dot.h ../include/d_coment.h ../include/e_subckt.h \ ../include/e_compon.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/m_matrix.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_model.h ../include/u_lang.h lang_verilog.o: lang_verilog.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/c_comand.h ../include/e_card.h \ ../include/d_dot.h ../include/d_coment.h ../include/e_subckt.h \ ../include/e_compon.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/m_matrix.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_model.h ../include/u_lang.h func_core.o: func_core.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/constant.h ../include/e_cardlist.h ../include/u_function.h measure_eval.o: measure_eval.cc ../include/u_parameter.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/m_expression.h ../include/m_base.h ../include/ap.h \ ../include/constant.h ../include/e_cardlist.h ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/l_stlextra.h \ ../include/u_function.h measure_max.o: measure_max.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h measure_min.o: measure_min.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h measure_slewrate.o: measure_slewrate.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/l_compar.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/constant.h \ ../include/e_cardlist.h ../include/m_wave.h ../include/l_denoise.h \ ../include/m_interp.h ../include/m_cpoly.h ../include/u_function.h measure_cross.o: measure_cross.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h measure_integral.o: measure_integral.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h measure_average.o: measure_average.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h measure_rms.o: measure_rms.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h measure_at.o: measure_at.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/constant.h ../include/e_cardlist.h \ ../include/m_wave.h ../include/l_denoise.h ../include/m_interp.h \ ../include/m_cpoly.h ../include/u_function.h signon.o: signon.cc ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/patchlev.h apps/Make1000066400000000000000000000125331316501211100126750ustar00rootroot00000000000000#$Id: Make1 2016/09/17 $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ TARGET = gnucap-default-plugins #------------------------------------------------------------------------ INSTALL_FILES = $(TARGET)$(TARGET_EXT) #------------------------------------------------------------------------ INSTALL_DIR = $(PREFIX)/lib/gnucap #------------------------------------------------------------------------ DELETED = #------------------------------------------------------------------------ # These source files can be omitted, and supplied as plugins. # device models defined in high level .model files MODELS = \ d_mos1.model d_mos2.model d_mos3.model \ d_mos4.model d_mos5.model d_mos6.model d_mos7.model d_mos8.model \ d_mos123.model d_mos_base.model d_mos.model \ d_bjt.model d_diode.model # device models hand coded in C++ D_SRCS = \ d_admit.cc d_cap.cc d_cccs.cc d_ccvs.cc d_coil.cc \ d_cs.cc d_poly_g.cc d_poly_cap.cc d_res.cc d_switch.cc \ d_trln.cc d_vcg.cc d_vcr.cc d_vcvs.cc d_vs.cc \ d_meter.cc # behavioral modeling functions BM_SRCS = \ bm_complex.cc bm_exp.cc bm_fit.cc bm_generator.cc \ bm_model.cc bm_poly.cc bm_posy.cc bm_pulse.cc bm_pwl.cc bm_sffm.cc \ bm_sin.cc bm_tanh.cc bmm_table.cc bmm_semi.cc # utility commands, usually one file per command # some have multiple commands in a file C_SRCS = \ c_clear.cc c_comand.cc c_delete.cc c_exp.cc c_genrat.cc \ c_help.cc \ c_list.cc c_measure.cc c_modify.cc c_param.cc c_prbcmd.cc \ c_status.cc c_sweep.cc c_sim.cc c_system.cc # simulation commands, usually multiple files for one command S_SRCS = \ s__init.cc s__out.cc s__solve.cc \ s_ac.cc s_dc.cc s_fo.cc \ s_tr.cc s_tr_set.cc s_tr_swp.cc # netlist languages LANG_SRCS = \ lang_spice.cc lang_spectre.cc lang_verilog.cc # parameter functions FUNC_SRCS = \ func_core.cc measure_eval.cc \ measure_max.cc measure_min.cc measure_slewrate.cc measure_cross.cc \ measure_integral.cc measure_average.cc measure_rms.cc measure_at.cc # other stuff OTHER_SRCS = \ signon.cc #------------------------------------------------------------------------ RAW_SRCS = \ $(D_SRCS) \ $(BM_SRCS) \ $(C_SRCS) \ $(S_SRCS) \ $(LANG_SRCS) \ $(FUNC_SRCS) \ $(OTHER_SRCS) #------------------------------------------------------------------------ RAW_OTHER = Make1 Make2.g++ Make2.Debug Make2.mingw32 configure test_readline.cc #------------------------------------------------------------------------ RAW = $(RAW_HDRS) $(RAW_SRCS) $(RAW_OTHER) $(MODELS) #------------------------------------------------------------------------ #------------------------------------------------------------------------ IMPORTED_SRCS = IMPORTED_HDRS = IMPORTED_OTHER = IMPORTED = $(IMPORTED_SRCS) $(IMPORTED_HDRS) $(IMPORTED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_SRCS = ${MODELS:.model=.cc} GENERATED_HDRS = ${MODELS:.model=.h} GENERATED_OTHER = Make.aux GENERATED = $(GENERATED_HDRS) $(GENERATED_SRCS) $(GENERATED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_DIST = Make.depend IMPORTED_DIST = $(IMPORTED) DISTFILES = $(RAW) $(GENERATED_DIST) $(IMPORTED_DIST) #------------------------------------------------------------------------ #------------------------------------------------------------------------ SRCS = $(IMPORTED_SRCS) $(GENERATED_SRCS) $(RAW_SRCS) HDRS = $(RAW_HDRS) $(GENERATED_HDRS) $(IMPORTED_HDRS) OBJS = ${SRCS:.cc=.o} TARGET_DEPENDS = $(OBJS) $(RAW) $(MODELS) #------------------------------------------------------------------------ #------------------------------------------------------------------------ MOSTLYCLEANFILES = $(OBJS) $(GENERATED) CLEANFILES = $(MOSTLYCLEANFILES) DISTCLEANFILES = $(CLEANFILES) MAINTAINERCLEANFILES = $(DISTCLEANFILES) #------------------------------------------------------------------------ #------------------------------------------------------------------------ LIBPATH = `pwd | sed 's/apps/lib/g'` MODELGEN = `pwd | sed 's/apps/modelgen/g'`/gnucap-modelgen #------------------------------------------------------------------------ %.h : %.model (export LD_LIBRARY_PATH=$(LIBPATH); $(MODELGEN) -h $<) #------------------------------------------------------------------------ %.cc : %.model (export LD_LIBRARY_PATH=$(LIBPATH); $(MODELGEN) -cc $<) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- apps/Make2.Debug000066400000000000000000000072251316501211100137250ustar00rootroot00000000000000#$Id: Make2.Debug 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++, debugging, a little optimization # Running the program will give a spew of line markers for debugging. CCC = g++ TARGET_EXT = .so CCFLAGS = \ -fPIC \ -DHAVE_LIBREADLINE \ -DUNIX -g -O0 -I. -I../../include -DTRACE_UNTESTED \ -Wall -Wextra \ -Wswitch-enum -Wundef -Wpointer-arith -Woverloaded-virtual \ -Wcast-qual -Wcast-align -Wpacked -Wshadow -Wconversion \ -Winit-self -Wmissing-include-dirs -Winvalid-pch \ -Wvolatile-register-var -Wstack-protector \ -Wlogical-op -Wvla -Woverlength-strings -Wsign-conversion #last line not in 4.1 LIBS = \ LDFLAGS = -shared %.SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # warnings turned off, because they warn of nothing wrong # 4.3 #-Wswitch-default -- lack of default is correct with enum #-Wfloat-equal -- warns on NA, div by zero trap #-Wpadded -- a bool in a class is enough #-Wredundant-decls -- in both header and func is an error check #-Wmissing-declarations -- pascal style #-Wmissing-noreturn -- warns when always throws exception #-Wunreachable-code -- warns even if reachable .. compiler bug?? #-Waggregate-return -- warns even if passed by reference #-Wunsafe-loop-optimizations -- if can't unroll a loop #-Winline #-Wdisabled-optimization -- -O0 disables optimization, so it warns # 4.2 #-Wpadded -- a bool in a class is enough #-Winline #-Waggregate-return -- warns even if passed by reference #-Wfloat-equal -- warns on NA, div by zero trap #-Wredundant-decls -- in both header and func is an error check #-Wunsafe-loop-optimizations -- warns on any loop with variable count # warnings turned off, because of the public headers #-Wunreachable-code -- didn't use nonportable syntax to hide #-Wmissing-noreturn -- didn't use nonportable syntax to hide # warnings that should be on, but ... #-Wshadow -- lambda functions #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "debug" version, with extra warnings and run-time tracing. # If you get errors or warnings, make a copy of it and modify that. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ apps/Make2.g++000066400000000000000000000042171316501211100132510ustar00rootroot00000000000000#$Id: Make2.g++ 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++. CCC = g++ TARGET_EXT = .so CCFLAGS = \ -fPIC \ -DUNIX -O3 -DNDEBUG -I. -I../include -I../../include -W LIBS = \ LDFLAGS = -shared .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "release" version, optimized with run-time tracing removed. # If you get errors or warnings, make a copy of it and modify that. # For the first cut, use "Make2.Debug" as the start for more tracing, # or "Make2.Trace" for an extreme amount of tracing. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ apps/Make2.mingw32000066400000000000000000000031361316501211100141620ustar00rootroot00000000000000#$Id: Make2.mingw32 2016/05/15 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. CCC = i586-mingw32msvc-g++ DLLTOOL = i586-mingw32msvc-dlltool TARGET_EXT = .dll CCFLAGS = \ -O2 -DNDEBUG -I. -I../../include LIBS = -lgnucap LDFLAGS = -shared -L../../lib/MSW .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET)$(TARGET_EXT) #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ #------------------------------------------------------------ apps/bm_complex.cc000066400000000000000000000101641316501211100144460ustar00rootroot00000000000000/*$Id: bm_complex.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling complex value * used with tc, etc, and conditionals */ //testing=script 2006.07.13 #include "globals.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class EVAL_BM_COMPLEX : public EVAL_BM_ACTION_BASE { private: COMPLEX _value; explicit EVAL_BM_COMPLEX(const EVAL_BM_COMPLEX& p); public: explicit EVAL_BM_COMPLEX(int c=0); ~EVAL_BM_COMPLEX() {} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_COMPLEX(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void tr_eval(ELEMENT*)const; void ac_eval(ELEMENT*)const; std::string name()const {return "complex";} bool ac_too()const {untested();return true;} bool parse_numlist(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_COMPLEX::EVAL_BM_COMPLEX(int c) :EVAL_BM_ACTION_BASE(c), _value(NOT_INPUT) { } /*--------------------------------------------------------------------------*/ EVAL_BM_COMPLEX::EVAL_BM_COMPLEX(const EVAL_BM_COMPLEX& p) :EVAL_BM_ACTION_BASE(p), _value(p._value) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_COMPLEX::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_COMPLEX* p = dynamic_cast(&x); bool rv = p && _value == p->_value && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_COMPLEX::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name() << '(' << _value.real() << ',' << _value.imag() << ')'; EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_COMPLEX::tr_eval(ELEMENT* d)const { tr_finish_tdv(d, _value.real()); } /*--------------------------------------------------------------------------*/ void EVAL_BM_COMPLEX::ac_eval(ELEMENT* d)const { d->_ev = _value; ac_final_adjust_with_temp(&(d->_ev)); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_COMPLEX::parse_numlist(CS& cmd) { unsigned here = cmd.cursor(); double real = NOT_VALID; double imag = 0.; cmd >> real >> imag; if (cmd.gotit(here)) { _value = COMPLEX(real,imag); return true; }else{ untested(); return false; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_COMPLEX p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "complex", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_exp.cc000066400000000000000000000165621316501211100136030ustar00rootroot00000000000000/*$Id: bm_exp.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * SPICE compatible EXP */ //testing=script 2005.10.06 #include "globals.h" #include "e_elemnt.h" #include "u_lang.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_iv (NOT_INPUT); const double _default_pv (NOT_INPUT); const double _default_td1 (0); const double _default_tau1 (0); const double _default_td2 (0); const double _default_tau2 (0); const double _default_period(BIGBIG); /*--------------------------------------------------------------------------*/ class EVAL_BM_EXP : public EVAL_BM_ACTION_BASE { private: PARAMETER _iv; // initial value PARAMETER _pv; // pulsed value PARAMETER _td1; // rise delay PARAMETER _tau1; // rise time constant PARAMETER _td2; // fall delay PARAMETER _tau2; // fall time constant PARAMETER _period; // repeat period PARAMETER _end; // marks the end of the list explicit EVAL_BM_EXP(const EVAL_BM_EXP& p); public: explicit EVAL_BM_EXP(int c=0); ~EVAL_BM_EXP() {} private: // override vitrual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_EXP(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; TIME_PAIR tr_review(COMPONENT*)const; std::string name()const {return "exp";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_EXP::EVAL_BM_EXP(int c) :EVAL_BM_ACTION_BASE(c), _iv(_default_iv), _pv(_default_pv), _td1(_default_td1), _tau1(_default_tau1), _td2(_default_td2), _tau2(_default_tau2), _period(_default_period), _end(NOT_VALID) { } /*--------------------------------------------------------------------------*/ EVAL_BM_EXP::EVAL_BM_EXP(const EVAL_BM_EXP& p) :EVAL_BM_ACTION_BASE(p), _iv(p._iv), _pv(p._pv), _td1(p._td1), _tau1(p._tau1), _td2(p._td2), _tau2(p._tau2), _period(p._period), _end(NOT_VALID) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_EXP::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_EXP* p = dynamic_cast(&x); bool rv = p && _iv== p->_iv && _pv== p->_pv && _td1== p->_td1 && _tau1== p->_tau1 && _td2== p->_td2 && _tau2== p->_tau2 && _period== p->_period && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_EXP::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name(); print_pair(o, lang, "iv", _iv); print_pair(o, lang, "pv", _pv); print_pair(o, lang, "td1", _td1); print_pair(o, lang, "tau1", _tau1); print_pair(o, lang, "td2", _td2); print_pair(o, lang, "tau2", _tau2); print_pair(o, lang, "period",_period, _period.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_EXP::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _iv.e_val(_default_iv, Scope); _pv.e_val(_default_pv, Scope); _td1.e_val(_default_td1, Scope); _tau1.e_val(_default_tau1, Scope); _td2.e_val(_default_td2, Scope); _tau2.e_val(_default_tau2, Scope); _period.e_val(_default_period, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_EXP::tr_eval(ELEMENT* d)const { double ev = _iv; for (double time = d->_sim->_time0; time >= 0; time -= _period) { if (time > _td1) { ev += (_pv - _iv) * (1. - exp(-(time-_td1)/_tau1)); }else{ } if (time > _td2) { ev += (_iv - _pv) * (1. - exp(-(time-_td2)/_tau2)); }else{ } } tr_finish_tdv(d, ev); } /*--------------------------------------------------------------------------*/ TIME_PAIR EVAL_BM_EXP::tr_review(COMPONENT* d)const { double time = d->_sim->_time0; time += d->_sim->_dtmin * .01; // hack to avoid duplicate events from numerical noise double raw_time = time; if (0 < _period && _period < BIGBIG) { time = fmod(time,_period); }else{ } double time_offset = raw_time - time; double dt = NEVER; if (time > _td2) { d->_time_by.min_event(_period + time_offset); dt = (_tau2 > 0) ? _tau2 : NEVER; }else if (time > _td1) { d->_time_by.min_event(_td2 + time_offset); dt = (_tau1 > 0) ? _tau1 : NEVER; }else if (d->_sim->_time0 < _period) { d->_time_by.min_event(_td1 + time_offset); dt = NEVER; }else{ d->_time_by.min_event(_td1 + time_offset); dt = (_tau2 > 0) ? _tau2 : NEVER; } d->_time_by.min_error_estimate(d->_sim->_time0 + dt); return d->_time_by; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_EXP::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (PARAMETER* i = &_iv; i < &_end; ++i) { PARAMETER val(NOT_VALID); cmd >> val; if (cmd.stuck(&here)) { break; }else{ *i = val; untested(); } } if (cmd.gotit(start)) { untested(); } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_EXP::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "iv", &_iv) || Get(cmd, "pv", &_pv) || Get(cmd, "td1", &_td1) || Get(cmd, "tau1", &_tau1) || Get(cmd, "td2", &_td2) || Get(cmd, "tau2", &_tau2) || Get(cmd, "period", &_period) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_EXP p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "exp", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_fit.cc000066400000000000000000000164361316501211100135710ustar00rootroot00000000000000/*$Id: bm_fit.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * cubic spline bm function */ //testing=script 2006.04.18 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "m_spline.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const int _default_order (3); const double _default_below (NOT_INPUT); const double _default_above (NOT_INPUT); const double _default_delta (NOT_INPUT); const int _default_smooth(0); /*--------------------------------------------------------------------------*/ class EVAL_BM_FIT : public EVAL_BM_ACTION_BASE { private: PARAMETER _order; PARAMETER _below; PARAMETER _above; PARAMETER _delta; PARAMETER _smooth; std::vector,PARAMETER > > _table; SPLINE* _spline; explicit EVAL_BM_FIT(const EVAL_BM_FIT& p); public: explicit EVAL_BM_FIT(int c=0); ~EVAL_BM_FIT(); private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_FIT(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; std::string name()const {return "fit";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_FIT::EVAL_BM_FIT(int c) :EVAL_BM_ACTION_BASE(c), _order(_default_order), _below(_default_below), _above(_default_above), _delta(_default_delta), _smooth(_default_smooth), _table(), _spline(0) { } /*--------------------------------------------------------------------------*/ EVAL_BM_FIT::EVAL_BM_FIT(const EVAL_BM_FIT& p) :EVAL_BM_ACTION_BASE(p), _order(p._order), _below(p._below), _above(p._above), _delta(p._delta), _smooth(p._smooth), _table(p._table), _spline(0) { } /*--------------------------------------------------------------------------*/ EVAL_BM_FIT::~EVAL_BM_FIT() { delete _spline; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_FIT::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_FIT* p = dynamic_cast(&x); bool rv = p && _order == p->_order && _below == p->_below && _above == p->_above && _delta == p->_delta && _smooth == p->_smooth && _table == p->_table && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_FIT::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name() << '('; for (std::vector,PARAMETER > >:: const_iterator p = _table.begin(); p != _table.end(); ++p) { o << p->first << ',' << p->second << ' '; } o << ')'; print_pair(o, lang, "order", _order); print_pair(o, lang, "below", _below, _below.has_hard_value()); print_pair(o, lang, "above", _above, _above.has_hard_value()); print_pair(o, lang, "delta", _delta, _delta.has_hard_value()); print_pair(o, lang, "smooth",_smooth,_smooth.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_FIT::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _order.e_val(_default_order, Scope); _below.e_val(_default_below, Scope); _above.e_val(_default_above, Scope); _delta.e_val(_default_delta, Scope); _smooth.e_val(_default_smooth, Scope); for (std::vector,PARAMETER > >:: iterator p = _table.begin(); p != _table.end(); ++p) { p->first.e_val(0, Scope); p->second.e_val(0, Scope); } double last = -BIGBIG; for (std::vector,PARAMETER > >:: iterator p = _table.begin(); p != _table.end(); ++p) { if (last > p->first) {untested(); throw Exception_Precalc("FIT table is out of order: (" + to_string(last) + ", " + to_string(p->first) + ")\n"); }else{ } last = p->first; } delete _spline; double below = _below.has_hard_value() ? _below : NOT_INPUT; double above = _above.has_hard_value() ? _above : NOT_INPUT; _spline = new SPLINE(_table, below, above, _order); } /*--------------------------------------------------------------------------*/ void EVAL_BM_FIT::tr_eval(ELEMENT* d)const { d->_y[0] = _spline->at(d->_y[0].x); tr_final_adjust(&(d->_y[0]), d->f_is_value()); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_FIT::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (;;) { unsigned start_of_pair = here; std::pair, PARAMETER > p; //cmd >> key >> value; cmd >> p.first; // key if (cmd.stuck(&here)) { // no more, graceful finish break; }else{ cmd >> p.second; // value if (cmd.stuck(&here)) { // ran out, but already have half of the pair // back up one, hoping somebody else knows what to do with it cmd.reset(start_of_pair); break; }else{ _table.push_back(p); } } } if (cmd.gotit(start)) { }else{ untested(); } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_FIT::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "order", &_order) || Get(cmd, "below", &_below) || Get(cmd, "above", &_above) || Get(cmd, "delta", &_delta) || Get(cmd, "smooth",&_smooth) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_FIT p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "fit", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_generator.cc000066400000000000000000000100651316501211100147650ustar00rootroot00000000000000/*$Id: bm_generator.cc 2015.01.08 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling simple value * used with tc, etc, and conditionals */ //testing=script 2015.01.08 //BUG// no step control //BUG// encapsulation violation: _sim->_genout #include "globals.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class EVAL_BM_GENERATOR : public EVAL_BM_ACTION_BASE { private: explicit EVAL_BM_GENERATOR(const EVAL_BM_GENERATOR& p); public: explicit EVAL_BM_GENERATOR(int c=0); ~EVAL_BM_GENERATOR() {} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_GENERATOR(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void tr_eval(ELEMENT*)const; void ac_eval(ELEMENT*)const; std::string name()const {return "generator";} bool ac_too()const {return true;} bool parse_numlist(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_GENERATOR::EVAL_BM_GENERATOR(int c) :EVAL_BM_ACTION_BASE(c) { } /*--------------------------------------------------------------------------*/ EVAL_BM_GENERATOR::EVAL_BM_GENERATOR(const EVAL_BM_GENERATOR& p) :EVAL_BM_ACTION_BASE(p) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_GENERATOR::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_GENERATOR* p = dynamic_cast(&x); if (p) { }else{untested(); } bool rv = p && EVAL_BM_ACTION_BASE::operator==(x); if (rv) {untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_GENERATOR::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name(); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_GENERATOR::tr_eval(ELEMENT* d)const { tr_finish_tdv(d, d->_sim->_genout); } /*--------------------------------------------------------------------------*/ void EVAL_BM_GENERATOR::ac_eval(ELEMENT* d)const { d->_ev = 1; ac_final_adjust_with_temp(&(d->_ev)); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_GENERATOR::parse_numlist(CS& cmd) { unsigned here = cmd.cursor(); PARAMETER new_value(NOT_VALID); cmd >> new_value; if (cmd.gotit(here)) { _scale = new_value; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_GENERATOR p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "gen|generator", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_model.cc000066400000000000000000000117071316501211100141030ustar00rootroot00000000000000/*$Id: bm_model.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling ".model" stub * accepts an unknown name for later linking to a .model */ //testing=script 2006.07.13 #include "globals.h" #include "e_model.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class EVAL_BM_MODEL : public EVAL_BM_ACTION_BASE { private: std::string _arglist; COMMON_COMPONENT* _func; explicit EVAL_BM_MODEL(const EVAL_BM_MODEL& p); public: explicit EVAL_BM_MODEL(int c=0); ~EVAL_BM_MODEL() {detach_common(&_func);} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_MODEL(*this);} void parse_common_obsolete_callback(CS&); void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void expand(const COMPONENT*); COMMON_COMPONENT* deflate() {return (_func) ? _func->deflate() : this;} void tr_eval(ELEMENT*d)const {assert(_func); _func->tr_eval(d);} void ac_eval(ELEMENT*d)const {assert(_func); _func->ac_eval(d);} std::string name()const {itested();return modelname();} bool ac_too()const {return true;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_MODEL::EVAL_BM_MODEL(int c) :EVAL_BM_ACTION_BASE(c), _arglist(), _func(0) { } /*--------------------------------------------------------------------------*/ EVAL_BM_MODEL::EVAL_BM_MODEL(const EVAL_BM_MODEL& p) :EVAL_BM_ACTION_BASE(p), _arglist(p._arglist), _func(0) { attach_common(p._func, &_func); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_MODEL::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_MODEL* p = dynamic_cast(&x); bool rv = p && _arglist == p->_arglist && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { incomplete(); untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_MODEL::parse_common_obsolete_callback(CS& cmd) //used { assert(!_func); assert(!has_model()); parse_modelname(cmd); _arglist = cmd.ctos("", "(", ")"); assert(!_func); } /*--------------------------------------------------------------------------*/ void EVAL_BM_MODEL::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); if (_func) { _func->print_common_obsolete_callback(o, lang); }else{ o << modelname(); if (_arglist != "") { o << "(" << _arglist << ")"; }else{ } } } /*--------------------------------------------------------------------------*/ void EVAL_BM_MODEL::expand(const COMPONENT* d) { EVAL_BM_ACTION_BASE::expand(d); // not sure what kind of model it is yet. // see what we find. COMMON_COMPONENT* c = NULL; try { attach_model(d); assert(has_model()); c = dynamic_cast(model()->new_common()); }catch (Exception& e) { error(bTRACE, e.message() + "++++\n"); assert(!has_model()); c = bm_dispatcher.clone("eval_bm_value"); } if (!c) { throw Exception(d->long_label() + ": model type mismatch"); //BUG// memory leak }else{ } // now we have one // link to the real one // later, a "deflate" will push it down to proper place. c->set_modelname(modelname()); CS args(CS::_STRING, _arglist); c->parse_common_obsolete_callback(args); c->expand(d); attach_common(c, &_func); assert(_func); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_MODEL p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "eval_bm_model", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_poly.cc000066400000000000000000000137741316501211100137740ustar00rootroot00000000000000/*$Id: bm_poly.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * HSPICE compatible POLY */ //testing=script,complete 2005.10.06 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_max(BIGBIG); const double _default_min(-BIGBIG); const bool _default_abs(false); /*--------------------------------------------------------------------------*/ class EVAL_BM_POLY : public EVAL_BM_ACTION_BASE { private: PARAMETER _min; PARAMETER _max; PARAMETER _abs; std::vector > _c; explicit EVAL_BM_POLY(const EVAL_BM_POLY& p); public: explicit EVAL_BM_POLY(int c=0); ~EVAL_BM_POLY() {} private: // override vitrual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_POLY(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; std::string name()const {return "poly";} bool ac_too()const {untested();return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); void skip_type_tail(CS& cmd)const {cmd.umatch("(1)");} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_POLY::EVAL_BM_POLY(int c) :EVAL_BM_ACTION_BASE(c), _min(_default_min), _max(_default_max), _abs(_default_abs) { } /*--------------------------------------------------------------------------*/ EVAL_BM_POLY::EVAL_BM_POLY(const EVAL_BM_POLY& p) :EVAL_BM_ACTION_BASE(p), _min(p._min), _max(p._max), _abs(p._abs), _c(p._c) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_POLY::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_POLY* p = dynamic_cast(&x); bool rv = p && _min == p->_min && _max == p->_max && _abs == p->_abs && _c == p->_c && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { incomplete(); untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_POLY::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name() << '('; for (std::vector >::const_iterator p = _c.begin(); p != _c.end(); ++p) { o << *p << ' '; } o << ')'; print_pair(o, lang, "min", _min, _min.has_hard_value()); print_pair(o, lang, "max", _max, _max.has_hard_value()); print_pair(o, lang, "abs", _abs, _abs.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_POLY::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); for (std::vector >::const_iterator p = _c.begin(); p != _c.end(); ++p) { (*p).e_val(0, Scope); } _min.e_val(_default_min, Scope); _max.e_val(_default_max, Scope); _abs.e_val(_default_abs, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_POLY::tr_eval(ELEMENT* d)const { double x = ioffset(d->_y[0].x); double f0 = 0.; double f1 = 0.; for (size_t i=_c.size()-1; i>0; --i) { f0 += _c[i]; f0 *= x; f1 *= x; f1 += _c[i]*int(i); } f0 += _c[0]; if (_abs && f0 < 0) { f0 = -f0; f1 = -f1; } if (f0 > _max) { f0 = _max; f1 = 0; }else if (f0 < _min) { f0 = _min; f1 = 0; } d->_y[0] = FPOLY1(x, f0, f1); tr_final_adjust(&(d->_y[0]), d->f_is_value()); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_POLY::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (;;) { unsigned old_here = here; PARAMETER val; cmd >> val; if (cmd.stuck(&here)) { // no more, graceful finish break; }else{ if (cmd.match1('=')) { // got one that doesn't belong, back up cmd.reset(old_here); break; }else{ _c.push_back(val); } } } if (cmd.gotit(start)) { }else{ untested(); } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_POLY::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "min", &_min) || Get(cmd, "max", &_max) || Get(cmd, "abs", &_abs) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_POLY p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "poly", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_posy.cc000066400000000000000000000171471316501211100140010ustar00rootroot00000000000000/*$Id: bm_posy.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling - posynomial (non-integer powers) * pair ... first is key, second is value */ //testing=script 2005.10.06 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_max(BIGBIG); const double _default_min(-BIGBIG); const bool _default_abs(false); const bool _default_odd(false); const bool _default_even(false); /*--------------------------------------------------------------------------*/ class EVAL_BM_POSY : public EVAL_BM_ACTION_BASE { private: PARAMETER _min; PARAMETER _max; PARAMETER _abs; PARAMETER _odd; PARAMETER _even; std::vector,PARAMETER > > _table; explicit EVAL_BM_POSY(const EVAL_BM_POSY& p); public: explicit EVAL_BM_POSY(int c=0); ~EVAL_BM_POSY() {} private: // override vitrual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_POSY(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; std::string name()const {return "posy";} bool ac_too()const {untested();return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_POSY::EVAL_BM_POSY(int c) :EVAL_BM_ACTION_BASE(c), _min(_default_min), _max(_default_max), _abs(_default_abs), _odd(_default_odd), _even(_default_even), _table() { } /*--------------------------------------------------------------------------*/ EVAL_BM_POSY::EVAL_BM_POSY(const EVAL_BM_POSY& p) :EVAL_BM_ACTION_BASE(p), _min(p._min), _max(p._max), _abs(p._abs), _odd(p._odd), _even(p._even), _table(p._table) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_POSY::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_POSY* p = dynamic_cast(&x); bool rv = p && _min == p->_min && _max == p->_max && _abs == p->_abs && _odd == p->_odd && _even == p->_even && _table == p->_table && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_POSY::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name() << '('; for (std::vector,PARAMETER > >:: const_iterator p = _table.begin(); p != _table.end(); ++p) { o << p->second << ',' << p->first << ' '; } o << ')'; print_pair(o, lang, "min", _min, _min.has_hard_value()); print_pair(o, lang, "max", _max, _max.has_hard_value()); print_pair(o, lang, "abs", _abs, _abs.has_hard_value()); print_pair(o, lang, "odd", _odd, _odd.has_hard_value()); print_pair(o, lang, "even",_even,_even.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_POSY::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _min.e_val(_default_min, Scope); _max.e_val(_default_max, Scope); _abs.e_val(_default_abs, Scope); _odd.e_val(_default_odd, Scope); _even.e_val(_default_even, Scope); for (std::vector,PARAMETER > >:: iterator p = _table.begin(); p != _table.end(); ++p) { p->first.e_val(0, Scope); p->second.e_val(0, Scope); } } /*--------------------------------------------------------------------------*/ void EVAL_BM_POSY::tr_eval(ELEMENT* d)const { double x_raw = ioffset(d->_y[0].x); trace1("before", x_raw); double x = (x_raw < 0) ? ((_odd || _even) ? -x_raw : 0.) : x_raw; assert(x >= 0); trace1("rev", x); double f0 = 0.; double f1 = 0.; if (x > 0) { for (std::vector,PARAMETER > >:: const_iterator p = _table.begin(); p != _table.end(); ++p) { double coeff = p->second * pow(x, p->first-1); f1 += coeff * p->first; f0 += coeff * x; } }else{ assert(x == 0); for (std::vector,PARAMETER > >:: const_iterator p = _table.begin(); p != _table.end(); ++p) { if (p->first == 0.) { f0 += 1; untested(); } } } trace3("", x, f0, f1); if (_odd && x_raw < 0) { f0 = -f0; } if (_even && x_raw < 0) { f1 = -f1; untested(); } trace3("after", x, f0, f1); if (_abs && f0 < 0) { f0 = -f0; f1 = -f1; untested(); } if (f0 > _max) { f0 = _max; f1 = 0; untested(); }else if (f0 < _min) { f0 = _min; f1 = 0; untested(); } d->_y[0] = FPOLY1(x_raw, f0, f1); tr_final_adjust(&(d->_y[0]), d->f_is_value()); trace3("fa", d->_y[0].x, d->_y[0].f0, d->_y[0].f1); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_POSY::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (;;) { unsigned start_of_pair = here; std::pair, PARAMETER > p; cmd >> p.second; // value if (cmd.stuck(&here)) { // no more, graceful finish break; }else{ cmd >> p.first; // key if (cmd.stuck(&here)) { // ran out, but already have half of the pair // back up one, hoping somebody else knows what to do with it cmd.reset(start_of_pair); break; }else{ _table.push_back(p); } } } if (cmd.gotit(start)) { }else{ untested(); } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_POSY::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "min", &_min) || Get(cmd, "max", &_max) || Get(cmd, "abs", &_abs) || Get(cmd, "odd", &_odd) || Get(cmd, "even", &_even) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_POSY p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "posy", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_pulse.cc000066400000000000000000000176131316501211100141350ustar00rootroot00000000000000/*$Id: bm_pulse.cc 2016/09/15 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * SPICE compatible PULSE */ //testing=script 2016.09.15 #include "globals.h" #include "e_elemnt.h" #include "u_lang.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_iv (NOT_INPUT); const double _default_pv (NOT_INPUT); const double _default_delay (0); const double _default_rise (0); const double _default_fall (0); const double _default_width (BIGBIG); const double _default_period(BIGBIG); /*--------------------------------------------------------------------------*/ class EVAL_BM_PULSE : public EVAL_BM_ACTION_BASE { private: PARAMETER _iv; PARAMETER _pv; PARAMETER _delay; PARAMETER _rise; PARAMETER _fall; PARAMETER _width; PARAMETER _period; PARAMETER _end; explicit EVAL_BM_PULSE(const EVAL_BM_PULSE& p); public: explicit EVAL_BM_PULSE(int c=0); ~EVAL_BM_PULSE() {} private: // override vitrual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_PULSE(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; TIME_PAIR tr_review(COMPONENT*)const; std::string name()const {return "pulse";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_PULSE::EVAL_BM_PULSE(int c) :EVAL_BM_ACTION_BASE(c), _iv(_default_iv), _pv(_default_pv), _delay(_default_delay), _rise(_default_rise), _fall(_default_fall), _width(_default_width), _period(_default_period), _end(NOT_VALID) { } /*--------------------------------------------------------------------------*/ EVAL_BM_PULSE::EVAL_BM_PULSE(const EVAL_BM_PULSE& p) :EVAL_BM_ACTION_BASE(p), _iv(p._iv), _pv(p._pv), _delay(p._delay), _rise(p._rise), _fall(p._fall), _width(p._width), _period(p._period), _end(NOT_VALID) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_PULSE::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_PULSE* p = dynamic_cast(&x); bool rv = p && _iv == p->_iv && _pv == p->_pv && _delay == p->_delay && _rise == p->_rise && _fall == p->_fall && _width == p->_width && _period == p->_period && EVAL_BM_ACTION_BASE::operator==(x); if (rv) {untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_PULSE::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name(); print_pair(o, lang, "iv", _iv); print_pair(o, lang, "pv", _pv); print_pair(o, lang, "delay", _delay); print_pair(o, lang, "rise", _rise); print_pair(o, lang, "fall", _fall); print_pair(o, lang, "width", _width); print_pair(o, lang, "period", _period); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_PULSE::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _iv.e_val(_default_iv, Scope); _pv.e_val(_default_pv, Scope); _delay.e_val(_default_delay, Scope); _rise.e_val(_default_rise, Scope); _fall.e_val(_default_fall, Scope); _width.e_val(_default_width, Scope); _period.e_val(_default_period, Scope); if (_width == 0.) { _width = _default_width; }else{ } if (_period == 0.) { _period = _default_period; }else{ } } /*--------------------------------------------------------------------------*/ void EVAL_BM_PULSE::tr_eval(ELEMENT* d)const { double ev = 0; // effective value double raw_time = d->_sim->_time0; if (raw_time <= _delay) { /* init val */ ev = _iv; }else{ double reltime; if (0 < _period && _period < BIGBIG) { reltime = fmod(raw_time - _delay, _period); }else{ reltime = raw_time - _delay; } if (reltime < _rise) { /* rising */ double interp = reltime / _rise; ev = _iv + interp * (_pv - _iv); }else if (reltime <= _rise + _width) { /* pulse val */ ev = _pv; }else if (reltime < _rise + _width + _fall) { /* falling */ double interp = (reltime - (_rise+_width)) / _fall; ev = _pv + interp * (_iv - _pv); }else{ /* past pulse */ ev = _iv; } } //d->q_accept(); tr_finish_tdv(d, ev); } /*--------------------------------------------------------------------------*/ TIME_PAIR EVAL_BM_PULSE::tr_review(COMPONENT* d)const { double raw_time = d->_sim->_time0 + d->_sim->_dtmin * .01; // hack to avoid duplicate events from numerical noise if (raw_time <= _delay) { d->_time_by.min_event(_delay); }else{ double reltime; if (0 < _period && _period < BIGBIG) { reltime = fmod(raw_time - _delay, _period); }else{ reltime = raw_time - _delay; } double time_offset = raw_time - reltime; if (reltime < _rise) { /* rising */ d->_time_by.min_event(_rise + time_offset); }else if (reltime < _rise + _width) { /* pulse val */ d->_time_by.min_event(_rise + _width + time_offset); }else if (reltime < _rise + _width + _fall) { /* falling */ d->_time_by.min_event(_rise + _width + _fall + time_offset); }else{ /* past pulse */ d->_time_by.min_event(_period + time_offset); } } return d->_time_by; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_PULSE::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (PARAMETER* i = &_iv; i < &_end; ++i) { PARAMETER val(NOT_VALID); cmd >> val; if (cmd.stuck(&here)) { break; }else{ *i = val; } } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_PULSE::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "iv", &_iv) || Get(cmd, "pv", &_pv) || Get(cmd, "delay", &_delay) || Get(cmd, "rise", &_rise) || Get(cmd, "fall", &_fall) || Get(cmd, "width", &_width) || Get(cmd, "period", &_period) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_PULSE p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "pulse", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_pwl.cc000066400000000000000000000165171316501211100136110ustar00rootroot00000000000000/*$Id: bm_pwl.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * HSPICE compatible PWL */ //testing=script 2005.10.06 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "m_interp.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_delta (NOT_INPUT); const int _default_smooth(0); /*--------------------------------------------------------------------------*/ class EVAL_BM_PWL : public EVAL_BM_ACTION_BASE { private: PARAMETER _delta; PARAMETER _smooth; std::vector,PARAMETER > > _raw_table; std::vector _num_table; explicit EVAL_BM_PWL(const EVAL_BM_PWL& p); public: explicit EVAL_BM_PWL(int c=0); ~EVAL_BM_PWL() {} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_PWL(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; TIME_PAIR tr_review(COMPONENT*)const; std::string name()const {return "pwl";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); void skip_type_tail(CS& cmd)const {cmd.umatch("(1)");} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_PWL::EVAL_BM_PWL(int c) :EVAL_BM_ACTION_BASE(c), _delta(_default_delta), _smooth(_default_smooth), _raw_table(), _num_table() { } /*--------------------------------------------------------------------------*/ EVAL_BM_PWL::EVAL_BM_PWL(const EVAL_BM_PWL& p) :EVAL_BM_ACTION_BASE(p), _delta(p._delta), _smooth(p._smooth), _raw_table(p._raw_table), _num_table(p._num_table) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_PWL::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_PWL* p = dynamic_cast(&x); bool rv = p && _delta == p->_delta && _smooth == p->_smooth && _raw_table == p->_raw_table && _num_table == p->_num_table && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_PWL::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name() << '('; for (std::vector,PARAMETER > >:: const_iterator p = _raw_table.begin(); p != _raw_table.end(); ++p) { o << p->first << ',' << p->second << ' '; } o << ')'; print_pair(o, lang, "delta", _delta, _delta.has_hard_value()); print_pair(o, lang, "smooth",_smooth,_smooth.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_PWL::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _delta.e_val(_default_delta, Scope); _smooth.e_val(_default_smooth, Scope); for (std::vector,PARAMETER > >::iterator p = _raw_table.begin(); p != _raw_table.end(); ++p) { p->first.e_val(0, Scope); p->second.e_val(0, Scope); } double last = -BIGBIG; for (std::vector,PARAMETER > >::iterator p = _raw_table.begin(); p != _raw_table.end(); ++p) { if (last > p->first) { throw Exception_Precalc("PWL is out of order: (" + to_string(last) + ", " + to_string(p->first) + ")\n"); }else{ DPAIR x(p->first, p->second); _num_table.push_back(x); } last = p->first; } } /*--------------------------------------------------------------------------*/ void EVAL_BM_PWL::tr_eval(ELEMENT* d)const { double ext = (d->is_source()) ? 0. : NOT_INPUT; d->_y[0] = interpolate(_num_table.begin(), _num_table.end(), ioffset(d->_y[0].x), ext, ext); tr_final_adjust(&(d->_y[0]), d->f_is_value()); } /*--------------------------------------------------------------------------*/ TIME_PAIR EVAL_BM_PWL::tr_review(COMPONENT* d)const { if (d->is_source()) { // index (x) is time ELEMENT* dd = prechecked_cast(d); assert(dd); double x = dd->_y[0].x + d->_sim->_dtmin * .01; DPAIR here(x, BIGBIG); std::vector::const_iterator begin = _num_table.begin(); std::vector::const_iterator end = _num_table.end(); std::vector::const_iterator upper = upper_bound(begin, end, here); std::vector::const_iterator lower = upper - 1; assert(x > lower->first); d->_time_by.min_event((x < upper->first) ? upper->first : NEVER); }else{itested(); // index (x) is input // It's really needed here too, more work needed } return d->_time_by; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_PWL::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (;;) { unsigned start_of_pair = here; std::pair, PARAMETER > p; //cmd >> key >> value; cmd >> p.first; // key if (cmd.stuck(&here)) { // no more, graceful finish break; }else{ cmd >> p.second; // value if (cmd.stuck(&here)) { // ran out, but already have half of the pair // back up one, hoping somebody else knows what to do with it cmd.reset(start_of_pair); break; }else{ _raw_table.push_back(p); } } } if (cmd.gotit(start)) { }else{ untested(); } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_PWL::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "delta", &_delta) || Get(cmd, "smooth", &_smooth) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_PWL p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "pwl", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_sffm.cc000066400000000000000000000200401316501211100137240ustar00rootroot00000000000000/*$Id: bm_sffm.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * SPICE compatible SFFM */ //testing=script 2005.10.07 #include "globals.h" #include "e_elemnt.h" #include "l_denoise.h" #include "u_lang.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_offset (0); const double _default_amplitude (1); const double _default_carrier (NOT_INPUT); const double _default_modindex (NOT_INPUT); const double _default_signal (NOT_INPUT); const double _default_samples (4); const bool _default_zero (true); const bool _default_peak (true); /*--------------------------------------------------------------------------*/ class EVAL_BM_SFFM : public EVAL_BM_ACTION_BASE { private: PARAMETER _offset; PARAMETER _amplitude; PARAMETER _carrier; PARAMETER _modindex; PARAMETER _signal; PARAMETER _end; PARAMETER _samples; PARAMETER _zero; PARAMETER _peak; explicit EVAL_BM_SFFM(const EVAL_BM_SFFM& p); public: explicit EVAL_BM_SFFM(int c=0); ~EVAL_BM_SFFM() {} private: // override vitrual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_SFFM(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; TIME_PAIR tr_review(COMPONENT*)const; std::string name()const {return "sffm";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_SFFM::EVAL_BM_SFFM(int c) :EVAL_BM_ACTION_BASE(c), _offset(_default_offset), _amplitude(_default_amplitude), _carrier(_default_carrier), _modindex(_default_modindex), _signal(_default_signal), _end(NOT_VALID), _samples(_default_samples), _zero(_default_zero), _peak(_default_peak) { } /*--------------------------------------------------------------------------*/ EVAL_BM_SFFM::EVAL_BM_SFFM(const EVAL_BM_SFFM& p) :EVAL_BM_ACTION_BASE(p), _offset(p._offset), _amplitude(p._amplitude), _carrier(p._carrier), _modindex(p._modindex), _signal(p._signal), _end(NOT_VALID), _samples(p._samples), _zero(p._zero), _peak(p._peak) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SFFM::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_SFFM* p = dynamic_cast(&x); bool rv = p && _offset == p->_offset && _amplitude == p->_amplitude && _carrier == p->_carrier && _modindex == p->_modindex && _signal == p->_signal && _samples == p->_samples && _zero == p->_zero && _peak == p->_peak && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_SFFM::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name(); print_pair(o, lang, "offset", _offset); print_pair(o, lang, "amplitude", _amplitude); print_pair(o, lang, "carrier", _carrier); print_pair(o, lang, "modindex", _modindex); print_pair(o, lang, "signal", _signal); print_pair(o, lang, "samples", _samples, _samples.has_hard_value()); print_pair(o, lang, "zero", _zero, _zero.has_hard_value()); print_pair(o, lang, "peak", _peak, _peak.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SFFM::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _offset.e_val(_default_offset, Scope); _amplitude.e_val(_default_amplitude, Scope); _carrier.e_val(_default_carrier, Scope); _modindex.e_val(_default_modindex, Scope); _signal.e_val(_default_signal, Scope); _samples.e_val(_default_samples, Scope); _zero.e_val(_default_zero, Scope); _peak.e_val(_default_peak, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SFFM::tr_eval(ELEMENT* d)const { double time = d->_sim->_time0; double mod = (_modindex * sin(M_TWO_PI * _signal * time)); double ev = _offset + _amplitude * sin(M_TWO_PI * _carrier * time + mod); tr_finish_tdv(d, ev); } /*--------------------------------------------------------------------------*/ TIME_PAIR EVAL_BM_SFFM::tr_review(COMPONENT* d)const { double time = d->_sim->_time0 + d->_sim->_dtmin * .01; double old_time; double N = 0; trace2("", time, N); do { // simple fixed point iteration to find peaks and zero crossings old_time = time; double mod = (_modindex * sin(M_TWO_PI * _signal * time)); double inst_freq = _carrier * (1 + mod / (M_TWO_PI * _carrier * time)); if (N == 0) { if (_peak && _zero) { N = floor(time * 4 * inst_freq + 1); }else if (_peak) {untested(); N = floor(time * 2 * inst_freq + .5) + .5; }else if (_zero) {untested(); N = floor(time * 2 * inst_freq + 1); }else{ N = 0; } }else{ } if (_peak && _zero) { time = N / (4 * inst_freq); }else if (_peak) {untested(); time = N / (2 * inst_freq); }else if (_zero) {untested(); time = N / (2 * inst_freq); }else{ time = NEVER; } trace2("", time, N); } while (std::abs(dn_diff(time, old_time)) > 0); d->_time_by.min_error_estimate(d->_sim->_time0 + 1. / (_samples * _carrier)); d->_time_by.min_event(old_time); return d->_time_by; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SFFM::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (PARAMETER* i = &_offset; i < &_end; ++i) { PARAMETER val(NOT_VALID); cmd >> val; if (cmd.stuck(&here)) { break; }else{ untested(); *i = val; } } if (cmd.gotit(start)) { untested(); } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SFFM::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "offset", &_offset) || Get(cmd, "amplitude", &_amplitude) || Get(cmd, "carrier", &_carrier) || Get(cmd, "modindex", &_modindex) || Get(cmd, "signal", &_signal) || Get(cmd, "samples", &_samples) || Get(cmd, "zero", &_zero) || Get(cmd, "peak", &_peak) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_SFFM p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "sffm", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_sin.cc000066400000000000000000000176051316501211100135770ustar00rootroot00000000000000/*$Id: bm_sin.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * SPICE compatible SIN */ //testing=script,complete 2005.10.07 #include "globals.h" #include "e_elemnt.h" #include "u_lang.h" #include "l_denoise.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_offset (0); const double _default_amplitude (1); const double _default_frequency (NOT_INPUT); const double _default_delay (0); const double _default_damping (0); const double _default_samples (4); const bool _default_zero (false); const bool _default_peak (false); /*--------------------------------------------------------------------------*/ class EVAL_BM_SIN : public EVAL_BM_ACTION_BASE { private: PARAMETER _offset; PARAMETER _amplitude; PARAMETER _frequency; PARAMETER _delay; PARAMETER _damping; PARAMETER _end; PARAMETER _samples; PARAMETER _zero; PARAMETER _peak; mutable double _actual_frequency; explicit EVAL_BM_SIN(const EVAL_BM_SIN& p); public: explicit EVAL_BM_SIN(int c=0); ~EVAL_BM_SIN() {} private: // override vitrual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_SIN(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; TIME_PAIR tr_review(COMPONENT*)const; std::string name()const {return "sin";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_SIN::EVAL_BM_SIN(int c) :EVAL_BM_ACTION_BASE(c), _offset(_default_offset), _amplitude(_default_amplitude), _frequency(_default_frequency), _delay(_default_delay), _damping(_default_damping), _end(NOT_VALID), _samples(_default_samples), _zero(_default_zero), _peak(_default_peak), _actual_frequency(0) { } /*--------------------------------------------------------------------------*/ EVAL_BM_SIN::EVAL_BM_SIN(const EVAL_BM_SIN& p) :EVAL_BM_ACTION_BASE(p), _offset(p._offset), _amplitude(p._amplitude), _frequency(p._frequency), _delay(p._delay), _damping(p._damping), _end(NOT_VALID), _samples(p._samples), _zero(p._zero), _peak(p._peak), _actual_frequency(p._actual_frequency) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SIN::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_SIN* p = dynamic_cast(&x); bool rv = p && _offset == p->_offset && _amplitude == p->_amplitude && _frequency == p->_frequency && _delay == p->_delay && _damping == p->_damping && _samples == p->_samples && _zero == p->_zero && _peak == p->_peak && EVAL_BM_ACTION_BASE::operator==(x); if (rv) {untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_SIN::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name(); print_pair(o, lang, "offset", _offset); print_pair(o, lang, "amplitude", _amplitude); print_pair(o, lang, "frequency", _frequency); print_pair(o, lang, "delay", _delay); print_pair(o, lang, "damping", _damping); print_pair(o, lang, "samples", _samples, _samples.has_hard_value()); print_pair(o, lang, "zero", _zero, _zero.has_hard_value()); print_pair(o, lang, "peak", _peak, _peak.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SIN::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _offset.e_val(_default_offset, Scope); _amplitude.e_val(_default_amplitude, Scope); _frequency.e_val(_default_frequency, Scope); _delay.e_val(_default_delay, Scope); _damping.e_val(_default_damping, Scope); _samples.e_val(_default_samples, Scope); _zero.e_val(_default_zero, Scope); _peak.e_val(_default_peak, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SIN::tr_eval(ELEMENT* d)const { if (!_frequency.has_hard_value()) { _actual_frequency = d->_sim->_freq; }else{ _actual_frequency = _frequency; } double reltime = ioffset(d->_sim->_time0); double ev = _offset; if (reltime > _delay) { double x=_amplitude*fixzero(sin(M_TWO_PI*_actual_frequency*(reltime-_delay)),1.); if (_damping != 0.) { x *= exp(-(reltime-_delay)*_damping); }else{ } ev += x; }else{ } tr_finish_tdv(d, ev); } /*--------------------------------------------------------------------------*/ TIME_PAIR EVAL_BM_SIN::tr_review(COMPONENT* d)const { double reltime = ioffset(d->_sim->_time0) + d->_sim->_dtmin * .01; if (reltime > _delay) { if (_peak && _zero) { d->_time_by.min_event(floor(reltime * 4 * _actual_frequency + 1) / (4 * _actual_frequency)); }else if (_peak) { d->_time_by.min_event((floor(reltime*2*_actual_frequency+.5) + .5) / (2*_actual_frequency)); }else if (_zero) { d->_time_by.min_event(floor(reltime * 2 * _actual_frequency + 1) / (2 * _actual_frequency)); }else{ } d->_time_by.min_error_estimate(d->_sim->_time0 + 1. / (_samples * _actual_frequency)); }else{ d->_time_by.min_event(_delay); } return d->_time_by; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SIN::parse_numlist(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); for (PARAMETER* i = &_offset; i < &_end; ++i) { PARAMETER val(NOT_VALID); cmd >> val; if (cmd.stuck(&here)) { break; }else{ *i = val; } } return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SIN::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "o{ffset}", &_offset) || Get(cmd, "a{mplitude}", &_amplitude) || Get(cmd, "f{requency}", &_frequency) || Get(cmd, "de{lay}", &_delay) || Get(cmd, "da{mping}", &_damping) || Get(cmd, "sa{mples}", &_samples) || Get(cmd, "ze{ro}", &_zero) || Get(cmd, "pe{ak}", &_peak) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_SIN p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "sin|sine", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bm_tanh.cc000066400000000000000000000121171316501211100137310ustar00rootroot00000000000000/*$Id: bm_tanh.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling hyperbolic tangent */ //testing=script 2005.10.07 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ const double _default_gain (NOT_INPUT); const double _default_limit (NOT_INPUT); /*--------------------------------------------------------------------------*/ class EVAL_BM_TANH : public EVAL_BM_ACTION_BASE { private: PARAMETER _gain; PARAMETER _limit; explicit EVAL_BM_TANH(const EVAL_BM_TANH& p); public: explicit EVAL_BM_TANH(int c=0); ~EVAL_BM_TANH() {} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_TANH(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*)const; std::string name()const {return "tanh";} bool ac_too()const {untested();return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_TANH::EVAL_BM_TANH(int c) :EVAL_BM_ACTION_BASE(c), _gain(NOT_INPUT), _limit(NOT_INPUT) { } /*--------------------------------------------------------------------------*/ EVAL_BM_TANH::EVAL_BM_TANH(const EVAL_BM_TANH& p) :EVAL_BM_ACTION_BASE(p), _gain(p._gain), _limit(p._limit) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_TANH::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_TANH* p = dynamic_cast(&x); bool rv = p && _gain == p->_gain && _limit == p->_limit && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_TANH::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << name(); print_pair(o, lang, "gain", _gain); print_pair(o, lang, "limit", _limit); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_TANH::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _gain.e_val(_default_gain, Scope); _limit.e_val(_default_limit, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_TANH::tr_eval(ELEMENT* d)const { double x = ioffset(d->_y[0].x); double aa = x * _gain/_limit; double f1, f0; if (aa > LOGBIGBIG) { f1 = 0; f0 = _limit; }else if (aa < -LOGBIGBIG) { f1 = 0; f0 = -_limit; }else{ double cosine = cosh(aa); f1 = _gain / (cosine*cosine); f0 = _limit * tanh(aa); } d->_y[0] = FPOLY1(x, f0, f1); tr_final_adjust(&(d->_y[0]), d->f_is_value()); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_TANH::parse_numlist(CS& cmd) { unsigned here = cmd.cursor(); PARAMETER gain(NOT_VALID); PARAMETER limit(NOT_VALID); cmd >> gain >> limit; if (cmd.gotit(here)) { _gain = gain; _limit = limit; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ bool EVAL_BM_TANH::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "gain", &_gain) || Get(cmd, "limit", &_limit) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_TANH p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "tanh", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bmm_semi.cc000066400000000000000000000507661316501211100141250ustar00rootroot00000000000000/*$Id: bmm_semi.cc 2016/03/25 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling * Spice3 compatible "semiconductor resistor and capacitor" */ //testing=script 2016.03.25 #include "globals.h" #include "u_lang.h" #include "e_model.h" #include "bm.h" /*--------------------------------------------------------------------------*/ class EVAL_BM_SEMI_BASE : public EVAL_BM_ACTION_BASE { protected: PARAMETER _length; PARAMETER _width; double _va_lue; private: static double const _default_length; static double const _default_width; static double const _default_value; protected: explicit EVAL_BM_SEMI_BASE(const EVAL_BM_SEMI_BASE& p); explicit EVAL_BM_SEMI_BASE(int c=0); ~EVAL_BM_SEMI_BASE() {untested();} protected: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const = 0; void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void expand(const COMPONENT*); void tr_eval(ELEMENT*)const; std::string name()const {untested();return modelname().c_str();} bool ac_too()const {untested();return false;} bool parse_params_obsolete_callback(CS&); bool parse_numlist(CS& cmd); }; /*--------------------------------------------------------------------------*/ class EVAL_BM_SEMI_CAPACITOR : public EVAL_BM_SEMI_BASE { private: explicit EVAL_BM_SEMI_CAPACITOR(const EVAL_BM_SEMI_CAPACITOR& p) :EVAL_BM_SEMI_BASE(p) {untested();} public: explicit EVAL_BM_SEMI_CAPACITOR(int c=0) :EVAL_BM_SEMI_BASE(c) {} ~EVAL_BM_SEMI_CAPACITOR() {untested();} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {untested();return new EVAL_BM_SEMI_CAPACITOR(*this);} void expand(const COMPONENT*); void precalc_last(const CARD_LIST*); }; /*--------------------------------------------------------------------------*/ class EVAL_BM_SEMI_RESISTOR : public EVAL_BM_SEMI_BASE { private: explicit EVAL_BM_SEMI_RESISTOR(const EVAL_BM_SEMI_RESISTOR& p) :EVAL_BM_SEMI_BASE(p) {untested();} public: explicit EVAL_BM_SEMI_RESISTOR(int c=0) :EVAL_BM_SEMI_BASE(c) {} ~EVAL_BM_SEMI_RESISTOR() {untested();} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {untested();return new EVAL_BM_SEMI_RESISTOR(*this);} void expand(const COMPONENT*); void precalc_last(const CARD_LIST*); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class MODEL_SEMI_BASE : public MODEL_CARD { public: PARAMETER _narrow; PARAMETER _defw; PARAMETER _tc1; PARAMETER _tc2; private: static double const _default_narrow; static double const _default_defw; static double const _default_tc1; static double const _default_tc2; protected: explicit MODEL_SEMI_BASE(); explicit MODEL_SEMI_BASE(const MODEL_SEMI_BASE& p); protected: // override virtual void precalc_first(); //void precalc_last(); //CARD* clone()const //MODEL_CARD/pure void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (4 + MODEL_CARD::param_count());} }; /*--------------------------------------------------------------------------*/ class MODEL_SEMI_CAPACITOR : public MODEL_SEMI_BASE { public: PARAMETER _cj; PARAMETER _cjsw; private: static double const _default_cj; static double const _default_cjsw; private: explicit MODEL_SEMI_CAPACITOR(const MODEL_SEMI_CAPACITOR& p); public: explicit MODEL_SEMI_CAPACITOR(); private: // override virtual std::string dev_type()const {return "c";} void precalc_first(); //void precalc_last(); COMMON_COMPONENT* new_common()const {return new EVAL_BM_SEMI_CAPACITOR;} CARD* clone()const {return new MODEL_SEMI_CAPACITOR(*this);} void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (2 + MODEL_SEMI_BASE::param_count());} }; /*--------------------------------------------------------------------------*/ class MODEL_SEMI_RESISTOR : public MODEL_SEMI_BASE { public: PARAMETER _rsh; private: static double const _default_rsh; private: explicit MODEL_SEMI_RESISTOR(const MODEL_SEMI_RESISTOR& p); public: explicit MODEL_SEMI_RESISTOR(); private: // override virtual std::string dev_type()const {return "r";} void precalc_first(); //void precalc_last(); COMMON_COMPONENT* new_common()const {return new EVAL_BM_SEMI_RESISTOR;} CARD* clone()const {return new MODEL_SEMI_RESISTOR(*this);} void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (1 + MODEL_SEMI_BASE::param_count());} }; /*--------------------------------------------------------------------------*/ double const EVAL_BM_SEMI_BASE::_default_length = NOT_INPUT; double const EVAL_BM_SEMI_BASE::_default_width = NOT_INPUT; double const EVAL_BM_SEMI_BASE::_default_value = NOT_INPUT; /*--------------------------------------------------------------------------*/ static MODEL_SEMI_RESISTOR p1; static MODEL_SEMI_CAPACITOR p2; static DISPATCHER::INSTALL d1(&model_dispatcher, "r|res", &p1), d2(&model_dispatcher, "c|cap", &p2); /*--------------------------------------------------------------------------*/ EVAL_BM_SEMI_BASE::EVAL_BM_SEMI_BASE(int c) :EVAL_BM_ACTION_BASE(c), _length(_default_length), _width(_default_width), _va_lue(_default_value) { } /*--------------------------------------------------------------------------*/ EVAL_BM_SEMI_BASE::EVAL_BM_SEMI_BASE(const EVAL_BM_SEMI_BASE& p) :EVAL_BM_ACTION_BASE(p), _length(p._length), _width(p._width), _va_lue(p._va_lue) {untested(); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SEMI_BASE::operator==(const COMMON_COMPONENT& x)const {untested(); const EVAL_BM_SEMI_BASE* p = dynamic_cast(&x); bool rv = p && _length == p->_length && _width == p->_width && EVAL_BM_ACTION_BASE::operator==(x); if (rv) {untested(); }else{untested(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_BASE::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << modelname(); if (_value.has_hard_value()) { o << " " << _value; }else{ } print_pair(o, lang, "l", _length, _length.has_hard_value()); print_pair(o, lang, "w", _width, _width.has_hard_value()); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_BASE::expand(const COMPONENT* d) { EVAL_BM_ACTION_BASE::expand(d); attach_model(d); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_BASE::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_ACTION_BASE::precalc_last(Scope); _length.e_val(_default_length, Scope); _width.e_val(_default_width, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_BASE::tr_eval(ELEMENT* d)const { tr_finish_tdv(d, _va_lue); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SEMI_BASE::parse_numlist(CS& cmd) { unsigned here = cmd.cursor(); PARAMETER val(NOT_VALID); cmd >> val; if (cmd.gotit(here)) { _value = val; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SEMI_BASE::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "l", &_length) || Get(cmd, "w", &_width) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ bool EVAL_BM_SEMI_CAPACITOR::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_SEMI_CAPACITOR* p = dynamic_cast(&x); bool rv = p && EVAL_BM_SEMI_BASE::operator==(x); if (rv) {untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_CAPACITOR::expand(const COMPONENT* d) { EVAL_BM_SEMI_BASE::expand(d); const MODEL_SEMI_CAPACITOR* m = dynamic_cast(model()); if (!m) { unreachable(); throw Exception_Model_Type_Mismatch(d->long_label(), modelname(), "semi-capacitor (C)"); }else{ } } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_CAPACITOR::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_SEMI_BASE::precalc_last(Scope); const MODEL_SEMI_CAPACITOR* m = prechecked_cast(model()); double width = (_width == NOT_INPUT) ? m->_defw : _width; double eff_width = width - m->_narrow; double eff_length = _length - m->_narrow; _va_lue = m->_cj * eff_length * eff_width + 2. * m->_cjsw * (eff_length + eff_width); double tempdiff = (_temp_c - m->_tnom_c); _va_lue *= 1 + m->_tc1*tempdiff + m->_tc2*tempdiff*tempdiff; if (eff_width <= 0.) {untested(); throw Exception_Precalc(modelname() + ": effective width is negative or zero\n"); }else{ } if (eff_length <= 0.) {untested(); throw Exception_Precalc(modelname() + ": effective length is negative or zero\n"); }else{ } } /*--------------------------------------------------------------------------*/ bool EVAL_BM_SEMI_RESISTOR::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_SEMI_RESISTOR* p = dynamic_cast(&x); bool rv = p && EVAL_BM_SEMI_BASE::operator==(x); if (rv) {untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_RESISTOR::expand(const COMPONENT* d) { EVAL_BM_SEMI_BASE::expand(d); const MODEL_SEMI_RESISTOR* m = dynamic_cast(model()); if (!m) { unreachable(); throw Exception_Model_Type_Mismatch(d->long_label(), modelname(), "semi-resistor (R)"); }else{ } } /*--------------------------------------------------------------------------*/ void EVAL_BM_SEMI_RESISTOR::precalc_last(const CARD_LIST* Scope) { assert(Scope); EVAL_BM_SEMI_BASE::precalc_last(Scope); const MODEL_SEMI_RESISTOR* m = prechecked_cast(model()); double width = (_width == NOT_INPUT) ? m->_defw : _width; double eff_width = width - m->_narrow; double eff_length = _length - m->_narrow; trace4("EVAL_BM_SEMI_RESISTOR::precalc_last", value(), eff_width, eff_length, m->_rsh); if (!has_hard_value(m->_rsh)) { _va_lue = (value()); }else if (eff_width != 0.) { _va_lue = m->_rsh * eff_length / eff_width; }else{untested(); _va_lue = BIGBIG; } double tempdiff = (_temp_c - m->_tnom_c); _va_lue *= 1 + m->_tc1*tempdiff + m->_tc2*tempdiff*tempdiff; if (has_hard_value(m->_rsh)) { if (eff_width <= 0.) {untested(); throw Exception_Precalc(modelname() + ": effective width is negative or zero\n"); }else{ } if (eff_length <= 0.) { throw Exception_Precalc(modelname() + ": effective length is negative or zero\n"); }else{ } }else{ } trace4("EVAL_BM_SEMI_RESISTOR::precalc_last done", value(), eff_width, m->_rsh, _va_lue); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ double const MODEL_SEMI_BASE::_default_narrow = 0.; double const MODEL_SEMI_BASE::_default_defw = 1e-6; double const MODEL_SEMI_BASE::_default_tc1 = 0.; double const MODEL_SEMI_BASE::_default_tc2 = 0.; /*--------------------------------------------------------------------------*/ MODEL_SEMI_BASE::MODEL_SEMI_BASE() :MODEL_CARD(NULL), _narrow(_default_narrow), _defw(_default_defw), _tc1(_default_tc1), _tc2(_default_tc2) { } /*--------------------------------------------------------------------------*/ MODEL_SEMI_BASE::MODEL_SEMI_BASE(const MODEL_SEMI_BASE& p) :MODEL_CARD(p), _narrow(p._narrow), _defw(p._defw), _tc1(p._tc1), _tc2(p._tc2) { } /*--------------------------------------------------------------------------*/ void MODEL_SEMI_BASE::set_param_by_index(int i, std::string& value, int offset) { switch (MODEL_SEMI_BASE::param_count() - 1 - i) { case 0: _narrow = value; break; case 1: _defw = value; break; case 2: _tc1 = value; break; case 3: _tc2 = value; break; default: MODEL_CARD::set_param_by_index(i, value, offset); break; } } /*--------------------------------------------------------------------------*/ bool MODEL_SEMI_BASE::param_is_printable(int i)const { switch (MODEL_SEMI_BASE::param_count() - 1 - i) { case 0: return true; case 1: return true; case 2: return true; case 3: return true; default: return MODEL_CARD::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_BASE::param_name(int i)const { switch (MODEL_SEMI_BASE::param_count() - 1 - i) { case 0: return "narrow"; case 1: return "defw"; case 2: return "tc1"; case 3: return "tc2"; default: return MODEL_CARD::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_BASE::param_name(int i, int j)const { if (j == 0) {untested(); return param_name(i); }else if (i >= MODEL_CARD::param_count()) { return ""; }else{untested(); return MODEL_CARD::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_BASE::param_value(int i)const { switch (MODEL_SEMI_BASE::param_count() - 1 - i) { case 0: return _narrow.string(); case 1: return _defw.string(); case 2: return _tc1.string(); case 3: return _tc2.string(); default: return MODEL_CARD::param_value(i); } } /*--------------------------------------------------------------------------*/ void MODEL_SEMI_BASE::precalc_first() { MODEL_CARD::precalc_first(); const CARD_LIST* s = scope(); assert(s); _narrow.e_val(_default_narrow, s); _defw.e_val(_default_defw, s); _tc1.e_val(_default_tc1, s); _tc2.e_val(_default_tc2, s); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ double const MODEL_SEMI_CAPACITOR::_default_cj = 0.; double const MODEL_SEMI_CAPACITOR::_default_cjsw = 0.; /*--------------------------------------------------------------------------*/ MODEL_SEMI_CAPACITOR::MODEL_SEMI_CAPACITOR() :MODEL_SEMI_BASE(), _cj(_default_cj), _cjsw(_default_cjsw) { } /*--------------------------------------------------------------------------*/ MODEL_SEMI_CAPACITOR::MODEL_SEMI_CAPACITOR(const MODEL_SEMI_CAPACITOR& p) :MODEL_SEMI_BASE(p), _cj(p._cj), _cjsw(p._cjsw) { } /*--------------------------------------------------------------------------*/ void MODEL_SEMI_CAPACITOR::set_param_by_index(int i, std::string& value, int offset) { switch (MODEL_SEMI_CAPACITOR::param_count() - 1 - i) { case 0: _cj = value; break; case 1: _cjsw = value; break; default:untested(); MODEL_SEMI_BASE::set_param_by_index(i, value, offset); break; } } /*--------------------------------------------------------------------------*/ bool MODEL_SEMI_CAPACITOR::param_is_printable(int i)const { switch (MODEL_SEMI_CAPACITOR::param_count() - 1 - i) { case 0: return true; case 1: return true; default: return MODEL_SEMI_BASE::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_CAPACITOR::param_name(int i)const { switch (MODEL_SEMI_CAPACITOR::param_count() - 1 - i) { case 0: return "cj"; case 1: return "cjsw"; default: return MODEL_SEMI_BASE::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_CAPACITOR::param_name(int i, int j)const { if (j == 0) { return param_name(i); }else if (i >= MODEL_SEMI_BASE::param_count()) { return ""; }else{untested(); return MODEL_SEMI_BASE::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_CAPACITOR::param_value(int i)const { switch (MODEL_SEMI_CAPACITOR::param_count() - 1 - i) { case 0: return _cj.string(); case 1: return _cjsw.string(); default: return MODEL_SEMI_BASE::param_value(i); } } /*--------------------------------------------------------------------------*/ void MODEL_SEMI_CAPACITOR::precalc_first() { MODEL_SEMI_BASE::precalc_first(); const CARD_LIST* s = scope(); assert(s); _cj.e_val(_default_cj, s); _cjsw.e_val(_default_cjsw, s); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ double const MODEL_SEMI_RESISTOR::_default_rsh = NOT_INPUT; /*--------------------------------------------------------------------------*/ MODEL_SEMI_RESISTOR::MODEL_SEMI_RESISTOR() :MODEL_SEMI_BASE(), _rsh(_default_rsh) { } /*--------------------------------------------------------------------------*/ MODEL_SEMI_RESISTOR::MODEL_SEMI_RESISTOR(const MODEL_SEMI_RESISTOR& p) :MODEL_SEMI_BASE(p), _rsh(p._rsh) { } /*--------------------------------------------------------------------------*/ void MODEL_SEMI_RESISTOR::set_param_by_index(int i, std::string& value, int offset) { switch (MODEL_SEMI_RESISTOR::param_count() - 1 - i) { case 0: _rsh = value; break; default: MODEL_SEMI_BASE::set_param_by_index(i, value, offset); break; } } /*--------------------------------------------------------------------------*/ bool MODEL_SEMI_RESISTOR::param_is_printable(int i)const { switch (MODEL_SEMI_RESISTOR::param_count() - 1 - i) { case 0: return true; default: return MODEL_SEMI_BASE::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_RESISTOR::param_name(int i)const { switch (MODEL_SEMI_RESISTOR::param_count() - 1 - i) { case 0: return "rsh"; default: return MODEL_SEMI_BASE::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_RESISTOR::param_name(int i, int j)const { if (j == 0) { return param_name(i); }else if (i >= MODEL_SEMI_BASE::param_count()) { return ""; }else{ return MODEL_SEMI_BASE::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SEMI_RESISTOR::param_value(int i)const { switch (MODEL_SEMI_RESISTOR::param_count() - 1 - i) { case 0: return _rsh.string(); default: return MODEL_SEMI_BASE::param_value(i); } } /*--------------------------------------------------------------------------*/ void MODEL_SEMI_RESISTOR::precalc_first() { MODEL_SEMI_BASE::precalc_first(); const CARD_LIST* par_scope = scope(); assert(par_scope); _rsh.e_val(_default_rsh, par_scope); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/bmm_table.cc000066400000000000000000000205071316501211100142450ustar00rootroot00000000000000/*$Id: bmm_table.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling * table as a .model card */ //testing=script 2006.04.18 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "m_spline.h" #include "e_model.h" #include "bm.h" /*--------------------------------------------------------------------------*/ class SPLINE; /*--------------------------------------------------------------------------*/ class EVAL_BM_TABLE : public EVAL_BM_ACTION_BASE { protected: explicit EVAL_BM_TABLE(const EVAL_BM_TABLE& p); public: explicit EVAL_BM_TABLE(int c=0); ~EVAL_BM_TABLE() {} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_TABLE(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void expand(const COMPONENT*); void tr_eval(ELEMENT*)const; std::string name()const {untested();return modelname().c_str();} bool ac_too()const {untested();return false;} }; /*--------------------------------------------------------------------------*/ class MODEL_TABLE : public MODEL_CARD { public: PARAMETER _order; PARAMETER _below; PARAMETER _above; std::vector,PARAMETER > > _table; SPLINE* _spline; private: static int const _default_order; static double const _default_below; static double const _default_above; private: explicit MODEL_TABLE(const MODEL_TABLE& p); public: explicit MODEL_TABLE(); ~MODEL_TABLE(); private: // override virtual std::string dev_type()const {return "table";} void precalc_first(); COMMON_COMPONENT* new_common()const {return new EVAL_BM_TABLE;} CARD* clone()const {return new MODEL_TABLE(*this);} bool use_obsolete_callback_print()const {return true;} bool use_obsolete_callback_parse()const {return true;} void print_args_obsolete_callback(OMSTREAM&,LANGUAGE*)const; bool parse_params_obsolete_callback(CS&); void tr_eval(COMPONENT*)const; }; /*--------------------------------------------------------------------------*/ int const MODEL_TABLE::_default_order = 3; double const MODEL_TABLE::_default_below = NOT_INPUT; double const MODEL_TABLE::_default_above = NOT_INPUT; /*--------------------------------------------------------------------------*/ static MODEL_TABLE p1; static DISPATCHER::INSTALL d1(&model_dispatcher, "table", &p1); /*--------------------------------------------------------------------------*/ EVAL_BM_TABLE::EVAL_BM_TABLE(int c) :EVAL_BM_ACTION_BASE(c) { } /*--------------------------------------------------------------------------*/ EVAL_BM_TABLE::EVAL_BM_TABLE(const EVAL_BM_TABLE& p) :EVAL_BM_ACTION_BASE(p) { } /*--------------------------------------------------------------------------*/ bool EVAL_BM_TABLE::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_TABLE* p = dynamic_cast(&x); bool rv = p && EVAL_BM_ACTION_BASE::operator==(x); if (rv) { untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_TABLE::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); o << modelname(); EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_TABLE::expand(const COMPONENT* d) { EVAL_BM_ACTION_BASE::expand(d); attach_model(d); const MODEL_TABLE* m = dynamic_cast(model()); if (!m) {untested(); throw Exception_Model_Type_Mismatch(d->long_label(), modelname(), "table"); }else{ } } /*--------------------------------------------------------------------------*/ void EVAL_BM_TABLE::tr_eval(ELEMENT* d)const { model()->tr_eval(d); tr_final_adjust(&(d->_y[0]), d->f_is_value()); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ MODEL_TABLE::MODEL_TABLE() :MODEL_CARD(NULL), _order(_default_order), _below(_default_below), _above(_default_above), _table(), _spline(0) { } /*--------------------------------------------------------------------------*/ MODEL_TABLE::MODEL_TABLE(const MODEL_TABLE& p) :MODEL_CARD(p), _order(p._order), _below(p._below), _above(p._above), _table(p._table), _spline(p._spline) { } /*--------------------------------------------------------------------------*/ MODEL_TABLE::~MODEL_TABLE() { delete _spline; } /*--------------------------------------------------------------------------*/ bool MODEL_TABLE::parse_params_obsolete_callback(CS& cmd) { unsigned here1 = cmd.cursor(); { Get(cmd, "order", &_order); Get(cmd, "below", &_below); Get(cmd, "above", &_above); bool got_opening_paren = cmd.skip1b('('); unsigned here = cmd.cursor(); for (;;) { unsigned start_of_pair = here; std::pair, PARAMETER > p; cmd >> p.first; // key if (cmd.stuck(&here)) { break; }else{ cmd >> p.second; // value if (cmd.stuck(&here)) { cmd.reset(start_of_pair); break; }else{ _table.push_back(p); } } } if (got_opening_paren && !cmd.skip1b(')')) { untested(); cmd.warn(bWARNING, "need )"); }else if (!got_opening_paren && cmd.skip1b(')')) { untested(); cmd.warn(bWARNING, here, "need ("); } } return !(cmd.stuck(&here1)); } /*--------------------------------------------------------------------------*/ void MODEL_TABLE::print_args_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); print_pair(o, lang, "order", _order); print_pair(o, lang, "below", _below, _below.has_hard_value()); print_pair(o, lang, "above", _above, _above.has_hard_value()); o << " ("; for (std::vector,PARAMETER > >:: const_iterator p = _table.begin(); p != _table.end(); ++p) { o << p->first << ',' << p->second << ' '; } o << ')'; } /*--------------------------------------------------------------------------*/ void MODEL_TABLE::precalc_first() { MODEL_CARD::precalc_first(); const CARD_LIST* par_scope = scope(); assert(par_scope); _order.e_val(_default_order, par_scope); _below.e_val(_default_below, par_scope); _above.e_val(_default_above, par_scope); { double last = -BIGBIG; for (std::vector,PARAMETER > >:: iterator p = _table.begin(); p != _table.end(); ++p) { p->first.e_val(0, par_scope); p->second.e_val(0, par_scope); if (last > p->first) { untested(); error(bWARNING, "%s: table is out of order: (%g, %g)\n", long_label().c_str(), last, double(p->first)); }else{ //std::pair x(p->first, p->second); //_num_table.push_back(x); } last = p->first; } } delete _spline; double below = _below.has_hard_value() ? _below : NOT_INPUT; double above = _above.has_hard_value() ? _above : NOT_INPUT; _spline = new SPLINE(_table, below, above, _order); } /*--------------------------------------------------------------------------*/ void MODEL_TABLE::tr_eval(COMPONENT* brh)const { ELEMENT* d = prechecked_cast(brh); assert(d); d->_y[0] = _spline->at(d->_y[0].x); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_clear.cc000066400000000000000000000041131316501211100137060ustar00rootroot00000000000000/*$Id: c_clear.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * delete and clear commands */ //testing=script,complete 2006.07.16 #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ /* cmd_clear: clear the whole circuit, including faults, etc * equivalent to unfault; unkeep; delete all; title = (blank) */ class CMD_CLEAR : public CMD { public: void do_it(CS&, CARD_LIST* Scope) { command("unfault", Scope); command("unmark", Scope); //command("ic clear", Scope); //command("nodeset clear", Scope); command("alarm clear", Scope); command("plot clear", Scope); command("print clear", Scope); command("delete all", Scope); command("title '", Scope); } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "clear", &p0); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_comand.cc000066400000000000000000000077041316501211100140720ustar00rootroot00000000000000/*$Id: c_comand.cc,v 26.138 2013/04/24 02:44:30 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * simple commands and stubs for the missing commands */ //testing=script,sparse 2006.07.16 #include "constant.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_END : public CMD { public: void do_it(CS&, CARD_LIST* Scope) { switch (ENV::run_mode) { case rPRE_MAIN: unreachable(); break; case rPRESET: untested(); break; //BUG// this should close the file case rINTERACTIVE: itested(); command("quit", Scope); break; case rSCRIPT: if (OPT::acct) {untested(); command("status", Scope); }else{untested(); } untested(); throw Exception("end"); break; case rBATCH: if (OPT::acct) {itested(); command("status", Scope); }else{ } command("quit", Scope); break; } } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "end", &p0); /*--------------------------------------------------------------------------*/ class CMD_PAUSE : public CMD { public: void do_it(CS&, CARD_LIST*) {untested(); //BUG// buffer problem //BUG// redirection problem IO::error << "Continue? "; int ch = getchar(); if (ch=='n' || ch=='N' || ch=='C'-'@' || ch=='['-'@') {untested(); throw Exception("pause-stop"); }else{untested(); } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "pause", &p1); /*--------------------------------------------------------------------------*/ class CMD_QUIT : public CMD { public: void do_it(CS&, CARD_LIST* Scope) { switch (ENV::run_mode) { case rPRE_MAIN: unreachable(); break; case rINTERACTIVE: case rSCRIPT: case rBATCH: command("clear", Scope); exit(0); break; case rPRESET: untested(); /*nothing*/ break; } } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "quit|exit", &p2); /*--------------------------------------------------------------------------*/ class CMD_TEMP : public CMD { public: void do_it(CS& cmd, CARD_LIST*) {itested(); double t = NOT_INPUT; unsigned here = cmd.cursor(); cmd >> '=' >> t; if (!cmd.stuck(&here)) {itested(); OPT::temp_c = t; }else{itested(); IO::mstdout << ".temp = " << OPT::temp_c << '\n'; } } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, "temperature|temp", &p3); /*--------------------------------------------------------------------------*/ class CMD_TITLE : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { if (cmd.more()) { head = cmd.tail(); }else{itested(); IO::mstdout << head << '\n'; } } } p4; DISPATCHER::INSTALL d4(&command_dispatcher, "title", &p4); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_delete.cc000066400000000000000000000102771316501211100140720ustar00rootroot00000000000000/*$Id: c_delete.cc 2016/09/17 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * delete and clear commands */ //testing=script,complete 2006.07.16 //BUG// If someone deletes an element inside an instance of a subckt // (like ".delete r1.x1", there is no error message, and the deleted // element will reappear next time an elaboration occurs, which is // usually before anything else. #include "globals.h" #include "e_cardlist.h" #include "c_comand.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_DELETE : public CMD { private: bool delete_one_name(const std::string& name, CARD_LIST* Scope)const { assert(Scope); std::string::size_type dotplace = name.find_first_of("."); if (dotplace != std::string::npos) { // has a dot, look deeper // Split the name into two parts: // "container" -- where to look (all following the dot) // "dev_name" -- what to look for (all before the dot) std::string dev_name = name.substr(dotplace+1, std::string::npos); std::string container = name.substr(0, dotplace); // container name must be exact match CARD_LIST::iterator i = Scope->find_(container); if (i == Scope->end()) { // can't find "container" (probably .subckt) - no match // try reverse dotplace = name.find_last_of("."); container = name.substr(dotplace+1, std::string::npos); dev_name = name.substr(0, dotplace); // container name must be exact match i = Scope->find_(container); }else{ } if (i == Scope->end()) { // can't find "container" (probably .subckt) - no match return false; }else if ((**i).is_device()) { // found a match, but it isn't a container (subckt) return false; }else{ // found the container, look inside return delete_one_name(dev_name, (**i).subckt()); } unreachable(); }else{ // no dots, look here if (name.find_first_of("*?") != std::string::npos) { // there's a wild card. do linear search for all matches bool didit = false; { CARD_LIST::iterator i = Scope->begin(); while (i != Scope->end()) { CARD_LIST::iterator old_i = i++; // ^^^^^^^^^^^^ move i past the item being deleted if (wmatch((**old_i).short_label(), name)) { Scope->erase(old_i); didit = true; } } } return didit; }else{ // no wild card. fast search for one exact match CARD_LIST::iterator i = Scope->find_(name); if (i != Scope->end()) { Scope->erase(i); return true; }else{ return false; } } unreachable(); } unreachable(); return false; } //----------------------------------- void do_it(CS& cmd, CARD_LIST* Scope) { if (cmd.umatch("all ")) { CARD_LIST::card_list.erase_all(); }else{ while (cmd.more()) { unsigned mark = cmd.cursor(); bool didit = delete_one_name(cmd.ctos(), Scope); if (!didit) { cmd.warn(bWARNING, mark, "no match"); } } } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "delete|rm", &p1); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_exp.cc000066400000000000000000000034051316501211100134170ustar00rootroot00000000000000/*$Id: c_exp.cc,v 26.127 2009/11/09 16:06:11 al Exp $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=none #include "globals.h" #include "m_expression.h" #include "c_comand.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_ : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { Expression e(cmd); cmd.check(bDANGER, "syntax error"); Expression r(e, Scope); std::cout << e << '=' << r << '\n'; } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "exp|eval", &p0); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_genrat.cc000066400000000000000000000103411316501211100141000ustar00rootroot00000000000000/*$Id: c_genrat.cc 2015.01.08 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * set up generator for transient analysis */ //testing=script,complete 2015.01.08 //BUG// no step control //BUG// encapsulation violation: gen() is global #include "u_sim_data.h" #include "globals.h" #include "c_comand.h" /*--------------------------------------------------------------------------*/ static double freq = 0; static double ampl = 1; static double phaz = 0.; static double maxv = 1.; static double minv = 0.; static double offset = 0.; static double init_ = 0.; static double rise = 1e-12; static double fall = 1e-12; static double delay = 0.; static double width = 0.; static double period = 0.; /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_ : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { OMSTREAM where = (cmd.more()) ? OMSTREAM() : IO::mstdout; unsigned here = cmd.cursor(); do{ ONE_OF || ::Get(cmd, "f{requency}",&freq, mPOSITIVE) || ::Get(cmd, "a{mplitude}",&l) || ::Get(cmd, "p{hase}", &phaz) || ::Get(cmd, "ma{x}", &maxv) || ::Get(cmd, "mi{n}", &minv) || ::Get(cmd, "o{ffset}", &offset) || ::Get(cmd, "i{nitial}", &init_) || ::Get(cmd, "r{ise}", &rise, mPOSITIVE) || ::Get(cmd, "f{all}", &fall, mPOSITIVE) || ::Get(cmd, "d{elay}", &delay, mPOSITIVE) || ::Get(cmd, "w{idth}", &width, mPOSITIVE) || ::Get(cmd, "pe{riod}", &period, mPOSITIVE) ; }while (cmd.more() && !cmd.stuck(&here)); cmd.check(bWARNING, "what's this"); where.setfloatwidth(7); where << "freq=" << freq; where << " ampl=" << ampl; where << " phase=" << phaz; where << " max=" << maxv; where << " min=" << minv; where << " offset="<< offset; where << " init=" << init_; where << " rise=" << rise; where << " fall=" << fall; where << " delay=" << delay; where << " width=" << width; where << " period="<< period; where << "\n"; } } p; DISPATCHER::INSTALL d(&command_dispatcher, "generator", &p); } /*--------------------------------------------------------------------------*/ double gen() { if (CKT_BASE::_sim->_time0 <= delay) { return init_; }else{ } double loctime = CKT_BASE::_sim->_time0 - delay; if (period > 0.) { loctime = fmod(loctime, period); }else{ // not periodic } double level; if (CKT_BASE::_sim->_time0 <= delay + rise) { /* initial rise */ level = (maxv - 0) * (loctime/rise) + 0; }else if (loctime <= rise) { /* rising */ level = (maxv - minv) * (loctime/rise) + minv; }else if (width==0. || (loctime-=rise) <= width) { /* pulse on */ level = maxv; }else if ((loctime-=width) <= fall) { /* falling */ level = (minv - maxv) * (loctime/fall) + maxv; }else{ /* pulse off */ level = minv; } level *= (freq == 0.) ? ampl : ampl * sin(M_TWO_PI * freq*(CKT_BASE::_sim->_time0-delay) + phaz * DTOR); return (CKT_BASE::_sim->_time0 <= delay + rise) ? level + (offset - init_) * (loctime/rise) + init_ : level + offset; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_help.cc000066400000000000000000000063741316501211100135630ustar00rootroot00000000000000/*$Id: c_help.cc 2015/01/21 al $ -*- C++ -*- * Copyright (C) 2014 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script,complete 2015.01.22 #include "l_dispatcher.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ static DISPATCHER_BASE* dispatchers[] = { &help_dispatcher, &language_dispatcher, &command_dispatcher, &device_dispatcher, &function_dispatcher, &measure_dispatcher, &model_dispatcher, &bm_dispatcher, &status_dispatcher, &probe_dispatcher, NULL }; // the order here determines the search order /*--------------------------------------------------------------------------*/ class CMD_HELP : public CMD { public: void do_it(CS& Cmd, CARD_LIST*) { unsigned tail = Cmd.cursor(); std::string topic; Cmd >> topic; bool did_something = false; unsigned here = Cmd.cursor(); for (DISPATCHER_BASE** ii = dispatchers; *ii; ++ii) { CKT_BASE* object = (**ii)[topic]; if (object) { did_something |= object->help(Cmd, IO::mstdout); }else{ // nothing, it's ok } Cmd.reset(here); } if (!did_something) { Cmd.warn(bWARNING, tail, "no help on topic " + Cmd.substr(tail)); }else{ } } std::string help_text()const { return "help command\n" "Provides help on a variety of topics\n" "Syntax: help topic\n" "In some cases, help on subtopics is available\n" "Syntax: help topic subtopic\n" "For a list of subtopics: help topic ?\n\n" "@@subtopic\n" "help subtopic\n" "subtopics give you more detailed information\n\n" "@@test\n" "help test\n\n";//); } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "help", &p0); /*--------------------------------------------------------------------------*/ class HELP_ERROR_TEST : public CKT_BASE { } p1; DISPATCHER::INSTALL d1(&help_dispatcher, "help_error_test_with_no_help", &p1); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_list.cc000066400000000000000000000100171316501211100135730ustar00rootroot00000000000000/*$Id: c_list.cc 2016/09/11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * list and save commands. * save is list with direction to file */ //testing=script 2006.07.17 #include "e_cardlist.h" #include "u_lang.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ void list_save(CS& cmd, OMSTREAM out, CARD_LIST* scope) { CARD_LIST::card_list.precalc_first(); //out.setfloatwidth(7); switch (ENV::run_mode) { case rPRE_MAIN: unreachable(); return; case rPRESET: /* do nothing */ return; case rBATCH: case rINTERACTIVE: case rSCRIPT: /* keep going */ break; } if (!OPT::language) { throw Exception("no language"); }else{ } (out - IO::mstdout) << head << '\n'; if (cmd.is_end()) { /* no args: list all */ for (CARD_LIST::const_iterator ci=scope->begin();ci!=scope->end();++ci) { OPT::language->print_item(out, *ci); } }else{ /* some args: be selective */ unsigned arg1 = cmd.cursor(); CARD_LIST::fat_iterator ci = (cmd.match1('-')) ? CARD_LIST::fat_iterator(scope, scope->begin()) : findbranch(cmd, scope); if (ci.is_end()) {itested(); throw Exception_CS("can't find", cmd); }else{ } if (cmd.match1('-')) { /* there is a dash: a range */ cmd.skip(); if (cmd.is_end()) { /* line ends with dash: all to end */ do { OPT::language->print_item(out, *ci); } while (++ci, !ci.is_end()); }else{ CARD_LIST::fat_iterator stop = ci; stop = findbranch(cmd, ++stop); if (stop.is_end()) {itested(); throw Exception_CS("can't find", cmd); }else{ do { OPT::language->print_item(out, *ci); } while (ci++ != stop); // note subtle difference } } }else{ /* no dash: a list */ do { /* each arg */ unsigned next = cmd.cursor(); do { /* all that match this arg */ OPT::language->print_item(out, *ci); cmd.reset(arg1); assert(!ci.is_end()); ci = findbranch(cmd, ++ci); // next match } while (!ci.is_end()); cmd.reset(arg1 = next); ci = findbranch(cmd, scope); // next arg } while (!ci.is_end()); } } } /*--------------------------------------------------------------------------*/ class CMD_LIST : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { list_save(cmd, IO::mstdout, Scope); } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "list", &p1); /*--------------------------------------------------------------------------*/ class CMD_SAVE : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) {itested(); cmd.reset(); /* back up to beginning of input line */ OMSTREAM out; // = IO::mstdout; list_save(cmd, *outset(cmd,&out), Scope); } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "save", &p2); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_measure.cc000066400000000000000000000043551316501211100142710ustar00rootroot00000000000000/*$Id: c_measure.cc,v 26.113 2009/08/12 03:37:19 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=none #include "u_parameter.h" #include "u_function.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_MEASURE : public CMD { public: void do_it(CS& Cmd, CARD_LIST* Scope) { std::string assign_to, function; Cmd >> assign_to >> '=' >> function >> '('; if (FUNCTION* f = measure_dispatcher[function]) { std::string value = f->eval(Cmd, Scope); if (!Cmd.skip1b(')')) { Cmd.warn(bWARNING, "need )"); }else{ } OMSTREAM out = IO::mstdout; outset(Cmd, &out); out << assign_to << '=' << value << '\n'; PARAM_LIST* pl = Scope->params(); pl->set(assign_to, value); }else{ throw Exception_No_Match(function); } } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "measure", &p0); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_modify.cc000066400000000000000000000126611316501211100141160ustar00rootroot00000000000000/*$Id: c_modify.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script,sparse 2006.07.17 #include "globals.h" #include "e_elemnt.h" #include "u_cardst.h" #include "c_comand.h" extern const int swp_type[]; extern const int swp_count[], swp_steps[]; extern const int swp_nest; /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ enum WHATTODO {FAULT, MODIFY}; std::list faultstack; /*--------------------------------------------------------------------------*/ /* faultbranch: "fault" a single branch. (temporarily change a value) * save the existing info in "faultlist", then patch */ void faultbranch(CARD* brh, double value) { if (!brh->is_device()) { untested(); error(bWARNING, brh->long_label() + ": not a device, can't fault:\n"); }else if (brh->subckt()) { untested(); error(bWARNING, brh->long_label() + " has subckt, can't fault:\n"); }else{ faultstack.push_back(CARDSTASH(brh)); ELEMENT* e = prechecked_cast(brh); assert(e); e->set_value(value, 0); //BUG// messy way to do this, loses other attributes } } /*--------------------------------------------------------------------------*/ /* sweep_fix: fix the value for sweep command. * (find value by interpolation) * if not sweeping, return "start" (the first arg). */ double sweep_fix(CS& cmd, const CARD *brh) { double start = cmd.ctof(); double value = start; if (swp_steps[swp_nest] != 0 && cmd.is_float()) { untested(); double last = cmd.ctof(); double offset = static_cast(swp_count[swp_nest]) / static_cast(swp_steps[swp_nest]); if (swp_type[swp_nest]=='L') { untested(); if (start == 0.) { untested(); throw Exception("log sweep can't pass zero"); value = 0; }else{ untested(); value = start * pow( (last/start), offset ); } }else{ untested(); value = start + (last-start) * offset; } IO::mstdout.setfloatwidth(7) << swp_count[swp_nest]+1 << "> sweep " << brh->long_label() << " =" << value << '\n'; } return value; } /*--------------------------------------------------------------------------*/ void modify_fault(CS& cmd, WHATTODO command, CARD_LIST* scope) { CKT_BASE::_sim->uninit(); while (cmd.is_alpha()) { unsigned mark = cmd.cursor(); unsigned cmax = cmd.cursor(); CARD_LIST::fat_iterator ci(scope, scope->begin()); for (;;) { cmd.reset(mark); ci = findbranch(cmd, ci); cmax = std::max(cmax, cmd.cursor()); if (ci.is_end()) { break; } cmd.skip1b('='); CARD* brh = *ci; switch (command) { case MODIFY:{ ELEMENT* e = prechecked_cast(brh); assert(e); e->set_value(cmd.ctof(), 0); //BUG// messy way to do this, loses other attributes } break; case FAULT:{ faultbranch(brh, sweep_fix(cmd,brh)); } break; } cmax = std::max(cmax, cmd.cursor()); ++ci; } cmd.reset(cmax); if (mark == cmax) { untested(); cmd.check(bWARNING, "what's this?"); cmd.skiparg(); } } } /*--------------------------------------------------------------------------*/ class CMD_MODIFY : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { modify_fault(cmd, MODIFY, Scope); } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "modify|alter", &p1); /*--------------------------------------------------------------------------*/ class CMD_FAULT : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { modify_fault(cmd, FAULT, Scope); } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "fault", &p2); /*--------------------------------------------------------------------------*/ class CMD_RESTORE : public CMD { public: void do_it(CS&, CARD_LIST* Scope) {untested(); command("unfault", Scope); command("unmark", Scope); } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, "restore", &p3); /*--------------------------------------------------------------------------*/ class CMD_UNFAULT : public CMD { public: void do_it(CS&, CARD_LIST*) { while (!faultstack.empty()) { faultstack.back().restore(); faultstack.pop_back(); } _sim->uninit(); } } p4; DISPATCHER::INSTALL d4(&command_dispatcher, "unfault", &p4); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_param.cc000066400000000000000000000035321316501211100137240ustar00rootroot00000000000000/*$Id: c_param.cc,v 26.130 2009/11/15 21:51:59 al Exp $ -*- C++ -*- * Copyright (C) 2005 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script,complete 2006.07.17 #include "c_comand.h" #include "u_parameter.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_PARAM : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { PARAM_LIST* pl = Scope->params(); if (cmd.is_end()) { pl->print(IO::mstdout, OPT::language); IO::mstdout << '\n'; }else{ pl->parse(cmd); } } } p; DISPATCHER::INSTALL d(&command_dispatcher, "param|parameters|parameter", &p); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_prbcmd.cc000066400000000000000000000122511316501211100140710ustar00rootroot00000000000000/*$Id: c_prbcmd.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * probe and plot commands * set up print and plot (select points, maintain probe lists) * command line operations */ //testing=script,sparse 2006.07.17 #include "u_sim_data.h" #include "c_comand.h" #include "u_prblst.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ void do_probe(CS& cmd, PROBELIST *probes) { assert(probes); CKT_BASE::_sim->set_command_none(); enum {aADD, aDELETE, aNEW} action; SIM_MODE simtype = s_NONE; if (cmd.match1('-')) {untested(); /* handle .probe - ac ...... */ action = aDELETE; /* etc. */ cmd.skip(); }else if (cmd.match1('+')) {untested(); action = aADD; cmd.skip(); }else{ /* no -/+ means clear, but wait for */ action = aNEW; /* .probe ac + ..... */ } /* which will not clear first */ ONE_OF || Set(cmd, "tr{ansient}", &simtype, s_TRAN) || Set(cmd, "ac", &simtype, s_AC) || Set(cmd, "dc", &simtype, s_DC) || Set(cmd, "op", &simtype, s_OP) || Set(cmd, "fo{urier}", &simtype, s_FOURIER) ; if (!simtype) { /* must be all simtypes */ if (cmd.is_end()) { /* list all */ probes[s_TRAN].listing("tran"); probes[s_AC].listing("ac"); probes[s_DC].listing("dc"); probes[s_OP].listing("op"); probes[s_FOURIER].listing("fourier"); }else if (cmd.umatch("clear ")) { /* clear all */ for (int ii = sSTART; ii < sCOUNT; ++ii) { probes[ii].clear(); } }else{itested(); /* error */ throw Exception_CS("what's this?", cmd); } }else{ if (cmd.is_end()) {untested(); /* list */ probes[simtype].listing(""); }else if (cmd.umatch("clear ")) {untested();/* clear */ probes[simtype].clear(); }else{ /* add/remove */ CKT_BASE::_sim->init(); if (cmd.match1('-')) {itested(); /* setup cases like: */ action = aDELETE; /* .probe ac + .... */ cmd.skip(); }else if (cmd.match1('+')) { action = aADD; cmd.skip(); }else{ } if (action == aNEW) { /* no +/- here or at beg. */ probes[simtype].clear(); /* means clear first */ action = aADD; }else{ } while (cmd.more()) { /* do-it */ if (cmd.match1('-')) { /* handle cases like: */ action = aDELETE; /* .pr ac +v(7) -e(6) +r(8) */ cmd.skip(); }else if (cmd.match1('+')) {itested(); action = aADD; cmd.skip(); }else{ } if (action == aDELETE) { probes[simtype].remove_list(cmd); }else{ probes[simtype].add_list(cmd); } } } } } /*--------------------------------------------------------------------------*/ class CMD_STORE : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { assert(_probe_lists); assert(_probe_lists->store); do_probe(cmd,_probe_lists->store); } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "store", &p0); /*--------------------------------------------------------------------------*/ class CMD_ALARM : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { assert(_probe_lists); assert(_probe_lists->alarm); do_probe(cmd,_probe_lists->alarm); } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "alarm", &p1); /*--------------------------------------------------------------------------*/ class CMD_PLOT : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { IO::plotset = true; assert(_probe_lists); assert(_probe_lists->plot); do_probe(cmd,_probe_lists->plot); } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "iplot|plot", &p2); /*--------------------------------------------------------------------------*/ class CMD_PRINT : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { IO::plotset = false; assert(_probe_lists); assert(_probe_lists->print); do_probe(cmd,_probe_lists->print); } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, "iprint|print|probe", &p3); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_sim.cc000066400000000000000000000040001316501211100134030ustar00rootroot00000000000000/*$Id: c_sim.cc,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * command interface functions associated with the SIM base class */ //testing=script 2006.07.17 #include "u_sim_data.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_MARK : public CMD { public: void do_it(CS&, CARD_LIST*) {itested(); _sim->_freezetime = true; } } p6; DISPATCHER::INSTALL d6(&command_dispatcher, "mark|freeze", &p6); /*--------------------------------------------------------------------------*/ class CMD_UNMARK : public CMD { public: void do_it(CS&, CARD_LIST*) { _sim->_freezetime = false; } } p7; DISPATCHER::INSTALL d7(&command_dispatcher, "unmark|unfreeze", &p7); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_status.cc000066400000000000000000000066731316501211100141600ustar00rootroot00000000000000/*$Id: c_status.cc,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Displays the status of the system. Makes all the calculations associated * with allocating memory but does not actually allocate it, unless necessary * to make the rest of the calculations. * * If "allocate" is changed, this must also be changed. */ //testing=script 2006.07.17 #include "u_sim_data.h" #include "u_status.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_STATUS : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { IO::mstdout << "Gnucap System status\n"; if (!cmd.umatch("n{otime} ")) { ::status.compute_overhead(); IO::mstdout << "command ------ last -- total\n" << ::status.get << ::status.op << ::status.dc << ::status.tran << ::status.four << ::status.ac << "function ----- last -- total\n" << ::status.set_up << ::status.order << "function ----- last -- total\n" << ::status.advance << ::status.queue << ::status.evaluate << ::status.load << ::status.lud << ::status.back << ::status.review << ::status.accept << ::status.output << ::status.overhead; if (OPT::showall) {itested(); IO::mstdout << ::status.aux1 << ::status.aux2 << ::status.aux3; } IO::mstdout << ::status.total; } IO::mstdout << "iterations: op=" << _sim->_iter[s_OP] << ", dc=" << _sim->_iter[s_DC] << ", tran=" << _sim->_iter[s_TRAN] << ", fourier=" << _sim->_iter[s_FOURIER] << ", total=" << _sim->_iter[iTOTAL] << "\n"; for(DISPATCHER::const_iterator i = status_dispatcher.begin(); i != status_dispatcher.end(); ++i) { CKT_BASE* c = i->second; if (c) { IO::mstdout << c->status(); }else{ } } IO::mstdout << "nodes: user=" << _sim->_user_nodes << ", subckt=" << _sim->_subckt_nodes << ", model=" << _sim->_model_nodes << ", total=" << _sim->_total_nodes << "\n"; IO::mstdout.form("dctran density=%.1f%%, ac density=%.1f%%\n", _sim->_aa.density()*100., _sim->_acx.density()*100.); } } p; DISPATCHER::INSTALL d(&command_dispatcher, "status", &p); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_sweep.cc000066400000000000000000000105261316501211100137500ustar00rootroot00000000000000/*$Id: c_sweep.cc,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Step a parameter and repeat a group of commands */ //testing=none 2006.07.17 #include "c_comand.h" #include "globals.h" extern int swp_count[], swp_steps[]; extern int swp_type[]; extern int swp_nest; /*--------------------------------------------------------------------------*/ namespace { static std::string tempfile = STEPFILE; /*--------------------------------------------------------------------------*/ static void setup(CS& cmd) { for (;;) { if (cmd.is_digit()) { swp_steps[swp_nest] = cmd.ctoi() ; swp_steps[swp_nest] = (swp_steps[swp_nest]) ? swp_steps[swp_nest]-1 : 0; }else if (cmd.umatch("li{near} ")) { swp_type[swp_nest] = 0; }else if (cmd.umatch("lo{g} ")) { swp_type[swp_nest] = 'L'; }else{ break; } } } /*--------------------------------------------------------------------------*/ static void buildfile(CS& cmd) { static FILE *fptr; setup(cmd); if (fptr) { fclose(fptr); }else{ } fptr = fopen(tempfile.c_str(), "w"); if (!fptr) { throw Exception_File_Open("can't open temporary file:" + tempfile); }else{ } fprintf(fptr, "%s\n", cmd.fullstring().c_str()); for (;;) { char buffer[BUFLEN]; getcmd(">>>", buffer, BUFLEN); if (Umatch(buffer,"go ")) { break; }else{ } fprintf(fptr, "%s\n", buffer); } fclose(fptr); fptr = NULL; } /*--------------------------------------------------------------------------*/ static void doit(CARD_LIST* scope) { static FILE *fptr; for (swp_count[swp_nest]=0; swp_count[swp_nest]<=swp_steps[swp_nest]; ++swp_count[swp_nest]) { if (fptr) { fclose(fptr); }else{ } fptr = fopen(tempfile.c_str(), "r"); if (!fptr) { throw Exception_File_Open("can't open " + tempfile); }else{ } char buffer[BUFLEN]; fgets(buffer,BUFLEN,fptr); { CS cmd(CS::_STRING, buffer); //fgets from local file, obsolete if (cmd.umatch("sw{eep} ")) { setup(cmd); }else{ throw Exception("bad file format: " + tempfile); } unsigned ind = cmd.cursor(); strncpy(buffer, "fault ", ind); buffer[ind-1] = ' '; /* make sure there is a delimiter */ } /* in case the words run together */ for (;;) { /* may wipe out one letter of fault */ { CS cmd(CS::_STRING, buffer); //fgets from local file, obsolete CMD::cmdproc(cmd, scope); } if (!fgets(buffer,BUFLEN,fptr)) { break; }else{ } { CS cmd(CS::_STRING, buffer); //fgets from local file, obsolete if (cmd.umatch("sw{eep} ")) { cmd.warn(bDANGER, "command not allowed in sweep"); buffer[0] = '\''; }else{ } } IO::mstdout << swp_count[swp_nest]+1 << "> " << buffer; } } fclose(fptr); fptr = NULL; swp_count[swp_nest] = 0; } /*--------------------------------------------------------------------------*/ class CMD_SWEEP : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { if (cmd.more()) { buildfile(cmd); }else{ } doit(Scope); command("unfault", Scope); } } p; DISPATCHER::INSTALL d(&command_dispatcher, "sweep", &p); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/c_system.cc000066400000000000000000000061141316501211100141470ustar00rootroot00000000000000/*$Id: c_system.cc,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * system calls: change directory, invoke another program, invoke editor, etc. */ //testing=none 2006.07.17 #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ /* cmd_edit: (command) invoke user defined editor on the netlist * if command has an argument, it edits that file instead * else actually edits a temporary file, and reads it back. */ class CMD_EDIT : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) {itested(); std::string editor(OS::getenv("EDITOR")); if (editor == "") { throw Exception("no editor defined\n" "You need to set the EDITOR environment variable."); }else{ if (cmd.more()) {itested(); OS::system(editor + ' ' + cmd.tail()); }else{ std::string temp_file("/tmp/gnucap" + to_string(unsigned(time(NULL)))); command("save " + temp_file + " quiet", Scope); OS::system(editor + ' ' + temp_file); command("get " + temp_file + " quiet", Scope); OS::remove(temp_file); } } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "edit", &p1); /*--------------------------------------------------------------------------*/ class CMD_SYSTEM : public CMD { public: void do_it(CS& cmd, CARD_LIST*) {itested(); if (cmd.more()) {itested(); OS::system(cmd.tail()); }else{ OS::system(SHELL); } } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "system|!", &p2); /*--------------------------------------------------------------------------*/ class CMD_CHDIR : public CMD { public: void do_it(CS& cmd, CARD_LIST*) {itested(); if (cmd.more()) { OS::chdir(cmd.ctos("")); }else{ } IO::mstdout << OS::getcwd() << '\n'; } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, "chdir|cd", &p3); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/configure000077500000000000000000000033471316501211100137260ustar00rootroot00000000000000#!/bin/sh # configure for library (shared object) mkdir -p O #------------- Stuff added to enable --prefix -------------- if test "x$1" != "x"; then # echo Found input parameter -- $1 # Now see if the parameter is --prefix= if test "x${1#--prefix=}" != "x$1"; then # echo "Found --prefix in input args. Setting prefix directory." prefix=${1#--prefix=} else # echo "Found unrecognized parameter in input args." # Just use the default prefix dir. prefix=/usr/local fi else # echo "No input parameter found." # Just use the default prefix dir prefix=/usr/local fi sed -e "s#/usr/local#$prefix#" ../Makefile.template > Makefile #---------------------------------------------------------------- echo "CCFLAGS = -fPIC \\" >Make.ccflags echo "-DUNIX -O2 -DNDEBUG -I. -I../include -I../../include -W" >>Make.ccflags echo "LIBS = \\" >Make.libs echo "" >>Make.libs echo "PREFIX = " $prefix >>Make.libs echo "" >>Make.libs cat <Make.sys #------------------------------------------------------------------------ VPATH = .:.. CCC = c++ TARGET_EXT = .so LDFLAGS = -shared .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) -c \$< #------------------------------------------------------------------------ \$(TARGET)\$(TARGET_EXT): \$(TARGET_DEPENDS) rm -f \$@ \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) \$(OBJS) \$(LIBS) \$(LDFLAGS) -o \$@ #------------------------------------------------------------------------ CAT_EOF echo \# created by $PWD/$0. do not edit >Make2 echo \#------------------------------------------------------------------------ >>Make2 cat Make.ccflags Make.libs Make.sys >>Make2 rm Make.ccflags Make.libs Make.sys exit 0 apps/d_admit.cc000066400000000000000000000140761316501211100137300ustar00rootroot00000000000000/*$Id: d_admit.cc,v 26.138 2013/04/24 02:44:30 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * admittance devices: * self-admittance (old Y device) * y.x = volts, y.f0 = amps, ev = y.f1 = mhos. * m.x = volts, m.c0 = amps, acg = m.c1 = mhos. * trans-admittance (VCCS, G device) * voltage controlled admittance * y.x = volts(control), y.f0 = mhos, ev = y.f1 = mhos/volt * m.x = volts(control), m.c0 = 0, acg = m.c1 = mhos * _loss0 == 1/R. (mhos) */ //testing=script 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_ADMITTANCE : public ELEMENT { protected: explicit DEV_ADMITTANCE(const DEV_ADMITTANCE& p) :ELEMENT(p) {} public: explicit DEV_ADMITTANCE() :ELEMENT() {} protected: // override virtual char id_letter()const {return 'Y';} std::string value_name()const {return "g";} std::string dev_type()const {return "admittance";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int matrix_nodes()const {return 2;} int net_nodes()const {return 2;} bool has_iv_probe()const {return true;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_ADMITTANCE(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_passive();} void tr_begin(); bool do_tr(); void tr_load() {tr_load_passive();} void tr_unload() {tr_unload_passive();} double tr_involts()const {return tr_outvolts();} double tr_involts_limited()const {return tr_outvolts_limited();} void ac_iwant_matrix() {ac_iwant_matrix_passive();} void ac_begin() {_acg = _ev = _y[0].f1;} void do_ac(); void ac_load() {ac_load_passive();} COMPLEX ac_involts()const {untested();return ac_outvolts();} std::string port_name(int i)const { assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ class DEV_VCCS : public DEV_ADMITTANCE { protected: explicit DEV_VCCS(const DEV_VCCS& p) :DEV_ADMITTANCE(p) {} public: explicit DEV_VCCS() :DEV_ADMITTANCE() {} protected: // override virtual char id_letter()const {return 'G';} std::string value_name()const {return "gm";} std::string dev_type()const {return "vccs";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} bool has_iv_probe()const {return false;} CARD* clone()const {return new DEV_VCCS(*this);} void tr_iwant_matrix() {tr_iwant_matrix_active();} void tr_load() {tr_load_active();} void tr_unload() {untested();tr_unload_active();} double tr_involts()const {return dn_diff(_n[IN1].v0(), _n[IN2].v0());} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} void ac_iwant_matrix() {ac_iwant_matrix_active();} void ac_load() {ac_load_active();} COMPLEX ac_involts()const {untested();return _n[IN1]->vac() - _n[IN2]->vac();} std::string port_name(int i)const { assert(i >= 0); assert(i < 4); static std::string names[] = {"sink", "src", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_ADMITTANCE::precalc_last() { ELEMENT::precalc_last(); set_constant(!has_tr_eval()); set_converged(!has_tr_eval()); } /*--------------------------------------------------------------------------*/ void DEV_ADMITTANCE::tr_begin() { ELEMENT::tr_begin(); _m0.x = _y[0].x; _m0.c1 = _y[0].f1; _m0.c0 = 0.; _m1 = _m0; assert(_loss0 == 0.); assert(_loss1 == 0.); } /*--------------------------------------------------------------------------*/ bool DEV_ADMITTANCE::do_tr() { if (using_tr_eval()) { _y[0].x = _m0.x = tr_involts_limited(); _y[0].f0 = _m0.c1 * _m0.x + _m0.c0; //BUG// patch for diode tr_eval(); assert(_y[0].f0 != LINEAR); store_values(); q_load(); _m0 = CPOLY1(_y[0]); }else{ assert(_y[0].f0 == LINEAR); assert(_y[0].f1 == value()); assert(_m0.c1 == _y[0].f1); assert(_m0.c0 == 0.); assert(_y1 == _y[0]); assert(converged()); } return converged(); } /*--------------------------------------------------------------------------*/ void DEV_ADMITTANCE::do_ac() { if (using_ac_eval()) {itested(); ac_eval(); _acg = _ev; }else{ assert(_ev == _y[0].f1); assert(has_tr_eval() || _ev == double(value())); } assert(_acg == _ev); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_ADMITTANCE p1; DEV_VCCS p2; DISPATCHER::INSTALL d1(&device_dispatcher, "Y|admittance", &p1), d2(&device_dispatcher, "G|vccs", &p2); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_bjt.model000066400000000000000000000630371316501211100141250ustar00rootroot00000000000000/* $Id: d_bjt.model 2014/11/23 al$ -*- C++ -*- * Copyright (C) 2002 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Berkeley BJT model * Derived from Spice code, both from 2g6 and 3f4 * Recoded for Gnucap model compiler, Al Davis, 2002 *------------------------------------------------------------------ * data structures and defaults for bjt model. * * netlist syntax: * device: qxxxx c b e s mname * model: .model mname NPN * or .model mname PNP * * known BUGs * 1. excess phase partially implemented, disabled, as if PTF == 0. */ /*--------------------------------------------------------------------------*/ h_headers { #include "d_diode.h" } cc_headers { #include "u_limit.h" } /*--------------------------------------------------------------------------*/ device BUILT_IN_BJT { parse_name bjt; model_type BUILT_IN_BJT; id_letter Q; circuit { sync; ports {c b e} {s short_to=e}; local_nodes { ic short_to=c short_if="!OPT::rstray || m->rc == 0."; ib short_to=b short_if="!OPT::rstray || (m->rb == 0. && m->rbm == 0.)"; ie short_to=e short_if="!OPT::rstray || m->re == 0."; } // basics cpoly_g Ice {ic,ie ib,ie} state=ccexxx; // cce, go, gm cpoly_g Ipi {ib ie} state=cpixxx; // cpi, gpi cpoly_g Imu {ib ic} state=cmuxxx; // cmu, gmu // junction charge effects fpoly_cap Cbx {b ic} state=qbx; // qbx, cqbx fpoly_cap Cbc {ib ic} state=qbc; // qbc, cqbc fpoly_cap Ccs {s ic} state=qcs // qcs, cqcs omit="!(_n[n_s].n_())"; fpoly_cap Cbe {ib ie ib ic} state=qbe; // qbe, cqbe, geqbc // parasitics resistor Rc {c ic} value="m->rc / c->area" omit="!OPT::rstray || m->rc == 0."; // gcpr resistor Re {e ie} value="m->re / c->area" omit="!OPT::rstray || m->re == 0."; // gepr cpoly_g Yb {b ib} state=ixxxx // gx. should be "eval" omit="!OPT::rstray || (m->rb == 0. && m->rbm == 0.)"; capacitor Cbcp {b c} value="m->cbcp * c->area" omit="!OPT::cstray || m->cbcp == 0."; capacitor Cbep {b e} value="m->cbep * c->area" omit="!OPT::cstray || m->cbep == 0."; capacitor Cbs {b s} value="(m->cbsp + m->ccsp) * c->area" omit="!OPT::cstray || ((m->cbsp + m->ccsp) == 0.)"; } tr_probe { v = "@n_c[V] - @n_e[V]"; "vbei{nt}" = "vbe"; "vbci{nt}" = "vbc"; "vbxi{nt}" = "vbx"; "vcsi{nt}" = "vcs"; vbs = "@n_b[V] - @n_s[V]"; vbe = "@n_b[V] - @n_e[V]"; vbc = "@n_b[V] - @n_c[V]"; vbx = "@n_b[V] - @n_ib[V]"; vcs = "@n_c[V] - @n_s[V]"; vcb = "@n_c[V] - @n_b[V]"; vce = "@n_c[V] - @n_e[V]"; ves = "@n_e[V] - @n_s[V]"; veb = "@n_e[V] - @n_b[V]"; vec = "@n_e[V] - @n_c[V]"; vb = "@n_b[V]"; vc = "@n_c[V]"; ve = "@n_e[V]"; vs = "@n_s[V]"; vbi = "@n_ib[V]"; vci = "@n_ic[V]"; vei = "@n_ie[V]"; "i" = "cce"; "ice" = "cce"; "iceo{ffset}" = "ccexxx"; hoe = "go"; "ro{e}" = "(go != 0.) ? 1/go : BIGBIG"; ipi = "cpi"; "ipio{ffset}" = "cpixxx"; rpi = "(gpi != 0.) ? 1/gpi : BIGBIG"; hie = "(gpi != 0.) ? 1/gpi : BIGBIG"; imu = "cmu"; "imuo{ffset}" = "cmuxxx"; rmu = "(gmu != 0.) ? 1/gmu : BIGBIG"; ib = "cpi + cmu"; rx = "(gx != NA) ? 1/gx : 0."; ic = "cce - cmu"; ie = "-cce -cpi"; cbx = "cqbx"; cbc = "cqbc"; cmu = "cqbc"; ccs = "cqcs"; cbe = "cqbe"; cpi = "cqbe"; p = "@Ice[P] + @Ipi[P] + @Imu[P] + @Rc[P] + @Re[P] + @Yb[P] + @Cbx[P] + @Cbc[P] + @Ccs[P] + @Cbe[P]"; pd = "@Ice[PD] + @Ipi[PD] + @Imu[PD] + @Rc[PD] + @Re[PD] + @Yb[PD] + @Cbx[PD] + @Cbc[PD] + @Ccs[PD] + @Cbe[PD]"; ps = "@Ice[PS] + @Ipi[PS] + @Imu[PS] + @Rc[PS] + @Re[PS] + @Yb[PS] + @Cbx[PS] + @Cbc[PS] + @Ccs[PS] + @Cbe[PS]"; status = "static_cast(converged() * 2)"; } device { calculated_parameters { double vbe "B-E voltage"; // gather double vbc "B-C voltage"; double vbx "B-C voltage (ext base)"; double vcs "C-S voltage"; double cce "collector-emitter current"; double ccexxx; double go "Small signal output conductance"; double gm "Small signal transconductance"; double cpi "emitter-base current"; double cpixxx; double gpi "Small signal input conductance - pi"; double cmu "collector-base current"; double cmuxxx; double gmu "Small signal conductance - mu"; double ixxxx "Current offset at base node, constant" default=0.; double gx "dix/dvbb Conductance from base to internal base"; double qbx "Charge storage B-X junction"; double cqbx "Cap. due to charge storage in B-X jct."; // cbx, capbx double qbc "Charge storage B-C junction"; double cqbc "Cap. due to charge storage in B-C jct."; // cmu, capbc double qcs "Charge storage C-S junction"; double cqcs "Cap. due to charge storage in C-S jct."; // ccs, capcs double qbe "Charge storage B-E junction"; double cqbe "Cap. due to charge storage in B-E jct."; // cpi, capbe double geqcb "d(Ieb)/d(Vcb)"; double cexbc_0 "Total Capacitance in B-X junction"; // ?? double cexbc_1 ""; double cexbc_2 ""; double _dt_0 "time step"; double _dt_1 ""; } } common { unnamed area; raw_parameters { double area "area factor" name=Area positive default=1.; bool off "device initially off" name=OFF default=false print_test=off; double icvbe "Initial B-E voltage" name="ICVBE" default=NA; double icvce "Initial C-E voltage" name="ICVCE" default=NA; double temp_c "instance temperature" name="TEMP" default=NA; } calculated_parameters { double oik "" calculate="m->invrollofff / c->area"; double oikr "" calculate="m->invrolloffr / c->area"; } } tr_eval { int foo=3; } } /*--------------------------------------------------------------------------*/ model BUILT_IN_BJT { level 1; dev_type BUILT_IN_BJT; hide_base; inherit BUILT_IN_DIODE; public_keys { npn polarity=pN; pnp polarity=pP; npn1 polarity=pN; pnp1 polarity=pP; } independent { override { double kf "Flicker Noise Coefficient" name=KF default=0.; double af "Flicker Noise Exponent" name=AF default=1.; } raw_parameters { int level "dummy" name=LEVEL default=1 print_test=false; // basic double bf "Ideal forward beta" name=BF alt_name=BFM default=100.; double br "Ideal reverse beta" name=BR alt_name=BRM default=1.; double ibc "bc Saturation Current" name=IBC default=NA print_test="ibe != ibc" final_default="((has_hard_value(i_s)) ? i_s : 1e-16)"; double ibe "be Saturation Current" name=IBE default=NA print_test="ibe != ibc" final_default="((has_hard_value(i_s)) ? i_s : 1e-16)"; double i_s "Saturation Current" name=IS default=NA print_test="ibe == ibc" final_default="((ibe == ibc) ? ibe : NA)"; //double iss "bulk to collector or base sat current (ignored)" //name=ISS default=0; //double expli "current explosion factor (ignored)" //name=EXPLI default=1e15; double nf "Forward emission coefficient" name=NF default=1.; double nr "Reverse emission coefficient" name=NR default=1.; //double ns "substrate leakage emission coefficient (ignored)" //name=NS default=1; //int subs "geometry, +1=vertical, -1=lateral (ignored)", name=SUBS //default="(polarity==pP) ? -1 : 1"; // base width modulation double vaf "Forward Early voltage" name=VAf alt_name=VA\0VBF default=NA; double var "Reverse Early voltage" name=VAR alt_name=VB default=NA; // low current beta degeneration double isc "B-C leakage saturation current" name=ISC default=NA final_default="(c4*ibc)"; double c4 "obsolete, don't use" name=C4 alt_name=JLC default=0.; double nc "B-C leakage emission coefficient" name=NC default=2.; double ise "B-E leakage saturation current" name=ISE default=NA final_default="(c2*ibe)"; double c2 "obsolete, don't use" name=C2 alt_name=JLE default=0.; double ne "B-E leakage emission coefficient" name=NE default=1.5; // high current beta degeneration double ikf "Forward beta roll-off corner current" name=IKf alt_name=IK\0JBF default=NA; double ikr "reverse beta roll-off corner current" name=IKR alt_name=JBR default=NA; // parasitic resistance double irb "Current for base resistance=(rb+rbm)/2" name=IRB alt_name=JRB\0IOB default=NA; double rb "Zero bias base resistance" name=RB default=0.; double rbm "Minimum base resistance" name=RBM default=NA final_default=rb; double re "Emitter resistance" name=RE default=0.; double rc "Collector resistance" name=RC default=0.; // parasitic capacitance double cbcp "external BC capacitance" name=CBCP print_test="cbcp!=0." default=0.; double cbep "external BE capacitance" name=CBEP print_test="cbep!=0." default=0.; double cbsp "external BS capacitance (lateral)" name=CBSP print_test="cbsp!=0." default=0.; double ccsp "external BS capacitance (vertical)" name=CCSP print_test="ccsp!=0." default=0.; // junction capacitance double cjc "Zero bias B-C depletion capacitance" name=CJC default=0.; double cje "Zero bias B-E depletion capacitance" name=CJE default=0.; double cjs "Zero bias C-S capacitance" name=CJS alt_name=CCS\0CSUB default=0.; double fc "Forward bias junction fit parameter" name=FC default=NA final_default=.5 quiet_max=.9999; double mjc "B-C junction grading coefficient" name=MJC alt_name=MC\0MJ default=.33; double mje "B-E junction grading coefficient" name=MJE alt_name=ME default=.33; double mjs "Substrate junction grading coefficient" name=MJS alt_name=MSub\0MS\0ESUB default=0.; // alt name ESUB?? double vjc "B-C built in potential" name=VJC alt_name=PC default=.75; double vje "B-E built in potential" name=VJE alt_name=PE default=.75; double vjs "Substrate junction built in potential" name=VJS alt_name=PSub\0PS default=.75; double xcjc "Fraction of B-C cap to internal base" name=XCJC alt_name=CDIS default=1.; // transit time double itf "High current dependence of TF" name=ITF alt_name=JTF default=0.; double ptf "Excess phase" name=PTf default=0.; double tf "Ideal forward transit time" name=TF default=0.; double tr "Ideal reverse transit time" name=TR default=0.; double vtf "Voltage giving VBC dependence of TF" name=VTF default=NA; double xtf "Coefficient for bias dependence of TF" name=XTF default=0.; // temperature effects double xtb "Forward and reverse beta temp. exp." name=XTB alt_name=TB default=0.; // alt name TCB double xti "Temp. exponent for IS" name=XTI default=3.; double eg "Energy gap for IS temp. dependency" name=EG default=1.11; } calculated_parameters { double tnom_k "nominal temperature, kelvin" calculate="_tnom_c + P_CELSIUS0"; polarity_t polarity "" default=pN; double invearlyvoltf "Inverse early voltage:forward" name=INVEARLYVOLTF calculate="(has_nz_value(vaf)) ? 1./vaf : 0."; double invearlyvoltr "Inverse early voltage:reverse" name=INVEARLYVOLTR calculate="(has_nz_value(var)) ? 1./var : 0."; double invrollofff "Inverse roll off - forward" name=INVROLLOFFF calculate="(has_nz_value(ikf)) ? 1./ikf : 0."; double invrolloffr "Inverse roll off - reverse" name=INVROLLOFFR calculate="(has_nz_value(ikr)) ? 1./ikr : 0."; double transtimevbcfact "Transit time VBC factor" name=TRANSTIMEVBCFACT calculate="(has_nz_value(vtf)) ? 1./(vtf*1.44) : 0."; double excessphasefactor "Excess phase fact." name=EXCESSPHASEFACTOR calculate="(ptf * DTOR) * tf"; double xfc "" calculate="log(1 - fc)"; double f2 "" calculate="exp((1 + mje) * xfc)"; double f3 "" calculate="1 - fc * (1 + mje)"; double f6 "" calculate="exp((1 + mjc) * xfc)"; double f7 "" calculate="1 - fc * (1 + mjc)"; } } temperature_dependent { calculated_parameters { double vt ""; //double is "BJTtSatCur" calculate = "m->is * factor"; double ibc "BJTtSatCur" calculate = "m->ibc * factor"; double ibe "BJTtSatCur" calculate = "m->ibe * factor"; double BetaF "BJTtBetaF" calculate = "m->bf * bfactor"; double BetaR "BJTtBetaR" calculate = "m->br * bfactor"; double BEleakCur "BJTtBEleakCur" calculate = "m->ise * exp(factlog/m->ne) / bfactor"; double BCleakCur "BJTtBCleakCur" calculate = "m->isc * exp(factlog/m->nc) / bfactor"; double BEpot "BJTtBEpot"; double BEcap "BJTtBEcap"; double DepCap ""; double f1 ""; double BCpot "BJTtBCpot"; double BCcap "BJTtBCcap"; double f4 ""; double f5 ""; double Vcrit "" calculate="vt * log(vt / (M_SQRT2 * m->ibe))"; } code_pre { const double reftemp = 300.15; double temp_k = ((has_hard_value(c->temp_c)) ? c->temp_c : d->_sim->_temp_c) + P_CELSIUS0; double fact1 = m->tnom_k / reftemp; double fact2 = temp_k / reftemp; double tempratio = temp_k / m->tnom_k; // fact2/fact1 double kt = temp_k * P_K; vt = temp_k * P_K_Q; double egap = 1.16 - (7.02e-4*temp_k*temp_k) / (temp_k+1108.); // egfet // double arg = (m->eg*tempratio - egap) / (2*kt); double arg = -egap/(2 * kt) + 1.1150877 / (P_K * (reftemp+reftemp)); double pbfact = -2 * vt * (1.5 * log(fact2) + P_Q * arg); double ratlog = log(tempratio); double ratio1 = tempratio - 1; double factlog = ratio1 * m->eg / vt + m->xti * ratlog; double factor = exp(factlog); double bfactor = exp(ratlog * m->xtb); } code_post { { double pbo = (m->vje - pbfact) / fact1; BEpot = fact2 * pbo + pbfact; double gmaold = (m->vje - pbo) / pbo; double gmanew = (BEpot - pbo) / pbo; BEcap = (m->cje / (1 + m->mje * (4e-4*(m->tnom_k-reftemp)-gmaold))) * (1 + m->mje * (4e-4*(temp_k-reftemp)-gmanew)); DepCap = m->fc * BEpot; f1 = BEpot * (1 - exp((1 - m->mje) * m->xfc)) / (1 - m->mje); } { double pbo = (m->vjc - pbfact) / fact1; BCpot = fact2 * pbo + pbfact; double gmaold = (m->vjc - pbo) / pbo; double gmanew = (BCpot - pbo) / pbo; BCcap = (m->cjc / (1 + m->mjc * (4e-4*(m->tnom_k-reftemp)-gmaold))) * (1 + m->mjc * (4e-4*(temp_k-reftemp)-gmanew)); f4 = m->fc * BCpot; f5 = BCpot * (1 - exp((1 - m->mjc) * m->xfc)) / (1 - m->mjc); } } } tr_eval { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - trace0("--------------------------"); trace0(d->long_label().c_str()); trace4("", d->vbe, d->vbc, d->vbx, d->vcs); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double cbe, gbe; { // d->cpi, d->gpi, d->cpixxx // uses: d->vbe double cben, gben; double vtn = t->vt * m->nf; double csat = t->ibe * c->area; double C2 = t->BEleakCur * c->area; if (d->vbe > -5 * vtn) { double evbe = exp(d->vbe / vtn); cbe = csat * (evbe-1) + OPT::gmin * d->vbe; gbe = csat * evbe/vtn + OPT::gmin; if (C2 == 0.) { cben = 0.; gben = 0.; }else{ double vte = m->ne * t->vt; double evben = exp(d->vbe / vte); cben = C2 * (evben-1); gben = C2 * evben/vte; } trace4("vbe on", cbe, gbe, cben, gben); }else{ gbe = -csat/d->vbe + OPT::gmin; cbe = gbe * d->vbe; gben = -C2 / d->vbe; cben = gben * d->vbe; trace4("vbe off", cbe, gbe, cben, gben); } d->cpi = cbe / t->BetaF + cben; d->gpi = gbe / t->BetaF + gben; d->cpixxx = d->cpi - d->vbe * d->gpi; trace3("", t->BetaF, d->cpi, d->gpi); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double cbc, gbc, cbcn; { // d->cmu, d->gmu, d->cmuxxx // uses: d->vbc double gbcn; double vtn = t->vt * m->nr; double csat = t->ibc * c->area; double C4 = t->BCleakCur * c->area; if (d->vbc > -5 * vtn) { double evbc = exp(d->vbc / vtn); cbc = csat * (evbc-1) + OPT::gmin * d->vbc; gbc = csat * evbc/vtn + OPT::gmin; if (C4 == 0.) { cbcn = 0.; gbcn = 0.; }else{ double vtc = m->nc * t->vt; double evbcn = exp(d->vbc / vtc); cbcn = C4 * (evbcn-1); gbcn = C4 * evbcn/vtc; } trace4("vbc on", cbc, gbc, cbcn, gbcn); }else{ gbc = -csat/d->vbc + OPT::gmin; cbc = gbc * d->vbc; gbcn = -C4 / d->vbc; cbcn = gbcn * d->vbc; trace4("vbc off", cbc, gbc, cbcn, gbcn); } d->cmu = cbc / t->BetaR + cbcn; d->gmu = gbc / t->BetaR + gbcn; d->cmuxxx = d->cmu - d->vbc * d->gmu; trace3("", t->BetaR, d->cmu, d->gmu); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // determine base charge terms double qb, dqbdve, dqbdvc; { double q1 = 1 / (1 - m->invearlyvoltf*d->vbc - m->invearlyvoltr*d->vbe); if(c->oik == 0. && c->oikr == 0.) { qb = q1; dqbdve = q1 * qb * m->invearlyvoltr; dqbdvc = q1 * qb * m->invearlyvoltf; trace4("!oik", q1, qb, dqbdve, dqbdvc); }else{ double q2 = c->oik * cbe + c->oikr * cbc; double arg = std::max(0., 1+4*q2); double sqarg = (arg == 0.) ? 1 : sqrt(arg); qb = q1 * (1+sqarg) / 2; dqbdve = q1 * (qb * m->invearlyvoltr + c->oik * gbe / sqarg); dqbdvc = q1 * (qb * m->invearlyvoltf + c->oikr * gbc / sqarg); trace2("", c->oik, c->oikr); trace4("oik", q1, qb, dqbdve, dqbdvc); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // weil's approx. for excess phase applied with backward-euler integration { double cc = 0.; double cex = cbe; double gex = gbe; if (0 && m->excessphasefactor != 0.) { unreachable(); incomplete(); // doesn't save old values of cexbc, so disabled double arg1 = d->_dt_0 / m->excessphasefactor; double arg2 = 3 * arg1; arg1 *= arg2; double denom = 1 + arg1 + arg2; double arg3 = arg1 / denom; if (_sim->is_initial_step()) { d->cexbc_2 = d->cexbc_1 = cbe / qb; }else{ } cc = (d->cexbc_1 * (1 + d->_dt_0/d->_dt_1 + arg2) - d->cexbc_2 * d->_dt_0/d->_dt_1) / denom; cex *= arg3; gex *= arg3; } d->cexbc_0 = cc + cex / qb; d->cce = cc + (cex-cbc)/qb - cbc/t->BetaR - cbcn; d->go = (gbc + (cex-cbc)*dqbdvc / qb) / qb; d->gm = (gex - (cex-cbc)*dqbdve / qb) / qb - d->go; d->ccexxx = d->cce - ((d->vbe - d->vbc) * d->go + d->vbe * d->gm); trace4("", d->cce, d->go, d->gm, d->cce/t->vt); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // d->gx // should be moved to a private eval // may use d->cpi, d->cmu, qb { if (!OPT::rstray || (!has_nz_value(m->rb) && !has_nz_value(m->rbm))) { trace3("", m->rb, m->irb, d->gx); assert(d->gx == NA); }else{ double rx = NA; double rbpr = m->rbm / c->area; double rbpi = m->rb / c->area - rbpr; if (has_nz_value(m->irb)) {itested();//554 // base resistance lowering at high current double cb = d->cpi + d->cmu; double xjrb = m->irb * c->area; double arg1 = std::max(cb/xjrb, 1e-9); double arg2 = (-1 + sqrt(1+14.59025*arg1)) / 2.4317 / sqrt(arg1); arg1 = tan(arg2); rx = rbpr + 3 * rbpi * (arg1-arg2) / arg2 / arg1 / arg1; }else{ rx = rbpr + rbpi / qb; } trace3("", m->rb, m->irb, rx); assert(rx != NA); assert(rx != 0.); d->gx = 1 / rx; trace1("", d->gx); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const bool charge_computation_needed = OPT::cstray; if (charge_computation_needed) { if (has_nz_value(m->tf) && d->vbe > 0.) { double argtf = NA; double arg2 = NA; double arg3 = NA; if (has_nz_value(m->xtf)) {itested();//579 if (m->transtimevbcfact != 0.) { argtf = m->xtf * exp(d->vbc * m->transtimevbcfact); }else{untested(); argtf = m->xtf; } arg2 = argtf; if(has_nz_value(m->itf)) { double temp = cbe / (cbe + m->itf * c->area); argtf *= temp*temp; arg2 *= (3-temp-temp); }else{ } arg3 = cbe * argtf * m->transtimevbcfact; }else{ arg3 = arg2 = argtf = 0.; } assert(argtf != NA); assert(arg2 != NA); assert(arg3 != NA); cbe *= (1+argtf) / qb; gbe = (gbe * (1+arg2) - cbe * dqbdve) / qb; d->geqcb=m->tf*(arg3-cbe*dqbdvc)/qb; }else{ d->geqcb=0.; } { // d->qbe, d->cqbe // uses: d->vbe, cbe, gbe double czbe = t->BEcap * c->area; if (d->vbe < t->DepCap) { double arg = 1 - d->vbe / t->BEpot; double sarg = pow(arg, -m->mje); d->qbe = m->tf * cbe + t->BEpot * czbe * (1-arg*sarg) / (1 - m->mje); d->cqbe = m->tf * gbe + czbe * sarg; }else{ double czbef2 = czbe / m->f2; d->qbe = m->tf * cbe + czbe * t->f1 + czbef2 * (m->f3 * (d->vbe - t->DepCap) + (m->mje / (2. * t->BEpot)) * (d->vbe * d->vbe - t->DepCap * t->DepCap)); d->cqbe = m->tf * gbe + czbef2 * (m->f3 + m->mje*d->vbe / t->BEpot); } } { // d->qbc, d->cqbc // uses: d->vbc, cbc, gbc double czbc = t->BCcap * c->area * m->xcjc; if (d->vbc < t->f4) { double arg = 1 - d->vbc / t->BCpot; double sarg = pow(arg, -m->mjc); d->qbc = m->tr *cbc + t->BCpot *czbc * (1 - arg*sarg) / (1 - m->mjc); d->cqbc = m->tr * gbc + czbc * sarg; }else{ double czbcf2 = czbc / m->f6; d->qbc = m->tr * cbc + czbc * t->f5 + czbcf2 * (m->f7 * (d->vbc-t->f4) + (m->mjc/(t->BCpot+t->BCpot)) * (d->vbc*d->vbc-t->f4*t->f4)); d->cqbc = m->tr * gbc + czbcf2 * (m->f7 + m->mjc * d->vbc/t->BCpot); } } { // d->qbx, d->cqbx // uses: d->vbx double czbx = t->BCcap * c->area * (1 - m->xcjc); if (d->vbx < t->f4) { double arg = 1 - d->vbx / t->BCpot; double sarg = pow(arg, -m->mjc); d->qbx = t->BCpot * czbx * (1 - arg*sarg) / (1 - m->mjc); d->cqbx = czbx * sarg; }else{ double czbxf2 = czbx / m->f6; d->qbx = czbx * t->f5 + czbxf2 * (m->f7 * (d->vbx-t->f4) + (m->mjc / (t->BCpot+t->BCpot)) * (d->vbx*d->vbx-t->f4*t->f4)); d->cqbx = czbxf2 * (m->f7 + m->mjc * d->vbx / t->BCpot); } } { // d->qcs, d->cqcs // uses: d->vcs double czcs = m->cjs * c->area; if (d->vcs < 0.) { double arg = 1 - d->vcs / m->vjs; double sarg = pow(arg, -m->mjs); d->qcs = m->vjs * czcs * (1 - arg*sarg) / (1 - m->mjs); d->cqcs = czcs * sarg; }else{ d->qcs = d->vcs * czcs * (1 + m->mjs * d->vcs / (2 * m->vjs)); d->cqcs = czcs * (1 + m->mjs * d->vcs / m->vjs); } } } } } /*--------------------------------------------------------------------------*/ cc_direct { /*--------------------------------------------------------------------------*/ bool DEV_BUILT_IN_BJT::tr_needs_eval()const { if (is_q_for_eval()) { untested(); return false; }else if (!converged()) { return true; }else{ const COMMON_BUILT_IN_BJT* c = prechecked_cast(common()); assert(c); const MODEL_BUILT_IN_BJT* m=prechecked_cast(c->model()); assert(m); polarity_t polarity = m->polarity; return !(conchk(vbc, polarity*(_n[n_ib].v0()-_n[n_ic].v0()), OPT::vntol) && conchk(vbe, polarity*(_n[n_ib].v0()-_n[n_ie].v0()), OPT::vntol) && conchk(vcs, polarity*(_n[n_ic].v0()-_n[n_s].v0()), OPT::vntol)); } } /*--------------------------------------------------------------------------*/ bool DEV_BUILT_IN_BJT::do_tr() { const COMMON_BUILT_IN_BJT* c = prechecked_cast(common()); assert(c); const MODEL_BUILT_IN_BJT* m = prechecked_cast(c->model()); assert(m); const TDP_BUILT_IN_BJT T(this); const TDP_BUILT_IN_BJT* t = &T; if(_sim->is_initial_step()) { // initial guess if (c->off) { vbe = 0.; }else{ double vt = (_sim->_temp_c + P_CELSIUS0) * P_K_Q; vbe = vt * log(vt / (M_SQRT2 * m->ibe)); } vbc = 0.; /* ERROR: need to initialize VCS, VBX here */ vcs = vbx = 0.; }else{ // normal gather vbe = pnj_limit((m->polarity * volts_limited(_n[n_ib], _n[n_ie])), vbe, t->vt, t->Vcrit); vbc = pnj_limit((m->polarity * volts_limited(_n[n_ib], _n[n_ic])), vbc, t->vt, t->Vcrit); vbx = m->polarity * volts_limited(_n[n_b], _n[n_ic]); vcs = m->polarity * volts_limited(_n[n_s], _n[n_ic]); } if (_sim->uic_now()) {itested();//736 if (has_good_value(c->icvbe)) {untested();//737 vbe = m->polarity * c->icvbe; }else{itested();//739 } if (has_good_value(c->icvce)) {untested();//741 vbc = vbe - m->polarity * c->icvce; vbx = vbc; }else{itested();//744 } }else{ } m->tr_eval(this); switch (m->polarity) { case pP: cce = -cce; ccexxx = -ccexxx; cpi = -cpi; cpixxx = -cpixxx; cmu = -cmu; cmuxxx = -cmuxxx; assert(ixxxx == 0.); qbx = -qbx; qbc = -qbc; qcs = -qcs; qbe = -qbe; break; case pN: // leave it as is break; } assert(subckt()); set_converged(subckt()->do_tr()); return converged(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_cap.cc000066400000000000000000000176711316501211100134010ustar00rootroot00000000000000/*$Id: d_cap.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * capacitance devices: * self-capacitance (C device) * trans-capacitance (non-spice charge transfer device) *------------------------------------------------------------------ * capacitor models * y.x = volts, y.f0 = coulombs, ev = y.f1 = farads * q = y history in time * i.x = volts, i.f0 = amps, i.f1 = mhos * m.x = volts, m.c0 = amps, acg = m.c1 = mhos */ //testing=script 2006.07.17 #include "globals.h" #include "e_storag.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_CAPACITANCE : public STORAGE { protected: explicit DEV_CAPACITANCE(const DEV_CAPACITANCE& p) :STORAGE(p) {} public: explicit DEV_CAPACITANCE() :STORAGE() {} protected: // override virtual char id_letter()const {return 'C';} std::string value_name()const {return "c";} std::string dev_type()const {return "capacitor";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int matrix_nodes()const {return 2;} int net_nodes()const {return 2;} bool has_iv_probe()const {return true;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_CAPACITANCE(*this);} void tr_iwant_matrix() {tr_iwant_matrix_passive();} bool do_tr(); void tr_load() {tr_load_passive();} void tr_unload() {tr_unload_passive();} double tr_involts()const {return tr_outvolts();} double tr_involts_limited()const {return tr_outvolts_limited();} double tr_probe_num(const std::string&)const; void ac_iwant_matrix() {ac_iwant_matrix_passive();} void ac_begin() {_ev = _y[0].f1;} void do_ac(); void ac_load() {ac_load_passive();} COMPLEX ac_involts()const {itested();return ac_outvolts();} std::string port_name(int i)const { assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ class DEV_TRANSCAP : public DEV_CAPACITANCE { private: explicit DEV_TRANSCAP(const DEV_TRANSCAP& p) :DEV_CAPACITANCE(p){} public: explicit DEV_TRANSCAP() :DEV_CAPACITANCE() {} private: // override virtual char id_letter()const {untested();return '\0';} std::string value_name()const {untested(); return "c";} std::string dev_type()const {return "tcap";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} bool has_iv_probe()const {untested(); return false;} bool f_is_value()const {untested();return true;} CARD* clone()const {return new DEV_TRANSCAP(*this);} void tr_iwant_matrix() {tr_iwant_matrix_active();} void tr_load() {tr_load_active();} double tr_involts()const {return dn_diff(_n[IN1].v0(),_n[IN2].v0());} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} void ac_iwant_matrix() {ac_iwant_matrix_active();} void ac_load() {untested(); ac_load_active();} std::string port_name(int i)const {untested(); assert(i >= 0); assert(i < 4); static std::string names[] = {"p", "n", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ //BUG// doesn't model dynamic effects of control. class DEV_VCCAP : public DEV_CAPACITANCE { private: explicit DEV_VCCAP(const DEV_VCCAP& p) :DEV_CAPACITANCE(p) {} public: explicit DEV_VCCAP() :DEV_CAPACITANCE() {} private: // override virtual char id_letter()const {untested();return '\0';} std::string value_name()const {untested(); return "c";} std::string dev_type()const {return "vccap";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} bool has_iv_probe()const {untested(); return false;} bool f_is_value()const {untested();return true;} CARD* clone()const {return new DEV_VCCAP(*this);} void tr_iwant_matrix() {tr_iwant_matrix_extended();} bool do_tr(); double tr_involts()const {return dn_diff(_n[IN1].v0(),_n[IN2].v0());} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} void ac_iwant_matrix() {ac_iwant_matrix_extended();} std::string port_name(int i)const {untested(); assert(i >= 0); assert(i < 4); static std::string names[] = {"p", "n", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ bool DEV_CAPACITANCE::do_tr() { if (using_tr_eval()) { _y[0].x = tr_input_limited(); tr_eval(); }else{ _y[0].x = tr_input(); // tr_involts(); assert(_y[0].f1 == value()); _y[0].f0 = _y[0].x * _y[0].f1; assert(converged()); } store_values(); q_load(); trace3("q", _y[0].x, _y[0].f0, _y[0].f1); _i[0] = differentiate(_y, _i, _time, _method_a); trace3("i", _i[0].x, _i[0].f0, _i[0].f1); _m0 = CPOLY1(_i[0]); return converged(); } /*--------------------------------------------------------------------------*/ void DEV_CAPACITANCE::do_ac() { if (using_ac_eval()) { ac_eval(); }else{ assert(_ev == _y[0].f1); assert(has_tr_eval() || _ev == double(value())); } _acg = _ev * _sim->_jomega; } /*--------------------------------------------------------------------------*/ double DEV_CAPACITANCE::tr_probe_num(const std::string& x)const { if (Umatch(x, "q{cap} |ch{arge} ")) { return _y[0].f0; }else if (Umatch(x, "c{apacitance} ")) { return _y[0].f1; }else if (Umatch(x, "dcdt ")) {untested(); return (_y[0].f1 - _y[1].f1) / _dt; }else if (Umatch(x, "dc ")) {untested(); return (_y[0].f1 - _y[1].f1); }else if (Umatch(x, "dqdt ")) { return (_y[0].f0 - _y[1].f0) / _dt; }else if (Umatch(x, "dq ")) { return (_y[0].f0 - _y[1].f0); }else{ return STORAGE::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ bool DEV_VCCAP::do_tr() { _y[0].x = tr_input_limited(); tr_eval(); store_values(); q_load(); _y[0].x = tr_outvolts(); _y[0].f1 = _y[0].f0; // self capacitance _y[0].f0 = _y[0].x * _y[0].f1; // charge _i[0] = differentiate(_y, _i, _time, _method_a); _m0.x = _i[0].x; _m0.c1 = _i[0].f1; _m0.c0 = _i[0].f0 - _i[0].x * _i[0].f1; return converged(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CAPACITANCE p1; DEV_TRANSCAP p2; DEV_VCCAP p3; DISPATCHER::INSTALL d1(&device_dispatcher, "C|capacitor", &p1), d2(&device_dispatcher, "tcap|tcapacitor", &p2), d3(&device_dispatcher, "vccap", &p3); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_cccs.cc000066400000000000000000000117441316501211100135440ustar00rootroot00000000000000/*$Id: d_cccs.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions for cccs * It is really voltage controlled, taking into account the sense element. * Then adjust the gain to account for the sense element. */ //testing=script,complete 2008.10.09 #include "globals.h" #include "e_ccsrc.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_CCCS : public CCSRC_BASE { private: explicit DEV_CCCS(const DEV_CCCS& p) :CCSRC_BASE(p) {} public: explicit DEV_CCCS() :CCSRC_BASE() {} private: // override virtual char id_letter()const {return 'F';} std::string value_name()const {return "gain";} std::string dev_type()const {return "cccs";} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_CCCS(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_active();} void tr_begin(); bool do_tr() {_sim->_late_evalq.push_back(this); return true;} bool do_tr_last(); void tr_load() {tr_load_active();} void ac_iwant_matrix() {ac_iwant_matrix_active();} void ac_begin() {_ev = _y[0].f1;} void do_ac(); void ac_load() {ac_load_active();} std::string port_name(int i)const {untested(); assert(i >= 0); assert(i < 2); static std::string names[] = {"sink", "src"}; return names[i]; } std::string current_port_name(int i)const {untested(); assert(i >= 0); assert(i < 1); static std::string names[] = {"in"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_CCCS::precalc_last() { CCSRC_BASE::precalc_last(); set_converged(); assert(!is_constant()); /* because of incomplete analysis */ } /*--------------------------------------------------------------------------*/ void DEV_CCCS::tr_begin() { CCSRC_BASE::tr_begin(); _m0.x = _y[0].x; _m0.c1 = _y[0].f1; _m0.c0 = 0.; _m1 = _m0; assert(_loss0 == 0.); assert(_loss1 == 0.); } /*--------------------------------------------------------------------------*/ bool DEV_CCCS::do_tr_last() { assert(_input); if (using_tr_eval()) { _m0.x = tr_involts_limited(); _y[0].x = tr_input_limited(); tr_eval(); assert(_y[0].f0 != LINEAR); _m0 = CPOLY1(_y[0]); }else{ assert(_y[0].f0 == LINEAR); assert(_y[0].f1 == value()); _m0.c0 = 0.; assert(converged()); } if (_input->has_inode()) {untested(); // nothing }else if (_input->has_iv_probe()) { _m0.c0 += _y[0].f1 * _input->_m0.c0; _m0.c1 = _y[0].f1 * (_input->_loss0 + _input->_m0.c1); }else{unreachable(); } store_values(); q_load(); return converged(); } /*--------------------------------------------------------------------------*/ void DEV_CCCS::do_ac() { assert(_input); if (!_input->evaluated()) { /* patch for forward reference */ ELEMENT* input = const_cast(_input); input->do_ac(); /* make sure sense elt is evaluated first */ }else{ } if (using_ac_eval()) { ac_eval(); }else{ assert(_ev == _y[0].f1); assert(has_tr_eval() || _ev == double(value())); } if (_input->is_source()) { /* if the sense elt is a fixed source.. */ _acg = _ev * _input->_acg; /* then part of this one can be modeled */ ac_load_source(); /* as a fixed source. ... */ _acg = _ev * _input->_loss0;/* so load it in 2 pieces */ }else if (_input->has_inode()) {untested(); _acg = _ev; }else if (_input->has_iv_probe()) { _acg = _ev * _input->_acg; }else{unreachable(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CCCS p1; DISPATCHER::INSTALL d1(&device_dispatcher, "F|cccs", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_ccvs.cc000066400000000000000000000120061316501211100135570ustar00rootroot00000000000000/*$Id: d_ccvs.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions for ccvs * It is really voltage controlled, taking into account the sense element. * Then adjust the gain to account for the sense element. */ //testing=script 2006.07.17 #include "globals.h" #include "e_ccsrc.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_CCVS : public CCSRC_BASE { private: explicit DEV_CCVS(const DEV_CCVS& p) :CCSRC_BASE(p) {} public: explicit DEV_CCVS() :CCSRC_BASE() {} private: // override virtual char id_letter()const {return 'H';} std::string value_name()const {untested(); return "gain";} std::string dev_type()const {return "ccvs";} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_CCVS(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_extended();} void tr_begin(); bool do_tr() {_sim->_late_evalq.push_back(this); return true;} bool do_tr_last(); void tr_load() {tr_load_shunt(); tr_load_active();} void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_begin() {_loss1=_loss0=1./OPT::shortckt; _ev = _y[0].f1;} void do_ac(); void ac_load() {ac_load_active();} COMPLEX ac_amps()const {untested(); return ELEMENT::ac_amps();} std::string port_name(int i)const {untested(); assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } std::string current_port_name(int i)const {untested(); assert(i >= 0); assert(i < 1); static std::string names[] = {"in"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_CCVS::precalc_last() { CCSRC_BASE::precalc_last(); set_converged(); assert(!is_constant()); /* because of incomplete analysis */ } /*--------------------------------------------------------------------------*/ void DEV_CCVS::tr_begin() { CCSRC_BASE::tr_begin(); _loss1 = _loss0 = 1./OPT::shortckt; _m0.x = _y[0].x; _m0.c1 = -_loss0 * value(); _m0.c0 = 0.; _m1 = _m0; } /*--------------------------------------------------------------------------*/ bool DEV_CCVS::do_tr_last() { assert(_input); if (using_tr_eval()) { _m0.x = tr_involts_limited(); _y[0].x = tr_input_limited(); tr_eval(); assert(_y[0].f0 != LINEAR); _m0 = CPOLY1(_y[0]); }else{ assert(_y[0].f0 == LINEAR); assert(_y[0].f1 == value()); _m0.c0 = 0.; assert(converged()); } if (_input->has_inode()) {untested(); // nothing }else if (_input->has_iv_probe()) { _m0.c0 += _y[0].f1 * _input->_m0.c0; _m0.c1 = _y[0].f1 * (_input->_loss0 + _input->_m0.c1); }else{unreachable(); } _m0 *= -_loss0; store_values(); q_load(); return converged(); } /*--------------------------------------------------------------------------*/ void DEV_CCVS::do_ac() { assert(_input); if (!_input->evaluated()) {untested(); ELEMENT* input = const_cast(_input); input->do_ac(); //BUG// premature load of sense element }else{ } ac_load_shunt(); if (using_ac_eval()) {untested(); ac_eval(); }else{ assert(_ev == _y[0].f1); assert(has_tr_eval() || _ev == double(value())); } if (_input->is_source()) { _acg = -_loss0 * _ev * _input->_acg; ac_load_source(); _acg = -_loss0 * _ev * _input->_loss0; }else if (_input->has_inode()) {untested(); _acg = -_loss0 * _ev; }else if (_input->has_iv_probe()) { _acg = -_loss0 * _ev * _input->_acg; }else{unreachable(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CCVS p1; DISPATCHER::INSTALL d1(&device_dispatcher, "H|ccvs", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_coil.cc000066400000000000000000000433101316501211100135510ustar00rootroot00000000000000/*$Id: d_coil.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * inductors * y.x = amps, y.f0 = flux, ev = y.f1 = henrys * q = y history in time * i.x = amps, i.f0 = volts, i.f1 = ohms * m.x = volts, m.c0 = amps, acg = m.c1 = mhos */ //testing=script 2008.10.09 #include "globals.h" #include "e_subckt.h" #include "e_ccsrc.h" #include "e_storag.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_INDUCTANCE : public STORAGE { protected: explicit DEV_INDUCTANCE(const DEV_INDUCTANCE& p) :STORAGE(p), _c_model(p._c_model) {} public: explicit DEV_INDUCTANCE() :STORAGE(), _c_model(false) {} public: // override virtual char id_letter()const {return 'L';} std::string value_name()const {return "l";} std::string dev_type()const {return "inductor";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int net_nodes()const {return 2;} int int_nodes()const {return (!_c_model) ? 0 : 1;} int matrix_nodes()const {return net_nodes() + int_nodes();} bool has_inode()const {return _c_model;} bool has_iv_probe()const {return true;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_INDUCTANCE(*this);} void expand(); void tr_iwant_matrix(); void tr_begin(); bool do_tr(); void tr_load(); void tr_unload(); double tr_involts()const {return tr_outvolts();} double tr_input()const; double tr_involts_limited()const {return tr_outvolts_limited();} double tr_input_limited()const; double tr_amps()const; double tr_probe_num(const std::string&)const; void ac_iwant_matrix(); void ac_begin() {_loss1 = _loss0 = ((!_c_model) ? 0. : 1.); _ev = _y[0].f1;} void do_ac(); void ac_load(); COMPLEX ac_involts()const {return ac_outvolts();} COMPLEX ac_amps()const; std::string port_name(int i)const {itested(); assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } bool _c_model; }; /*--------------------------------------------------------------------------*/ class DEV_MUTUAL_L : public DEV_INDUCTANCE { private: std::string _output_label; DEV_INDUCTANCE* _output; std::string _input_label; DEV_INDUCTANCE* _input; double _lm; double _mf0_c0; // matrix parameters, new double _mf1_c0; // matrix parameters, 1 fill ago double _mr0_c0; // matrix parameters, new double _mr1_c0; // matrix parameters, 1 fill ago FPOLY1 _yf1; // iteration parameters, 1 iter ago FPOLY1 _yf[OPT::_keep_time_steps]; FPOLY1 _if[OPT::_keep_time_steps]; FPOLY1 _yr1; // iteration parameters, 1 iter ago FPOLY1 _yr[OPT::_keep_time_steps]; FPOLY1 _ir[OPT::_keep_time_steps]; private: explicit DEV_MUTUAL_L(const DEV_MUTUAL_L& p); public: explicit DEV_MUTUAL_L(); private: // override virtual char id_letter()const {return 'K';} bool print_type_in_spice()const {return false;} std::string value_name()const {return "k";} std::string dev_type()const {untested(); return "mutual_inductor";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int matrix_nodes()const {return 2;} int net_nodes()const {return 0;} int num_current_ports()const {return 2;} bool has_iv_probe()const {untested(); return false;} bool use_obsolete_callback_parse()const {return false;} CARD* clone()const {return new DEV_MUTUAL_L(*this);} void expand_first(); void expand_last(); void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_passive();} void tr_begin(); void dc_advance(); void tr_advance(); bool do_tr() {_sim->_late_evalq.push_back(this); return true;} bool do_tr_last(); void tr_load(); TIME_PAIR tr_review() {return TIME_PAIR(NEVER,NEVER);} void tr_unload(); double tr_input()const {return tr_involts();} double tr_input_limited()const {untested(); return tr_involts_limited();} double tr_amps()const {untested(); return _loss0 * tr_outvolts();} double tr_probe_num(const std::string&)const; void ac_iwant_matrix() {ac_iwant_matrix_passive();} void ac_load(); COMPLEX ac_amps()const {untested(); return _loss0 * ac_outvolts();} void set_port_by_name(std::string& Name, std::string& Value) {untested(); COMPONENT::set_port_by_name(Name,Value);} void set_port_by_index(int Index, std::string& Value) {set_current_port_by_index(Index, Value);} bool node_is_connected(int i)const { switch (i) { case 0: return _output_label != ""; case 1: return _input_label != ""; default: unreachable(); return false; } } std::string port_name(int)const {untested(); return ""; } std::string current_port_name(int i)const {untested(); assert(i >= 0); assert(i < 2); static std::string names[] = {"l1", "l2"}; return names[i]; } const std::string current_port_value(int i)const { switch (i) { case 0: return _output_label; case 1: return _input_label; default: unreachable(); return COMPONENT::current_port_value(i); } } void set_current_port_by_index(int i, const std::string& s) { switch (i) { case 0: _output_label = s; break; case 1: _input_label = s; break; default: unreachable(); break; } } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_MUTUAL_L::DEV_MUTUAL_L() :DEV_INDUCTANCE(), _output_label(), _output(0), _input_label(), _input(0), _lm(NOT_INPUT), _mf0_c0(0.), _mf1_c0(0.), _mr0_c0(0.), _mr1_c0(0.) { _c_model = true; assert(_yf[0].x == 0. && _yf[0].f0 == 0. && _yf[0].f1 == 0.); assert(_yf1 == _yf[0]); assert(_yr[0].x == 0. && _yr[0].f0 == 0. && _yr[0].f1 == 0.); assert(_yr1 == _yr[0]); } /*--------------------------------------------------------------------------*/ DEV_MUTUAL_L::DEV_MUTUAL_L(const DEV_MUTUAL_L& p) :DEV_INDUCTANCE(p), _output_label(p._output_label), _output(p._output), _input_label(p._input_label), _input(p._input), _lm(p._lm), _mf0_c0(0.), _mf1_c0(0.), _mr0_c0(0.), _mr1_c0(0.) { _c_model = true; assert(_yf[0].x == 0. && _yf[0].f0 == 0. && _yf[0].f1 == 0.); assert(_yf1 == _yf[0]); assert(_yr[0].x == 0. && _yr[0].f0 == 0. && _yr[0].f1 == 0.); assert(_yr1 == _yr[0]); } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::expand() { STORAGE::expand(); if (_sim->is_first_expand()) { if (!_c_model) { _n[IN1].set_to_ground(this); }else{ _n[IN1].new_model_node(long_label() + ".i", this); } }else{untested(); } } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::expand_first() { _output = dynamic_cast(find_in_my_scope(_output_label)); if (!_output) { throw Exception_Type_Mismatch(long_label(), _output_label, "inductor"); }else{ _output->_c_model = true; } _input = dynamic_cast(find_in_my_scope(_input_label)); if (!_input) { throw Exception_Type_Mismatch(long_label(), _input_label, "inductor"); }else{ _input->_c_model = true; } } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::expand_last() { STORAGE::expand(); // skip DEV_INDUCTANCE if (_sim->is_first_expand()) { _n[OUT2] = _input->n_(IN1); _n[OUT1] = _output->n_(IN1); }else{untested(); } } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::precalc_last() { _output->precalc_last(); _input->precalc_last(); DEV_INDUCTANCE::precalc_last(); double l1 = _output->value(); double l2 = _input->value(); _lm = value() * sqrt(l1 * l2); trace3(long_label().c_str(), l1, l2, _lm); if (_sim->has_op() == s_NONE) { assert(_y[0].x == 0.); assert(_y[0].f0 == LINEAR); _y[0].f1 = -_lm; // override _yf[0] = _yr[0] = _y[0]; }else{ } } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::tr_iwant_matrix() { if (!_c_model) { tr_iwant_matrix_passive(); }else{ assert(matrix_nodes() == 3); assert(_n[OUT1].m_() != INVALID_NODE); assert(_n[OUT2].m_() != INVALID_NODE); assert(_n[IN1].m_() != INVALID_NODE); _sim->_aa.iwant(_n[OUT1].m_(),_n[IN1].m_()); _sim->_aa.iwant(_n[OUT2].m_(),_n[IN1].m_()); _sim->_lu.iwant(_n[OUT1].m_(),_n[IN1].m_()); _sim->_lu.iwant(_n[OUT2].m_(),_n[IN1].m_()); } } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::tr_begin() { STORAGE::tr_begin(); _loss1 = _loss0 = ((!_c_model) ? 0. : 1.); } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::tr_begin() { DEV_INDUCTANCE::tr_begin(); assert(_y[0].x == 0.); assert(_y[0].f0 == LINEAR); _y[0].f1 = -_lm; // override _y1 = _y[0]; for (int i = 0; i < OPT::_keep_time_steps; ++i) { _if[i] = _ir[i] = FPOLY1(0., 0., 0.); } _mf1_c0 = _mf0_c0 = _mr1_c0 = _mr0_c0 = 0.; } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::dc_advance() { STORAGE::dc_advance(); for (int i = 1; i < OPT::_keep_time_steps; ++i) { _if[i] = _if[0]; _ir[i] = _ir[0]; } } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::tr_advance() { STORAGE::tr_advance(); for (int i=OPT::_keep_time_steps-1; i>0; --i) { _yf[i] = _yf[i-1]; _yr[i] = _yr[i-1]; _if[i] = _if[i-1]; _ir[i] = _ir[i-1]; } } /*--------------------------------------------------------------------------*/ bool DEV_INDUCTANCE::do_tr() { if (using_tr_eval()) { _y[0].x = tr_input_limited(); // _m0.c0 + _m0.c1 * x; tr_eval(); if ((!_c_model) && (_y[0].f1 == 0.)) {untested(); error(bDANGER, long_label() + ": short circuit, L = 0\n"); _y[0].f1 = OPT::shortckt; set_converged(conv_check()); }else{ } }else{ _y[0].x = tr_input(); // _m0.c0 + _m0.c1 * x; assert(_y[0].f1 == value()); _y[0].f0 = _y[0].x * _y[0].f1; assert(converged()); } store_values(); q_load(); // i is really voltage .. // _i[0].x = current, _i[0].f0 = voltage, _i[0].f1 = ohms _i[0] = differentiate(_y, _i, _time, _method_a); if (!_c_model) { _m0.x = NOT_VALID; _m0.c1 = 1 / ((_i[0].c1()==0) ? OPT::shortckt : _i[0].c1()); _m0.c0 = -_i[0].c0() * _m0.c1; }else{ //_m0 = -CPOLY1(_i[0]); _m0.x = NOT_VALID; _m0.c1 = -_loss0 * _loss0 * _i[0].c1(); _m0.c0 = _loss0 * _loss0 * _i[0].c0(); } return converged(); } /*--------------------------------------------------------------------------*/ bool DEV_MUTUAL_L::do_tr_last() { double l1 = _output->_y[0].f1; double l2 = _input->_y[0].f1; _lm = value() * sqrt(l1 * l2); _y[0].x = _n[OUT1].v0() - _n[OUT2].v0(); // really current _y[0].f1 = -_lm; _y[0].f0 = _y[0].x * _y[0].f1; // flux = I * L trace3("", _y[0].x, _y[0].f0, _y[0].f1); store_values(); _i[0] = differentiate(_y, _i, _time, _method_a); // really voltage, v = df/dt trace3("", _i[0].x, _i[0].f0, _i[0].f1); _m0.x = NOT_VALID; _m0.c1 = -_loss0 * _loss0 * _i[0].c1(); _m0.c0 = -_loss0 * _loss0 * _i[0].c0(); trace3("", _m0.x, _m0.c0, _m0.c1); _yf[0].x = _n[OUT1].v0(); _yf[0].f1 = -_lm; _yf[0].f0 = _yf[0].x * _yf[0].f1; trace3("", _yf[0].x, _yf[0].f0, _yf[0].f1); assert(_yf[0]==_yf[0]); // store_values(); _yf1=_yf[0]; // store_values(); _if[0] = differentiate(_yf, _if, _time, _method_a); trace3("", _if[0].x, _if[0].f0, _if[0].f1); _mf0_c0 = -_loss0 * _loss0 * _if[0].c0(); _yr[0].x = _n[OUT2].v0(); _yr[0].f1 = -_lm; _yr[0].f0 = _yr[0].x * _yr[0].f1; trace3("", _yr[0].x, _yr[0].f0, _yr[0].f1); assert(_yr[0]==_yr[0]); // store_values(); _yr1=_yr[0]; // store_values(); _ir[0] = differentiate(_yr, _ir, _time, _method_a); trace3("", _ir[0].x, _ir[0].f0, _ir[0].f1); _mr0_c0 = -_loss0 * _loss0 * _ir[0].c0(); q_load(); return true; } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::tr_load() { if (!_c_model) { tr_load_passive(); }else{ tr_load_inode(); tr_load_diagonal_point(_n[IN1], &_m0.c1, &_m1.c1); tr_load_source_point(_n[IN1], &_m0.c0, &_m1.c0); } } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::tr_load() { tr_load_couple(); tr_load_source(); tr_load_source_point(_n[OUT2], &_mr0_c0, &_mr1_c0); tr_load_source_point(_n[OUT1], &_mf0_c0, &_mf1_c0); } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::tr_unload() {untested(); _loss0 = _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load(); } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::tr_unload() {untested(); tr_unload_couple(); } /*--------------------------------------------------------------------------*/ double DEV_INDUCTANCE::tr_input()const { if (!_c_model) { return _m0.c0 + _m0.c1 * tr_involts(); }else{ return _n[IN1].v0(); } } /*--------------------------------------------------------------------------*/ double DEV_INDUCTANCE::tr_input_limited()const { if (!_c_model) { return _m0.c0 + _m0.c1 * tr_involts_limited(); }else{ return _n[IN1].v0(); } } /*--------------------------------------------------------------------------*/ double DEV_INDUCTANCE::tr_amps()const { if (!_c_model) { return fixzero((_m0.c1 * tr_involts() + _m0.c0), _m0.c0); }else{ return _loss0 * _n[IN1].v0(); } } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::ac_iwant_matrix() { if (!_c_model) { ac_iwant_matrix_passive(); }else{ assert(matrix_nodes() == 3); assert(_n[OUT1].m_() != INVALID_NODE); assert(_n[OUT2].m_() != INVALID_NODE); assert(_n[IN1].m_() != INVALID_NODE); _sim->_acx.iwant(_n[OUT1].m_(),_n[IN1].m_()); _sim->_acx.iwant(_n[OUT2].m_(),_n[IN1].m_()); } } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::do_ac() { if (using_ac_eval()) { ac_eval(); }else{ assert(_ev == _y[0].f1); assert(dynamic_cast(this) || has_tr_eval() || _ev == double(value())); } if (!_c_model) { if (_ev * _sim->_jomega == 0.) {untested(); _acg = 1. / OPT::shortckt; }else{ _acg = 1. / (_ev * _sim->_jomega); } }else{ _acg = -_loss0 * _loss0 * _ev * _sim->_jomega; } } /*--------------------------------------------------------------------------*/ void DEV_INDUCTANCE::ac_load() { if (!_c_model) { ac_load_passive(); }else{ ac_load_inode(); ac_load_diagonal_point(_n[IN1], _acg); } } /*--------------------------------------------------------------------------*/ void DEV_MUTUAL_L::ac_load() { ac_load_couple(); } /*--------------------------------------------------------------------------*/ COMPLEX DEV_INDUCTANCE::ac_amps()const { if (!_c_model) { return (ac_involts() * _acg); }else{ return _loss0 * _n[IN1].vac(); } } /*--------------------------------------------------------------------------*/ double DEV_INDUCTANCE::tr_probe_num(const std::string& x)const { if (Umatch(x, "flux ")) {untested(); return _y[0].f0; }else if (Umatch(x, "ind{uctance} |l ")) {untested(); return _y[0].f1; }else if (Umatch(x, "dldt ")) {untested(); return (_y[0].f1 - _y[1].f1) / _dt; }else if (Umatch(x, "dl ")) {untested(); return (_y[0].f1 - _y[1].f1); }else if (Umatch(x, "dfdt ")) {untested(); return (_y[0].f0 - _y[1].f0) / _dt; }else if (Umatch(x, "dflux ")) {untested(); return (_y[0].f0 - _y[1].f0); }else{ return STORAGE::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ double DEV_MUTUAL_L::tr_probe_num(const std::string& x)const {untested(); if (Umatch(x, "fflux ")) {untested(); return _yf[0].f0; }else if (Umatch(x, "rflux ")) {untested(); return _yr[0].f0; }else if (Umatch(x, "fiof{fset} ")) {untested(); return _mf0_c0; }else if (Umatch(x, "riof{fset} ")) {untested(); return _mr0_c0; }else{untested(); return DEV_INDUCTANCE::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_MUTUAL_L p1; DEV_INDUCTANCE p2; DISPATCHER::INSTALL d1(&device_dispatcher, "K|mutual_inductor", &p1), d2(&device_dispatcher, "L|inductor", &p2); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_cs.cc000066400000000000000000000107311316501211100132310ustar00rootroot00000000000000/*$Id: d_cs.cc 2016/03/25 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions for fixed current source * x = 0, y.f0 = nothing, ev = y.f1 = amps. */ //testing=script 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_CS : public ELEMENT { private: explicit DEV_CS(const DEV_CS& p) :ELEMENT(p) {} public: explicit DEV_CS() :ELEMENT() {} private: // override virtual char id_letter()const {return 'I';} std::string value_name()const {itested(); return "dc";} std::string dev_type()const {return "isource";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int matrix_nodes()const {return 2;} int net_nodes()const {return 2;} bool is_source()const {return true;} bool f_is_value()const {return true;} bool has_iv_probe()const {return true;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_CS(*this);} void precalc_last(); void tr_iwant_matrix() {/* nothing */} void tr_begin(); bool do_tr(); void tr_load() {tr_load_source();} void tr_unload() {untested();tr_unload_source();} double tr_involts()const {return 0.;} double tr_involts_limited()const {unreachable(); return 0.;} void ac_iwant_matrix() {/* nothing */} void ac_begin() {_acg = _ev = 0.;} void do_ac(); void ac_load() {ac_load_source();} COMPLEX ac_involts()const {untested();return 0.;} COMPLEX ac_amps()const {return _acg;} std::string port_name(int i)const { assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_CS::precalc_last() { //ELEMENT::precalc_last(); //BUG// skip COMPONENT::precalc_last(); set_constant(!has_tr_eval()); set_converged(!has_tr_eval()); set_constant(false); } /*--------------------------------------------------------------------------*/ void DEV_CS::tr_begin() { ELEMENT::tr_begin(); _y[0].x = 0.; _y[0].f1 = value(); _y1.f0 = _y[0].f0 = 0.; //BUG// override _m0.x = 0.; _m0.c0 = _y[0].f1; _m0.c1 = 0.; _m1 = _m0; assert(_loss0 == 0.); assert(_loss1 == 0.); } /*--------------------------------------------------------------------------*/ bool DEV_CS::do_tr() { assert(_m0.x == 0.); if (using_tr_eval()) { _y[0].x = _sim->_time0; tr_eval(); store_values(); q_load(); _m0.c0 = _y[0].f1; assert(_m0.c1 == 0.); }else{untested(); assert(_y[0].x == 0.); assert(_y[0].f0 == 0.); assert(_y[0].f1 == value()); assert(_m0.x == 0.); assert(_m0.c0 == _y[0].f1); assert(_m0.c1 == 0.); assert(_y1 == _y[0]); assert(converged()); } return converged(); } /*--------------------------------------------------------------------------*/ void DEV_CS::do_ac() { if (using_ac_eval()) { ac_eval(); _acg = _ev; }else{untested(); assert(_acg == 0.); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CS p1; DISPATCHER::INSTALL d1(&device_dispatcher, "I|csource|isource", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_diode.model000066400000000000000000000331571316501211100144320ustar00rootroot00000000000000/* $Id: d_diode.model,v 26.132 2009/11/24 04:26:37 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * diode model. * netlist syntax: * device: dxxxx n+ n- mname * model: .model mname D * * The section "eval Yj" is a big mess. * It will be redone using multiple files, like the MOS models. */ h_headers { enum region_t {INITOFF=-2, REVERSE=-1, UNKNOWN=0, FORWARD=1}; enum polarity_t {pP = -1, pN = 1}; } cc_headers { #include "e_aux.h" #include "e_storag.h" static bool dummy=false; enum {USE_OPT = 0x8000}; } /*--------------------------------------------------------------------------*/ device BUILT_IN_DIODE { parse_name diode; model_type BUILT_IN_DIODE; id_letter D; circuit { ports {a c}; local_nodes { ia short_to=a short_if="!OPT::rstray || c->rs_adjusted==0."; } capacitor Cj {ia c} eval=Cj omit="c->cj_adjusted == 0. && c->cjsw_adjusted == 0. && m->tt == 0."; admittance Yj {ia c} eval=Yj; resistor Rs {a ia} value="c->rs_adjusted" omit="!OPT::rstray || c->rs_adjusted==0."; } tr_probe { "v{d}" = "@n_a[V] - @n_c[V]"; "i{d}" = "@Yj[I] + @Cj[I]"; vj = "@n_ia[V] - @n_c[V]" vsr = "@n_a[V] - @n_ia[V]" vrs = "@n_a[V] - @n_ia[V]" ij = "@Yj[I]"; ic = "@Cj[I]"; capcur = "@Cj[I]"; p = "@Yj[P] + @Cj[P] + @Rs[P]"; pd = "@Yj[PD] + @Cj[PD] + @Rs[PD]"; ps = "@Yj[PS] + @Cj[PS] + @Rs[PS]"; pj = "@Yj[P]"; pc = "@Cj[P]"; "c{apacitance}" = "@Cj[Capacitance]"; cd = "@Cj[Capacitance]"; charge = "@Cj[Charge]"; "r{eq}" = "@Yj[R] + @Rs[R]"; "g{eq}" = "((@Yj[R] + @Rs[R]) != 0) ? (1./(@Yj[R] + @Rs[R])) : @Yj[Y]"; gd = "@Yj[Y]"; y = "(@Rs[R] != 0. && (@Yj[Y] + @Cj[Y]) != 0) ? 1./((1./(@Yj[Y] + @Cj[Y])) + @Rs[R]) : @Yj[Y] + @Cj[Y]"; z = "port_impedance(@n_a[],@n_c[],_sim->_lu,mfactor()*tr_probe_num(\"Y\"))"; zraw = "port_impedance(@n_a[], @n_c[], _sim->_lu, 0.)"; region = "static_cast(_region)"; } device { calculated_parameters { region_t _region "fwd, reverse, unknown" default=UNKNOWN; double _gd "conductance to pass to capacitor"; double _isat "is adjusted for temp, etc."; } } common { unnamed area; raw_parameters { double area "area factor" name=Area default=1.0 positive; double perim "perimeter factor" name=Perim default=0.0 positive print_test="perim != 0."; bool off "flag: assume reverse biased" name=OFF default=false print_test=off; double ic "initial voltage" name=IC default=NA print_test="has_good_value(ic)"; double is_raw "saturation current" name=IS default=NA positive print_test="has_good_value(is_raw)"; double rs_raw "series resistance" name=Rs default=NA positive print_test="has_good_value(rs_raw)"; double cj_raw "zero bias jct capacitance" name=Cjo default=NA positive print_test="has_good_value(cj_raw)"; double cjsw_raw "zero bias sidewall capacitance" name=CJSW default=NA positive print_test="has_good_value(cjsw_raw)"; double gparallel_raw "parallel conductance" name=GParallel default=NA print_test="has_good_value(gparallel_raw)"; } calculated_parameters { double is_adjusted "" name = IS calculate="((!has_good_value(c->is_raw))?(m->js*c->area):(c->is_raw))" calc_print_test="is_adjusted != c->is_raw"; double rs_adjusted "" name = RS calculate="((!has_good_value(c->rs_raw)) ? (m->rs / (c->area+1e-20)) : (c->rs_raw))" calc_print_test="rs_adjusted != c->rs_raw"; double cj_adjusted "" name = CJ calculate="((!has_good_value(c->cj_raw))?(m->cjo*c->area):(c->cj_raw))" calc_print_test="cj_adjusted != c->cj_raw"; double cjsw_adjusted "" name = CJSW calculate="((!has_good_value(c->cjsw_raw)) ? (m->cjsw * c->perim) : (c->cjsw_raw))" calc_print_test="cjsw_adjusted != c->cjsw_raw"; double gparallel_adjusted "" name = GParallel calculate="((!has_good_value(c->gparallel_raw)) ? (m->gparallel*c->area) : (c->gparallel_raw))" print_test="gparallel_adjusted != c->gparallel_raw"; } } eval Cj { double& volts = d->_y[0].x; trace1(d->long_label().c_str(), volts); double cb; if (c->cj_adjusted != 0.) { if (volts < m->fc * m->pb) { cb = c->cj_adjusted / pow(1. - (volts / m->pb), m->mj); }else{ cb = (c->cj_adjusted / pow(1. - m->fc, 1. + m->mj)) * (1. - m->fc*(1.+m->mj) + (volts/m->pb)*m->mj); } }else{ cb = 0.; } assert(cb >= 0.); double csw; if (c->cjsw_adjusted != 0.) { if (volts < m->fc * m->pbsw) { csw = c->cjsw_adjusted / pow(1. - (volts / m->pbsw), m->mjsw); }else{ csw = (c->cjsw_adjusted / pow(1. - m->fc, 1. + m->mjsw)) * (1. - m->fc*(1.+m->mjsw) + (volts/m->pbsw)*m->mjsw); } }else{ csw = 0.; } assert(csw >= 0.); double ctt; if (m->tt != 0.) { ctt = p->_gd * m->tt; }else{ ctt = 0.; } assert(ctt >= 0.); trace4("", cb, csw, ctt, cb+csw+ctt); d->_y[0].f1 = cb + csw + ctt; if (d->_sim->analysis_is_tran_dynamic()) { const STORAGE* dd = prechecked_cast(d); assert(dd); double cap = (d->_y[0].f1 + dd->_y[1].f1) / 2; d->_y[0].f0 = (d->_y[0].x - dd->_y[1].x) * cap + dd->_y[1].f0; }else{ assert(d->_sim->analysis_is_static() || d->_sim->analysis_is_restore()); d->_y[0].f0 = d->_y[0].x * d->_y[0].f1; } trace3(d->long_label().c_str(), d->_y[0].x, d->_y[0].f0, d->_y[0].f1); } eval Yj { FPOLY1& y = d->_y[0]; double volts = y.x; double amps = y.f0; trace2(d->long_label().c_str(), volts, amps); int flags = (m->flags & USE_OPT) ? OPT::diodeflags : m->flags; double tempratio = (d->_sim->_temp_c+P_CELSIUS0) / (m->_tnom_c+P_CELSIUS0); double vt = P_K_Q * (d->_sim->_temp_c+P_CELSIUS0) * m->n_factor; region_t oldregion = p->_region; p->_isat = c->is_adjusted * pow(tempratio, m->xti) * exp((m->eg/vt) *(tempratio-1)); trace4("", tempratio, vt, oldregion, p->_isat); if (m->mos_level > 0 || flags & 0040) { // Spice style limiting double vcrit = vt * log(vt / (M_SQRT2 * p->_isat)); double vold = d->_y1.f0; if((volts > vcrit) && (std::abs(volts - vold) > (vt + vt))) { if(vold > 0) { double arg = 1 + (volts - vold) / vt; if(arg > 0) { volts = vold + vt * log(arg); }else{ volts = vcrit; } }else{ volts = vt *log(volts/vt); } }else{ // leave volts as is } } if (m->mos_level > 0) { switch (m->mos_level) { case 1: case 2: case 3: case 6: case 4: case 5: if (volts <= 0.) { p->_region = REVERSE; y.f1 = p->_isat / vt + OPT::gmin; y.f0 = y.f1 * volts; }else{ p->_region = FORWARD; double ev = exp(volts/vt); y.f1 = p->_isat * ev / vt + OPT::gmin; y.f0 = p->_isat * (ev - 1) + OPT::gmin * volts; } break; case 7: case 8: if (volts < .5) { p->_region = REVERSE; double ev = exp(volts/vt); y.f1 = p->_isat * ev / vt + OPT::gmin; y.f0 = p->_isat * (ev - 1) + OPT::gmin * volts; }else{ p->_region = FORWARD; double ev = exp(.5/vt); double t0 = p->_isat * ev / vt; y.f1 = t0 + OPT::gmin; y.f0 = p->_isat * (ev - 1) + t0 * (volts - .5) + OPT::gmin * volts; } break; default: unreachable(); y.f1 = OPT::gmin; y.f0 = volts * y.f1; } }else if (flags & 0040) { // exact Spice model if (volts >= -3*vt) { // forward and weak reversed double evd = exp(volts/vt); y.f0 = p->_isat * (evd-1); y.f1 = p->_isat * evd/vt; }else if (has_good_value(m->bv) || volts >= m->bv) { double arg = 3 * vt / (volts * M_E); // strong reversed arg = arg * arg * arg; y.f0 = -p->_isat * (1+arg); y.f1 = p->_isat * 3 * arg / volts; }else{ incomplete(); double evrev = exp(-(m->bv+volts)/vt); y.f0 = -p->_isat * evrev; y.f1 = p->_isat * evrev / vt; } y.f0 += OPT::gmin * volts; y.f1 += OPT::gmin; }else{ if (c->off && d->_sim->is_initial_step()) { /*initially guess off*/ p->_region = INITOFF; y.f1 = 0.; y.f0 = 0.; if (flags & 0020) { untested(); y.f1 = OPT::gmin; } trace2("initoff", y.f0, y.f1); }else if (volts <= 0. /* && amps < 0.*/) { /* reverse biased */ p->_region = REVERSE; /* x = volts, f(x) = amps */ if (flags & 0010) { untested(); y.f1 = y.f0 = 0.; }else{ double expterm = p->_isat * exp(volts/vt); y.f0 = expterm - p->_isat;/* i = f(x) = _isat * (exp(volts/vt)-1) */ y.f1 = expterm / vt; /* f'(x) = (_isat/vt) * exp(volts/vt) */ } if (flags & 0002) { // g = gmin, maintain actual current y.f1 += OPT::gmin; // 3 is a resistor, R=1/gmin y.f0 += OPT::gmin * volts; } if (flags & 0004) { // 5 is a resistor, R=vt/_isat double x = p->_isat / vt; y.f1 += x; y.f0 += x * volts; } if (flags & 0001) { //y.f0 = y.f1 * volts; // a resistor, R=1/f1 } trace2("reverse", y.f0, y.f1); }else if (volts >= 0. && amps >= 0.) { /* forward biased */ /* x = amps, f(x) = volts */ /* derivation: */ /* if f(x) = log(u): f'(x)=(1/u)(du/dx) */ /* poly1 r; */ /* r.f0 = vt * log(amps/p->_isat +1.); */ /* r.f1 = vt / (_isat + amps); */ /* y.f1 = 1. / r.f1; */ /* y.f0 = amps - r.f0*y.f1 + volts*y.f1; */ p->_region = FORWARD; y.f1 = (p->_isat + amps) / vt; y.f0 = amps - log(amps/p->_isat +1.)*(p->_isat + amps) + volts*y.f1; trace2("forward", y.f0, y.f1); }else{ /* non-converged, inconsistent */ p->_region = UNKNOWN; /* volts and amps have different signs */ y.f1 = p->_isat/vt; /* guess that the voltage should be 0 */ y.f0 = 0.; /* (it usually is very close) */ if (flags & 0001) { /* use the correct value there */ y.f0 = volts * y.f1; } trace2("unknown", y.f0, y.f1); } y.f1 += c->gparallel_adjusted; y.f0 += c->gparallel_adjusted * volts; if (oldregion != p->_region && OPT::dampstrategy & dsDEVLIMIT) { d->_sim->_fulldamp = true; error(bTRACE, p->long_label() + ":device limit damp\n"); } if (flags & 0100) { // twist g to guarantee g >= gmin if (y.f1 < OPT::gmin) { // without changing i y.f1 = OPT::gmin; untested(); }else{ untested(); } } if (flags & 0200) { // add a gmin in parallel y.f1 += OPT::gmin; y.f0 += OPT::gmin * volts; untested(); } if (flags & 0400) { // linearize .. shift I to pass thru 0 untested(); y.f0 = y.f1 * volts; } } trace3(d->long_label().c_str(), y.x, y.f0, y.f1); p->_gd = y.f1; } } /*--------------------------------------------------------------------------*/ model BUILT_IN_DIODE { dev_type BUILT_IN_DIODE; hide_base; inherit CARD; public_keys { d dummy=true; } independent { override { double _tnom_c "" name=TNOM default=OPT::tnom_c; } raw_parameters { double js "= is, saturation current (per area)" name=IS positive default=1e-14; double rs "ohmic resistance (per area)" name=RS positive default=0.0; double n_factor "emission coefficient" name=N positive default=1.0; double tt "transit time" name=TT positive default=0.0; double cjo "cj, zero-bias jct capacitance (per area)" name=CJo positive final_default=0.0; double pb "vj, junction potential" name=PB alt_name=VJ positive final_default=1.0; double mj "m, grading coefficient" name=Mj alt_name=M positive default=0.5; double eg "activation energy" name=EGap alt_name=EG positive default=1.11; double xti "saturation-current temp. exp." name=XTI positive default=3.0; double kf "flicker noise coefficient" name=KF positive default=NA; double af "flicker noise exponent" name=AF positive default=NA; double fc "coef for fwd bias depl cap formula" name=FC positive default=0.5; double bv "reverse breakdown voltage" name=BV positive default=NA; double ibv "current at reverse breakdown" name=IBV positive default=1e-3 print_test="has_good_value(bv)"; /* non-spice extensions */ double cjsw "zero bias sidewall cap (per perim.)" name=CJSw alt_name=CJS positive default=0.0 print_test="cjsw != 0."; double pbsw "sidewall junction potential" name=PBSw alt_name=PBS positive final_default=pb print_test="cjsw != 0."; double mjsw "sidewall grading coefficient" name=MJSw alt_name=MJS positive final_default=0.33 print_test="cjsw != 0."; double gparallel "parallel conductance" name=GParallel alt_name=GP default=0.0 print_test="gparallel != 0."; int flags "" name=FLAGS default="int(USE_OPT)" print_test="!(flags & USE_OPT)"; int mos_level "" default=0 print_test="mos_level.has_hard_value()"; } code_post { if (bv == 0.) { bv = NA; } } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_meter.cc000066400000000000000000000067021316501211100137430ustar00rootroot00000000000000/*$Id: d_meter.cc,v 26.138 2013/04/24 02:44:30 al Exp $ -*- C++ -*- * Copyright (C) 2010 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * 2-port "meter" device * does nothing to the circuit, but has probes */ #include "globals.h" #include "e_elemnt.h" #include "u_xprobe.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV : public ELEMENT { private: explicit DEV(const DEV& p) :ELEMENT(p) {} public: explicit DEV() :ELEMENT() {} private: // override virtual char id_letter()const {return '\0';} std::string value_name()const {return "";} std::string dev_type()const {return "meter";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} CARD* clone()const {return new DEV(*this);} void tr_iwant_matrix() {} void ac_iwant_matrix() {} void precalc_last(); double tr_involts()const {return dn_diff(_n[IN1].v0(), _n[IN2].v0());} double tr_involts_limited()const {return tr_involts();} COMPLEX ac_involts()const {return _n[IN1]->vac() - _n[IN2]->vac();} double tr_probe_num(const std::string&)const; XPROBE ac_probe_ext(const std::string&)const; std::string port_name(int i)const { assert(i >= 0); assert(i < 4); static std::string names[] = {"outp", "outn", "inp", "inn"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV::precalc_last() { ELEMENT::precalc_last(); set_constant(true); set_converged(); } /*--------------------------------------------------------------------------*/ double DEV::tr_probe_num(const std::string& x)const { if (Umatch(x, "gain ")) { return tr_outvolts() / tr_involts(); }else{ return ELEMENT::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ XPROBE DEV::ac_probe_ext(const std::string& x)const { if (Umatch(x, "gain ")) { return XPROBE(ac_outvolts() / ac_involts()); }else{ return ELEMENT::ac_probe_ext(x); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV p1; DISPATCHER::INSTALL d1(&device_dispatcher, "meter", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos.model000066400000000000000000000465771316501211100141560ustar00rootroot00000000000000/* $Id: d_mos.model $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * data structures and defaults for mos model. * internal units all mks (meters) * but some user input parameters are in cm. * * netlist syntax: * device: mxxxx d g s b mname * model: .model mname NMOS * or .model mname PMOS */ h_headers { #include "d_diode.h" } cc_headers { #include "u_limit.h" #include "e_storag.h" #include "d_mos_base.h" } /*--------------------------------------------------------------------------*/ device BUILT_IN_MOS { parse_name mosfet; model_type BUILT_IN_MOS_BASE; id_letter M; circuit { sync; ports {d g s b}; local_nodes { id short_to=d short_if="!OPT::rstray || s->rd == 0."; is short_to=s short_if="!OPT::rstray || s->rs == 0."; } args db BUILT_IN_DIODE { area = double(s->ad); perim = double(c->pd); is_raw = double(s->idsat); cj_raw = double(m->cbd); cjsw_raw = NA; off = true; set_modelname(modelname()); attach(model()); } args sb BUILT_IN_DIODE { area = double(s->as); perim = double(c->ps); is_raw = double(s->issat); cj_raw = double(m->cbs); cjsw_raw = NA; off = true; set_modelname(modelname()); attach(model()); } resistor Rs {s is} value="s->rs" omit="!OPT::rstray || s->rs == 0."; resistor Rd {d id} value="s->rd" omit="!OPT::rstray || s->rd == 0."; diode Ddb {b id} args="db" reverse="m->polarity==pP" omit="_n[n_b].n_() == _n[n_d].n_() || s->idsat == 0."; diode Dsb {b is} args="sb" reverse="m->polarity==pP" omit="_n[n_b].n_() == _n[n_s].n_() || s->issat == 0."; capacitor Cgs {g is} value="s->cgso" eval=Cgs omit="!OPT::cstray || _n[n_g].n_() == _n[n_s].n_()"; capacitor Cgd {g id} value="s->cgdo" eval=Cgd omit="!OPT::cstray || _n[n_g].n_() == _n[n_d].n_()"; capacitor Cgb {g b} value="s->cgbo" eval=Cgb omit="!OPT::cstray || _n[n_b].n_() == _n[n_g].n_()"; fpoly_cap Cqgs {g is g b is b id b} state=qgs // qgate, cgs, cggb, cgsb, cgdb omit="m->cmodel != 0 || !OPT::cstray || _n[n_g].n_() == _n[n_is].n_()"; fpoly_cap Cqgd {g id g b id b is b} state=qgd // qgate, cgs, cggb, cgsb, cgdb omit="m->cmodel != 0 || !OPT::cstray || _n[n_g].n_() == _n[n_id].n_()"; fpoly_cap Cqds {id is g b is b id b} state=qdrn // qdrn, cds, cdgb, cdsb, cddb omit="m->cmodel != 0 || !OPT::cstray || _n[n_id].n_() == _n[n_is].n_()"; fpoly_cap Cqbs {b is g b is b id b} state=qbs omit="m->cmodel != 0 || !OPT::cstray || _n[n_b].n_() == _n[n_is].n_()"; fpoly_cap Cqbd {b id g b id b is b} state=qbd omit="m->cmodel != 0 || !OPT::cstray || _n[n_b].n_() == _n[n_id].n_()"; cpoly_g Ids {id is g is id g b is id b} state=idsxxx; cpoly_g Idb {id b id is g is b is} state=idbxxx omit="!(m->needs_isub) || _n[n_d].n_() == _n[n_b].n_()"; cpoly_g Isb {is b is id g id b id} state=isbxxx omit="!(m->needs_isub) || _n[n_s].n_() == _n[n_b].n_()"; } tr_probe { v = "@n_d[V] - @n_s[V]"; vds = "@n_d[V] - @n_s[V]"; vgs = "@n_g[V] - @n_s[V]"; vbs = "@n_b[V] - @n_s[V]"; "vdsi{nt}" = "vds"; "vgsi{nt}" = "vgs"; "vbsi{nt}" = "vbs"; vgd = "@n_g[V] - @n_d[V]"; vbd = "@n_b[V] - @n_d[V]"; vsd = "@n_s[V] - @n_d[V]"; vdm = "(@n_d[V] - @n_s[V] + @n_d[V] - @n_d[V]) / 2."; vgm = "(@n_g[V] - @n_s[V] + @n_g[V] - @n_d[V]) / 2."; vbm = "(@n_b[V] - @n_s[V] + @n_b[V] - @n_d[V]) / 2."; vsm = "(@n_s[V] - @n_s[V] + @n_s[V] - @n_d[V]) / 2."; vdg = "@n_d[V] - @n_g[V]"; vbg = "@n_b[V] - @n_g[V]"; vsg = "@n_s[V] - @n_g[V]"; vdb = "@n_d[V] - @n_b[V]"; vgb = "@n_g[V] - @n_b[V]"; vsb = "@n_s[V] - @n_b[V]"; vd = "@n_d[V]"; vg = "@n_g[V]"; vb = "@n_b[V]"; vs = "@n_s[V]"; "i{d}" = "(_Rd) ? @Rd[I] : (@Ids[I] - @Cgd[I] - @Ddb[I] * m->polarity)"; is = "(_Rs) ? @Rs[I] : (-@Ids[I] - @Cgs[I] - @Dsb[I] * m->polarity)"; ig = "@Cgs[I] + @Cgd[I] + @Cgb[I]"; ib = "- @Ddb[I] * m->polarity - @Dsb[I] * m->polarity - @Cgb[I]"; ibd = "@Ddb[I]"; ibs = "@Dsb[I]"; "cgso{vl}" = "@Cgs[NV]"; "cgdo{vl}" = "@Cgd[NV]"; "cgbo{vl}" = "@Cgb[NV]"; cgst = "@Cgs[EV]"; cgdt = "@Cgd[EV]"; cgbt = "@Cgb[EV]"; "cgs{m}" = "@Cgs[EV] - @Cgs[NV]"; "cgd{m}" = "@Cgd[EV] - @Cgd[NV]"; "cgb{m}" = "@Cgb[EV] - @Cgb[NV]"; cbd = "@Ddb[Cap]"; cbs = "@Dsb[Cap]"; cgate = "s->cgate"; gm = "(reversed) ? gmr : gmf"; "gmb{s}" = "(reversed) ? gmbr : gmbf"; gbd = "@Ddb[G]"; gbs = "@Dsb[G]"; vth = "von * m->polarity"; ids = "m->polarity * ((reversed) ? -ids : ids)"; "idst{ray}" = "- @Cgd[I] + @Ddb[I] * m->polarity"; p ="@Rs[P] +@Rd[P] +@Ddb[P] +@Dsb[P] +@Cgs[P] +@Cgd[P] +@Cgb[P] +@Ids[P]"; pd="@Rs[PD]+@Rd[PD]+@Ddb[PD]+@Dsb[PD]+@Cgs[PD]+@Cgd[PD]+@Cgb[PD]+@Ids[PD]"; ps="@Rs[PS]+@Rd[PS]+@Ddb[PS]+@Dsb[PS]+@Cgs[PS]+@Cgd[PS]+@Cgb[PS]+@Ids[PS]"; REgion = "static_cast((!cutoff) + (!subthreshold * 2) + (saturated * 4) + (sbfwd * 10) + ((vbs > vds) * 20) + (punchthru * 40)) * ((reversed)? -1 : 1)"; SUBthreshold = "static_cast(subthreshold)"; CUToff = "static_cast(cutoff)"; SATurated= "static_cast(saturated)"; TRIode = "static_cast(!saturated && !subthreshold)"; SBFwd = "static_cast(sbfwd)"; DBFwd = "static_cast(vbs > vds)"; REVersed = "static_cast(reversed)"; status = "static_cast(converged() * 2)"; } device { calculated_parameters { // ordinary drain current double ids "" default=0.; double idsxxx; double gds "dids/dvds" default=0.; double gmf "dids/dvgs" default=0.; double gmr "dids/dvgd" default=0.; double gmbf "dids/dvbs" default=0.; double gmbr "dids/dvbd" default=0.; // drain-bulk double idb "" default=0.; double idbxxx "" default=0.; double gdbdb "placeholder" default=0.; double gdbds "disub/dvds" default=0.; double gdbgs "disub/dvgs" default=0.; double gdbbs "disub/dvbs" default=0.; // source-bulk double isb "" default=0.; double isbxxx "" default=0.; double gsbsb "placeholder" default=0.; double gsbsd "disub/dvds" default=0.; double gsbgd "disub/dvgs" default=0.; double gsbbd "disub/dvbs" default=0.; // charge double qgate "raw" default=0.; double cgs "dqgate_vgs placeholder" default=0.; double cggb "dqgate_vgb" default=0.; double cgsb "dqgate_vsb" default=0.; double cgdb "dqgate_vdb" default=0.; double qgs "forward mode" default=0.; double cgsgs "dqgs_vgs placeholder" default=0.; double cgsgb "dqgs_vgb" default=0.; double cgssb "dqgs_vsb" default=0.; double cgsdb "dqgs_vdb" default=0.; double qgd "reverse mode" default=0.; double cgdgd "dqgd_vgs placeholder" default=0.; double cgdgb "dqgd_vgb" default=0.; double cgdsb "dqgd_vsb" default=0.; double cgddb "dqgd_vdb" default=0.; double qdrn "Qds" default=0.; double cdsds "dqds_vds placeholder" default=0.; double cdgb "dqds_vgb" default=0.; double cdsb "dqds_vsb" default=0.; double cddb "dqds_vdb" default=0.; double qbulk "raw" default=0.; double cbs "dqbs_vbs placeholder" default=0.; double cbgb "dqbs_vbg" default=0.; double cbsb "dqbs_vsb" default=0.; double cbdb "dqbs_vdb" default=0.; double qbs "Qbs forward" default=0.; double cbsbs "dqbs_vbs placeholder" default=0.; double cbsgb "dqbs_vbg" default=0.; double cbssb "dqbs_vsb" default=0.; double cbsdb "dqbs_vdb" default=0.; double qbd "Qbd reverse" default=0.; double cbdbd "dqbd_vbd placeholder" default=0.; double cbdgb "dqbd_vbg" default=0.; double cbdsb "dqbd_vsb" default=0.; double cbddb "dqbd_vdb" default=0.; double gtau "" default=0.; double cqgb "" default=0.; double cqsb "" default=0.; double cqdb "" default=0.; double cqbb "" default=0.; /* double tconst "" default=0.; double cgb "placeholder" default=0.; // capacitors and charges double qgb "placeholder" default=0.; double qgd "" default=0.; double cgd "" default=0.; double qgs "" default=0.; //double cgs "" default=0.; */ double vgs "terminal voltages" default=0.; double vds "" default=0.; double vbs "" default=0.; double vdsat "saturation voltage" default=0.; double vgst "vgs - von." default=0.; double von "actual threshold voltage" default=0.; bool reversed "flag: Vgs < 0, reverse s & d" default=false; bool cutoff "flag: in cut off region" default=false; bool subthreshold "flag: subthreshold region" default=false; bool saturated "flag: in saturation region" default=false; bool sbfwd "flag: sb diode fwd biased" default=false; bool punchthru "flag: punch thru region" default=false; } } common { raw_parameters { double l_in "drawn (optical) channel length" name=L positive default="OPT::defl"; double w_in "channel width (drawn)" name=W positive default="OPT::defw"; double ad_in "drain area, drawn" name=AD positive default="OPT::defad" print_test="has_hard_value(ad_in)"; double as_in "source area, drawn" name=AS positive default="OPT::defas" print_test="has_hard_value(as_in)"; double pd "drain perimeter" name=PD positive default=0.0 print_test="has_hard_value(pd)"; double ps "source perimeter" name=PS positive default=0.0 print_test="has_hard_value(ps)"; double nrd "drain # squares" name=NRD positive default=1.0 print_test="has_hard_value(nrd)"; double nrs "source # squares" name=NRS positive default=1.0 print_test="has_hard_value(nrs)"; } } tr_eval { int foo=3; } /*--------------------------------------------------------------------*/ eval Cgb { STORAGE* brh = prechecked_cast(d); assert(brh); double cap = brh->value(); if (m->cmodel != 0) { if (p->vgst < - s->phi) { /* accumulation */ cap += s->cgate; }else if (p->vgst < 0.) { /* depletion */ cap += s->cgate * (-p->vgst) / s->phi; }else{ /* active, overlap only */ } } brh->_y[0].f1 = cap; if (d->_sim->analysis_is_tran_dynamic()) { cap = (brh->_y[0].f1 + brh->_y[1].f1) / 2; brh->_y[0].f0 = (brh->_y[0].x - brh->_y[1].x) * cap + brh->_y[1].f0; }else{ assert(d->_sim->analysis_is_static() || d->_sim->analysis_is_restore()); brh->_y[0].f0 = brh->_y[0].x * brh->_y[0].f1; } trace3(brh->long_label().c_str(), brh->_y[0].x, brh->_y[0].f0, brh->_y[0].f1); } /*--------------------------------------------------------------------*/ eval Cgd { STORAGE* brh = prechecked_cast(d); assert(brh); double cap = 0; if (m->cmodel != 0) { assert(p->vdsat >= 0.); assert(p->vds >= 0.); double vbs = (m->cmodel == 3) ? 0. : p->vbs; double vdbsat = p->vdsat - vbs; double vdb = p->vds - vbs; double ddif = 2. * vdbsat - vdb; if (!p->reversed) { // treat as Cgs if (p->vgst >= 0.) { if (p->vdsat > p->vds) { /* linear */ cap = (2./3.) * s->cgate * (1. - (vdbsat*vdbsat)/(ddif*ddif)); if (p->vgst <= .1) { cap *= 10. * p->vgst; // smooth discontinuity } } } }else{ // treat as Cgs if (p->vgst >= -s->phi/2.) { /* depletion or active */ cap = (2./3.) * s->cgate; if (p->vdsat > p->vds) { /* linear */ double ndif = p->vdsat - p->vds; cap *= 1. - (ndif*ndif)/(ddif*ddif); } if (p->vgst <= 0) { cap *= 1. + p->vgst / (s->phi); cap *= 1. + p->vgst / (s->phi); } } } } cap += brh->value(); /* else overlap only */ brh->_y[0].f1 = cap; if (d->_sim->analysis_is_tran_dynamic()) { cap = (brh->_y[0].f1 + brh->_y[1].f1) / 2; brh->_y[0].f0 = (brh->_y[0].x - brh->_y[1].x) * cap + brh->_y[1].f0; }else{ assert(d->_sim->analysis_is_static() || d->_sim->analysis_is_restore()); brh->_y[0].f0 = brh->_y[0].x * brh->_y[0].f1; } trace3(brh->long_label().c_str(), brh->_y[0].x, brh->_y[0].f0, brh->_y[0].f1); } /*--------------------------------------------------------------------*/ eval Cgs { STORAGE* brh = prechecked_cast(d); assert(brh); double cap = 0; if (m->cmodel != 0) { assert(p->vdsat >= 0.); assert(p->vds >= 0.); double vbs = (m->cmodel == 3) ? 0. : p->vbs; double vdbsat = p->vdsat - vbs; double vdb = p->vds - vbs; double ddif = 2. * vdbsat - vdb; if (p->reversed) { // treat as Cgd if (p->vgst >= 0.) { if (p->vdsat > p->vds) { /* linear */ cap = (2./3.) * s->cgate * (1. - (vdbsat*vdbsat)/(ddif*ddif)); if (p->vgst <= .1) { cap *= 10. * p->vgst; // smooth discontinuity } } } }else{ // treat as Cgs if (p->vgst >= -s->phi/2.) { /* depletion or active */ cap = (2./3.) * s->cgate; if (p->vdsat > p->vds) { /* linear */ double ndif = p->vdsat - p->vds; cap *= 1. - (ndif*ndif)/(ddif*ddif); } if (p->vgst <= 0) { cap *= 1. + p->vgst / (s->phi); cap *= 1. + p->vgst / (s->phi); } } } } cap += brh->value(); /* else overlap only */ brh->_y[0].f1 = cap; if (d->_sim->analysis_is_tran_dynamic()) { cap = (brh->_y[0].f1 + brh->_y[1].f1) / 2; brh->_y[0].f0 = (brh->_y[0].x - brh->_y[1].x) * cap + brh->_y[1].f0; }else{ assert(d->_sim->analysis_is_static() || d->_sim->analysis_is_restore()); brh->_y[0].f0 = brh->_y[0].x * brh->_y[0].f1; } trace3(brh->long_label().c_str(), brh->_y[0].x, brh->_y[0].f0, brh->_y[0].f1); } /*--------------------------------------------------------------------*/ function reverse_if_needed() { if (vds < 0) { error(bTRACE, long_label() + ": reversing\n"); error(bTRACE, "before: vds=%g vgs=%g vbs=%g\n", vds, vgs, vbs); reversed = !reversed; vgs -= vds; vbs -= vds; vds = -vds; error(bTRACE, "after: vds=%g vgs=%g vbs=%g\n", vds, vgs, vbs); if (OPT::dampstrategy & dsREVERSE) { _sim->_fulldamp = true; untested(); error(bTRACE, long_label() + ":reverse damp\n"); } if (!(OPT::mosflags & 0040)) { vbs = std::min(vbs,0.); }else{ untested(); } } } /*--------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ cc_direct { /*--------------------------------------------------------------------------*/ bool DEV_BUILT_IN_MOS::tr_needs_eval()const { if (is_q_for_eval()) { untested(); return false; }else if (!converged()) { return true; }else{ const COMMON_BUILT_IN_MOS* c = prechecked_cast(common()); assert(c); const MODEL_BUILT_IN_MOS_BASE* m=prechecked_cast(c->model()); assert(m); polarity_t polarity = m->polarity; node_t& eff_s((reversed) ? _n[n_id] : _n[n_is]); node_t& eff_d((reversed) ? _n[n_is] : _n[n_id]); return !(conchk(vds,polarity*(eff_d.v0()-eff_s.v0()),OPT::vntol) && conchk(vgs, polarity*(_n[n_g].v0()-eff_s.v0()), OPT::vntol) && conchk(vbs, polarity*(_n[n_b].v0()-eff_s.v0()), OPT::vntol)); } } /*--------------------------------------------------------------------------*/ bool DEV_BUILT_IN_MOS::do_tr() { const COMMON_BUILT_IN_MOS* c = prechecked_cast(common()); assert(c); const MODEL_BUILT_IN_MOS_BASE* m = prechecked_cast(c->model()); assert(m); bool was_cutoff = cutoff; bool was_subthreshold = subthreshold; bool was_saturated = saturated; bool was_reversed = reversed; bool was_sbfwd = sbfwd; polarity_t polarity = m->polarity; if (_sim->is_initial_step()) { reversed = false; vds = vgs = vbs = 0.; }else{ double Vds, Vgs, Vbs; if (reversed) { Vds = polarity * volts_limited(_n[n_is],_n[n_id]); Vgs = polarity * volts_limited(_n[n_g],_n[n_id]); Vbs = polarity * volts_limited(_n[n_b],_n[n_id]); }else{ Vds = polarity * volts_limited(_n[n_id],_n[n_is]); Vgs = polarity * volts_limited(_n[n_g],_n[n_is]); Vbs = polarity * volts_limited(_n[n_b],_n[n_is]); } vgs = fet_limit_vgs(Vgs, vgs, von); if (_n[n_d].n_() == _n[n_g].n_()) { vds = Vds + (vgs - Vgs); }else{ // Spice hacks Vds here, but my tests show that it often makes // convergence worse, and never improves it. // I am guessing that it does help when drain and gate are connected, // and Spice does it here in case they are and cannot be determined // whether they are or not. // The hack maintains Vdg after Vgs limiting. //Vds = Vds + (vgs - Vgs); vds = fet_limit_vds(Vds, vds); } vbs = std::min(Vbs, 0.); //vbs = pnj_limit(double Vbs, double vbs, double vt, double vcrit); //vds = Vds; //vgs = Vgs; //vbs = Vbs; } assert(qgate == qgate); assert(qgs == qgs); assert(qgd == qgd); assert(qdrn == qdrn); assert(qbulk == qbulk); assert(qbs == qbs); assert(qbd == qbd); m->tr_eval(this); assert(qgate == qgate); assert(qgs == qgs); assert(qgd == qgd); assert(qdrn == qdrn); assert(qbulk == qbulk); assert(qbs == qbs); assert(qbd == qbd); if (reversed) { idsxxx = ids + vds*gds + vgs*gmr + vbs*gmbr; isbxxx = isb - vds*gsbsd - vgs*gsbgd - vbs*gsbbd; idbxxx = 0.; }else{ idsxxx = ids - vds*gds - vgs*gmf - vbs*gmbf; idbxxx = idb - vds*gdbds - vgs*gdbgs - vbs*gdbbs; isbxxx = 0.; } ids *= polarity; idsxxx *= polarity; assert(subckt()); set_converged(subckt()->do_tr()); trace3(long_label().c_str(), vds, vgs, vbs); trace4("", ids, gmf, gds, gmbf); trace4("", ids, gmr, gds, gmbr); if (was_cutoff != cutoff || was_subthreshold != subthreshold || was_saturated != saturated || was_reversed != reversed || was_sbfwd != sbfwd) { if (OPT::dampstrategy & dsDEVREGION) { _sim->_fulldamp = true; }else{ } #if defined(DO_TRACE) error(bTRACE,"%s: region change\n", long_label().c_str()); #endif }else{ } return converged(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos1.model000066400000000000000000000134421316501211100142200ustar00rootroot00000000000000/* $Id: d_mos1.model,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * mos model equations: spice level 1 equivalent */ h_headers { #include "d_mos123.h" } cc_headers { } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS1 { level 1; public_keys { nmos1 polarity=pN; pmos1 polarity=pP; nmos polarity=pN; pmos polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS123; independent { override { double mjsw "" default=.5; double cox "" final_default=0.; double vto "" final_default=0.; double gamma "" final_default=0.; double phi "" final_default=.6; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { double kp "transconductance parameter" name=KP final_default=2e-5 print_test="!calc_kp" calc_print_test="calc_kp"; } calculated_parameters { bool calc_kp "" default=false; } code_pre { if (tox != NA) { cox = P_EPS_OX / tox; if (kp == NA) { kp = uo * cox; calc_kp = true; } if (nsub != NA) { if (phi == NA) { phi = (2. * P_K_Q) * tnom_k * log(nsub/NI); if (phi < .1) { untested(); error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": calculated phi too small, using .1\n"); phi = .1; } calc_phi = true; } if (gamma == NA) { gamma = sqrt(2. * P_EPS_SI * P_Q * nsub) / cox; calc_gamma = true; } if (vto == NA) { double phi_ms = (tpg == gtMETAL) ? polarity * (-.05 - (egap + polarity * phi) / 2.) : -(tpg * egap + phi) / 2.; double vfb = phi_ms - polarity * P_Q * nss / cox; vto = vfb + phi + gamma * sqrt(phi); calc_vto = true; } }else{ // tox is input, nsub isn't } } } } temperature_dependent { calculated_parameters { double phi "" calculate="m->phi*tempratio + (-2*vt*(1.5*log(tempratio)+P_Q*(arg)))"; double beta "" calculate="(m->kp / tempratio4) * s->w_eff / s->l_eff"; double sqrt_phi "" calculate="sqrt(phi)"; double egap "" calculate="egap_"; } code_pre { double temp = d->_sim->_temp_c + P_CELSIUS0; double tempratio = temp / m->tnom_k; double tempratio4 = tempratio * sqrt(tempratio); double kt = temp * P_K; double vt = temp * P_K_Q; double egap_ = 1.16 - (7.02e-4*temp*temp) / (temp+1108.); double arg = (m->egap*tempratio - egap_) / (2*kt); } } /*-----------------------------------------------------------------------*/ tr_eval { /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace0(d->long_label().c_str()); trace3("", d->vds, d->vgs, d->vbs); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->reverse_if_needed(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double sarg, dsarg_dvbs; { if (d->vbs <= 0.) { sarg = sqrt(t->phi - d->vbs); dsarg_dvbs = -.5 / sarg; d->sbfwd = false; trace2("sb-ok", sarg, dsarg_dvbs); }else{ untested(); sarg = t->sqrt_phi / (1. + .5 * d->vbs / t->phi); dsarg_dvbs = -.5 * sarg * sarg / t->phi*t->sqrt_phi; /* is wrong!! */ d->sbfwd = true; trace2("***sb-reversed***", sarg, dsarg_dvbs); } } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->von = m->vto + m->gamma * (sarg - sqrt(m->phi)) + .5 * (m->egap - t->egap) + .5 * (t->phi - m->phi); d->vgst = d->vdsat = d->vgs - d->von; if (d->vdsat < 0.) { d->vdsat = 0.; } d->cutoff = (d->vgst < 0.); d->saturated = (d->vds > d->vdsat); trace3("", d->von, d->vgst, d->vdsat); double Lambda = (m->lambda != NA) ? m->lambda : 0.; /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ if (d->cutoff) { d->gds = d->gmf = d->ids = d->gmbf = 0.; trace4("cut", d->ids, d->gmf, d->gds, d->gmbf); }else if (d->saturated) { d->gmf = t->beta * d->vgst * (1. + Lambda * d->vds); d->ids = d->gmf * (.5 * d->vgst); d->gds = .5 * t->beta * Lambda * d->vgst * d->vgst; d->gmbf = - d->gmf * m->gamma * dsarg_dvbs; trace4("sat", d->ids, d->gmf, d->gds, d->gmbf); }else{ /* triode */ d->gmf = t->beta * d->vds * (1. + Lambda * d->vds); d->ids = d->gmf * (d->vgst - .5*d->vds); d->gds = t->beta * ((d->vgst - d->vds) + Lambda * d->vds * (2.*d->vgst - 1.5*d->vds)); d->gmbf = -d->gmf * m->gamma * dsarg_dvbs; trace4("lin", d->ids, d->gmf, d->gds, d->gmbf); } if (d->reversed) { d->ids *= -1; d->gmr = d->gmf; d->gmbr = d->gmbf; d->gmf = d->gmbf = 0; }else{ d->gmr = d->gmbr = 0.; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos123.model000066400000000000000000000076521316501211100143730ustar00rootroot00000000000000/* $Id: d_mos123.model,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * MOS model - base for levels 1,2,3,6 */ h_headers { #include "d_mos_base.h" enum gate_t {gtSAME = -1, gtMETAL = 0, gtOPP = 1}; const double NI = 1.45e16; /* intrinsic carrier concentration */ } cc_headers { } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS123 { dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS_BASE; independent { override { double cjo "" default=0.; double pb "" default=0.8; double pbsw "" final_default=pb; int cmodel "CMODEL" print_test="cmodel!=3" calculate="((!cmodel)?3:cmodel)"; } raw_parameters { double vto_raw "zero-bias threshold voltage" name=VTO default=NA print_test="!calc_vto"; double gamma "bulk threshold parameter" name=GAmma default=NA print_test="!calc_gamma" calc_print_test="calc_gamma"; double phi "surface potential" name=PHI default=NA positive print_test="!calc_phi" calc_print_test="calc_phi"; double lambda "channel-length modulation" name=LAmbda default=NA; double tox "oxide thickness" name=TOX default=NA positive; double nsub_cm "substrate doping" name=NSUb default=NA; double nss_cm "surface state density" name=NSS default=0.0 print_test="nss_cm != 0.0 || has_hard_value(nsub_cm)"; double xj "metallurgical junction depth" name=XJ default=NA positive; double uo_cm "surface mobility" name=UO alt_name=U0 default="600."; int tpg "type of gate material - really gate_t" name=TPG default="int(gtOPP)"; } calculated_parameters { double nsub "" calculate="((nsub_cm.has_hard_value()) ? nsub_cm*ICM2M3 : NA)"; double nss "" calculate="nss_cm*ICM2M2"; double uo "" calculate="uo_cm*CM2M2"; double vto "" name=VTO calculate="((vto_raw.has_hard_value()) ? vto_raw * polarity : NA)" calc_print_test="calc_vto"; double cox "oxide capacitance (E_OX / tox)" name=COX calc_print_test=true default=NA; bool calc_vto "" default=false; bool calc_gamma "" default=false; bool calc_phi "" default=false; } code_post { if (tpg < 0) { // coerce tpg to a proper value tpg = gtSAME; }else if (tpg > 0) { tpg = gtOPP; }else{ assert(tpg == gtMETAL); } if (has_hard_value(tox) && tox <= 0) { untested(); set_default(&tox, NA); error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label()+": tox <= 0, treating as if not input\n"); } if (has_hard_value(nsub_cm) && nsub < NI) { untested(); nsub = NA; error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label()+": nsub < ni, treating as if not input\n"); } } } size_dependent { override { double cgate "" calculate="m->cox * w_eff * l_eff"; double phi "" calculate="m->phi"; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos2.model000066400000000000000000000532631316501211100142260ustar00rootroot00000000000000/* $Id: d_mos2.model,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * mos model equations: spice level 2 equivalent */ h_headers { #include "d_mos123.h" } cc_headers { #include "l_compar.h" #include "l_denoise.h" } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS2 { level 2; public_keys { nmos2 polarity=pN; pmos2 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS123; independent { override { double mjsw "" default=.33; double tox "" default=1e-7; double cox "" final_default="P_EPS_OX/tox"; double vto "" final_default=0.0; double gamma "" final_default=0.0; double phi "" final_default=0.6; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { double kp "transconductance parameter" name=KP final_default=2e-5 print_test="!calc_kp" calc_print_test="calc_kp"; double nfs_cm "fast surface state density" name=NFS default=0.0; double vmax "max drift velocity of carriers" name=VMAx default=NA; double neff "total channel charge coefficient" name=NEFf default=1.0 positive print_test="neff != 1.0 || lambda == NA"; double ucrit_cm "critical field mobility degradation" name=UCRit default=1e4 print_test="ucrit_cm != 1e4 || uexp != NA"; double uexp "critical field exponent in mob.deg." name=UEXp default=NA; double utra "transverse field coefficient (not used)" name=UTRa default=NA print_test=false; double delta "width effect on threshold voltage" name=DELta default=0.0; } calculated_parameters { double nfs "" calculate="nfs_cm*ICM2M2"; double ucrit "" calculate="ucrit_cm*ICM2M"; bool calc_kp "" default=false; double alpha "" calculate="((nsub != NA) ? (2. * P_EPS_SI) / (P_Q * nsub) : 0.)"; double xd "coeffDepLayWidth" calculate="sqrt(alpha)"; double xwb "" calculate="((nsub != NA) ? xd * sqrt(pb) : .25e-6)"; double vbp "" calculate="ucrit * P_EPS_SI / cox"; double cfsox "" calculate="P_Q * nfs / cox"; } code_pre { if (!has_good_value(tox)) { tox = 1e-7; } cox = P_EPS_OX / tox; if (kp == NA) { kp = uo * cox; calc_kp = true; } if (nsub != NA) { if (phi == NA) { phi = (2. * P_K_Q) * tnom_k * log(nsub/NI); if (phi < .1) { untested(); error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": calculated phi too small, using .1\n"); phi = .1; } calc_phi = true; } if (gamma == NA) { gamma = sqrt(2. * P_EPS_SI * P_Q * nsub) / cox; calc_gamma = true; } if (vto == NA) { double phi_ms = (tpg == gtMETAL) ? polarity * (-.05 - (egap + polarity * phi) / 2.) : -(tpg * egap + phi) / 2.; double vfb = phi_ms - polarity * P_Q * nss / cox; vto = vfb + phi + gamma * sqrt(phi); calc_vto = true; } } } } size_dependent { calculated_parameters { double relxj "" calculate="((m->xj != NA && m->xj > 0) ? .5 * m->xj / l_eff : NA)"; double eta_1 "" calculate="((cgate != 0) ? M_PI_4 * P_EPS_SI * m->delta / cgate * l_eff : 0.)"; double eta "" calculate="eta_1 + 1."; double eta_2 "" calculate="eta / 2."; } } temperature_dependent { calculated_parameters { double vt "" calculate="temp * P_K_Q"; double phi "" calculate="m->phi*tempratio + (-2*vt*(1.5*log(tempratio)+P_Q*(arg)))"; double sqrt_phi "" calculate="sqrt(phi)"; double phi_sqrt_phi "" calculate="phi * sqrt_phi"; double beta "" calculate="(m->kp / tempratio4) * s->w_eff / s->l_eff"; double uo "" calculate="m->uo * tempratio4"; double vbi "" calculate="(fixzero( (m->vto - m->gamma * sqrt(m->phi) +.5*(m->egap-egap) + m->polarity* .5 * (phi-m->phi)), m->phi))"; } code_pre { double temp = d->_sim->_temp_c + P_CELSIUS0; double tempratio = temp / m->tnom_k; // ratio double tempratio4 = tempratio * sqrt(tempratio); double kt = temp * P_K; double egap = 1.16 - (7.02e-4*temp*temp) / (temp+1108.); double arg = (m->egap*tempratio - egap) / (2*kt); } } /*-----------------------------------------------------------------------*/ tr_eval { #define short_channel (m->xj != NOT_INPUT && m->xj > 0.) #define do_subthreshold (m->nfs != 0.) /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace0(d->long_label().c_str()); trace3("", d->vds, d->vgs, d->vbs); assert(m->tnom_k > 0); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->reverse_if_needed(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double v_phi_s = t->phi - d->vbs; double sarg, dsarg_dvbs, d2sdb2, sarg3; { if (d->vbs <= 0.) { sarg = sqrt(v_phi_s); dsarg_dvbs = -.5 / sarg; d2sdb2 = .5 * dsarg_dvbs / v_phi_s; d->sbfwd = false; trace3("sb-ok", sarg, v_phi_s, dsarg_dvbs); }else{ if (OPT::mosflags & 01000) { sarg = t->sqrt_phi / (1. + .5 * d->vbs / t->phi); dsarg_dvbs = -.5 * sarg * sarg / t->phi_sqrt_phi; d2sdb2 = -dsarg_dvbs * sarg / t->phi_sqrt_phi; untested(); trace3("***sb-reversed(01000)***", sarg, v_phi_s, dsarg_dvbs); }else{ sarg = t->sqrt_phi / (1. + .5 * d->vbs / t->phi + .375 * d->vbs * d->vbs / (t->phi * t->phi)); dsarg_dvbs = (-.5 * sarg * sarg / t->phi_sqrt_phi) * (1. + 1.5 * d->vbs / t->phi); d2sdb2 = (-dsarg_dvbs * sarg / t->phi_sqrt_phi) - (.75 * sarg / (t->phi_sqrt_phi * t->phi)) * (2. * d->vbs * dsarg_dvbs + sarg); untested(); trace3("***sb-reversed(00000)***", sarg, v_phi_s, dsarg_dvbs); } d->sbfwd = true; } sarg3 = sarg*sarg*sarg; assert(sarg > 0.); assert(dsarg_dvbs < 0.); assert(up_order(-1/t->phi, d2sdb2, 1/t->phi)); trace2("", d2sdb2, sarg3); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double barg, dbarg_dvbs, d2bdb2; { double vbd = d->vbs - d->vds; double v_phi_d = t->phi - vbd; if (vbd <= 0.) { barg = sqrt(v_phi_d); dbarg_dvbs = -.5 / barg; d2bdb2 = .5 * dbarg_dvbs / v_phi_d; //d->dbfwd = false; trace4("db-ok", barg, v_phi_d, dbarg_dvbs, d2bdb2); }else{ if (OPT::mosflags & 01000) { barg = t->sqrt_phi / (1. + .5 * vbd / t->phi); dbarg_dvbs = -.5 * barg * barg / t->phi_sqrt_phi; d2bdb2 = -dbarg_dvbs * barg / t->phi_sqrt_phi; untested(); trace4("***db-reversed(00000)***",barg, v_phi_d, dbarg_dvbs, d2bdb2); }else{ barg = t->sqrt_phi / (1. + .5 * vbd / t->phi + .375 * vbd * vbd / (t->phi * t->phi)); dbarg_dvbs = (-.5 * barg * barg / t->phi_sqrt_phi) * (1. + 1.5 * vbd / t->phi); d2bdb2 = (-dbarg_dvbs * barg / t->phi_sqrt_phi) - (.75 * barg / (t->phi_sqrt_phi * t->phi)) * (2. * vbd * dbarg_dvbs + barg); trace4("***db-reversed(00000)***",barg, v_phi_d, dbarg_dvbs, d2bdb2); } //d->dbfwd = true; } assert(barg > 0.); assert(dbarg_dvbs < 0.); assert(up_order(-1/t->phi, d2bdb2, 1/t->phi)); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double gamma_s, dgamma_s_dvds, dgamma_s_dvbs, dgddb2; { if (short_channel) { double argxd = 1. + 2. * barg * m->xd / m->xj; assert(argxd > 0); double argd = sqrt(argxd); trace2("", argxd, argd); double alpha_d = s->relxj * (argd - 1.); double dalpha_d_dvds = m->xd / (4. * s->l_eff * argd * barg); double dalpha_d_dvbs = -dalpha_d_dvds; trace3("", alpha_d, dalpha_d_dvds, dalpha_d_dvbs); double argxs = 1. + 2. * sarg * m->xd / m->xj; assert(argxs > 0); double args = sqrt(argxs); trace2("", argxs, args); double alpha_s = s->relxj * (args - 1.); double dalpha_s_dvbs = -m->xd / (4. * s->l_eff * args * sarg); trace2("", alpha_s, dalpha_s_dvbs); gamma_s = m->gamma * (1. - alpha_s - alpha_d); dgamma_s_dvds = -m->gamma * dalpha_d_dvds; dgamma_s_dvbs = -m->gamma * (dalpha_d_dvbs + dalpha_s_dvbs); double dasdb2=-m->xd*(d2sdb2+dsarg_dvbs*dsarg_dvbs*m->xd/(m->xj*argxs)) / (s->l_eff*args); double daddb2=-m->xd*(d2bdb2+dbarg_dvbs*dbarg_dvbs*m->xd/(m->xj*argxd)) / (s->l_eff*argd); dgddb2 = -.5 * m->gamma * (dasdb2 + daddb2); if (gamma_s <= 0. && m->gamma > 0.) { untested(); error(bTRACE, d->long_label() + ": gamma is negative\n"); error(bTRACE, "+ gamma_s=%g, alpha_s=%g, alpha_d=%g\n", gamma_s, alpha_s, alpha_d); } trace4("no short chan", gamma_s, dgamma_s_dvds, dgamma_s_dvds, dgddb2); }else{ gamma_s = m->gamma; dgamma_s_dvds = dgamma_s_dvbs = 0.; dgddb2 = 0.; trace4("short channel", gamma_s, dgamma_s_dvds, dgamma_s_dvds, dgddb2); } } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* von, subthreshold, cutoff, vgst */ double vc, vc_eta, dvon_dvbs; double xn, vtxn, dxn_dvbs; /* subthreshold only */ { double vbin = t->vbi + s->eta_1 * v_phi_s; d->von = vbin + gamma_s * sarg; dvon_dvbs = -s->eta_1 + dgamma_s_dvbs * sarg + gamma_s * dsarg_dvbs; trace3("guess", vbin, d->von, dvon_dvbs); if (do_subthreshold) { double cdonco = -(gamma_s*dsarg_dvbs + dgamma_s_dvbs*sarg) + s->eta_1; xn = 1. + m->cfsox + cdonco; vtxn = t->vt * xn; dxn_dvbs = 2. * dgamma_s_dvbs * dsarg_dvbs + gamma_s * d2sdb2 + dgddb2 * sarg; trace3("do_sub", xn, vtxn, dxn_dvbs); d->von += vtxn; dvon_dvbs += t->vt * dxn_dvbs; d->vgst = d->vgs - d->von; trace3("", d->von, dvon_dvbs, d->vgst); d->subthreshold = (d->vgs < d->von); d->cutoff = false; }else{ xn = vtxn = dxn_dvbs = 0.; d->vgst = d->vgs - d->von; trace3("no_sub", xn, vtxn, dxn_dvbs); trace3("", d->von, dvon_dvbs, d->vgst); d->subthreshold = false; d->cutoff = (d->vgs < d->von); if (d->cutoff) { trace0("***** cut off *****"); d->ids = 0.; d->gmf = d->gmr = 0.; d->gds = 0.; d->gmbf = d->gmbr = 0.; return; } } double vgsx = (d->subthreshold) ? d->von : d->vgs; vc = vgsx - vbin; vc_eta = vc / s->eta; trace3("", vgsx, vc, vc_eta); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double ufact, duf_dvgs, duf_dvds, duf_dvbs, ueff; { if (m->uexp != NOT_INPUT && d->vgst > m->vbp) { ufact = pow(m->vbp/d->vgst, m->uexp); duf_dvgs = -ufact * m->uexp / d->vgst; duf_dvds = 0.; /* wrong, but as per spice2 */ duf_dvbs = dvon_dvbs * ufact * m->uexp / d->vgst; trace4("calc ufact", ufact, duf_dvgs, duf_dvds, duf_dvbs); }else{ ufact = 1.; duf_dvgs = duf_dvds = duf_dvbs = 0.; trace4("def ufact", ufact, duf_dvgs, duf_dvds, duf_dvbs); } ueff = t->uo * ufact; /* ???? */ trace2("", ufact, ueff); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* vdsat according to Baum's Theory of scattering velocity saturation */ int use_vmax = m->vmax != NOT_INPUT; if (use_vmax) { double gammad = gamma_s / s->eta; double v1 = vc_eta + v_phi_s; double v2 = v_phi_s; double xv = m->vmax * s->l_eff / ueff; double a1 = gammad * (4./3.); double b1 = -2. * (v1+xv); double c1 = -2. * gammad * xv; /* end of scope */ double d1 = 2.*v1*(v2+xv) - v2*v2 - (4./3.)*gammad*sarg3; double a = -b1; /* xv, v1, v2, sarg3 */ double b = a1 * c1 - 4. * d1; double C = -d1 * (a1*a1 - 4.*b1) - c1*c1; double r = -a*a / 3. + b; double r3 = r*r*r; /* r */ double S = 2. * a*a*a / 27. - a*b / 3. + C; /* b, c */ double s2 = S*S; double p = s2 / 4. + r3 / 27.; /* r */ double y3; if (p < 0.) { /* p */ double ro = pow((-r3 / 27), (1./6.)); /* s2, r3 */ double fi = atan(-2. * sqrt(-p) / S); y3 = 2. * ro * cos(fi/3.) - a / 3.; }else{ double p2 = sqrt(p); double p3 = pow((fabs(-S/2.+p2)), (1./3.)); double p4 = pow((fabs(-S/2.-p2)), (1./3.)); /* s */ y3 = p3 + p4 - a / 3.; /* a */ untested(); } double x4[8]; int iknt = 0; if (a1*a1 / 4. - b1 + y3 < 0. && y3*y3 / 4. - d1 < 0.) { untested(); error(bWARNING, "%s: internal error: a3,b4, a1=%g, b1=%g, y3=%g, d1=%g\n", d->long_label().c_str(), a1, b1, y3, d1); }else{ double a3 = sqrt(a1*a1 / 4. - b1 + y3); double b3 = sqrt(y3*y3 / 4. - d1); for (int i = 0; i < 4; i++) { static const double sig1[4] = {1., -1., 1., -1.}; static const double sig2[4] = {1., 1., -1., -1.}; double a4 = a1 / 2. + sig1[i] * a3; double b4 = y3 / 2. + sig2[i] * b3; /* y3 */ double delta4 = a4*a4 / 4. - b4; if (delta4 >= 0.) { double sd4 = sqrt(delta4); x4[iknt++] = - a4 / 2. + sd4; x4[iknt++] = - a4 / 2. - sd4; /* i */ } } } double xvalid = 0.; int root_count = 0; for (int j = 0; j < iknt; j++) { /* iknt */ if (x4[j] > 0.) { double poly4 = x4[j]*x4[j]*x4[j]*x4[j]/* ~= 0, used as check */ + a1 * x4[j]*x4[j]*x4[j] /* roundoff error not */ + b1 * x4[j]*x4[j] /* propagated, so ok */ + c1 * x4[j] + d1; /* a1, b1, c1, d1 */ if (fabs(poly4) <= 1e-6) { root_count++; if (root_count <= 1) { /* xvalid = min(x4[j]) */ xvalid=x4[j]; } if (x4[j] <= xvalid) { xvalid=x4[j]; /* x4[], j */ }else{ untested(); } } } } if (root_count <= 0) { /* root_count */ error(bTRACE, d->long_label() + ": Baum's theory rejected\n"); use_vmax = false; d->vdsat = 0.; trace1("use_vmax rejected", d->vdsat); }else{ d->vdsat = xvalid*xvalid - v_phi_s; trace1("use_vmax", d->vdsat); } }else{ d->vdsat = 0.; trace1("!use_vmax", d->vdsat); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* vdsat according to Grove-Frohman equation */ double dvdsat_dvgs = NOT_VALID; double dvdsat_dvbs = NOT_VALID; if (!use_vmax) { if (gamma_s > 0.) { double argv = vc_eta + v_phi_s; if (argv > 0.) { double gammad = gamma_s / s->eta; double gammd2 = gammad * gammad; double arg1 = sqrt(1. + 4. * argv / gammd2); d->vdsat = vc_eta + gammd2 * (1.-arg1) / 2.; dvdsat_dvgs = (1. - 1./arg1) / s->eta; dvdsat_dvbs = (gammad * (1.-arg1) + 2.*argv / (gammad*arg1)) / s->eta * dgamma_s_dvbs + 1./arg1 + s->eta_1 * dvdsat_dvgs; trace3("!use_vmax,gamma>0,argv>0",d->vdsat,dvdsat_dvgs,dvdsat_dvbs); }else{ untested(); d->vdsat = 0.; dvdsat_dvgs = dvdsat_dvbs = 0.; error(bTRACE, d->long_label() + ": argv is negative\n"); trace2("argv<0", argv, vc); trace3("!use_vmax,gamma>0,argv<=0",d->vdsat,dvdsat_dvgs,dvdsat_dvbs); } }else{ d->vdsat = vc_eta; dvdsat_dvgs = 1.; dvdsat_dvbs = 0.; trace3("!use_vmax, gamma<=0", d->vdsat, dvdsat_dvgs, dvdsat_dvbs); } }else{ /* dvdsat_dvgs, dvdsat_dvbs deferred */ trace3("use_vmax", d->vdsat, dvdsat_dvgs, dvdsat_dvbs); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ if (d->vdsat < 0.) { error(bWARNING, "%s: calculated vdsat (%g) < 0. using vdsat = 0.\n", d->long_label().c_str(), d->vdsat); d->vdsat = 0.; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double bsarg, dbsarg_dvbs; { double vbdsat = d->vbs - d->vdsat; if (vbdsat <= 0.) { double v_phi_ds = t->phi - vbdsat; bsarg = sqrt(v_phi_ds); dbsarg_dvbs = -.5 / bsarg; trace3("vbdsat <= 0", vbdsat, bsarg, dbsarg_dvbs); }else{ bsarg = t->sqrt_phi / (1. + .5 * vbdsat / t->phi); dbsarg_dvbs = -.5 * bsarg * bsarg / t->phi_sqrt_phi; untested(); trace3("vbdsat > 0", vbdsat, bsarg, dbsarg_dvbs); } } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* local dvdsat_dvgs, dvdsat_dvbs maybe */ { if (use_vmax) { double bodys = bsarg*bsarg*bsarg - sarg3; double gdbdvs = 2. * gamma_s * (bsarg*bsarg*dbsarg_dvbs - sarg*sarg*dsarg_dvbs); double argv = vc_eta - d->vdsat; double vqchan = argv - gamma_s * bsarg; double dqdsat = -1. + gamma_s * dbsarg_dvbs; double vl = m->vmax * s->l_eff; double dfunds = vl * dqdsat - ueff * vqchan; double dfundg = (vl - ueff * d->vdsat) / s->eta; double dfundb = -vl * (1. + dqdsat - s->eta_1 / s->eta) + ueff * (gdbdvs - dgamma_s_dvbs * bodys / 1.5) / s->eta; dvdsat_dvgs = -dfundg / dfunds; dvdsat_dvbs = -dfundb / dfunds; trace2("use_vmax", dvdsat_dvgs, dvdsat_dvbs); }else{ /* dvdsat_dvgs, dvdsat_dvbs already set */ trace2("!use_vmax", dvdsat_dvgs, dvdsat_dvbs); } assert(dvdsat_dvgs != NOT_VALID); assert(dvdsat_dvbs != NOT_VALID); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double dl_dvgs, dl_dvds, dl_dvbs, clfact; { if (d->vds >= 0.) { if (m->lambda == NOT_INPUT) { double dldsat; if (use_vmax) { double xdv = m->xd / sqrt(m->neff); double xlv = m->vmax * xdv / (2. * ueff); double argv = d->vds - d->vdsat; if (argv < 0.) { argv = 0.; } double xls = sqrt(xlv*xlv + argv); double dl = (xls-xlv) * xdv; /* lambda = dl / (s->l_eff * d->vds); */ clfact = (1. - dl / s->l_eff); dldsat = xdv / (2. * xls * s->l_eff); }else{ double argv = (d->vds - d->vdsat) / 4.; double sargv = sqrt(1. + argv*argv); if (argv + sargv >= 0.) { double dl = m->xd * sqrt(argv + sargv); /* lambda = dl / (s->l_eff * d->vds); */ clfact = (1. - dl / s->l_eff); /* dldsat = lambda * d->vds / (8. * sargv); */ dldsat = dl / (s->l_eff * 8. * sargv); }else{ /* lambda = 0.; */ clfact = 1.; dldsat = 0.; untested(); error(bWARNING, "%s: internal error: vds(%g) < vdsat(%g)\n", d->long_label().c_str(), d->vds, d->vdsat); } } dl_dvgs = dvdsat_dvgs * dldsat; dl_dvds = - dldsat; dl_dvbs = dvdsat_dvbs * dldsat; }else{ /* lambda = m->lambda; */ clfact = (1. - m->lambda * d->vds); dl_dvgs = dl_dvbs = 0.; dl_dvds = -m->lambda; } /* clfact = (1. - lambda * d->vds); */ if (clfact < m->xwb/s->l_eff) { double leff = m->xwb / (2. - (clfact * s->l_eff / m->xwb)); double dfact = (leff * leff) / (m->xwb * m->xwb); clfact = leff / s->l_eff; dl_dvgs *= dfact; dl_dvds *= dfact; dl_dvbs *= dfact; } }else{ /* vds <= 0. */ /* lambda = 0.; */ clfact = 1.; dl_dvgs = dl_dvds = dl_dvbs = 0.; trace1("*** vds < 0 ***", d->vds); } trace4("", dl_dvgs, dl_dvds, dl_dvbs, clfact); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* ids, gmf, gds, gmbf */ { d->saturated = (d->vds > d->vdsat); double vdsx = (d->saturated) ? d->vdsat : d->vds; double bargx = (d->saturated) ? bsarg : barg; double body = bargx*bargx*bargx - sarg3; double expg = (d->subthreshold) ? exp(d->vgst / vtxn) : 1.; trace4("", vdsx, bargx, body, expg); trace3("", t->beta, ufact, clfact); double beta = t->beta * ufact / clfact; double ids_on = beta * ((vc - s->eta_2 * vdsx) * vdsx - (2./3.) * gamma_s * body); trace4("", beta, vc, (s->eta*vdsx), (gamma_s*bargx)); double didvds = beta * (vc - s->eta * vdsx - gamma_s * bargx); fixzero(&didvds, ids_on); trace4("", beta, ids_on, didvds, d->saturated); d->ids = ids_on * expg; d->gmf = beta * vdsx; d->gmf += ids_on * (duf_dvgs/ufact - dl_dvgs/clfact); if (d->saturated) { d->gmf += didvds * dvdsat_dvgs; } if (d->subthreshold) { d->gmf = ids_on / vtxn; if (d->saturated) { d->gmf += didvds * dvdsat_dvgs; } d->gmf *= expg; } d->gds = (d->saturated) ? 0.: didvds; d->gds += ids_on * (duf_dvds/ufact - dl_dvds/clfact); if (short_channel) { d->gds -= beta * (2./3.) * body * dgamma_s_dvds; } if (d->subthreshold) { double dxndvd = dgamma_s_dvds * dsarg_dvbs; double dodvds = dgamma_s_dvds * sarg + t->vt * dxndvd; double gmw = d->ids * d->vgst / (vtxn * xn); d->gds *= expg; d->gds -= d->gmf * dodvds + gmw * dxndvd; } d->gmbf = beta * (s->eta_1 * vdsx - gamma_s * (sarg - bargx)); d->gmbf += ids_on * (duf_dvbs/ufact - dl_dvbs/clfact); if (short_channel) { d->gmbf -= beta * (2./3.) * body * dgamma_s_dvbs; } if (d->saturated) { d->gmbf += didvds * dvdsat_dvbs; } if (d->subthreshold) { double gmw = d->ids * d->vgst / (vtxn * xn); d->gmbf += beta * dvon_dvbs * vdsx; d->gmbf *= expg; d->gmbf -= d->gmf * dvon_dvbs + gmw * dxn_dvbs; } trace4("", d->ids, d->gmf, d->gds, d->gmbf); } if (d->reversed) { d->ids *= -1; d->gmr = d->gmf; d->gmbr = d->gmbf; d->gmf = d->gmbf = 0; }else{ d->gmr = d->gmbr = 0.; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos3.model000066400000000000000000000372161316501211100142270ustar00rootroot00000000000000/* $Id: d_mos3.model,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * mos model equations: spice level 3 equivalent */ h_headers { #include "d_mos123.h" } cc_headers { #include "l_denoise.h" } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS3 { level 3; public_keys { nmos3 polarity=pN; pmos3 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS123; independent { override { double mjsw "" default=.33; double tox "" default=1e-7; double cox "" final_default="P_EPS_OX/tox"; double vto "" final_default=0.0; double gamma "" final_default=0.0; double phi "" final_default=0.6; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { double kp "transconductance parameter" name=KP final_default=2e-5 print_test="!calc_kp" calc_print_test="calc_kp"; double nfs_cm "fast surface state density" name=NFS default=0.0; double vmax "max drift velocity of carriers" name=VMAx default=NA; double theta "mobility modulation" name=THEta default=0.0; double eta "static feedback" name=ETA default=0.0; double kappa "saturation field vector" name=KAPpa default=0.2; double delta "width effect on threshold voltage" name=DELta default=0.0; } calculated_parameters { double nfs "" calculate="nfs_cm*ICM2M2"; bool calc_kp "" default=false; double alpha "" calculate="((nsub != NA) ? (2. * P_EPS_SI) / (P_Q * nsub) : 0.)"; double xd "coeffDepLayWidth" calculate="sqrt(alpha)"; double cfsox "" calculate="P_Q * nfs / cox"; double delta3 "narrow factor" calculate="delta * M_PI_2 * P_EPS_SI / cox"; } code_pre { if (!has_good_value(tox)) { tox = 1e-7; } cox = P_EPS_OX / tox; if (kp == NA) { kp = uo * cox; calc_kp = true; } if (nsub != NA) { if (phi == NA) { phi = (2. * P_K_Q) * tnom_k * log(nsub/NI); if (phi < .1) { untested(); error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": calculated phi too small, using .1\n"); phi = .1; } calc_phi = true; } if (gamma == NA) { gamma = sqrt(2. * P_EPS_SI * P_Q * nsub) / cox; calc_gamma = true; } if (vto == NA) { double phi_ms = (tpg == gtMETAL) ? polarity * (-.05 - (egap + polarity * phi) / 2.) : -(tpg * egap + phi) / 2.; double vfb = phi_ms - polarity * P_Q * nss / cox; vto = vfb + phi + gamma * sqrt(phi); calc_vto = true; } } } } temperature_dependent { calculated_parameters { double vt "" calculate="temp * P_K_Q"; double phi "" calculate="m->phi*tempratio + (-2*vt*(1.5*log(tempratio)+P_Q*(arg)))"; double sqrt_phi "" calculate="sqrt(phi)"; double beta "" calculate="(m->kp / tempratio4) * s->w_eff / s->l_eff"; double uo "" calculate="m->uo * tempratio4"; double vbi "" calculate="(fixzero( (m->vto - m->gamma * sqrt(m->phi) +.5*(m->egap-egap) + m->polarity* .5 * (phi-m->phi)), m->phi))"; } code_pre { double temp = d->_sim->_temp_c + P_CELSIUS0; double tempratio = temp / m->tnom_k; // ratio double tempratio4 = tempratio * sqrt(tempratio); double kt = temp * P_K; double egap = 1.16 - (7.02e-4*temp*temp) / (temp+1108.); double arg = (m->egap*tempratio - egap) / (2*kt); } } /*-----------------------------------------------------------------------*/ tr_eval { #define short_channel (m->xj != NOT_INPUT && m->xj > 0.) #define do_subthreshold (m->nfs != 0.) #define use_vmax (m->vmax != NOT_INPUT) /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace0(d->long_label().c_str()); trace3("", d->vds, d->vgs, d->vbs); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->reverse_if_needed(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* square root term */ double sarg, v_phi_s, dsarg_dvbs; { if (d->vbs <= 0.) { v_phi_s = t->phi - d->vbs; sarg = sqrt(v_phi_s); dsarg_dvbs = -.5 / sarg; d->sbfwd = false; trace3("sb-ok", sarg, v_phi_s, dsarg_dvbs); }else{ untested(); sarg = t->sqrt_phi / (d->vbs / (2 * t->phi) + 1.); v_phi_s = sarg * sarg; dsarg_dvbs = -v_phi_s / (2 * t->phi*t->sqrt_phi); d->sbfwd = true; trace3("***sb-reversed***", sarg, v_phi_s, dsarg_dvbs); } } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* short channel effect, body effect */ double fbody, dfbody_dvbs, qbonco, dqbdvb; { double fshort, dfs_dvbs; if (short_channel) { static const double D[3] = {.0631353, .8013292, -.01110777}; double wp = m->xd * sarg; double wp_xj = wp / m->xj; double wc_xj = D[0] + D[1] * wp_xj + D[2] * wp_xj * wp_xj; double ld_xj = m->ld / m->xj; double xj_le = m->xj / s->l_eff; double arga = wc_xj + ld_xj; double argc = wp_xj / (wp_xj + 1.); double argb = sqrt(1. - argc * argc); fshort = 1. - xj_le * (arga * argb - ld_xj); double dwp_dvbs = m->xd * dsarg_dvbs; double darga_dvbs = (D[1] + D[2] * (wp_xj + wp_xj)) * dwp_dvbs / m->xj; double dargb_dvbs = -argc * argc * (1. - argc) * dwp_dvbs / (argb*wp); dfs_dvbs = -xj_le * (darga_dvbs * argb + arga * dargb_dvbs); trace2("short-channel", fshort, dfs_dvbs); }else{ fshort = 1.; dfs_dvbs = 0.; trace2("not-short-channel", fshort, dfs_dvbs); } double gamma_fs = m->gamma * fshort; double fbodys = gamma_fs * .5 / (2 * sarg); double fnarrw = m->delta3 / s->w_eff; trace3("", gamma_fs, fbodys, fnarrw); fbody = fbodys + fnarrw; dfbody_dvbs = -fbodys * dsarg_dvbs / sarg + fbodys * dfs_dvbs / fshort; trace2("", fbody, dfbody_dvbs); qbonco = gamma_fs * sarg + fnarrw * v_phi_s; dqbdvb = gamma_fs * dsarg_dvbs + m->gamma * dfs_dvbs * sarg - fnarrw; trace2("", qbonco, dqbdvb); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* threshold voltage */ double vth, dvth_dvds, dvth_dvbs; { double sigma = m->eta * 8.15e-22 / (m->cox * s->l_eff*s->l_eff*s->l_eff); double vbix = t->vbi - sigma * d->vds; vth = vbix + qbonco; dvth_dvds = -(sigma); dvth_dvbs = dqbdvb; trace3("", vth, dvth_dvds, dvth_dvbs); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* joint weak inversion and strong inversion */ /* von */ double xn, vtxn, dxn_dvbs, dvon_dvds, dvon_dvbs; { if (do_subthreshold) { xn = 1. + m->cfsox + qbonco / (2 * v_phi_s); vtxn = t->vt * xn; dxn_dvbs = dqbdvb / (2*v_phi_s) - qbonco*dsarg_dvbs / (v_phi_s*sarg); trace3("do_sub", xn, vtxn, dxn_dvbs); d->von = vth + vtxn; dvon_dvds = dvth_dvds; dvon_dvbs = dvth_dvbs + t->vt * dxn_dvbs; d->vgst = d->vgs - d->von; trace4("", d->von, dvon_dvds, dvon_dvbs, d->vgst); d->subthreshold = (d->vgs < d->von); d->cutoff = false; }else{ xn = vtxn = dxn_dvbs = dvon_dvds = dvon_dvbs = 0.; d->von = vth; d->vgst = d->vgs - d->von; trace2("no_sub", vtxn, dxn_dvbs); trace4("", d->von, dvon_dvds, dvon_dvbs, d->vgst); d->subthreshold = false; d->cutoff = (d->vgs <= d->von); if (d->cutoff) { trace0("***** cut off *****"); d->vdsat = 0.; d->ids = 0.; d->gmf = d->gmr = 0.; d->gds = 0.; d->gmbf = d->gmbr = 0.; return; } } } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* device is on */ /* mobility modulation by gate voltage */ double vc, onfg, us, dfg_dvgs, dfg_dvds, dfg_dvbs, beta; { double vgsx = (d->subthreshold) ? d->von : d->vgs; vc = vgsx - vth; onfg = m->theta * vc + 1.; double fgate = 1. / onfg; trace3("", vc, onfg, fgate); us = t->uo * fgate; beta = t->beta * fgate; trace4("", t->beta, beta, t->uo, us); dfg_dvgs = -(m->theta) * fgate * fgate; dfg_dvds = -dfg_dvgs * dvth_dvds; dfg_dvbs = -dfg_dvgs * dvth_dvbs; trace3("", dfg_dvgs, dfg_dvds, dfg_dvbs); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* saturation voltage */ /* vdsat, saturated */ double dvdsat_dvgs, dvdsat_dvds, dvdsat_dvbs; double onvdsc, vdsx; { double onfbdy = 1. / (fbody + 1.); double dvsdga = onfbdy; d->vdsat = vc * onfbdy; trace2("novm", d->vdsat, dvsdga); if (use_vmax) { double vdsc = s->l_eff * m->vmax / us; double argb = sqrt(d->vdsat * d->vdsat + vdsc * vdsc); d->vdsat += vdsc - argb; dvsdga *= (1. - d->vdsat / argb); trace2("vmax", d->vdsat, dvsdga); dvdsat_dvgs = dvsdga - (1. - vdsc / argb) * vdsc * dfg_dvgs * onfg; onvdsc = 1. / vdsc; }else{ dvdsat_dvgs = dvsdga; onvdsc = NOT_VALID; } d->saturated = (d->vds > d->vdsat); vdsx = (d->saturated) ? d->vdsat : d->vds; trace3("", d->vdsat, vdsx, onvdsc); dvdsat_dvds = -dvdsat_dvgs * dvth_dvds; dvdsat_dvbs = -dvdsat_dvgs * dvth_dvbs - d->vdsat * dfbody_dvbs * dvsdga; trace3("", dvdsat_dvgs, dvdsat_dvds, dvdsat_dvbs); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* short cut exit if vds == 0 */ if (vdsx == 0.) { /*900*/ trace2("***** vdsx == 0 *****", d->vdsat, d->vds); d->ids = 0.; d->gmf = d->gmr = 0.; d->gds = beta * vc; d->gmbf = d->gmbr = 0.; if (d->subthreshold) { d->gds *= exp(d->vgst / vtxn); } return; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* normalized drain current */ { double cdo = vc - (fbody + 1.) * .5 * vdsx; double dcodvb = -dvth_dvbs - dfbody_dvbs * .5 * vdsx; trace3("", t->beta, cdo, dcodvb); trace4("", vc, fbody, dvth_dvds, vdsx); d->gmf = vdsx; d->gds = vc - (fbody + 1. + dvth_dvds) * vdsx; d->gmbf = dcodvb * vdsx; d->ids = cdo * vdsx; trace4("1", d->ids, d->gmf, d->gds, d->gmbf); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* scale, but without velocity saturation effect */ { double cd1 = t->beta * d->ids; d->gmf *= beta; d->gmf += dfg_dvgs * cd1; d->gds *= beta; d->gds += dfg_dvds * cd1; d->gmbf *= beta; d->ids *= beta; trace4("2", d->ids, d->gmf, d->gds, d->gmbf); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* velocity saturation factor */ double fdrain, dfd_dvgs, dfd_dvds, dfd_dvbs; if (use_vmax) { assert(onvdsc != NOT_VALID); fdrain = 1. / (vdsx * onvdsc + 1.); double fd2 = fdrain * fdrain; double arga = fd2 * vdsx * onvdsc * onfg; dfd_dvgs = -dfg_dvgs * arga; dfd_dvds = -dfg_dvds * arga - fd2 * onvdsc; dfd_dvbs = -dfg_dvbs * arga; trace4("", fdrain, dfd_dvgs, dfd_dvds, dfd_dvbs); d->gmf *= fdrain; d->gmf += dfd_dvgs * d->ids; d->gds *= fdrain; d->gds += dfd_dvds * d->ids; d->gmbf *= fdrain; d->gmbf += dfd_dvbs * d->ids; d->ids *= fdrain; beta *= fdrain; trace4("3", d->ids, d->gmf, d->gds, d->gmbf); }else{ fdrain = 0.; /* used only if use_vmax */ dfd_dvgs = 0.; dfd_dvds = 0.; dfd_dvbs = 0.; } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* channel length modulation */ double gds0; if (d->saturated) { double d_l, dl_dvd; double ddl_dvgs, ddl_dvds, ddl_dvbs; if (m->alpha == 0.) { d_l = dl_dvd = ddl_dvgs = ddl_dvds = ddl_dvbs = 0.; }else if (use_vmax) { /* use_vmax && m->alpha != 0 */ double gdsat = d->ids * (1. - fdrain) * onvdsc; gdsat = std::max(1e-12,gdsat); double gdoncd = gdsat / d->ids; double gdonfd = gdsat / (1. - fdrain); double gdonfg = gdsat * onfg; double dgdvg = gdoncd * d->gmf - gdonfd * dfd_dvgs + gdonfg * dfg_dvgs; double dgdvd = gdoncd * d->gds - gdonfd * dfd_dvds + gdonfg * dfg_dvds; double dgdvb = gdoncd *d->gmbf - gdonfd * dfd_dvbs + gdonfg * dfg_dvbs; double emax = d->ids / (s->l_eff * gdsat); double emax_o_ids = emax / d->ids; double emax_o_gdsat = emax / gdsat; double demax_dvgs = emax_o_ids * d->gmf - emax_o_gdsat * dgdvg; double demax_dvds = emax_o_ids * d->gds - emax_o_gdsat * dgdvd; double demax_dvbs = emax_o_ids * d->gmbf - emax_o_gdsat * dgdvb; double arga = emax * .5 * m->alpha; double argc = m->kappa * m->alpha; double argb = sqrt(arga * arga + argc * (d->vds - d->vdsat)); d_l = argb - arga; dl_dvd = argc / (argb + argb); double dl_demax = (arga / argb - 1.) * .5 * m->alpha; ddl_dvgs = dl_demax * demax_dvgs; ddl_dvds = dl_demax * demax_dvds - dl_dvd; ddl_dvbs = dl_demax * demax_dvbs; }else{ d_l = sqrt(m->kappa * (d->vds - d->vdsat) * m->alpha); dl_dvd = d_l * .5 / (d->vds - d->vdsat); ddl_dvgs = 0.; ddl_dvds = -dl_dvd; ddl_dvbs = 0.; } if (d_l > s->l_eff * .5) { /* punch through approximation */ d->punchthru = true; d_l = s->l_eff - s->l_eff*s->l_eff / (d_l*4.); double arga = (s->l_eff-d_l)*(s->l_eff-d_l) * 4./(s->l_eff*s->l_eff); ddl_dvgs *= arga; ddl_dvds *= arga; ddl_dvbs *= arga; dl_dvd *= arga; }else{ d->punchthru = false; } if (m->alpha != 0) { double lfact = 1. / (1. - d_l / s->l_eff); d->ids *= lfact; double diddl = d->ids / (s->l_eff - d_l); d->gmf = d->gmf * lfact + diddl * ddl_dvgs; gds0 = d->gds * lfact + diddl * ddl_dvds; d->gmbf = d->gmbf * lfact + diddl * ddl_dvbs; d->gmf += gds0 * dvdsat_dvgs; d->gmbf += gds0 * dvdsat_dvbs; d->gds = gds0 * dvdsat_dvds + diddl * dl_dvd; }else{ gds0 = 0; } trace2("", d_l, dl_dvd); trace3("", ddl_dvgs, ddl_dvds, ddl_dvbs); trace3("4", d->ids, gds0, d_l); }else{ d->punchthru = false; gds0 = 0; /* not saturated */ } trace4("4", d->ids, d->gmf, d->gds, d->gmbf); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* weak inversion -- subthreshold region */ if (d->subthreshold) { double wfact = exp(d->vgst / vtxn); d->ids *= wfact; double gms = d->gmf * wfact; double gmw = d->ids / vtxn; trace2("subth", gmw, gms); d->gmf = gmw; d->gmf += gds0 * dvdsat_dvgs * wfact; d->gds *= wfact; d->gds += (gms - gmw) * dvon_dvds; d->gmbf *= wfact; d->gmbf += (gms - gmw) * dvon_dvbs - gmw * d->vgst * dxn_dvbs / xn; trace4("5", d->ids, d->gmf, d->gds, d->gmbf); } if (d->reversed) { d->ids *= -1; d->gmr = d->gmf; d->gmbr = d->gmbf; d->gmf = d->gmbf = 0; }else{ d->gmr = d->gmbr = 0.; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos4.model000066400000000000000000000506301316501211100142230ustar00rootroot00000000000000/* $Id: d_mos4.model,v 26.92 2008/08/23 05:40:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * MOS BSIM1 model. * derived from Spice3f4,Copyright 1990 Regents of the University of California * 1985 Hong J. Park, Thomas L. Quarles * Recoded for Gnucap model compiler, Al Davis, 2000 */ h_headers { #include "d_mos_base.h" } cc_headers { } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS4 { level 4; public_keys { nmos4 polarity=pN; pmos4 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS_BASE; independent { override { double mjsw "" final_default=.33; double pb "" final_default=0.1 quiet_min=0.1; double pbsw "" final_default=pb quiet_min=0.1; double cjo "" default=0.0; int cmodel "CMODEL" print_test="cmodel!=1" calculate="((!cmodel)?1:cmodel)"; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { double dl_u "Channel length reduction" name=DL default=0.; double dw_u "Channel width reduction" name=DW default=0.; double tox_u "Gate oxide thickness" name=TOX default=0. quiet_min=1e-20; double vdd "Supply voltage to specify mus" name=VDD default=0.; double wdf "Default width of source drain diffusion (ignored)" name=WDF default=0.; double dell "Length reduction of source drain diff (ignored)" name=DELL default=0.; double temp "temperature (ignored)" name=TEMP default=300.15; double xpart "Flag for channel charge partitioning" name=XPART default=0.; } calculated_parameters { double dl "" calculate="dl_u*MICRON2METER"; double dw "" calculate="dw_u*MICRON2METER"; double tox "" calculate="tox_u*MICRON2METER"; double cox "" calculate="3.453e-11 /*E_OX*/ / tox"; } } size_dependent { raw_parameters { double phi "Strong inversion surface potential" name=PHI default=0. positive quiet_min=.1; double vfb "Flat band voltage" name=VFB default=0.; double k1 "Bulk effect coefficient 1" name=K1 default=0. positive; double k2 "Bulk effect coefficient 2" name=K2 default=0. positive; double eta "VDS dependence of threshold voltage" name=ETA default=0.; double etaB "VBS dependence of eta (x2e)" name=X2E default=0.; double etaD "VDS dependence of eta (x3e)" name=X3E default=0.; double mobZero "Zero field mobility at VDS=0 VGS=VTH (muz)" name=MUZ default=0.; double mobZeroB "VBS dependence of muz (x2mz)" name=X2MZ default=0.; double mobVdd "Mobility @ VDS=VDD VGS=VTH, chan len modulation" name=MUS default=0.; double mobVddB "VBS dependence of mus (x2ms)" name=X2MS default=0.; double mobVddD "VDS dependence of mus (x3ms)" name=X3MS default=0.; double ugs "VGS dependence of mobility (u0)" name=U0 default=0.; double ugsB "VBS dependence of u0 (x2u0)" name=X2U0 default=0.; double uds "VDS dependence of mobility, velocity saturation" name=U1 default=0.; double udsB "VBS dependence of u1 (x2u1)" name=X2U1 default=0.; double udsD "VDS dependence of u1 (x3u1)" name=X3U1 default=0.; double n0 "Subthreshold slope (n0)" name=N0 default=0.; double nB "VBS dependence of subthreshold slope (nb)" name=NB default=0.; double nD "VDS dependence of subthreshold slope (nd)" name=ND default=0.; } calculated_parameters { double betaZero "Beta at vds = 0 and vgs = Vth" calculate="mobZero * CoxWoverL"; double betaZeroB "Vbs dependence of BetaZero" calculate="mobZeroB * CoxWoverL"; double betaVdd "Beta at vds=Vdd and vgs=Vth" calculate="mobVdd * CoxWoverL"; double betaVddB "Vbs dependence of BVdd" calculate="mobVddB * CoxWoverL"; double betaVddD "Vds dependence of BVdd" calculate="mobVddD * CoxWoverL"; double vt0 "" calculate="vfb + phi + k1 * sqrt(phi) - k2 * phi"; } code_pre { l_eff -= m->dl; w_eff -= m->dw; double L = l_eff/MICRON2METER; double W = w_eff/MICRON2METER; double CoxWoverL = 1e-4 * m->cox * w_eff / l_eff; } override { double cgate "" calculate="m->cox * w_eff * l_eff"; } } /*-----------------------------------------------------------------------*/ tr_eval { trace3("", d->vds, d->vgs, d->vbs); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->reverse_if_needed(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace2("", m->dl, m->dw); trace3("", s->ugs, s->ugsB, d->vbs); double Ugs = s->ugs + s->ugsB * d->vbs; double dUgsdVbs; if(Ugs <= 0) { untested(); Ugs = 0; dUgsdVbs = 0.0; }else{ dUgsdVbs = s->ugsB; } trace2("", Ugs, dUgsdVbs); double Uds = s->uds + s->udsB * d->vbs + s->udsD * (d->vds - m->vdd); double dUdsdVbs; double dUdsdVds; if(Uds <= 0) { untested(); Uds = 0.0; dUdsdVbs = dUdsdVds = 0.0; }else{ double Leff = s->l_eff * 1e6; /* Leff in um */ Uds = Uds / Leff; dUdsdVbs = s->udsB / Leff; dUdsdVds = s->udsD / Leff; } trace3("", Uds, dUdsdVbs, dUdsdVds); double Vpb; if(d->vbs <= 0) { Vpb = s->phi - d->vbs; d->sbfwd = false; }else{ Vpb = s->phi; d->sbfwd = true; } double SqrtVpb = sqrt(Vpb); trace2("", Vpb, SqrtVpb); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* threshold voltage */ double dVthdVbs; double dVthdVds; { double Eta = s->eta + s->etaB * d->vbs + s->etaD * (d->vds - m->vdd); double dEtadVds; double dEtadVbs; if(Eta <= 0) { Eta = 0; dEtadVds = dEtadVbs = 0.0 ; }else if (Eta > 1) { untested(); Eta = 1; dEtadVds = dEtadVbs = 0; }else{ untested(); dEtadVds = s->etaD; dEtadVbs = s->etaB; } trace3("", Eta, dEtadVds, dEtadVbs); d->von = s->vfb + s->phi + s->k1 * SqrtVpb - s->k2 * Vpb - Eta * d->vds; dVthdVds = -Eta - dEtadVds * d->vds; dVthdVbs = s->k2 - 0.5 * s->k1 / SqrtVpb - dEtadVbs * d->vds; d->vgst = d->vgs - d->von; trace4("", d->von, dVthdVds, dVthdVbs, d->vgst); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double G = 1. - 1./(1.744+0.8364 * Vpb); double A = 1. + 0.5*G*s->k1/SqrtVpb; A = std::max(A, 1.0); /* Modified */ double Arg = std::max((1 + Ugs * d->vgst), 1.0); double dGdVbs = -0.8364 * (1-G) * (1-G); double dAdVbs = 0.25 * s->k1 / SqrtVpb *(2*dGdVbs + G/Vpb); trace3("", G, A, Arg); trace2("", dGdVbs, dAdVbs); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* ids and derivatives calculation */ if (d->vgst < 0) { d->cutoff = true; /* cutoff */ d->ids = 0; d->gmf = 0; d->gds = 0; d->gmbf = 0; d->vdsat = 0; trace4("cutoff", d->ids, d->gmf, d->gds, d->gmbf); }else{ d->cutoff = false; /* Quadratic Interpolation for Beta0 (Beta at d->vgs = 0, vds=Vds) */ double Beta0; double dBeta0dVds; double dBeta0dVbs; { trace2("", m->tox, m->cox*1e-4); trace3("", s->betaVdd, s->betaVddB, d->vbs); double BetaVdd = (s->betaVdd + s->betaVddB * d->vbs); double dBetaVdd_dVds = std::max(s->betaVddD, 0.0); /* Modified */ trace2("", BetaVdd, dBetaVdd_dVds); if(d->vds > m->vdd) { Beta0 = BetaVdd + dBetaVdd_dVds * (d->vds - m->vdd); dBeta0dVds = dBetaVdd_dVds; dBeta0dVbs = s->betaVddB; trace3("vds>vdd", Beta0, dBeta0dVds, dBeta0dVbs); }else{ double Beta_Vds_0 = (s->betaZero + s->betaZeroB * d->vbs); double VddSquare = m->vdd * m->vdd; double C1 = (-BetaVdd + Beta_Vds_0+dBetaVdd_dVds*m->vdd) / VddSquare; double C2 = 2 * (BetaVdd - Beta_Vds_0) / m->vdd - dBetaVdd_dVds; trace4("", Beta_Vds_0, VddSquare, C1, C2); double dBeta_Vds_0_dVbs = s->betaZeroB; double dBetaVdd_dVbs = s->betaVddB; double dC1dVbs = (dBeta_Vds_0_dVbs - dBetaVdd_dVbs) / VddSquare; double dC2dVbs = dC1dVbs * (-2) * m->vdd; trace4("", dBeta_Vds_0_dVbs, dBetaVdd_dVbs, dC1dVbs, dC2dVbs); Beta0 = (C1 * d->vds + C2) * d->vds + Beta_Vds_0; dBeta0dVds = 2*C1*d->vds + C2; dBeta0dVbs = dC1dVbs * d->vds * d->vds + dC2dVbs * d->vds + dBeta_Vds_0_dVbs; trace3("vdsvgst );*/ double Beta = Beta0 / Arg ; double dBetadVgs = -Beta * Ugs / Arg; double dBetadVds = dBeta0dVds / Arg - dBetadVgs * dVthdVds ; double dBetadVbs = dBeta0dVbs / Arg + Beta * Ugs * dVthdVbs / Arg - Beta * d->vgst * dUgsdVbs / Arg; trace4("", Beta, dBetadVgs, dBetadVds, dBetadVbs); /*d->vdsat = std::max(d->vgst / ( A + Uds * d->vgst ), 0.0);*/ double Vc = Uds * d->vgst / A; if(Vc < 0.0) { untested(); Vc=0.0; } double Term1 = sqrt(1 + 2 * Vc); double K = 0.5 * (1 + Vc + Term1); d->vdsat = std::max(d->vgst / (A * sqrt(K)) , 0.0); trace4("", Vc, Term1, K, d->vdsat); if(d->vds < d->vdsat) { /* Triode Region */ d->saturated = false; /*Argl1 = 1 + Uds * d->vds;*/ double Argl1 = std::max((1 + Uds * d->vds), 1.); double Argl2 = d->vgst - 0.5 * A * d->vds; trace2("", Argl1, Argl2); d->ids = Beta * Argl2 * d->vds / Argl1; d->gmf = (dBetadVgs * Argl2 * d->vds + Beta * d->vds) / Argl1; d->gds = (dBetadVds * Argl2 * d->vds + Beta * (d->vgst - d->vds * dVthdVds - A * d->vds) - d->ids * (d->vds * dUdsdVds + Uds)) / Argl1; d->gmbf = (dBetadVbs * Argl2 * d->vds + Beta * d->vds * (-dVthdVbs - 0.5 * d->vds * dAdVbs) - d->ids * d->vds * dUdsdVbs) / Argl1; trace4("triode", d->ids, d->gmf, d->gds, d->gmbf); }else{ /* Pinchoff (Saturation) Region */ d->saturated = true; double Args1 = 1. + 1. / Term1; double dVcdVgs = Uds / A; double dVcdVds = d->vgst * dUdsdVds / A - dVcdVgs * dVthdVds; double dVcdVbs = (d->vgst * dUdsdVbs - Uds * (dVthdVbs + d->vgst * dAdVbs / A )) / A; double dKdVc = 0.5 * Args1; double dKdVgs = dKdVc * dVcdVgs; double dKdVds = dKdVc * dVcdVds; double dKdVbs = dKdVc * dVcdVbs; double Args2 = d->vgst / A / K; double Args3 = Args2 * d->vgst; trace3("", Args1, Args2, Args3); trace3("", dVcdVgs, dVcdVds, dVcdVbs); trace4("", dKdVc, dKdVgs, dKdVds, dKdVbs); d->ids = 0.5 * Beta * Args3; d->gmf = 0.5 * Args3 * dBetadVgs + Beta * Args2 - d->ids * dKdVgs / K; d->gds = 0.5*Args3*dBetadVds - Beta*Args2*dVthdVds - d->ids*dKdVds/K; d->gmbf = 0.5 * dBetadVbs * Args3 - Beta * Args2 *dVthdVbs - d->ids * (dAdVbs / A + dKdVbs / K); trace4("sat", d->ids, d->gmf, d->gds, d->gmbf); } } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* SubthresholdComputation */ /* The following 'if' statement has been modified so that subthreshold * * current computation is always executed unless N0 >= 200. This should * * get rid of the Ids kink seen on Ids-Vgs plots at low Vds. * * Peter M. Lee * * 6/8/90 * * Old 'if' statement: (reversed) * * if( (N0 >= 200) || (d->vgst < Vcut ) || (d->vgst > (-0.5*Vcut))) */ //double Vcut = - 40. * s->n0 * t->vt ; if (s->n0 < 200) { double N = s->n0 + s->nB*d->vbs + s->nD*d->vds; /* subthreshold slope */ trace4("", s->n0, s->nB, s->nD, N); if (N < 0.5) { untested(); N = 0.5; } const double ref_temp = 300.15; // ignore real temp for spice compatibility const double vt0 = ref_temp * P_K_Q; const double Vtsquare = vt0 * vt0 ; const double nvt0 = N * vt0; double Warg1 = exp(-d->vds / vt0); double Wds = 1 - Warg1; double Wgs = exp( d->vgst / nvt0); double Warg2 = 6.04965 * Vtsquare * s->betaZero; double Ilimit = 4.5 * Vtsquare * s->betaZero; double Iexp = Warg2 * Wgs * Wds; d->ids += Ilimit * Iexp / (Ilimit + Iexp); double Temp1 = Ilimit / (Ilimit + Iexp); Temp1 = Temp1 * Temp1; double Temp3 = Ilimit / (Ilimit + Wgs * Warg2); Temp3 = Temp3 * Temp3 * Warg2 * Wgs; /* if ( Temp3 > Ilimit ) Temp3=Ilimit;*/ d->gmf += Temp1 * Iexp / nvt0; /* gds term has been modified to prevent blow up at Vds=0 */ d->gds += Temp3 * (Wds / nvt0 * (dVthdVds + d->vgst * s->nD / N) + Warg1 / vt0); d->gmbf -= Temp1 * Iexp * (dVthdVbs + d->vgst * s->nB / N) / nvt0; trace3("", vt0, Vtsquare, nvt0); trace4("", Warg1, Wds, Wgs, Warg2); trace4("", Ilimit, Iexp, Temp1, Temp3); trace4("sub", d->ids, d->gmf, d->gds, d->gmbf); }else{ untested(); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* Some Limiting of DC Parameters */ if(d->ids < 0.0) d->ids = 0.0; if(d->gmf < 0.0) d->gmf = 0.0; if(d->gds < 0.0) d->gds = 0.0; if(d->gmbf < 0.0) d->gmbf = 0.0; trace4("final", d->ids, d->gmf, d->gds, d->gmbf); trace3("", G, A, s->phi); trace1("", m->xpart); double Vth0 = s->vfb + s->phi + s->k1 * SqrtVpb; // almost same as d->von double Vgs_Vth = d->vgs - Vth0; // almost same as d->vgst trace2("", Vth0, Vgs_Vth); double Arg1 = A * d->vds; double Arg2 = Vgs_Vth - 0.5 * Arg1; double Arg3 = d->vds - Arg1; trace3("", Arg1, Arg2, Arg3); /*double*/ dVthdVbs = -0.5 * s->k1 / SqrtVpb; /*dbl*/ dAdVbs = 0.5 * s->k1 * (0.5*G/Vpb - 0.8364*(1-G)*(1-G)) / SqrtVpb; trace2("", dVthdVbs, dAdVbs); double Ent = std::max(Arg2,1.0e-8); double dEntdVds = -0.5 * A; double dEntdVbs = -dVthdVbs - 0.5 * d->vds * dAdVbs; trace3("", Ent, dEntdVds, dEntdVbs); double VdsPinchoff = std::max(Vgs_Vth / A, 0.0); double Vgb = d->vgs - d->vbs ; double Vgb_Vfb = Vgb - s->vfb; trace3("", VdsPinchoff, Vgb, Vgb_Vfb); if(Vgb_Vfb < 0) { /* Accumulation Region */ untested(); d->qgate = s->cgate * Vgb_Vfb; d->qbulk = -d->qgate; d->qdrn = 0. ; d->cggb = s->cgate; d->cgdb = 0.; d->cgsb = 0.; d->cbgb = -s->cgate; d->cbdb = 0.; d->cbsb = 0.; d->cdgb = 0.; d->cddb = 0.; d->cdsb = 0.; trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); trace4("acc", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else if (d->vgs < Vth0) { /* Subthreshold Region */ d->qgate = 0.5*s->cgate*s->k1*s->k1*(-1+sqrt(1+4*Vgb_Vfb/(s->k1*s->k1))); d->cggb = s->cgate / sqrt(1 + 4 * Vgb_Vfb / (s->k1 * s->k1)); d->cgdb = d->cgsb = 0.; d->qbulk = -d->qgate; d->cbgb = -d->cggb; d->cbdb = d->cbsb = 0.0; d->qdrn = 0.; d->cdgb = d->cddb = d->cdsb = 0.0; trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); trace4("sub", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else if (d->vds < VdsPinchoff) { /* triode region */ double EntSquare = Ent * Ent; trace1("tri", EntSquare); double Argl1 = 1.2e1 * EntSquare; double Argl2 = 1.0 - A; double Argl3 = Arg1 * d->vds; trace3("", Argl1, Argl2, Argl3); double Argl5; if (Ent > 1.0e-8) { Argl5 = Arg1 / Ent; }else{ untested(); Argl5 = 2.0; } double Argl7 = Argl5 / 1.2e1; double Argl8 = 6.0 * Ent; trace3("", Argl5, Argl7, Argl8); d->qgate = s->cgate * (d->vgs - s->vfb - s->phi - 0.5 * d->vds + d->vds * Argl7); d->cggb = s->cgate * (1.0 - Argl3 / Argl1); d->cgdb = s->cgate * (-0.5 + Arg1 / Argl8 - Argl3 * dEntdVds / Argl1); double cgbb = s->cgate * (d->vds*d->vds*dAdVbs*Ent-Argl3*dEntdVbs)/Argl1; d->cgsb = -(d->cggb + d->cgdb + cgbb); trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); d->qbulk = s->cgate * (-Vth0 + s->vfb + s->phi + 0.5*Arg3 - Arg3*Argl7); d->cbgb = s->cgate * Argl3 * Argl2 / Argl1; d->cbdb = s->cgate * Argl2 * (0.5 - Arg1/Argl8 + Argl3 * dEntdVds/Argl1); double cbbb = -s->cgate * (dVthdVbs + 0.5 * d->vds * dAdVbs +d->vds*d->vds*((1.0-2.0*A)*dAdVbs*Ent-Argl2*A*dEntdVbs)/Argl1); d->cbsb = -(d->cbgb + d->cbdb + cbbb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); if (m->xpart >= 1) { /*0/100 partitioning for drain/source chArges at saturation region*/ double Argl9 = 0.125 * Argl5 * Argl5; //t d->qdrn = -s->cgate * (0.5*Vgs_Vth - 0.75*Arg1 + 0.125*Arg1*Argl5); d->cdgb = -s->cgate * (0.5 - Argl9); d->cddb = s->cgate * (0.75*A - 0.25*A*Arg1/Ent + Argl9*dEntdVds); double cdbb = s->cgate * (0.5 * dVthdVbs + d->vds * dAdVbs * (0.75 - 0.25 * Argl5 ) + Argl9 * dEntdVbs); d->cdsb = -(d->cdgb + d->cddb + cdbb); trace2("", Argl9, cdbb); trace4("tri 0/100", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else{ /*40/60 partitioning for drain/source chArges at saturation region*/ double Vgs_VthSquare = Vgs_Vth*Vgs_Vth; trace2("", Vgs_Vth, Vgs_VthSquare); double Arg5 = Arg1*Arg1; double Vcom = Vgs_Vth*Vgs_Vth/6.0-1.25e-1*Arg1*Vgs_Vth+2.5e-2*Arg5; double Argl4 = Vcom/Ent/EntSquare; double Argl6; if (Ent > 1.0e-8) { Argl6 = Vcom / EntSquare; }else{ untested(); Argl6 = 4.0 / 1.5e1; } d->qdrn = -s->cgate * (0.5 * (Vgs_Vth-Arg1) + Arg1 * Argl6); d->cdgb = -s->cgate * (0.5 + Arg1*(4.0*Vgs_Vth-1.5*Arg1)/Argl1 - 2.0*Arg1*Argl4); d->cddb = s->cgate*(0.5*A+2.0*Arg1*dEntdVds*Argl4-A*(2.0*Vgs_VthSquare -3.0*Arg1*Vgs_Vth+0.9*Arg5)/Argl1); double cdbb =s->cgate*(0.5*dVthdVbs+0.5*d->vds*dAdVbs+2.0*Arg1*dEntdVbs *Argl4-d->vds*(2.0*Vgs_VthSquare*dAdVbs-4.0*A*Vgs_Vth*dVthdVbs-3.0 *Arg1*Vgs_Vth*dAdVbs+1.5*A*Arg1*dVthdVbs+0.9*Arg5*dAdVbs) /Argl1); d->cdsb = -(d->cdgb + d->cddb + cdbb); trace4("", Vcom, Argl4, Argl6, cdbb); trace4("lin 40/60", d->qdrn, d->cdgb, d->cddb, d->cdsb); } }else{ /* saturation region */ assert(d->vds >= VdsPinchoff); double Args1 = 1.0 / (3.0 * A); trace2("sat", s->cgate, Args1); d->qgate = s->cgate * (d->vgs - s->vfb - s->phi - Vgs_Vth * Args1); d->cggb = s->cgate * (1.0 - Args1); d->cgdb = 0.0; double cgbb = s->cgate * Args1 * (dVthdVbs + Vgs_Vth * dAdVbs / A); d->cgsb = -(d->cggb + d->cgdb + cgbb); trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); d->qbulk = s->cgate * (s->vfb + s->phi - Vth0 + (1.0-A)*Vgs_Vth*Args1); d->cbgb = s->cgate * (Args1 - 1.0 / 3.0); d->cbdb = 0.0; double cbbb = -s->cgate * ((2.0 / 3.0 + Args1) * dVthdVbs + Vgs_Vth * Args1 * dAdVbs / A); d->cbsb = -(d->cbgb + d->cbdb + cbbb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); if (m->xpart >= 1) { /*0/100 partitioning for drain/source chArges at saturation region*/ d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; trace4("sat 0/100", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else{ /*40/60 partitioning for drain/source chArges at saturation region*/ const double co4v15 = 4./15.; d->qdrn = -co4v15 * s->cgate * Vgs_Vth; d->cdgb = -co4v15 * s->cgate; d->cddb = 0.0; double cdbb = co4v15 * s->cgate * dVthdVbs; d->cdsb = -(d->cdgb + d->cddb + cdbb); trace4("sat 40/60", d->qdrn, d->cdgb, d->cddb, d->cdsb); } } if (d->reversed) { d->ids *= -1; d->gmr = d->gmf; d->gmbr = d->gmbf; d->gmf = d->gmbf = 0; }else{ d->gmr = d->gmbr = 0.; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos5.model000066400000000000000000000653711316501211100142340ustar00rootroot00000000000000/* $Id: d_mos5.model,v 26.92 2008/08/23 05:40:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Spice BSIM2 model * derived from Spice3f4,Copyright 1990 Regents of the University of California * 1988 Min-Chie Jeng, Hong J. Park, Thomas L. Quarles * Recoded for Gnucap model compiler, Al Davis, 2000 */ h_headers { #include "d_mos_base.h" } cc_headers { } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS5 { level 5; public_keys { nmos5 polarity=pN; pmos5 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS_BASE; independent { override { double mjsw "" final_default=.33; double pb "" final_default=0.1 quiet_min=0.1; double pbsw "" final_default=pb quiet_min=0.1; double cjo "" default=0.0; int cmodel "CMODEL" print_test="cmodel!=1" calculate="((!cmodel)?1:cmodel)"; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { double dl_u "Channel length reduction" name=DL default=0.; double dw_u "Channel width reduction" name=DW default=0.; double tox_u "Gate oxide thickness" name=TOX default=0. quiet_min=1e-20; double vdd "Max Vds" name=VDD default=0.; double vgg "Max Vgs" name=VGG default=0.; double vbb "Max Vbs" name=VBB default=0.; double wdf "Default width of source drain diffusion (ignored)" name=WDF default=0.; double dell "Length reduction of source drain diff (ignored)" name=DELL default=0.; double temp_c "temperature" name=TEMP default=27.; double xpart "Flag for channel charge partitioning" name=XPART default=0.; } calculated_parameters { double dl "" calculate="dl_u*MICRON2METER"; double dw "" calculate="dw_u*MICRON2METER"; double tox "" calculate="tox_u*MICRON2METER"; double cox "" calculate="3.453e-11 /*E_OX*/ / tox"; double vdd2 "" calculate="2 * vdd"; double vgg2 "" calculate="2 * vgg"; double vbb2 "" calculate="2 * vbb"; double Vtm "" calculate="8.625e-5 /*K/Q*/ * (temp_c + P_CELSIUS0 -.15)"; } } size_dependent { raw_parameters { double phi "Strong inversion surface potential" name=PHI default=0.; double vfb "flat band voltage at given L and W" name=VFB default=0.; double k1 "bulk effect coefficient 1" name=K1 default=0.; double k2 "bulk effect coefficient 2" name=K2 default=0.; double eta0 "drain induced barrier lowering" name=ETA0 default=0.; double etaB "Vbs dependence of Eta" name=ETAB default=0.; double mob0 "" name=MU0 default=0.; double mob0B "" name=MU0B default=0.; double mobs0 "" name=MUS0 default=0.; double mobsB "" name=MUSB default=0.; double mob20 "" name=MU20 default=0.; double mob2B "" name=MU2B default=0.; double mob2G "" name=MU2G default=0.; double mob30 "" name=MU30 default=0.; double mob3B "" name=MU3B default=0.; double mob3G "" name=MU3G default=0.; double mob40 "" name=MU40 default=0.; double mob4B "" name=MU4B default=0.; double mob4G "" name=MU4G default=0.; double ua0 "Linear Vgs dependence of Mobility" name=UA0 default=0.; double uaB "Vbs dependence of Ua" name=UAB default=0.; double ub0 "Quadratic Vgs dependence of Mobility" name=UB0 default=0.; double ubB "Vbs dependence of Ub" name=UBB default=0.; double u10 "Drift Velocity Saturation due to Vds" name=U10 default=0.; double u1B "Vbs dependence of U1" name=U1B default=0.; double u1D "Vds dependence of U1" name=U1D default=0.; double n0 "Subthreshold slope at Vds=0, Vbs=0" name=N0 default=0. positive; double nB "Vbs dependence of n" name=NB default=0.; double nD "Vds dependence of n" name=ND default=0.; double vof0 "Vth offset at Vds=0, Vbs=0" name=VOF0 default=0.; double vofB "Vbs dependence of Vof" name=VOFB default=0.; double vofD "Vds dependence of Vof" name=VOFD default=0.; double ai0 "Pre-factor in hot-electron effects" name=AI0 default=0.; double aiB "Vbs dependence of Ai" name=AIB default=0.; double bi0 "Exp-factor in hot-electron effects" name=BI0 default=0.; double biB "Vbs dependence of Bi" name=BIB default=0.; double vghigh "Upper bound of cubic spline function" name=VGHIGH default=0.; double vglow "Lower bound of cubic spline function" name=VGLOW default=0.; } calculated_parameters { double beta0 "Beta at Vds = 0 and Vgs = Vth" calculate="mob0 * CoxWoverL"; double beta0B "Vbs dependence of Beta0" calculate="mob0B * CoxWoverL"; double betas0 "Beta at Vds=Vdd and Vgs=Vth" calculate="mobs0 * CoxWoverL" quiet_min="1.01*beta0"; double betasB "Vbs dependence of Betas" calculate="mobsB * CoxWoverL"; double beta20 "Vds dependence of Beta in tanh term" calculate="mob20"; double beta2B "Vbs dependence of Beta2" calculate="mob2B"; double beta2G "Vgs dependence of Beta2" calculate="mob2G"; double beta30 "Vds dependence of Beta in linear term" calculate="mob30 * CoxWoverL"; double beta3B "Vbs dependence of Beta3" calculate="mob3B * CoxWoverL"; double beta3G "Vgs dependence of Beta3" calculate="mob3G * CoxWoverL"; double beta40 "Vds dependence of Beta in quadra term" calculate="mob40 * CoxWoverL"; double beta4B "Vbs dependence of Beta4" calculate="mob4B * CoxWoverL"; double beta4G "Vgs dependence of Beta4" calculate="mob4G * CoxWoverL"; double Phis3 "" calculate="sqrt(phi) * phi"; double One_Third_CoxWL "" calculate="cgate / 3.0"; double Two_Third_CoxWL "" calculate="2.0 * One_Third_CoxWL"; double Arg; } code_pre { l_eff -= m->dl; w_eff -= m->dw; cgate = m->cox * w_eff * l_eff; double L = l_eff/MICRON2METER; double W = w_eff/MICRON2METER; double CoxWoverL = 1e-4 * m->cox * w_eff / l_eff; } override { double cgate "" calculate="m->cox * w_eff * l_eff"; } code_post { double tmp = betas0 - beta0 - beta0B * m->vbb; if ((-betasB * m->vbb) > tmp) { untested(); betasB = -tmp / m->vbb; } Arg = betasB - beta0B - m->vdd * (beta3B - m->vdd * beta4B); } } /*-----------------------------------------------------------------------*/ tr_eval { /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace3("", d->vds, d->vgs, d->vbs); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->reverse_if_needed(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace2("", m->dl, m->dw); double Vbs = std::max(m->vbb2, d->vbs); double Vgs = std::min(m->vgg2, d->vgs); double Vds = std::min(m->vdd2, d->vds); trace3("", Vbs, Vgs, Vds); /* Threshold Voltage. */ double Phisb, dPhisb_dVb, T1s, dT1s_dVb; if (Vbs <= 0.0) { d->sbfwd = false; Phisb = s->phi - Vbs; dPhisb_dVb = -1.0; T1s = sqrt(Phisb); dT1s_dVb = -0.5 / T1s; trace4("-", Phisb, dPhisb_dVb, T1s, dT1s_dVb); }else{ d->sbfwd = true; double tmp = s->phi / (s->phi + Vbs); Phisb = s->phi * tmp; dPhisb_dVb = -tmp * tmp; T1s = s->Phis3 / (s->phi + 0.5 * Vbs); dT1s_dVb = -0.5 * T1s * T1s / s->Phis3; trace4("+", Phisb, dPhisb_dVb, T1s, dT1s_dVb); } double Eta = s->eta0 + s->etaB * Vbs; double Ua = s->ua0 + s->uaB * Vbs; double Ub = s->ub0 + s->ubB * Vbs; double U1s = s->u10 + s->u1B * Vbs; trace4("", Eta, Ua, Ub, U1s); d->von = s->vfb + s->phi + s->k1*T1s - s->k2*Phisb - Eta*Vds; double dVth_dVd = -Eta; double dVth_dVb = s->k1 * dT1s_dVb + s->k2 - s->etaB * Vds; d->vgst = Vgs - d->von; trace4("", d->von, dVth_dVd, dVth_dVb, d->vgst); double Aa, dAa_dVb, Inv_Aa; { double tmp = 1.0 / (1.744 + 0.8364 * Phisb); double Gg = 1.0 - tmp; double dGg_dVb = 0.8364 * tmp * tmp * dPhisb_dVb; double T0 = Gg / T1s; trace4("", tmp, Gg, dGg_dVb, T0); double tmp1 = 0.5 * T0 * s->k1; Aa = 1.0 + tmp1; dAa_dVb = (Aa - 1.0) * (dGg_dVb / Gg - dT1s_dVb / T1s); Inv_Aa = 1.0 / Aa; trace4("", tmp1, Aa, dAa_dVb, Inv_Aa); } trace3("", s->vghigh, s->vglow, d->vgst); double Exp0, Exp1, n, Vgeff, dVgeff_dVg, dVgeff_dVd, dVgeff_dVb; if ((d->vgst >= s->vghigh) || (s->n0 == 0.0)) { Exp0 = NOT_VALID; Exp1 = NOT_VALID; n = NOT_VALID; Vgeff = d->vgst; dVgeff_dVg = 1.0; dVgeff_dVd = -dVth_dVd; dVgeff_dVb = -dVth_dVb; trace0("vgst>vghigh"); }else{ double Vof = s->vof0 + s->vofB * Vbs + s->vofD * Vds; n = s->n0 + s->nB / T1s + s->nD * Vds; double tmp = 0.5 / (n * m->Vtm); trace3("", Vof, n, tmp); double ExpArg1 = -Vds / m->Vtm; ExpArg1 = std::max(ExpArg1, -30.0); Exp1 = exp(ExpArg1); double tmp1 = 1.0 - Exp1; tmp1 = std::max(tmp1, 1.0e-18); double tmp2 = 2.0 * Aa * tmp1; trace4("", ExpArg1, Exp1, tmp1, tmp2); // exports Exp0, Vgeff, dVgeff_dVg, dVgeff_dVd, dVgeff_dVb if (d->vgst <= s->vglow) { double ExpArg = d->vgst * tmp; ExpArg = std::max(ExpArg, -30.0); Exp0 = exp(0.5 * Vof + ExpArg); Vgeff = sqrt(tmp2) * m->Vtm * Exp0; double T0 = n * m->Vtm; dVgeff_dVg = Vgeff * tmp; dVgeff_dVd = dVgeff_dVg * (n / tmp1 * Exp1 - dVth_dVd - d->vgst * s->nD / n + T0 * s->vofD); dVgeff_dVb = dVgeff_dVg * (s->vofB * T0 - dVth_dVb + s->nB * d->vgst / (n * T1s * T1s) * dT1s_dVb + T0 * Inv_Aa * dAa_dVb); trace0("vgstvglow * tmp; ExpArg = std::max(ExpArg, -30.0); Exp0 = exp(0.5 * Vof + ExpArg); Vgeff = sqrt(2.0 * Aa * (1.0 - Exp1)) * m->Vtm * Exp0; double Con1 = s->vghigh; double Con3 = Vgeff; double Con4 = Con3 * tmp; double SqrVghigh = s->vghigh * s->vghigh; double SqrVglow = s->vglow * s->vglow; double CubVghigh = s->vghigh * SqrVghigh; double CubVglow = s->vglow * SqrVglow; double T0 = 2.0 * s->vghigh; double T1 = 2.0 * s->vglow; double T2 = 3.0 * SqrVghigh; double T3 = 3.0 * SqrVglow; double T4 = s->vghigh - s->vglow; double T5 = SqrVghigh - SqrVglow; double T6 = CubVghigh - CubVglow; double T7 = Con1 - Con3; double delta = (T1-T0) * T6 + (T2-T3) * T5 + (T0*T3 - T1*T2) * T4; delta = 1.0 / delta; double Coeffb = (T1 - Con4 * T0) * T6 + (Con4 * T2 - T3) * T5 + (T0 * T3 - T1 * T2) * T7; double Coeffc = (Con4-1.0) * T6 + (T2-T3) * T7 + (T3 - Con4*T2) * T4; double Coeffd = (T1-T0) * T7 + (1.0-Con4) * T5 + (Con4*T0 - T1) * T4; double Coeffa = SqrVghigh * (Coeffc + Coeffd * T0); Vgeff = (Coeffa + d->vgst * (Coeffb + d->vgst*(Coeffc+d->vgst*Coeffd))) *delta; dVgeff_dVg = (Coeffb + d->vgst*(2.0*Coeffc+3.0*d->vgst*Coeffd)) *delta; T7 = Con3 * tmp; double T8 = dT1s_dVb * s->nB / (T1s * T1s * n); double T9 = n * m->Vtm; double dCon3_dVd = T7*(n*Exp1/tmp1 -s->vglow*s->nD/n + T9*s->vofD); double dCon3_dVb = T7*(T9*Inv_Aa*dAa_dVb + s->vglow*T8 + T9*s->vofB); double dCon4_dVd = tmp * dCon3_dVd - T7 * s->nD / n; double dCon4_dVb = tmp * dCon3_dVb + T7 * T8; double dCoeffb_dVd = dCon4_dVd*(T2*T5-T0*T6) + dCon3_dVd*(T1*T2-T0*T3); double dCoeffc_dVd = dCon4_dVd * (T6 - T2*T4) + dCon3_dVd * (T3 - T2); double dCoeffd_dVd = dCon4_dVd * (T0*T4 - T5) + dCon3_dVd * (T0 - T1); double dCoeffa_dVd = SqrVghigh * (dCoeffc_dVd + dCoeffd_dVd * T0); dVgeff_dVd = -dVgeff_dVg * dVth_dVd + (dCoeffa_dVd + d->vgst * (dCoeffb_dVd + d->vgst * (dCoeffc_dVd + d->vgst * dCoeffd_dVd))) * delta; double dCoeffb_dVb = dCon4_dVb*(T2*T5-T0*T6) + dCon3_dVb*(T1*T2-T0*T3); double dCoeffc_dVb = dCon4_dVb * (T6 - T2*T4) + dCon3_dVb * (T3 - T2); double dCoeffd_dVb = dCon4_dVb * (T0*T4 - T5) + dCon3_dVb * (T0 - T1); double dCoeffa_dVb = SqrVghigh * (dCoeffc_dVb + dCoeffd_dVb * T0); dVgeff_dVb = -dVgeff_dVg * dVth_dVb + (dCoeffa_dVb + d->vgst * (dCoeffb_dVb + d->vgst * (dCoeffc_dVb + d->vgst * dCoeffd_dVb))) * delta; trace0("else"); } } trace3("", Exp0, Exp1, n); trace4("", Vgeff, dVgeff_dVg, dVgeff_dVd, dVgeff_dVb); double dVdsat_dVd, dVdsat_dVg, dVdsat_dVb; if (Vgeff > 0.0) { // normal operation d->cutoff = false; double Uvert = 1.0 + Vgeff * (Ua + Vgeff * Ub); Uvert = std::max(Uvert, 0.2); double Inv_Uvert = 1.0 / Uvert; double dUvert_dVg, dUvert_dVd, dUvert_dVb; { double T8 = Ua + 2.0 * Ub * Vgeff; dUvert_dVg = T8 * dVgeff_dVg; dUvert_dVd = T8 * dVgeff_dVd; dUvert_dVb = T8 * dVgeff_dVb + Vgeff * (s->uaB + Vgeff * s->ubB); trace2("", T8, Uvert); trace3("", dUvert_dVg, dUvert_dVd, dUvert_dVb); } double Vc, dVc_dVg, dVc_dVd, dVc_dVb; { double T8 = U1s * Inv_Aa * Inv_Uvert; Vc = T8 * Vgeff; double T9 = Vc * Inv_Uvert; dVc_dVg = T8 * dVgeff_dVg - T9 * dUvert_dVg; dVc_dVd = T8 * dVgeff_dVd - T9 * dUvert_dVd; dVc_dVb = T8 * dVgeff_dVb + s->u1B * Vgeff * Inv_Aa * Inv_Uvert - Vc * Inv_Aa * dAa_dVb - T9 * dUvert_dVb; trace3("", T8, T9, Vc); trace3("", dVc_dVg, dVc_dVd, dVc_dVb); } double Kk, dKk_dVc; { double tmp2 = sqrt(1.0 + 2.0 * Vc); Kk = 0.5 * (1.0 + Vc + tmp2); dKk_dVc = 0.5 + 0.5 / tmp2; trace3("", tmp2, Kk, dKk_dVc); } { double T8 = Inv_Aa / sqrt(Kk); d->vdsat = std::max(Vgeff * T8, 1.0e-18); double T9 = 0.5 * d->vdsat * dKk_dVc / Kk; dVdsat_dVd = T8 * dVgeff_dVd - T9 * dVc_dVd; dVdsat_dVg = T8 * dVgeff_dVg - T9 * dVc_dVg; dVdsat_dVb = T8 * dVgeff_dVb - T9 * dVc_dVb - d->vdsat*Inv_Aa*dAa_dVb; trace3("", T8, T9, d->vdsat); trace3("", dVdsat_dVd, dVdsat_dVg, dVdsat_dVb); } double Beta, dBeta_dVd, dBeta_dVg, dBeta_dVb; { double Beta0 = s->beta0 + s->beta0B * Vbs; double Betas = s->betas0 + s->betasB * Vbs; double Beta2 = s->beta20 + s->beta2B * Vbs + s->beta2G * Vgs; double Beta3 = s->beta30 + s->beta3B * Vbs + s->beta3G * Vgs; double Beta4 = s->beta40 + s->beta4B * Vbs + s->beta4G * Vgs; double Beta1 = Betas - (Beta0 + m->vdd * (Beta3 - m->vdd * Beta4)); trace4("", Beta0, s->beta0, s->beta0B, Vbs); trace4("", Betas, s->betas0, s->betasB, Vgs); trace4("", Beta2, s->beta20, s->beta2B, s->beta2G); trace4("", Beta3, s->beta30, s->beta3B, s->beta3G); trace4("", Beta4, s->beta40, s->beta4B, s->beta4G); trace2("", Beta1, m->vdd); double T0 = Vds * Beta2 / d->vdsat; T0 = std::min(T0, 30.0); double T1 = exp(T0); double T2 = T1 * T1; double T3 = T2 + 1.0; trace4("", T0, T1, T2, T3); double tanh = (T2 - 1.0) / T3; double Sqrsech = 4.0 * T2 / (T3 * T3); trace2("", tanh, Sqrsech); Beta = Beta0 + Beta1 * tanh + Vds * (Beta3 - Beta4 * Vds); double T4 = Beta1 * Sqrsech / d->vdsat; double T5 = m->vdd * tanh; dBeta_dVd = Beta3 - 2.0*Beta4*Vds + T4*(Beta2-T0*dVdsat_dVd); dBeta_dVg = T4 * (s->beta2G * Vds - T0 * dVdsat_dVg) + s->beta3G * (Vds - T5) - s->beta4G * (Vds * Vds - m->vdd * T5); double dBeta1_dVb = s->Arg; dBeta_dVb = s->beta0B + dBeta1_dVb * tanh + Vds * (s->beta3B - Vds * s->beta4B) + T4 * (s->beta2B * Vds - T0 * dVdsat_dVb); trace3("", T4, T5, dBeta1_dVb); trace4("", Beta, dBeta_dVd, dBeta_dVg, dBeta_dVb); } if (d->vgst > s->vglow) { // not subthreshold d->subthreshold = false; if (Vds <= d->vdsat) { // triode region d->saturated = false; double T3 = Vds / d->vdsat; double T4 = T3 - 1.0; double T2 = 1.0 - s->u1D * T4 * T4; double U1 = U1s * T2; double Utot = Uvert + U1 * Vds; Utot = std::max(Utot, 0.5); double Inv_Utot = 1.0 / Utot; double T5 = 2.0 * U1s * s->u1D * T4 / d->vdsat; double dU1_dVd = T5 * (T3 * dVdsat_dVd - 1.0); double dU1_dVg = T5 * T3 * dVdsat_dVg; double dU1_dVb = T5 * T3 * dVdsat_dVb + s->u1B * T2; double dUtot_dVd = dUvert_dVd + U1 + Vds * dU1_dVd; double dUtot_dVg = dUvert_dVg + Vds * dU1_dVg; double dUtot_dVb = dUvert_dVb + Vds * dU1_dVb; double tmp1 = (Vgeff - 0.5 * Aa * Vds); double tmp3 = tmp1 * Vds; double Betaeff = Beta * Inv_Utot; d->ids = Betaeff * tmp3; double T6 = d->ids / Betaeff * Inv_Utot; d->gds = T6 * (dBeta_dVd - Betaeff * dUtot_dVd) + Betaeff * (tmp1 + (dVgeff_dVd - 0.5 * Aa) * Vds); d->gmf = T6 * (dBeta_dVg - Betaeff * dUtot_dVg) + Betaeff * Vds * dVgeff_dVg; d->gmbf = T6 * (dBeta_dVb - Betaeff * dUtot_dVb) + Betaeff * Vds * (dVgeff_dVb - 0.5 * Vds * dAa_dVb); }else{ // Saturation d->saturated = true; double Inv_Kk = 1.0 / Kk; double tmp1 = Vgeff * Inv_Aa * Inv_Kk; double tmp3 = 0.5 * Vgeff * tmp1; double Betaeff = Beta * Inv_Uvert; d->ids = Betaeff * tmp3; double T0 = d->ids / Betaeff * Inv_Uvert; double T1 = Betaeff * Vgeff * Inv_Aa * Inv_Kk; double T2 = d->ids * Inv_Kk * dKk_dVc; if (s->ai0 != 0.0) { double Ai = s->ai0 + s->aiB * Vbs; double Bi = s->bi0 + s->biB * Vbs; double T5 = Bi / (Vds - d->vdsat); T5 = std::min(T5, 30.0); double T6 = exp(-T5); double FR = 1.0 + Ai * T6; double T7 = T5 / (Vds - d->vdsat); double T8 = (1.0 - FR) * T7; double dFR_dVd = T8 * (dVdsat_dVd - 1.0); double dFR_dVg = T8 * dVdsat_dVg; double dFR_dVb = T8 * dVdsat_dVb + T6 * (s->aiB - Ai * s->biB / (Vds - d->vdsat)); d->gds = (T0 * (dBeta_dVd - Betaeff * dUvert_dVd) + T1 * dVgeff_dVd - T2 * dVc_dVd) * FR + d->ids * dFR_dVd; d->gmf = (T0 * (dBeta_dVg - Betaeff * dUvert_dVg) + T1 * dVgeff_dVg - T2 * dVc_dVg) * FR + d->ids * dFR_dVg; d->gmbf = (T0 * (dBeta_dVb - Betaeff * dUvert_dVb) + T1 * dVgeff_dVb - T2 * dVc_dVb - d->ids * Inv_Aa * dAa_dVb) * FR + d->ids * dFR_dVb; d->ids *= FR; }else{ d->gds = T0 * (dBeta_dVd - Betaeff * dUvert_dVd) + T1 * dVgeff_dVd - T2 * dVc_dVd; d->gmf = T0 * (dBeta_dVg - Betaeff * dUvert_dVg) + T1 * dVgeff_dVg - T2 * dVc_dVg; d->gmbf = T0 * (dBeta_dVb - Betaeff * dUvert_dVb) + T1 * dVgeff_dVb - T2 * dVc_dVb - d->ids * Inv_Aa * dAa_dVb; } } }else{ // subthreshold d->subthreshold = true; assert(Exp0 != NOT_VALID); double T0 = Exp0 * Exp0; assert(Exp1 != NOT_VALID); double T1 = Exp1; trace4("sub", Exp0, Exp1, T0, T1); trace2("", n, m->Vtm); d->ids = Beta * m->Vtm * m->Vtm * T0 * (1.0 - T1); double T2 = d->ids / Beta; double T4 = n * m->Vtm; double T3 = d->ids / T4; trace4("", d->ids, T2, T4, T3); double FR, dFR_dVd, dFR_dVg, dFR_dVb; if ((Vds > d->vdsat) && s->ai0 != 0.0) { d->saturated = true; double Ai = s->ai0 + s->aiB * Vbs; double Bi = s->bi0 + s->biB * Vbs; double T5 = Bi / (Vds - d->vdsat); trace3("", Ai, Bi, T5); T5 = std::min(T5, 30.0); double T6 = exp(-T5); FR = 1.0 + Ai * T6; double T7 = T5 / (Vds - d->vdsat); double T8 = (1.0 - FR) * T7; trace4("", T5, T6, T7, T8); dFR_dVd = T8 * (dVdsat_dVd - 1.0); dFR_dVg = T8 * dVdsat_dVg; dFR_dVb = T8 * dVdsat_dVb + T6 * (s->aiB-Ai*s->biB/(Vds-d->vdsat)); trace4("ai0!=0", FR, dFR_dVd, dFR_dVg, dFR_dVb); }else{ d->saturated = false; FR = 1.0; dFR_dVd = 0.0; dFR_dVg = 0.0; dFR_dVb = 0.0; trace4("ai0==0", FR, dFR_dVd, dFR_dVg, dFR_dVb); } d->gds = (T2 * dBeta_dVd + T3 * (s->vofD * T4 - dVth_dVd - s->nD * d->vgst / n) + Beta * m->Vtm * T0 * T1) * FR + d->ids * dFR_dVd; d->gmf = (T2 * dBeta_dVg + T3) * FR + d->ids * dFR_dVg; d->gmbf = (T2 * dBeta_dVb + T3 * (s->vofB * T4 - dVth_dVb + s->nB * d->vgst / (n * T1s * T1s) * dT1s_dVb)) * FR + d->ids*dFR_dVb; d->ids *= FR; } }else{ // cutoff??? d->cutoff = true; // reachable only if vghigh and vgst both negative d->vdsat = 0.0; dVdsat_dVd = dVdsat_dVg = dVdsat_dVb = 0.0; d->ids = 0.0; d->gmf = 0.0; d->gds = 0.0; d->gmbf = 0.0; } trace4("", d->vdsat, dVdsat_dVd, dVdsat_dVg, dVdsat_dVb); trace4("", d->ids, d->gmf, d->gds, d->gmbf); /* Some Limiting of DC Parameters */ d->gds = std::max(d->gds, 1.0e-20); d->ids = std::max(d->ids, 1.0e-50); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double Vbseff, dVbseff_dVb; if (Vbs < 0.0) { Vbseff = Vbs; dVbseff_dVb = 1.0; }else{ Vbseff = s->phi - Phisb; dVbseff_dVb = -dPhisb_dVb; } trace3("", Vbs, Vbseff, dVbseff_dVb); double Arg1 = Vgs - Vbseff - s->vfb; double Arg2 = Arg1 - d->vgst; trace2("", Arg1, Arg2); double Qbulk = s->One_Third_CoxWL * Arg2; double dQbulk_dVb = s->One_Third_CoxWL * (dVth_dVb - dVbseff_dVb); double dQbulk_dVd = s->One_Third_CoxWL * dVth_dVd; trace3("", Qbulk, dQbulk_dVb, dQbulk_dVd); if (Arg1 <= 0.0) { // accumulation region d->qgate = s->cgate * Arg1; d->qbulk = -(d->qgate); d->qdrn = 0.0; d->cggb = s->cgate; d->cgdb = 0.0; d->cgsb = -d->cggb * (1.0 - dVbseff_dVb); d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; d->cbgb = -s->cgate; d->cbdb = 0.0; d->cbsb = -d->cgsb; trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); trace4("acc", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else if (d->vgst <= 0.0) { // subthreshold double T2 = Arg1 / Arg2; double T3 = T2 * T2 * (s->cgate - s->Two_Third_CoxWL * T2); d->qgate = s->cgate * Arg1 * (1.0 - T2 * (1.0 - T2 / 3.0)); d->qbulk = -(d->qgate); d->qdrn = 0.0; d->cggb = s->cgate * (1.0 - T2 * (2.0 - T2)); d->cgdb = T3 * dVth_dVd; double tmp = T3 * dVth_dVb - (d->cggb + T3) * dVbseff_dVb; d->cgsb = -(d->cggb + d->cgdb + tmp); d->cbgb = -d->cggb; d->cbdb = -d->cgdb; d->cbsb = -d->cgsb; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; trace3("", T2, T3, tmp); trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); trace4("sub", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else{ double Vdsat; // changes dVdsat_dVd, dVdsat_dVg, dVdsat_dVb; if (d->vgst < s->vghigh) { double Uvert = 1.0 + d->vgst * (Ua + d->vgst * Ub); Uvert = std::max(Uvert, 0.2); double Inv_Uvert = 1.0 / Uvert; double dUvert_dVg = Ua + 2.0 * Ub * d->vgst; double dUvert_dVd = -dUvert_dVg * dVth_dVd; double dUvert_dVb = -dUvert_dVg * dVth_dVb + d->vgst * (s->uaB + d->vgst * s->ubB); trace2("", Uvert, Inv_Uvert); trace3("", dUvert_dVg, dUvert_dVd, dUvert_dVb); double T8 = U1s * Inv_Aa * Inv_Uvert; double Vc = T8 * d->vgst; double T9 = Vc * Inv_Uvert; double dVc_dVg = T8 - T9 * dUvert_dVg; double dVc_dVd = -T8 * dVth_dVd - T9 * dUvert_dVd; double dVc_dVb = -T8 * dVth_dVb + s->u1B * d->vgst * Inv_Aa * Inv_Uvert - Vc * Inv_Aa * dAa_dVb - T9 * dUvert_dVb; trace3("", T8, T9, Vc); trace3("", dVc_dVg, dVc_dVd, dVc_dVb); double tmp2 = sqrt(1.0 + 2.0 * Vc); double Kk = 0.5 * (1.0 + Vc + tmp2); double dKk_dVc = 0.5 + 0.5 / tmp2; trace3("", tmp2, Kk, dKk_dVc); T8 = Inv_Aa / sqrt(Kk); Vdsat = d->vgst * T8; T9 = 0.5 * Vdsat * dKk_dVc / Kk; trace2("", T8, T9); dVdsat_dVd = -T8 * dVth_dVd - T9 * dVc_dVd; dVdsat_dVg = T8 - T9 * dVc_dVg; dVdsat_dVb = -T8*dVth_dVb - T9*dVc_dVb - Vdsat*Inv_Aa*dAa_dVb; trace2("new", d->vdsat, Vdsat); trace3("", dVdsat_dVd, dVdsat_dVg, dVdsat_dVb); }else{ Vdsat = d->vdsat; trace2("keep", d->vdsat, Vdsat); trace3("", dVdsat_dVd, dVdsat_dVg, dVdsat_dVb); // keep dVdsat_dVd, dVdsat_dVg, dVdsat_dVb; } if (Vds >= Vdsat) { /* saturation region */ d->cggb = s->Two_Third_CoxWL; d->cgdb = -d->cggb * dVth_dVd + dQbulk_dVd; double tmp = -d->cggb * dVth_dVb + dQbulk_dVb; d->cgsb = -(d->cggb + d->cgdb + tmp); trace1("", tmp); d->cbgb = 0.0; d->cbdb = -dQbulk_dVd; d->cbsb = dQbulk_dVd + dQbulk_dVb; d->cdgb = -0.4 * d->cggb; d->cddb = -d->cdgb * dVth_dVd; tmp = -d->cdgb * dVth_dVb; d->cdsb = -(d->cdgb + d->cddb + tmp); trace1("", tmp); d->qbulk = -Qbulk; d->qgate = s->Two_Third_CoxWL * d->vgst + Qbulk; d->qdrn = d->cdgb * d->vgst; trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); trace4("sat", d->qdrn, d->cdgb, d->cddb, d->cdsb); }else{ /* linear region */ double T7 = Vds / Vdsat; double T8 = d->vgst / Vdsat; double T6 = T7 * T8; double T9 = 1.0 - T7; double Vgdt = d->vgst * T9; double T0 = d->vgst / (d->vgst + Vgdt); double T1 = Vgdt / (d->vgst + Vgdt); double T5 = T0 * T1; double T2 = 1.0 - T1 + T5; double T3 = 1.0 - T0 + T5; trace4("", T7, T8, T6, T9); trace2("", Vgdt, T0); trace4("", T1, T5, T2, T3); double dVgdt_dVg = T9 + T6 * dVdsat_dVg; double dVgdt_dVd = T6 * dVdsat_dVd - T8 -T9 * dVth_dVd; double dVgdt_dVb = T6 * dVdsat_dVb -T9 * dVth_dVb; trace3("", dVgdt_dVg, dVgdt_dVd, dVgdt_dVb); d->qgate = s->Two_Third_CoxWL * (d->vgst + Vgdt - Vgdt * T0) + Qbulk; d->qbulk = -Qbulk; d->qdrn = -s->One_Third_CoxWL * (0.2 * Vgdt + 0.8 * d->vgst + Vgdt * T1 + 0.2 * T5 * (Vgdt - d->vgst)); d->cggb = s->Two_Third_CoxWL * (T2 + T3 * dVgdt_dVg); d->cgdb = s->Two_Third_CoxWL * (T3*dVgdt_dVd-T2*dVth_dVd) + dQbulk_dVd; double tmp = dQbulk_dVb +s->Two_Third_CoxWL*(T3*dVgdt_dVb-T2*dVth_dVb); d->cgsb = -(d->cggb + d->cgdb + tmp); trace1("", tmp); T2 = 0.8 - 0.4 * T1 * (2.0 * T1 + T0 + T0 * (T1 - T0)); T3 = 0.2 + T1 + T0 * (1.0 - 0.4 * T0 * (T1 + 3.0 * T0)); d->cdgb = -s->One_Third_CoxWL * (T2 + T3 * dVgdt_dVg); d->cddb = s->One_Third_CoxWL * (T2 * dVth_dVd - T3 * dVgdt_dVd); tmp = s->One_Third_CoxWL * (T2 * dVth_dVb - T3 * dVgdt_dVb); d->cdsb = -(d->cdgb + tmp + d->cddb); trace3("", T2, T3, tmp); d->cbgb = 0.0; d->cbdb = -dQbulk_dVd; d->cbsb = dQbulk_dVd + dQbulk_dVb; trace4("", d->qgate, d->cggb, d->cgdb, d->cgsb); trace4("", d->qbulk, d->cbgb, d->cbdb, d->cbsb); trace4("lin", d->qdrn, d->cdgb, d->cddb, d->cdsb); } } if (d->reversed) { d->ids *= -1; d->gmr = d->gmf; d->gmbr = d->gmbf; d->gmf = d->gmbf = 0; }else{ d->gmr = d->gmbr = 0.; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos6.model000066400000000000000000000156351316501211100142330ustar00rootroot00000000000000/* $Id: d_mos6.model,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * mos model equations: spice level 6 equivalent */ h_headers { #include "d_mos123.h" } cc_headers { #include "l_denoise.h" } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS6 { level 6; public_keys { nmos6 polarity=pN; pmos6 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS123; independent { override { double lambda0 "" name=LAMBDA; double mjsw "" default=.5; double cox "" final_default=0.; double vto "" final_default=0.; double gamma "" final_default=0.; double phi "" final_default=.6; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { double kv "Saturation voltage factor" name=KV default=2.0; double nv "Saturation voltage coeff." name=NV default=0.5; double kc "Saturation current factor" name=KC default=NA final_default=5e-5 print_test="!calc_kc"; double nc "Saturation current coeff." name=NC default=1.0; double nvth "Threshold voltage coeff." name=NVTH default=0.5; double ps "Sat. current modification par." name=PS default=0.0; double gamma1 "Bulk threshold parameter 1" name=GAMMA1 default=0.0; double sigma "Static feedback effect par." name=SIGMA default=0.0; double lambda0 "Channel length modulation param" name=LAMBDA0 default=0.0; double lambda1 "Channel length modulation param. 1" name=LAMBDA1 default=0.0; } calculated_parameters { bool calc_kc "" default=false; } code_pre { if (tox != NA) { cox = P_EPS_OX / tox; if (kc == NA) { kc = .5 * uo * cox; calc_kc = true; } if (nsub != NA) { if (phi == NA) { phi = (2. * P_K_Q) * tnom_k * log(nsub/NI); if (phi < .1) { untested(); error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": calculated phi too small, using .1\n"); phi = .1; } calc_phi = true; } if (gamma == NA) { gamma = sqrt(2. * P_EPS_SI * P_Q * nsub) / cox; calc_gamma = true; } if (vto == NA) { double phi_ms = (tpg == gtMETAL) ? polarity * (-.05 - (egap + polarity * phi) / 2.) : -(tpg * egap + phi) / 2.; double vfb = phi_ms - polarity * P_Q * nss / cox; vto = vfb + phi + gamma * sqrt(phi); calc_vto = true; } } } } } temperature_dependent { calculated_parameters { double phi "" calculate="m->phi*tempratio + (-2*vt*(1.5*log(tempratio)+P_Q*(arg)))"; double beta "" calculate="(m->kc / tempratio4) * s->w_eff / s->l_eff"; double vbi "" calculate="(fixzero( (m->vto - m->gamma * sqrt(m->phi) +.5*(m->egap-egap) + m->polarity* .5 * (phi-m->phi)), m->phi))"; } code_pre { double temp = d->_sim->_temp_c + P_CELSIUS0; double tempratio = temp / m->tnom_k; double tempratio4 = tempratio * sqrt(tempratio); double kt = temp * P_K; double vt = temp * P_K_Q; double egap = 1.16 - (7.02e-4*temp*temp) / (temp+1108.); double arg = (m->egap*tempratio - egap) / (2*kt); } } /*-----------------------------------------------------------------------*/ tr_eval { /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace0(d->long_label().c_str()); trace3("", d->vds, d->vgs, d->vbs); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->reverse_if_needed(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ double sarg; if (d->vbs <= 0.) { d->sbfwd = false; sarg = sqrt(t->phi - d->vbs); }else{ d->sbfwd = true; sarg = sqrt(t->phi); sarg = sarg - d->vbs / (sarg+sarg); if (sarg < 0.) { untested(); sarg = 0.; }else{ untested(); } } trace3("", t->phi, d->vbs, sarg); assert(sarg >= 0.); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ trace4("", d->vds, t->vbi, m->gamma, m->gamma1); d->von = t->vbi + m->gamma * sarg - m->gamma1 * d->vbs; // - m->sigma * d->vds; // what is this????? d->vgst = d->vgs - d->von; trace3("", d->vds, d->von, d->vgst); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ d->cutoff = (d->vgst <= 0.); if (d->cutoff) { d->vdsat = 0.; d->ids = d->gmf = d->gds = d->gmbf = 0.; trace4("cut", d->ids, d->gmf, d->gds, d->gmbf); }else{ double vonbm; if (d->vbs <= 0.) { vonbm = m->gamma1 + m->gamma / (sarg + sarg); }else{ vonbm = m->gamma1 + m->gamma * .5 / sqrt(t->phi); untested(); } trace3("", m->nc, m->lambda0, m->lambda1); double logvgon = log(d->vgst); double idsat = t->beta * exp(logvgon * m->nc); double Lambda = m->lambda0 - m->lambda1 * d->vbs; trace4("", vonbm, logvgon, idsat, Lambda); d->ids = idsat * (1 + Lambda * d->vds); d->gmf = d->ids * m->nc / d->vgst; d->gds = d->gmf * m->sigma + idsat * Lambda; d->gmbf = d->gmf * vonbm - idsat * m->lambda1 * d->vds; d->vdsat = m->kv * exp(logvgon * m->nv); trace4("sat", d->ids, d->gmf, d->gds, d->gmbf); d->saturated = (d->vdsat <= d->vds); if (!d->saturated) { double vdst = d->vds / d->vdsat; double vdst2 = (2 - vdst) * vdst; double vdstg = - vdst * m->nv / d->vgst; double ivdst1 = d->ids * (2 - vdst - vdst); d->ids *= vdst2; d->gmf = d->gmf * vdst2 + ivdst1 * vdstg; d->gds = d->gds * vdst2 + ivdst1 * (1 / d->vdsat + vdstg * m->sigma); d->gmbf = d->gmbf * vdst2 + ivdst1 * vdstg * vonbm; trace4("lin", d->ids, d->gmf, d->gds, d->gmbf); } } if (d->reversed) { d->ids *= -1; d->gmr = d->gmf; d->gmbr = d->gmbf; d->gmf = d->gmbf = 0; }else{ d->gmr = d->gmbr = 0.; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos7.model000066400000000000000000002240201316501211100142220ustar00rootroot00000000000000/* $Id: d_mos7.model,v 26.132 2009/11/24 04:26:37 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Berkeley BSIM3v3.1 model * Derived from Spice3f4,Copyright 1990 Regents of the University of California * Author: 1991 JianHui Huang and Min-Chie Jeng. * Recoded for Gnucap model compiler, Al Davis, 2000 */ h_headers { #include "d_mos_base.h" } cc_headers { #include "l_compar.h" #include "l_denoise.h" } /*--------------------------------------------------------------------------*/ /* from diode no fc??? double bulkJctPotential "Source/drain junction built-in potential" name=PB default=1.0; double unitAreaJctCap "Source/drain bottom junction capacitance per unit area" name=CJ default=5.0E-4; double bulkJctBotGradingCoeff "Source/drain bottom junction capacitance grading coefficient" name=MJ default=0.5; double sidewallJctPotential "Source/drain sw junction capacitance built in potential" name=PBSW default=1.0; double unitLengthSidewallJctCap "Source/drain sw junction capacitance per unit periphery" name=CJSW default=5.0E-10; double bulkJctSideGradingCoeff "Source/drain sw junction capacitance grading coefficient" name=MJSW default=0.33; double kf "Flicker noise coefficient" name=KF default=0.0; double af "Flicker noise exponent" name=AF default=1.0; from mos_base no is??? double jctSatCurDensity "Source/drain junction reverse saturation current density" name=JS default=1.0E-4; double sheetResistance "Source-drain sheet resistance" name=RSH default=0.0; no rd??? no rs??? no cbd??? no cbs??? double cgso "Gate-source overlap capacitance per width" "CGSO default=NA; double cgdo "Gate-drain overlap capacitance per width" name=CGDO default=NA; double cgbo "Gate-bulk overlap capacitance per length" name=CGBO default=NA; */ model BUILT_IN_MOS7 { level 7 public_keys { nmos7 polarity=pN; pmos7 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS_BASE; independent { override { double mjsw "" final_default=.33; double pb "" final_default=1.0 quiet_min=0.1; double pbsw "" final_default=pb quiet_min=0.1; double cjo "" default=5.0E-4; double cgdo "" final_default="(((dlc != NA) && (dlc > 0.0)) ? dlc * cox - cgdl.nom() : 0.6 * xj.nom() * cox)"; double cgso "" final_default="(((dlc != NA) && (dlc > 0.0)) ? dlc * cox - cgsl.nom() : 0.6 * xj.nom() * cox)"; double cgbo "" final_default="((dwc != NA) ? 2.0 * dwc * cox : 2.0 * Wint * cox)"; /* assumes cg?? final_default is BEFORE d?c final_default */ int cmodel "CMODEL" print_test="cmodel!=1" calculate="((!cmodel)?1:cmodel)"; bool needs_isub "" calculate="(alpha0.nom()!=0.)"; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { int capMod "Capacitance model selector (0, 1, 2, other?)" name=CAPMOD default=2; int nqsMod "Non-quasi-static model selector (0, !0)" name=NQSMOD default=0; int mobMod "Mobility model selector (1,2,3,other?)" name=MOBMOD default=1; int noiMod "Noise model selector (not used)" name=NOIMOD default=1; int paramChk "Model parameter checking selector (not used)" name=PARAMCHK default=0; int binUnit "Bin unit selector (1, !1)" name=BINUNIT default=1; double version "parameter for model version (not used)" name=VERSION default=3.1; double tox "Gate oxide thickness in meters" name=TOX default=150.0e-10; double xpart "Channel charge partitioning" name=XPART default=0.0; double jctSidewallSatCurDensity "Sidewall junction reverse saturation current density" name=JSW default=0.0; double mjswg "Source/drain (gate side) sw junction capacitance grading coefficient" name=MJSWG default=NA final_default=mjsw; double pbswg "Source/drain (gate side) sw junction capacitance built in potential" name=PBSWG default=NA final_default=pbsw quiet_min=0.1; double unitLengthGateSidewallJctCap "Source/drain (gate side) sidewall junction capacitance per unit width" name=CJSWG default=NA final_default=cjsw; double jctEmissionCoeff "Source/drain junction emission coefficient" name=NJ default=1.0; double jctTempExponent "Junction current temperature exponent" name=XTI default=3.0; double Lint "Length reduction parameter" name=LINT default=0.0; double Ll "Length reduction parameter" name=LL default=0.0; double Lln "Length reduction parameter" name=LLN default=1.0; double Lw "Length reduction parameter" name=LW default=0.0; double Lwn "Length reduction parameter" name=LWN default=1.0; double Lwl "Length reduction parameter" name=LWL default=0.0; double Wint "Width reduction parameter" name=WINT default=0.0; double Wl "Width reduction parameter" name=WL default=0.0; double Wln "Width reduction parameter" name=WLN default=1.0; double Ww "Width reduction parameter" name=WW default=0.0; double Wwn "Width reduction parameter" name=WWN default=1.0; double Wwl "Width reduction parameter" name=WWL default=0.0; double dwc "Delta W for C-V model" name=DWC default=NA final_default=Wint; double dlc "Delta L for C-V model" name=DLC default=NA final_default=Lint; double noia "Flicker noise parameter, oxide trap density A" name=NOIA default=NA final_default="(polarity==pN) ? 1e20 : 9.9e18"; double noib "Flicker noise parameter, oxide trap density B" name=NOIB default=NA final_default="(polarity==pN) ? 5e4 : 2.4e3"; double noic "Flicker noise parameter, oxide trap density C" name=NOIC default=NA final_default="(polarity==pN) ?-1.4e-12 :1.4e-12"; double em "Flicker noise parameter V/m" name=EM default=4.1e7; double ef "Flicker noise frequency exponent" name=EF default=1.0; } calculated_parameters { double cox; double factor1 "" calculate="sqrt(tox * P_EPS_SI / P_EPS_OX)"; double vt_at_tnom "" calculate="tnom_k * P_K_Q"; double ni "" calculate="(1.45e10 * (tnom_k / 300.15) * sqrt(tnom_k / 300.15) * exp(21.5565981 - egap / (2.0 * vt_at_tnom)))"; } code_pre { //tox = std::max(tox, 1e-20); cox = 3.453133e-11 / tox; } code_post { if (npeak.has_good_value() && npeak.nom() > 1.0e20) { npeak.set_nom(npeak.nom() * 1.0e-6); } if (ngate.has_good_value() && ngate.nom() > 1.0e23) { ngate.set_nom(ngate.nom() * 1.0e-6); } } } size_dependent { raw_parameters { double cdsc "Drain/Source and channel coupling capacitance Q/V/m^2" name=CDSC default=2.4e-4; double cdscb "Body-bias dependence of cdsc Q/V/m^2" name=CDSCB default=0.0; double cdscd "Drain-bias dependence of cdsc Q/V/m^2" name=CDSCD default=0.0; double cit "Interface state capacitance Q/V/m^2" name=CIT default=0.0; double nfactor "Subthreshold swing Coefficient" name=NFACTOR default=1; double xj "Junction depth in meters" name=XJ default=.15e-6; double vsat "Saturation velocity at tnom m/s" name=VSAT default=8.0e4; double at "Temperature coefficient of vsat m/s" name=AT default=3.3e4; double a0 "Non-uniform depletion width effect coefficient." name=A0 default=1.0; double ags "Gate bias coefficient of Abulk." name=AGS default=0.0; double a1 "Non-saturation effect coefficient" name=A1 default=0.0; double a2 "Non-saturation effect coefficient" name=A2 default=1.0; double keta "Body-bias coefficient of non-uniform depletion width effect. 1/v" name=KETA default=-0.047; double nsub "Substrate doping concentration 1/cm3" name=NSUB default=6.0e16; double npeak "Channel doping concentration 1/cm3" name=NCH default=NA; double ngate "Poly-gate doping concentration 1/cm3" name=NGATE default=0.0; double gamma1 "Vth body coefficient" name=GAMMA1 default=NA; double gamma2 "Vth body coefficient" name=GAMMA2 default=NA; double vbx "Vth transition body Voltage" name=VBX default=NA; double vbm "Maximum body voltage" name=VBM default=-3.0; double xt "Doping depth" name=XT default=1.55e-7; double k1 "Bulk effect coefficient 1" name=K1 default=NA; double kt1 "Temperature coefficient of Vth" name=KT1 default=-0.11; double kt1l "Temperature coefficient of Vth" name=KT1L default=0.0; double kt2 "Body-coefficient of kt1" name=KT2 default=0.022; double k2 "Bulk effect coefficient 2" name=K2 default=NA; double k3 "Narrow width effect coefficient" name=K3 default=80.0; double k3b "Body effect coefficient of k3" name=K3B default=0.0; double w0 "Narrow width effect parameter" name=W0 default=2.5e-6; double nlx "Lateral non-uniform doping effect" name=NLX default=1.74e-7; double dvt0 "Short channel effect coeff. 0" name=DVT0 default=2.2; double dvt1 "Short channel effect coeff. 1" name=DVT1 default=0.53; double dvt2 "Short channel effect coeff. 2 1/v" name=DVT2 default=-0.032; double dvt0w "Narrow Width coeff. 0" name=DVT0W default=0.0; double dvt1w "Narrow Width effect coeff. 1" name=DVT1W default=5.3e6; double dvt2w "Narrow Width effect coeff. 2" name=DVT2W default=-0.032; double drout "DIBL coefficient of output resistance" name=DROUT default=0.56; double dsub "DIBL coefficient in the subthreshold region" name=DSUB default=NA final_default="drout"; double vth0 "Threshold voltage" name=VTH0 default=NA final_default=NA; double ua1 "Temperature coefficient of ua m/v" name=UA1 default=4.31e-9; double ua "Linear gate dependence of mobility m/v" name=UA default=2.25e-9; double ub1 "Temperature coefficient of ub (m/V)**2" name=UB1 default=-7.61e-18; double ub "Quadratic gate dependence of mobility (m/V)**2" name=UB default=5.87e-19; double uc1 "Temperature coefficient of uc" name=UC1 default=NA final_default="((m->mobMod==3) ? -0.056 : -0.056e-9)"; double uc "Body-bias dependence of mobility" name=UC default=NA final_default="((m->mobMod==3) ? -0.0465 : -0.0465e-9)"; double u0 "Low-field mobility at Tnom" name=U0 default=NA final_default="((m->polarity == pN) ? 0.067 : 0.025)"; double ute "Temperature coefficient of mobility" name=UTE default=-1.5; double voff "Threshold voltage offset" name=VOFF default=-0.08; double delta "Effective Vds parameter" name=DELTA default=0.01; double rdsw "Source-drain resistance per width" name=RDSW default=0.0; double prwg "Gate-bias effect on parasitic resistance" name=PRWG default=0.0; double prwb "Body-effect on parasitic resistance" name=PRWB default=0.0; double prt "Temperature coefficient of parasitic resistance" name=PRT default=0.0; double eta0 "Subthreshold region DIBL coefficient" name=ETA0 default=0.08; double etab "Subthreshold region DIBL coefficient 1/v" name=ETAB default=-0.07; double pclm "Channel length modulation Coefficient" name=PCLM default=1.3; double pdibl1 "Drain-induced barrier lowering coefficient" name=PDIBLC1 default=.39; double pdibl2 "Drain-induced barrier lowering coefficient" name=PDIBLC2 default=0.0086; double pdiblb "Body-effect on drain-induced barrier lowering 1/v" name=PDIBLCB default=0.0; double pscbe1 "Substrate current body-effect coefficient" name=PSCBE1 default=4.24e8; double pscbe2 "Substrate current body-effect coefficient" name=PSCBE2 default=1.0e-5; double pvag "Gate dependence of output resistance parameter" name=PVAG default=0.0; double wr "Width dependence of rds" name=WR default=1.0; double dwg "Width reduction parameter" name=DWG default=0.0; double dwb "Width reduction parameter" name=DWB default=0.0; double b0 "Abulk narrow width parameter" name=B0 default=0.0; double b1 "Abulk narrow width parameter" name=B1 default=0.0; double alpha0 "substrate current model parameter" name=ALPHA0 default=0.0; double beta0 "substrate current model parameter" name=BETA0 default=30.0; /* CV model */ double elm "Non-quasi-static Elmore Constant Parameter" name=ELM default=5.0; double vfbcv "Flat Band Voltage parameter for capmod=0 only" name=VFBCV default=-1.0; double cgsl "New C-V model parameter" name=CGSL default=0.0; double cgdl "New C-V model parameter" name=CGDL default=0.0; double ckappa "New C-V model parameter" name=CKAPPA default=0.6; double cf "Fringe capacitance parameter" name=CF default=NA final_default="2.0 * P_EPS_OX / M_PI * log(1.0 + 0.4e-6 / m->tox)"; double clc "Vdsat parameter for C-V model" name=CLC default=0.1e-6; double cle "Vdsat parameter for C-V model" name=CLE default=0.6; } calculated_parameters { double dl; double dlc; double dw; double dwc; double leff; /* BUG:: why not reuse from super */ double weff; double leffCV; double weffCV; double abulkCVfactor "" calculate="1.0 + pow((clc / leff), cle)"; double cgso "" calculate="(m->cgso + cf) * weffCV"; double cgdo "" calculate="(m->cgdo + cf) * weffCV"; double cgbo "" calculate="m->cgbo * leffCV"; double litl "" calculate="sqrt(3.0 * xj * m->tox)"; } code_pre { { double T0 = pow(c->l_in, m->Lln); double T1 = pow(c->w_in, m->Lwn); double tmp1 = m->Ll / T0 + m->Lw / T1 + m->Lwl / (T0 * T1); dl = m->Lint + tmp1; dlc = m->dlc + tmp1; } { double T2 = pow(c->l_in, m->Wln); double T3 = pow(c->w_in, m->Wwn); double tmp2 = m->Wl / T2 + m->Ww / T3 + m->Wwl / (T2 * T3); dw = m->Wint + tmp2; dwc = m->dwc + tmp2; } leff = c->l_in - 2.0 * dl; weff = c->w_in - 2.0 * dw; leffCV = c->l_in - 2.0 * dlc; weffCV = c->w_in - 2.0 * dwc; cgate = m->cox * w_eff * l_eff; /* BUG:: not adjusted values?? */ double L = leff; double W = weff; if (m->binUnit == 1) { L /= MICRON2METER; W /= MICRON2METER; } } code_post { if (u0 > 1.0) { u0 /= 1.0e4; } if (m->npeak.nom() == NA) { if (m->gamma1.nom() != NA) { double T0 = gamma1 * m->cox; npeak = 3.021E22 * T0 * T0; }else{ npeak = 1.7e17; } } if (m->k1.nom() != NA && m->k2.nom() != NA) { if (m->k1.nom() == NA) { k1 = 0.53; } if (m->k2.nom() == NA) { k2 = -0.0186; } }else{ vbm = -std::abs(vbm); if (m->gamma1.nom() == NA) { gamma1 = 5.753e-12 * sqrt(npeak) / m->cox; } if (m->gamma2.nom() == NA) { gamma2 = 5.753e-12 * sqrt(nsub) / m->cox; } } } } temperature_dependent { calculated_parameters { double temp; double tempratio "" calculate="temp / m->tnom_k"; double tempratio_1 "" calculate="tempratio - 1"; double vtm "vtm" calculate="temp * P_K_Q"; double ua; double ub; double uc; double u0temp; double vsattemp; double rds0; double phi; double sqrtPhi; double phis3; double Xdep0; double vbi; double cdep0; double k1; double k2; double vbsc; double vth0; double vfb; double theta0vb0; double thetaRout; } code_pre { temp = d->_sim->_temp_c + P_CELSIUS0; double egap = 1.16 - 7.02e-4 * temp * temp / (temp + 1108.0); } code_post { double jctTempSatCurDensity; double jctSidewallTempSatCurDensity; if (temp != m->tnom_k) { double T0 = m->egap / m->vt_at_tnom - egap / vtm + m->jctTempExponent * log(temp / m->tnom_k); double T1 = exp(T0 / m->jctEmissionCoeff); jctTempSatCurDensity = m->js * T1; jctSidewallTempSatCurDensity = m->jctSidewallSatCurDensity * T1; }else{ jctTempSatCurDensity = m->js; jctSidewallTempSatCurDensity = m->jctSidewallSatCurDensity; } if (jctTempSatCurDensity < 0.0) { jctTempSatCurDensity = 0.0; } if (jctSidewallTempSatCurDensity < 0.0) { jctSidewallTempSatCurDensity = 0.0; } { double T0 = (tempratio - 1.0); ua = s->ua + s->ua1 * T0; ub = s->ub + s->ub1 * T0; uc = s->uc + s->uc1 * T0; u0temp = s->u0 * pow(tempratio, s->ute); vsattemp = s->vsat - s->at * T0; rds0 = (s->rdsw + s->prt * T0) / pow(s->weff * 1E6, s->wr); } phi = 2.0 * m->vt_at_tnom * log(s->npeak / m->ni); sqrtPhi = sqrt(phi); phis3 = sqrtPhi * phi; Xdep0 = sqrt(2.0 * P_EPS_SI / (P_Q * s->npeak * 1.0e6)) * sqrtPhi; vbi = m->vt_at_tnom * log(1.0e20 * s->npeak / (m->ni * m->ni)); cdep0 = sqrt(P_Q * P_EPS_SI * s->npeak * 1.0e6 / 2.0 / phi); if (m->k1.nom() != NA && m->k2.nom() != NA) { k2 = s->k2; k1 = s->k1; }else{ double vbx = (m->vbx.nom() == NA) ? -std::abs(phi - 7.7348e-4 * s->npeak * s->xt * s->xt) : -std::abs(s->vbx); double T0 = s->gamma1 - s->gamma2; double T1 = sqrt(phi - vbx) - sqrtPhi; double T2 = sqrt(phi * (phi - s->vbm)) - phi; k2 = T0 * T1 / (2.0 * T2 + s->vbm); k1 = s->gamma2 - 2.0 * k2 * sqrt(phi - s->vbm); } if (k2 < 0.) { double T0 = 0.5 * k1 / k2; vbsc = to_range(-30.0, (0.9 * (phi - T0 * T0)), -3.0); }else{ vbsc = -30.0; } vbsc = std::min(vbsc, s->vbm); if (s->vth0 == NA) { vfb = -1.0; vth0 = m->polarity * (vfb + phi + k1 * sqrtPhi); }else{ vth0 = s->vth0; vfb = m->polarity * vth0 - phi - k1 * sqrtPhi; } trace3("", s->vth0, vth0, vfb); { double T1 = sqrt(P_EPS_SI / P_EPS_OX * m->tox * Xdep0); double T0 = exp(-0.5 * s->dsub * s->leff / T1); theta0vb0 = (T0 + 2.0 * T0 * T0); T0 = exp(-0.5 * s->drout * s->leff / T1); double T2 = (T0 + 2.0 * T0 * T0); thetaRout = s->pdibl1 * T2 + s->pdibl2; } } } /*-----------------------------------------------------------------------*/ tr_eval { trace3("", d->vds, d->vgs, d->vbs); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const double EXP_THRESHOLD = 34.0; const double MIN_EXP = 1.713908431e-15; const double MAX_EXP = 5.834617425e14; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d->reverse_if_needed(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Vbseff, dVbseff_dVb; { double T0 = d->vbs - t->vbsc - 0.001; double T1 = sqrt(T0 * T0 - 0.004 * t->vbsc); trace3("", t->vbsc, T0, T1); Vbseff = t->vbsc + 0.5 * (T0 + T1); dVbseff_dVb = 0.5 * (1.0 + T0 / T1); trace2("raw", Vbseff, dVbseff_dVb); fixzero(&Vbseff, t->vbsc); if (Vbseff < d->vbs) { // From Spice, to fix numeric problems untested(); // inadequately. Above fixzero should do a Vbseff = d->vbs; // better job, but I left this in case. } } trace2("fixed", Vbseff, dVbseff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Phis, dPhis_dVb, sqrtPhis, dsqrtPhis_dVb; if (Vbseff > 0.0) { untested(); d->sbfwd = true; double T0 = t->phi / (t->phi + Vbseff); Phis = t->phi * T0; dPhis_dVb = -T0 * T0; sqrtPhis = t->phis3 / (t->phi + 0.5 * Vbseff); dsqrtPhis_dVb = -0.5 * sqrtPhis * sqrtPhis / t->phis3; trace0("bs-fwd-bias"); }else{ d->sbfwd = false; Phis = t->phi - Vbseff; dPhis_dVb = -1.0; sqrtPhis = sqrt(Phis); dsqrtPhis_dVb = -0.5 / sqrtPhis; trace0("bs-normal"); } trace4("", Phis, dPhis_dVb, sqrtPhis, dsqrtPhis_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Xdep = t->Xdep0 * sqrtPhis / t->sqrtPhi; double dXdep_dVb = (t->Xdep0 / t->sqrtPhi) * dsqrtPhis_dVb; trace2("", Xdep, dXdep_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Theta0, dTheta0_dVb; { double lt1, dlt1_dVb; { double T3 = sqrt(Xdep); double T0 = s->dvt2 * Vbseff; double T1, T2; if (T0 >= - 0.5) { T1 = 1.0 + T0; T2 = s->dvt2; trace4("", T0, T1, T2, T3); }else{ untested(); /* Added to avoid any discontinuity problems caused by dvt2 */ double T4 = 1.0 / (3.0 + 8.0 * T0); T1 = (1.0 + 3.0 * T0) * T4; T2 = s->dvt2 * T4 * T4; trace4("dvd2 fix", T0, T1, T2, T3); } lt1 = m->factor1 * T3 * T1; dlt1_dVb = m->factor1 * (0.5 / T3 * T1 * dXdep_dVb + T3 * T2); } trace2("", lt1, dlt1_dVb); double T0 = -0.5 * s->dvt1 * s->leff / lt1; if (T0 > -EXP_THRESHOLD) { double T1 = exp(T0); Theta0 = T1 * (1.0 + 2.0 * T1); double dT1_dVb = -T0 / lt1 * T1 * dlt1_dVb; dTheta0_dVb = (1.0 + 4.0 * T1) * dT1_dVb; trace2("T0 > -ET", Theta0, dTheta0_dVb); }else{ double T1 = MIN_EXP; Theta0 = T1 * (1.0 + 2.0 * T1); dTheta0_dVb = 0.0; trace2("T0 < -ET", Theta0, dTheta0_dVb); } } trace2("", Theta0, dTheta0_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double dVth_dVb, dVth_dVd; // d->von { double V0 = t->vbi - t->phi; double T2, dT2_dVb; { double ltw, dltw_dVb; { double t3 = sqrt(Xdep); double t0 = s->dvt2w * Vbseff; double t1, t2; if (t0 >= - 0.5) { t1 = 1.0 + t0; t2 = s->dvt2w; }else{ untested(); /* Added to avoid any discontinuity problems caused by dvt2w */ double t4 = 1.0 / (3.0 + 8.0 * t0); t1 = (1.0 + 3.0 * t0) * t4; t2 = s->dvt2w * t4 * t4; } trace4("", t0, t1, t2, t3); ltw = m->factor1 * t3 * t1; dltw_dVb = m->factor1 * (0.5 / t3 * t1 * dXdep_dVb + t3 * t2); } trace2("", ltw, dltw_dVb); double T0 = -0.5 * s->dvt1w * s->weff * s->leff / ltw; if (T0 > -EXP_THRESHOLD) { double T1 = exp(T0); T2 = T1 * (1.0 + 2.0 * T1); double dT1_dVb = -T0 / ltw * T1 * dltw_dVb; dT2_dVb = (1.0 + 4.0 * T1) * dT1_dVb; }else{ double T1 = MIN_EXP; T2 = T1 * (1.0 + 2.0 * T1); dT2_dVb = 0.0; } T0 = s->dvt0w * T2; T2 = T0 * V0; dT2_dVb = s->dvt0w * dT2_dVb * V0; } trace3("", V0, T2, dT2_dVb); double T0 = sqrt(1.0 + s->nlx / s->leff); double T1 = t->k1 * (T0 - 1.0) * t->sqrtPhi + (s->kt1 + s->kt1l / s->leff + s->kt2 * Vbseff) * t->tempratio_1; double tmp2 = m->tox * t->phi / (s->weff + s->w0); double T3 = s->eta0 + s->etab * Vbseff; trace4("", T0, T1, tmp2, T3); double T4; if (T3 < 1.0e-4) { untested(); /* avoid discontinuity problems caused by etab */ double T9 = 1.0 / (3.0 - 2.0e4 * T3); T3 = (2.0e-4 - T3) * T9; T4 = T9 * T9; trace3("", T9, T3, T4); }else{ T4 = 1.0; trace1("", T4); } double thetavth = s->dvt0 * Theta0; double Delt_vth = thetavth * V0; double dDelt_vth_dVb = s->dvt0 * dTheta0_dVb * V0; trace4("", thetavth, t->theta0vb0, Delt_vth, dDelt_vth_dVb); double dDIBL_Sft_dVd = T3 * t->theta0vb0; double DIBL_Sft = dDIBL_Sft_dVd * d->vds; trace2("", dDIBL_Sft_dVd, DIBL_Sft); trace4("", t->vth0, t->k1, sqrtPhis, t->sqrtPhi); trace4("", t->k2, Vbseff, Delt_vth, T2); trace4("", s->k3, s->k3b, Vbseff, tmp2); trace2("", T1, DIBL_Sft); double Vth = m->polarity * t->vth0 + t->k1 * (sqrtPhis - t->sqrtPhi) - t->k2 * Vbseff - Delt_vth - T2 + (s->k3 + s->k3b * Vbseff) * tmp2 + T1 - DIBL_Sft; d->von = Vth; dVth_dVb = t->k1 * dsqrtPhis_dVb - t->k2 - dDelt_vth_dVb - dT2_dVb + s->k3b * tmp2 - s->etab * d->vds * t->theta0vb0 * T4 + s->kt2 * t->tempratio_1; dVth_dVd = -dDIBL_Sft_dVd; } trace3("", d->von, dVth_dVb, dVth_dVd); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate n */ double n, dn_dVb, dn_dVd; { double tmp2 = s->nfactor * P_EPS_SI / Xdep; double tmp3 = s->cdsc + s->cdscb * Vbseff + s->cdscd * d->vds; double tmp4 = (tmp2 + tmp3 * Theta0 + s->cit) / m->cox; trace3("", tmp2, tmp3, tmp4); if (tmp4 >= -0.5) { n = 1.0 + tmp4; dn_dVb = (-tmp2 / Xdep * dXdep_dVb + tmp3 * dTheta0_dVb + s->cdscb * Theta0) / m->cox; dn_dVd = s->cdscd * Theta0 / m->cox; trace3("n", n, dn_dVb, dn_dVd); }else{ /* avoid discontinuity problems caused by tmp4 */ double T0 = 1.0 / (3.0 + 8.0 * tmp4); n = (1.0 + 3.0 * tmp4) * T0; T0 *= T0; dn_dVb = (-tmp2 / Xdep * dXdep_dVb + tmp3 * dTheta0_dVb + s->cdscb * Theta0) / m->cox * T0; dn_dVd = s->cdscd * Theta0 / m->cox * T0; trace3("n disc", n, dn_dVb, dn_dVd); } } trace3("", n, dn_dVb, dn_dVd); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Poly Gate Si Depletion Effect */ double Vgs_eff, dVgs_eff_dVg; { double T0 = t->vfb + t->phi; trace2("Poly", t->vfb, t->phi); trace3("", s->ngate, d->vgs, T0); if ((s->ngate > 1.e18) && (s->ngate < 1.e25) && (d->vgs > T0)) { /* added to avoid the problem caused by ngate */ double T1 = 1.0e6 * P_Q * P_EPS_SI * s->ngate / (m->cox * m->cox); double T4 = sqrt(1.0 + 2.0 * (d->vgs - T0) / T1); double T2 = T1 * (T4 - 1.0); double T3 = 0.5 * T2 * T2 / T1; /* T3 = Vpoly */ double T7 = 1.12 - T3 - 0.05; double T6 = sqrt(T7 * T7 + 0.224); double T5 = 1.12 - 0.5 * (T7 + T6); Vgs_eff = d->vgs - T5; dVgs_eff_dVg = 1.0 - (0.5 - 0.5 / T4) * (1.0 + T7 / T6); trace2("><", Vgs_eff, dVgs_eff_dVg); }else{ Vgs_eff = d->vgs; dVgs_eff_dVg = 1.0; trace2("const", Vgs_eff, dVgs_eff_dVg); } } trace2("", Vgs_eff, dVgs_eff_dVg); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Effective Vgst (Vgsteff) Calculation */ double /*Vgsteff,*/ dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb, Vgst2Vtm; double VgstNVt, ExpVgst; // d->vgst { double Vgst = Vgs_eff - d->von; double T10 = 2.0 * n * t->vtm; VgstNVt = Vgst / T10; double ExpArg = (2.0 * s->voff - Vgst) / T10; trace4("", Vgst, T10, VgstNVt, ExpArg); /* MCJ: Very small Vgst */ if (VgstNVt > EXP_THRESHOLD) { d->vgst = Vgst; dVgsteff_dVg = dVgs_eff_dVg; dVgsteff_dVd = -dVth_dVd; dVgsteff_dVb = -dVth_dVb; ExpVgst = NOT_VALID; trace4(">>", d->vgst, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); }else if (ExpArg > EXP_THRESHOLD) { double T0 = (Vgst - s->voff) / (n * t->vtm); ExpVgst = exp(T0); d->vgst = t->vtm * t->cdep0 / m->cox * ExpVgst; dVgsteff_dVg = d->vgst / (n * t->vtm); dVgsteff_dVd = -dVgsteff_dVg * (dVth_dVd + T0 * t->vtm * dn_dVd); dVgsteff_dVb = -dVgsteff_dVg * (dVth_dVb + T0 * t->vtm * dn_dVb); dVgsteff_dVg *= dVgs_eff_dVg; trace4(">", d->vgst, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); }else{ ExpVgst = exp(VgstNVt); double T1 = T10 * log(1.0 + ExpVgst); double dT1_dVg = ExpVgst / (1.0 + ExpVgst); double dT1_dVb = -dT1_dVg * (dVth_dVb + Vgst / n * dn_dVb) + T1 / n * dn_dVb; double dT1_dVd = -dT1_dVg * (dVth_dVd + Vgst / n * dn_dVd) + T1 / n * dn_dVd; double dT2_dVg = -m->cox / (t->vtm * t->cdep0) * exp(ExpArg); double T2 = 1.0 - T10 * dT2_dVg; double dT2_dVd = -dT2_dVg * (dVth_dVd - 2.0 * t->vtm * ExpArg * dn_dVd) + (T2 - 1.0) / n * dn_dVd; double dT2_dVb = -dT2_dVg * (dVth_dVb - 2.0 * t->vtm * ExpArg * dn_dVb) + (T2 - 1.0) / n * dn_dVb; d->vgst = T1 / T2; double T3 = T2 * T2; dVgsteff_dVg = (T2 * dT1_dVg - T1 * dT2_dVg) / T3 * dVgs_eff_dVg; dVgsteff_dVd = (T2 * dT1_dVd - T1 * dT2_dVd) / T3; dVgsteff_dVb = (T2 * dT1_dVb - T1 * dT2_dVb) / T3; trace4("<", d->vgst, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); } Vgst2Vtm = d->vgst + 2.0 * t->vtm; trace3("", d->vgst, t->vtm, Vgst2Vtm); } trace1("", d->vgst); trace4("", dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb, Vgst2Vtm); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Effective Channel Geometry */ double Weff, dWeff_dVg, dWeff_dVb; { double T9 = sqrtPhis - t->sqrtPhi; Weff = s->weff - 2.0 * (s->dwg * d->vgst + s->dwb * T9); dWeff_dVg = -2.0 * s->dwg; dWeff_dVb = -2.0 * s->dwb * dsqrtPhis_dVb; if (Weff < 2.0e-8) { /* to avoid the discontinuity problem due to Weff*/ double T0 = 1.0 / (6.0e-8 - 2.0 * Weff); Weff = 2.0e-8 * (4.0e-8 - Weff) * T0; T0 *= T0 * 4.0e-16; dWeff_dVg *= T0; dWeff_dVb *= T0; trace3("Weff fix", Weff, dWeff_dVg, dWeff_dVb); } } trace3("", Weff, dWeff_dVg, dWeff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Rds, dRds_dVg, dRds_dVb; { double T9 = sqrtPhis - t->sqrtPhi; double T0 = s->prwg * d->vgst + s->prwb * T9; if (T0 >= -0.9) { Rds = t->rds0 * (1.0 + T0); dRds_dVg = t->rds0 * s->prwg; dRds_dVb = t->rds0 * s->prwb * dsqrtPhis_dVb; }else{ /* to avoid the discontinuity problem due to prwg and prwb*/ double T1 = 1.0 / (17.0 + 20.0 * T0); Rds = t->rds0 * (0.8 + T0) * T1; T1 *= T1; dRds_dVg = t->rds0 * s->prwg * T1; dRds_dVb = t->rds0 * s->prwb * dsqrtPhis_dVb * T1; trace3("Rds fix", T9, T0, T1); trace3("Rds fix", Rds, dRds_dVg, dRds_dVb); } } trace3("", Rds, dRds_dVg, dRds_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Abulk */ double Abulk0, dAbulk0_dVb, dAbulk_dVg, Abulk, dAbulk_dVb; { double T1 = 0.5 * t->k1 / sqrtPhis; double dT1_dVb = -T1 / sqrtPhis * dsqrtPhis_dVb; double T9 = sqrt(s->xj * Xdep); double tmp1 = s->leff + 2.0 * T9; double T5 = s->leff / tmp1; double tmp2 = s->a0 * T5; double tmp3 = s->weff + s->b1; double tmp4 = s->b0 / tmp3; double T2 = tmp2 + tmp4; double dT2_dVb = -T9 / tmp1 / Xdep * dXdep_dVb; double T6 = T5 * T5; double T7 = T5 * T6; Abulk0 = 1.0 + T1 * T2; dAbulk0_dVb = T1 * tmp2 * dT2_dVb + T2 * dT1_dVb; double T8 = s->ags * s->a0 * T7; dAbulk_dVg = -T1 * T8; Abulk = Abulk0 + dAbulk_dVg * d->vgst; dAbulk_dVb = dAbulk0_dVb - T8 * d->vgst * (dT1_dVb + 3.0 * T1 * dT2_dVb); trace2("1", Abulk0, dAbulk0_dVb); trace3("1", dAbulk_dVg, Abulk, dAbulk_dVb); if (Abulk0 < 0.1) { /* added to avoid the problems caused by Abulk0 */ double t9 = 1.0 / (3.0 - 20.0 * Abulk0); Abulk0 = (0.2 - Abulk0) * t9; dAbulk0_dVb *= t9 * t9; trace2("2", Abulk0, dAbulk0_dVb); } if (Abulk < 0.1) { /* added to avoid the problems caused by Abulk */ double t9 = 1.0 / (3.0 - 20.0 * Abulk); Abulk = (0.2 - Abulk) * t9; dAbulk_dVb *= t9 * t9; trace3("2", dAbulk_dVg, Abulk, dAbulk_dVb); } double T0, dT0_dVb; { double t2 = s->keta * Vbseff; if (t2 >= -0.9) { T0 = 1.0 / (1.0 + t2); dT0_dVb = -s->keta * T0 * T0; trace3("", t2, T0, dT0_dVb); }else{ /* added to avoid the problems caused by Keta */ double t1 = 1.0 / (0.8 + T2); T0 = (17.0 + 20.0 * T2) * t1; dT0_dVb = -s->keta * t1 * t1; trace3("keta fix", T2, T0, dT0_dVb); } } dAbulk_dVg *= T0; dAbulk_dVb = dAbulk_dVb * T0 + Abulk * dT0_dVb; dAbulk0_dVb = dAbulk0_dVb * T0 + Abulk0 * dT0_dVb; Abulk *= T0; Abulk0 *= T0; } trace2("", Abulk0, dAbulk0_dVb); trace3("", dAbulk_dVg, Abulk, dAbulk_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Mobility calculation */ double ueff, dueff_dVg, dueff_dVd, dueff_dVb; { double Denomi, dDenomi_dVg, dDenomi_dVd, dDenomi_dVb; { double T5; if (m->mobMod == 1) { double T0 = d->vgst + d->von + d->von; double T2 = t->ua + t->uc * Vbseff; double T3 = T0 / m->tox; T5 = T3 * (T2 + t->ub * T3); dDenomi_dVg = (T2 + 2.0 * t->ub * T3) / m->tox; dDenomi_dVd = dDenomi_dVg * 2.0 * dVth_dVd; dDenomi_dVb = dDenomi_dVg * 2.0 * dVth_dVb + t->uc * T3; }else if (m->mobMod == 2) { T5 = d->vgst / m->tox * (t->ua + t->uc * Vbseff + t->ub * d->vgst / m->tox); dDenomi_dVg = (t->ua + t->uc * Vbseff + 2.0 * t->ub * d->vgst / m->tox) / m->tox; dDenomi_dVd = 0.0; dDenomi_dVb = d->vgst * t->uc / m->tox; }else{ double T0 = d->vgst + d->von + d->von; double T2 = 1.0 + t->uc * Vbseff; double T3 = T0 / m->tox; double T4 = T3 * (t->ua + t->ub * T3); T5 = T4 * T2; dDenomi_dVg = (t->ua + 2.0 * t->ub * T3) * T2 / m->tox; dDenomi_dVd = dDenomi_dVg * 2.0 * dVth_dVd; dDenomi_dVb = dDenomi_dVg * 2.0 * dVth_dVb + t->uc * T4; } if (T5 >= -0.8) { Denomi = 1.0 + T5; }else{ /* Added to avoid the discontinuity problem caused by ua and ub*/ double t9 = 1.0 / (7.0 + 10.0 * T5); Denomi = (0.6 + T5) * t9; t9 *= t9; dDenomi_dVg *= t9; dDenomi_dVd *= t9; dDenomi_dVb *= t9; } } ueff = t->u0temp / Denomi; double t9 = -ueff / Denomi; dueff_dVg = t9 * dDenomi_dVg; dueff_dVd = t9 * dDenomi_dVd; dueff_dVb = t9 * dDenomi_dVb; } trace4("", ueff, dueff_dVg, dueff_dVd, dueff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Esat, EsatL, dEsatL_dVg, dEsatL_dVd, dEsatL_dVb; { Esat = 2.0 * t->vsattemp / ueff; EsatL = Esat * s->leff; double T0 = -EsatL /ueff; dEsatL_dVg = T0 * dueff_dVg; dEsatL_dVd = T0 * dueff_dVd; dEsatL_dVb = T0 * dueff_dVb; } trace2("", Esat, EsatL); trace3("", dEsatL_dVg, dEsatL_dVd, dEsatL_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb; // d->vdsat double Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd; { double WVCoxRds; { double WVCox = Weff * t->vsattemp * m->cox; WVCoxRds = WVCox * Rds; } trace1("", WVCoxRds); double Lambda, dLambda_dVg; { if (s->a1 == 0.0) { Lambda = s->a2; dLambda_dVg = 0.0; }else if (s->a1 > 0.0) { /* avoid discontinuity problem caused by s->a1 and s->a2 (Lambda) */ double T0 = 1.0 - s->a2; double T1 = T0 - s->a1 * d->vgst - 0.0001; double T2 = sqrt(T1 * T1 + 0.0004 * T0); Lambda = s->a2 + T0 - 0.5 * (T1 + T2); dLambda_dVg = 0.5 * s->a1 * (1.0 + T1 / T2); }else{ double T1 = s->a2 + s->a1 * d->vgst - 0.0001; double T2 = sqrt(T1 * T1 + 0.0004 * s->a2); Lambda = 0.5 * (T1 + T2); dLambda_dVg = 0.5 * s->a1 * (1.0 + T1 / T2); } } trace2("", Lambda, dLambda_dVg); double tmp2, tmp3; if (Rds > 0) { tmp2 = dRds_dVg / Rds + dWeff_dVg / Weff; tmp3 = dRds_dVb / Rds + dWeff_dVb / Weff; }else{ tmp2 = dWeff_dVg / Weff; tmp3 = dWeff_dVb / Weff; } trace2("", tmp2, tmp3); //double Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb; // d->vdsat double tmp1; { if ((Rds == 0.0) && (Lambda == 1.0)) { double T0 = 1.0 / (Abulk * EsatL + Vgst2Vtm); tmp1 = 0.0; double T1 = T0 * T0; double T2 = Vgst2Vtm * T0; double T3 = EsatL * Vgst2Vtm; Vdsat = T3 * T0; double dT0_dVg = -(Abulk * dEsatL_dVg + EsatL * dAbulk_dVg + 1.0)*T1; double dT0_dVd = -(Abulk * dEsatL_dVd) * T1; double dT0_dVb = -(Abulk * dEsatL_dVb + dAbulk_dVb * EsatL) * T1; dVdsat_dVg = T3 * dT0_dVg + T2 * dEsatL_dVg + EsatL * T0; dVdsat_dVd = T3 * dT0_dVd + T2 * dEsatL_dVd; dVdsat_dVb = T3 * dT0_dVb + T2 * dEsatL_dVb; }else{ tmp1 = dLambda_dVg / (Lambda * Lambda); double T9 = Abulk * WVCoxRds; double T8 = Abulk * T9; double T7 = Vgst2Vtm * T9; double T6 = Vgst2Vtm * WVCoxRds; double T0 = 2.0 * Abulk * (T9 - 1.0 + 1.0 / Lambda); double dT0_dVg = 2.0 * (T8 * tmp2 - Abulk * tmp1 + (2.0 * T9 + 1.0 / Lambda - 1.0) * dAbulk_dVg); double dT0_dVb = 2.0 * (T8 * (2.0 / Abulk * dAbulk_dVb + tmp3) + (1.0 / Lambda - 1.0) * dAbulk_dVb); //double dT0_dVd = 0.0; double T1 = Vgst2Vtm * (2.0 / Lambda - 1.0) + Abulk * EsatL + 3.0*T7; double dT1_dVg = (2.0 / Lambda - 1.0) - 2.0 * Vgst2Vtm * tmp1 + Abulk * dEsatL_dVg + EsatL * dAbulk_dVg + 3.0 * (T9 + T7 * tmp2 + T6 * dAbulk_dVg); double dT1_dVb = Abulk * dEsatL_dVb + EsatL * dAbulk_dVb + 3.0 * (T6 * dAbulk_dVb + T7 * tmp3); double dT1_dVd = Abulk * dEsatL_dVd; double T2 = Vgst2Vtm * (EsatL + 2.0 * T6); double dT2_dVg = EsatL + Vgst2Vtm * dEsatL_dVg + T6 * (4.0 + 2.0 * Vgst2Vtm * tmp2); double dT2_dVb = Vgst2Vtm * (dEsatL_dVb + 2.0 * T6 * tmp3); double dT2_dVd = Vgst2Vtm * dEsatL_dVd; double T3 = sqrt(T1 * T1 - 2.0 * T0 * T2); Vdsat = (T1 - T3) / T0; dVdsat_dVg = (dT1_dVg - (T1 * dT1_dVg - dT0_dVg * T2 - T0 * dT2_dVg) / T3 - Vdsat * dT0_dVg) / T0; dVdsat_dVb = (dT1_dVb - (T1 * dT1_dVb - dT0_dVb * T2 - T0 * dT2_dVb) / T3 - Vdsat * dT0_dVb) / T0; dVdsat_dVd = (dT1_dVd - (T1 * dT1_dVd - T0 * dT2_dVd) / T3) / T0; } d->vdsat = Vdsat; d->saturated = (d->vds >= d->vdsat); } trace1("", tmp1); trace4("d->vdsat", Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb); // double Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd; { double tmp4 = 1.0 - 0.5 * Abulk * Vdsat / Vgst2Vtm; double T9 = WVCoxRds * d->vgst; double T8 = T9 / Vgst2Vtm; double T0 = EsatL + Vdsat + 2.0 * T9 * tmp4; double T7 = 2.0 * WVCoxRds * tmp4; double dT0_dVg = dEsatL_dVg + dVdsat_dVg + T7 * (1.0 + tmp2 * d->vgst) - T8 * (Abulk * dVdsat_dVg - Abulk * Vdsat / Vgst2Vtm + Vdsat * dAbulk_dVg); double dT0_dVb = dEsatL_dVb + dVdsat_dVb + T7 * tmp3 * d->vgst - T8 * (dAbulk_dVb * Vdsat + Abulk * dVdsat_dVb); double dT0_dVd = dEsatL_dVd + dVdsat_dVd - T8 * Abulk * dVdsat_dVd; T9 = WVCoxRds * Abulk; double T1 = 2.0 / Lambda - 1.0 + T9; double dT1_dVg = -2.0 * tmp1 + WVCoxRds * (Abulk * tmp2 + dAbulk_dVg); double dT1_dVb = dAbulk_dVb * WVCoxRds + T9 * tmp3; Vasat = T0 / T1; dVasat_dVg = (dT0_dVg - Vasat * dT1_dVg) / T1; dVasat_dVb = (dT0_dVb - Vasat * dT1_dVb) / T1; dVasat_dVd = dT0_dVd / T1; } trace4("", Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd); } trace1("", d->vdsat); trace4("", Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb); trace4("", Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Effective Vds (Vdseff) Calculation */ double Vdseff, diffVds, dVdseff_dVg, dVdseff_dVd, dVdseff_dVb; { double T1 = Vdsat - d->vds - s->delta; double dT1_dVg = dVdsat_dVg; double dT1_dVd = dVdsat_dVd - 1.0; double dT1_dVb = dVdsat_dVb; trace4("", T1, dT1_dVg, dT1_dVd, dT1_dVb); double T2 = sqrt(T1 * T1 + 4.0 * s->delta * Vdsat); double T0 = T1 / T2; double T3 = 2.0 * s->delta / T2; trace3("", T2, T0, T3); double dT2_dVg = T0 * dT1_dVg + T3 * dVdsat_dVg; double dT2_dVd = T0 * dT1_dVd + T3 * dVdsat_dVd; double dT2_dVb = T0 * dT1_dVb + T3 * dVdsat_dVb; trace3("", dT2_dVg, dT2_dVd, dT2_dVb); Vdseff = Vdsat - 0.5 * (T1 + T2); dVdseff_dVg = dVdsat_dVg - 0.5 * (dT1_dVg + dT2_dVg); dVdseff_dVd = dVdsat_dVd - 0.5 * (dT1_dVd + dT2_dVd); dVdseff_dVb = dVdsat_dVb - 0.5 * (dT1_dVb + dT2_dVb); trace4("raw", Vdseff, dVdseff_dVg, dVdseff_dVd, dVdseff_dVb); fixzero(&Vdseff, Vdsat); fixzero(&dVdseff_dVg, dVdsat_dVg); fixzero(&dVdseff_dVd, dVdsat_dVd); fixzero(&dVdseff_dVb, dVdsat_dVb); /* Added to eliminate non-zero Vdseff at Vds=0.0 */ if (d->vds == 0.0) { assert(Vdseff == 0.0); assert(dVdseff_dVg == 0.0); assert(dVdseff_dVb == 0.0); } if (Vdseff > d->vds) { // From Spice, to fix numeric problems. trace2("numeric problems", Vdseff, d->vds); Vdseff = d->vds; } trace4("fixed", Vdseff, dVdseff_dVg, dVdseff_dVd, dVdseff_dVb); diffVds = d->vds - Vdseff; trace2("", Vdseff, diffVds); } trace2("", Vdseff, diffVds); trace3("", dVdseff_dVg, dVdseff_dVd, dVdseff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Ids */ double Idsa, dIdsa_dVg, dIdsa_dVd, dIdsa_dVb; { double Va, dVa_dVg, dVa_dVd, dVa_dVb; { double VACLM, dVACLM_dVg, dVACLM_dVb, dVACLM_dVd; if ((s->pclm > 0.0) && (diffVds > 1.0e-10)) { double T0 = 1.0 / (s->pclm * Abulk * s->litl); double dT0_dVb = -T0 / Abulk * dAbulk_dVb; double dT0_dVg = -T0 / Abulk * dAbulk_dVg; double T2 = d->vgst / EsatL; double T1 = s->leff * (Abulk + T2); double dT1_dVg = s->leff * ((1.0-T2*dEsatL_dVg)/EsatL + dAbulk_dVg); double dT1_dVb = s->leff * (dAbulk_dVb - T2 * dEsatL_dVb / EsatL); double dT1_dVd = -T2 * dEsatL_dVd / Esat; double T9 = T0 * T1; VACLM = T9 * diffVds; dVACLM_dVg = T0 * dT1_dVg * diffVds - T9 * dVdseff_dVg + T1 * diffVds * dT0_dVg; dVACLM_dVb = (dT0_dVb*T1 + T0*dT1_dVb) * diffVds - T9 * dVdseff_dVb; dVACLM_dVd = T0 * dT1_dVd * diffVds + T9 * (1.0 - dVdseff_dVd); }else{ VACLM = MAX_EXP; dVACLM_dVd = dVACLM_dVg = dVACLM_dVb = 0.0; } trace4("", VACLM, dVACLM_dVg, dVACLM_dVb, dVACLM_dVd); double VADIBL, dVADIBL_dVg, dVADIBL_dVb, dVADIBL_dVd; if (t->thetaRout > 0.0) { double T8 = Abulk * Vdsat; double T0 = Vgst2Vtm * T8; double dT0_dVg = Vgst2Vtm * Abulk * dVdsat_dVg + T8 + Vgst2Vtm * Vdsat * dAbulk_dVg; double dT0_dVb = Vgst2Vtm * (dAbulk_dVb*Vdsat + Abulk*dVdsat_dVb); double dT0_dVd = Vgst2Vtm * Abulk * dVdsat_dVd; double T1 = Vgst2Vtm + T8; double dT1_dVg = 1.0 + Abulk * dVdsat_dVg + Vdsat * dAbulk_dVg; double dT1_dVb = Abulk * dVdsat_dVb + dAbulk_dVb * Vdsat; double dT1_dVd = Abulk * dVdsat_dVd; double T9 = T1 * T1; double T2 = t->thetaRout; VADIBL = (Vgst2Vtm - T0 / T1) / T2; dVADIBL_dVg = (1.0 - dT0_dVg / T1 + T0 * dT1_dVg / T9) / T2; dVADIBL_dVb = (-dT0_dVb / T1 + T0 * dT1_dVb / T9) / T2; dVADIBL_dVd = (-dT0_dVd / T1 + T0 * dT1_dVd / T9) / T2; double T7 = s->pdiblb * Vbseff; if (T7 >= -0.9) { double T3 = 1.0 / (1.0 + T7); VADIBL *= T3; dVADIBL_dVg *= T3; dVADIBL_dVb = (dVADIBL_dVb - VADIBL * s->pdiblb) * T3; dVADIBL_dVd *= T3; }else{ /* Added to avoid the discontinuity problem caused by pdiblcb */ double T4 = 1.0 / (0.8 + T7); double T3 = (17.0 + 20.0 * T7) * T4; dVADIBL_dVg *= T3; dVADIBL_dVb = dVADIBL_dVb * T3 - VADIBL * s->pdiblb * T4 * T4; dVADIBL_dVd *= T3; VADIBL *= T3; } }else{ VADIBL = MAX_EXP; dVADIBL_dVd = dVADIBL_dVg = dVADIBL_dVb = 0.0; } trace4("", VADIBL, dVADIBL_dVg, dVADIBL_dVb, dVADIBL_dVd); double T8 = s->pvag / EsatL; double T9 = T8 * d->vgst; double T0, dT0_dVg, dT0_dVb, dT0_dVd; if (T9 > -0.9) { T0 = 1.0 + T9; dT0_dVg = T8 * (1.0 - d->vgst * dEsatL_dVg / EsatL); dT0_dVb = -T9 * dEsatL_dVb / EsatL; dT0_dVd = -T9 * dEsatL_dVd / EsatL; }else{ /* Added to avoid the discontinuity problems caused by pvag */ double T1 = 1.0 / (17.0 + 20.0 * T9); T0 = (0.8 + T9) * T1; T1 *= T1; dT0_dVg = T8 * (1.0 - d->vgst * dEsatL_dVg / EsatL) * T1; T9 *= T1 / EsatL; dT0_dVb = -T9 * dEsatL_dVb; dT0_dVd = -T9 * dEsatL_dVd; } double tmp1 = VACLM * VACLM; double tmp2 = VADIBL * VADIBL; double tmp3 = VACLM + VADIBL; double T1 = VACLM * VADIBL / tmp3; tmp3 *= tmp3; double dT1_dVg = (tmp1 * dVADIBL_dVg + tmp2 * dVACLM_dVg) / tmp3; double dT1_dVd = (tmp1 * dVADIBL_dVd + tmp2 * dVACLM_dVd) / tmp3; double dT1_dVb = (tmp1 * dVADIBL_dVb + tmp2 * dVACLM_dVb) / tmp3; Va = Vasat + T0 * T1; dVa_dVg = dVasat_dVg + T1 * dT0_dVg + T0 * dT1_dVg; dVa_dVd = dVasat_dVd + T1 * dT0_dVd + T0 * dT1_dVd; dVa_dVb = dVasat_dVb + T1 * dT0_dVb + T0 * dT1_dVb; } trace4("", Va, dVa_dVg, dVa_dVd, dVa_dVb); double Idl, dIdl_dVg, dIdl_dVd, dIdl_dVb; { double gche, dgche_dVg, dgche_dVd, dgche_dVb; { double beta, dbeta_dVg, dbeta_dVd, dbeta_dVb; { double CoxWovL = m->cox * Weff / s->leff; beta = ueff * CoxWovL; dbeta_dVg = CoxWovL * dueff_dVg + beta * dWeff_dVg / Weff; dbeta_dVd = CoxWovL * dueff_dVd; dbeta_dVb = CoxWovL * dueff_dVb + beta * dWeff_dVb / Weff; } trace4("", beta, dbeta_dVg, dbeta_dVd, dbeta_dVb); double fgche1, dfgche1_dVg, dfgche1_dVd, dfgche1_dVb; { double T0 = 1.0 - 0.5 * Abulk * Vdseff / Vgst2Vtm; double dT0_dVg = -0.5 * (Abulk * dVdseff_dVg - Abulk * Vdseff / Vgst2Vtm + Vdseff * dAbulk_dVg) / Vgst2Vtm; double dT0_dVd = -0.5 * Abulk * dVdseff_dVd / Vgst2Vtm; double dT0_dVb = -0.5 * (Abulk*dVdseff_dVb + dAbulk_dVb*Vdseff) / Vgst2Vtm; fgche1 = d->vgst * T0; dfgche1_dVg = d->vgst * dT0_dVg + T0; dfgche1_dVd = d->vgst * dT0_dVd; dfgche1_dVb = d->vgst * dT0_dVb; } trace4("", fgche1, dfgche1_dVg, dfgche1_dVd, dfgche1_dVb); double fgche2, dfgche2_dVg, dfgche2_dVd, dfgche2_dVb; { double T9 = Vdseff / EsatL; fgche2 = 1.0 + T9; dfgche2_dVg = (dVdseff_dVg - T9 * dEsatL_dVg) / EsatL; dfgche2_dVd = (dVdseff_dVd - T9 * dEsatL_dVd) / EsatL; dfgche2_dVb = (dVdseff_dVb - T9 * dEsatL_dVb) / EsatL; } trace4("", fgche2, dfgche2_dVg, dfgche2_dVd, dfgche2_dVb); gche = beta * fgche1 / fgche2; dgche_dVg = (beta * dfgche1_dVg + fgche1 * dbeta_dVg - gche * dfgche2_dVg) / fgche2; dgche_dVd = (beta * dfgche1_dVd + fgche1 * dbeta_dVd - gche * dfgche2_dVd) / fgche2; dgche_dVb = (beta * dfgche1_dVb + fgche1 * dbeta_dVb - gche * dfgche2_dVb) / fgche2; } trace4("", gche, dgche_dVg, dgche_dVd, dgche_dVb); double T0 = 1.0 + gche * Rds; double T9 = Vdseff / T0; Idl = gche * T9; dIdl_dVg = (gche * dVdseff_dVg + T9 * dgche_dVg) / T0 - Idl * gche / T0 * dRds_dVg; dIdl_dVd = (gche * dVdseff_dVd + T9 * dgche_dVd) / T0; dIdl_dVb = (gche*dVdseff_dVb + T9*dgche_dVb - Idl*dRds_dVb*gche) / T0; } trace4("", Idl, dIdl_dVg, dIdl_dVd, dIdl_dVb); double T9 = diffVds / Va; double T0 = 1.0 + T9; Idsa = Idl * T0; dIdsa_dVg = T0 * dIdl_dVg - Idl * (dVdseff_dVg + T9 * dVa_dVg) / Va; dIdsa_dVd = T0 * dIdl_dVd + Idl * (1.0 - dVdseff_dVd - T9*dVa_dVd) / Va; dIdsa_dVb = T0 * dIdl_dVb - Idl * (dVdseff_dVb + T9 * dVa_dVb) / Va; } trace4("", Idsa, dIdsa_dVg, dIdsa_dVd, dIdsa_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // d->ids, d->gds, d->gmf, d->gmbf { double VASCBE, dVASCBE_dVg, dVASCBE_dVd, dVASCBE_dVb; if (s->pscbe2 > 0.0) { if (diffVds > s->pscbe1 * s->litl / EXP_THRESHOLD) { double T0 = s->pscbe1 * s->litl / diffVds; VASCBE = s->leff * exp(T0) / s->pscbe2; double T1 = T0 * VASCBE / diffVds; dVASCBE_dVg = T1 * dVdseff_dVg; dVASCBE_dVd = -T1 * (1.0 - dVdseff_dVd); dVASCBE_dVb = T1 * dVdseff_dVb; }else{ VASCBE = MAX_EXP * s->leff/s->pscbe2; dVASCBE_dVg = dVASCBE_dVd = dVASCBE_dVb = 0.0; } }else{ VASCBE = MAX_EXP; dVASCBE_dVg = dVASCBE_dVd = dVASCBE_dVb = 0.0; } double T9 = diffVds / VASCBE; double T0 = 1.0 + T9; double Ids = Idsa * T0; double Gm = T0*dIdsa_dVg - Idsa*(dVdseff_dVg + T9*dVASCBE_dVg) / VASCBE; double Gds = T0 * dIdsa_dVd + Idsa * (1.0 - dVdseff_dVd - T9 * dVASCBE_dVd) / VASCBE; double Gmb = T0 * dIdsa_dVb - Idsa * (dVdseff_dVb + T9 * dVASCBE_dVb) / VASCBE; trace3("", T0, dIdsa_dVb, (T0 * dIdsa_dVb)); trace4("", dVdseff_dVb, T9, dVASCBE_dVb, (dVdseff_dVb + T9*dVASCBE_dVb)); trace3("", Idsa, VASCBE, (Idsa*(dVdseff_dVb+T9*dVASCBE_dVb)/VASCBE)); Gds += Gm * dVgsteff_dVd; Gmb += Gm * dVgsteff_dVb; Gm *= dVgsteff_dVg; Gmb *= dVbseff_dVb; trace4("", Ids, Gm, Gds, Gmb); trace0("========================="); d->gds = Gds; if (d->reversed) { d->ids = -Ids; d->gmr = Gm; d->gmbr = Gmb; d->gmf = d->gmbf = 0; }else{ d->ids = Ids; d->gmf = Gm; d->gmbf = Gmb; d->gmr = d->gmbr = 0.; } } trace4("", d->ids, d->gds, d->gmf, d->gmbf); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // d->isub, d->gbbs, d->gbgs, d->gbds { /* calculate substrate current Isub */ double Isub, Gbd, Gbb, Gbg; if ((s->alpha0 <= 0.0) || (s->beta0 <= 0.0)) { Isub = Gbd = Gbb = Gbg = 0.0; trace4("no-isub", Isub, Gbd, Gbb, Gbg); }else{ double T2 = s->alpha0 / s->leff; double T1, dT1_dVg, dT1_dVd, dT1_dVb; if (diffVds > s->beta0 / EXP_THRESHOLD) { double T0 = -s->beta0 / diffVds; T1 = T2 * diffVds * exp(T0); double T3 = T1 / diffVds * (T0 - 1.0); trace3("", T0, T2, T3); dT1_dVg = T3 * dVdseff_dVg; dT1_dVd = T3 * (dVdseff_dVd - 1.0); dT1_dVb = T3 * dVdseff_dVb; trace4("vds > ?", T1, dT1_dVg, dT1_dVd, dT1_dVb); }else{ double T3 = T2 * MIN_EXP; trace2("", T2, T3); T1 = T3 * diffVds; dT1_dVg = -T3 * dVdseff_dVg; dT1_dVd = T3 * (1.0 - dVdseff_dVd); dT1_dVb = -T3 * dVdseff_dVb; trace4("vds < ?", T1, dT1_dVg, dT1_dVd, dT1_dVb); } Isub = T1 * Idsa; Gbg = T1 * dIdsa_dVg + Idsa * dT1_dVg; Gbd = T1 * dIdsa_dVd + Idsa * dT1_dVd; Gbb = T1 * dIdsa_dVb + Idsa * dT1_dVb; trace4("raw", Isub, Gbd, Gbb, Gbg); Gbd += Gbg * dVgsteff_dVd; Gbb += Gbg * dVgsteff_dVb; Gbg *= dVgsteff_dVg; Gbb *= dVbseff_dVb; /* bug fixing */ } trace4("", Isub, Gbd, Gbb, Gbg); if (d->reversed) { d->idb = Isub; d->gdbds = Gbd; d->gdbgs = Gbg; d->gdbbs = Gbb; d->isb = d->gsbsd = d->gsbgd = d->gsbbd = 0.; }else{ d->idb = d->gdbds = d->gdbgs = d->gdbbs = 0.; d->isb = Isub; d->gsbsd = Gbd; d->gsbgd = Gbg; d->gsbbd = Gbb; } //double d__csub = Isub - (Gbb * Vbseff + Gbd * d->vds + Gbg * d->vgs); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Qinv for Noise analysis */ { //double T1 = d->vgst * (1.0 - 0.5 * Abulk * Vdseff / Vgst2Vtm); //double d__qinv = -m->cox * Weff * s->leff * T1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ends line 2020 (finished) // d->qgate, d->qdrn, d->qbulk // d->cggb, d->cgsb, d->cgdb // d->cdgb, d->cdsb, d->cddb // d->cbgb, d->cbsb, d->cbdb { const bool ChargeComputationNeeded = true; trace2("", m->xpart, m->capMod); if ((m->xpart < 0) || (!ChargeComputationNeeded)) { d->qgate = d->qdrn = d->qbulk = 0.0; d->cggb = d->cgsb = d->cgdb = 0.0; d->cdgb = d->cdsb = d->cddb = 0.0; d->cbgb = d->cbsb = d->cbdb = 0.0; trace0("xpart < 0 || no charge computation"); }else if (m->capMod == 0) { // block ends 1710 this 1454 trace0("begin capMod == 0 (mos7)"); if (Vbseff < 0.0) { // redefinition Vbseff = d->vbs; dVbseff_dVb = 1.0; }else{ Vbseff = t->phi - Phis; dVbseff_dVb = -dPhis_dVb; } trace1("old value replaced", dVth_dVb); double Vfb = s->vfbcv; // possible improper redefinition later double Vth = Vfb + t->phi + t->k1 * sqrtPhis; dVth_dVb = t->k1 * dsqrtPhis_dVb; // redefinition double Vgst = Vgs_eff - Vth; //double dVgst_dVb = -dVth_dVb; //double dVgst_dVg = dVgs_eff_dVg; double CoxWL = m->cox * s->weffCV * s->leffCV; double Arg1 = Vgs_eff - Vbseff - Vfb; trace3("", Vfb, Vth, dVth_dVb); trace3("", Vgst, CoxWL, Arg1); // ends 1618 this 1328 if (Arg1 <= 0.0) { trace0("Arg1 <= 0.0"); d->qgate = CoxWL * Arg1; d->cggb = CoxWL * dVgs_eff_dVg; d->cgdb = 0.0; d->cgsb = CoxWL * (dVbseff_dVb - dVgs_eff_dVg); d->qbulk = -d->qgate; d->cbgb = -CoxWL * dVgs_eff_dVg; d->cbdb = 0.0; d->cbsb = -d->cgsb; d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; }else if (Vgst <= 0.0) { trace0("Vgst <= 0.0"); double T1 = 0.5 * t->k1; double T2 = sqrt(T1 * T1 + Arg1); double T0 = CoxWL * T1 / T2; d->qgate = CoxWL * t->k1 * (T2 - T1); d->cggb = T0 * dVgs_eff_dVg; d->cgdb = 0.0; d->cgsb = T0 * (dVbseff_dVb - dVgs_eff_dVg); d->qbulk = -d->qgate; d->cbgb = -d->cggb; d->cbdb = 0.0; d->cbsb = -d->cgsb; d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; }else{ trace0("!(Arg1 <= 0.0 || Vgst <= 0.0)"); double One_Third_CoxWL = CoxWL / 3.0; double Two_Third_CoxWL = 2.0 * One_Third_CoxWL; // redefine Vdsat, dVdsat_dVg, dVdsat_dVb { double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; Vdsat = Vgst / AbulkCV; dVdsat_dVg = dVgs_eff_dVg / AbulkCV; dVdsat_dVb = - (Vdsat * dAbulkCV_dVb + dVth_dVb)/ AbulkCV; } if (m->xpart > 0.5) { /* 0/100 Charge petition model */ if (d->vds >= Vdsat) { /* saturation region */ double T1 = Vdsat / 3.0; double T2 = -One_Third_CoxWL * dVdsat_dVb; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - T1); d->cggb = One_Third_CoxWL * (3.0 - dVdsat_dVg) * dVgs_eff_dVg; d->cgsb = -(d->cggb + T2); d->cgdb = 0.0; double T2a = -Two_Third_CoxWL * Vgst; double T3 = -(T2 + Two_Third_CoxWL * dVth_dVb); d->qbulk = -(d->qgate + T2a); d->cbgb = -(d->cggb - Two_Third_CoxWL * dVgs_eff_dVg); d->cbsb = -(d->cbgb + T3); d->cbdb = 0.0; d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; }else{ /* linear region */ double Alphaz = Vgst / Vdsat; double T1 = 2.0 * Vdsat - d->vds; double T2 = d->vds / (3.0 * T1); double T3 = T2 * d->vds; double T9 = 0.25 * CoxWL; double T4 = T9 * Alphaz; double T7 = 2.0 * d->vds - T1 - 3.0 * T3; double T8 = T3 - T1 - 2.0 * d->vds; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - 0.5 * (d->vds-T3)); double T10 = T4 * T8; d->qdrn = T4 * T7; d->qbulk = -(d->qgate + d->qdrn + T10); double T5 = T3 / T1; d->cggb = CoxWL * (1.0 - T5 * dVdsat_dVg) * dVgs_eff_dVg; double T11 = -CoxWL * T5 * dVdsat_dVb; d->cgdb = CoxWL * (T2 - 0.5 + 0.5 * T5); d->cgsb = -(d->cggb + T11 + d->cgdb); double T6 = 1.0 / Vdsat; double dAlphaz_dVg = T6 * (1.0 - Alphaz * dVdsat_dVg); double dAlphaz_dVb = -T6 * (dVth_dVb + Alphaz * dVdsat_dVb); T7 = T9 * T7; T8 = T9 * T8; T9 = 2.0 * T4 * (1.0 - 3.0 * T5); d->cdgb = (T7 * dAlphaz_dVg - T9 * dVdsat_dVg) * dVgs_eff_dVg; double T12 = T7 * dAlphaz_dVb - T9 * dVdsat_dVb; d->cddb = T4 * (3.0 - 6.0 * T2 - 3.0 * T5); d->cdsb = -(d->cdgb + T12 + d->cddb); T9 = 2.0 * T4 * (1.0 + T5); T10 = (T8 * dAlphaz_dVg - T9 * dVdsat_dVg) * dVgs_eff_dVg; T11 = T8 * dAlphaz_dVb - T9 * dVdsat_dVb; T12 = T4 * (2.0 * T2 + T5 - 1.0); double T0 = -(T10 + T11 + T12); d->cbgb = -(d->cggb + d->cdgb + T10); d->cbdb = -(d->cgdb + d->cddb + T12); d->cbsb = -(d->cgsb + d->cdsb + T0); } }else if (m->xpart < 0.5) { /* 40/60 Charge petition model */ if (d->vds >= Vdsat) { /* saturation region */ double T1 = Vdsat / 3.0; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - T1); double T2 = -Two_Third_CoxWL * Vgst; d->qbulk = -(d->qgate + T2); d->qdrn = 0.4 * T2; d->cggb = One_Third_CoxWL * (3.0 - dVdsat_dVg) * dVgs_eff_dVg; T2 = -One_Third_CoxWL * dVdsat_dVb; d->cgsb = -(d->cggb + T2); d->cgdb = 0.0; double T3 = 0.4 * Two_Third_CoxWL; d->cdgb = -T3 * dVgs_eff_dVg; d->cddb = 0.0; double T4 = T3 * dVth_dVb; d->cdsb = -(T4 + d->cdgb); d->cbgb = -(d->cggb - Two_Third_CoxWL * dVgs_eff_dVg); T3 = -(T2 + Two_Third_CoxWL * dVth_dVb); d->cbsb = -(d->cbgb + T3); d->cbdb = 0.0; }else{ /* linear region */ double T1 = 2.0 * Vdsat - d->vds; double T2 = d->vds / (3.0 * T1); double T3 = T2 * d->vds; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - 0.5 * (d->vds - T3)); double T5 = T3 / T1; d->cggb = CoxWL * (1.0 - T5 * dVdsat_dVg) * dVgs_eff_dVg; double tmp = -CoxWL * T5 * dVdsat_dVb; d->cgdb = CoxWL * (T2 - 0.5 + 0.5 * T5); d->cgsb = -(d->cggb + d->cgdb + tmp); double T6 = 1.0 / Vdsat; double Alphaz = T6 * Vgst; double dAlphaz_dVg = T6 * (1.0 - Alphaz * dVdsat_dVg); double dAlphaz_dVb = -T6 * (dVth_dVb + Alphaz * dVdsat_dVb); T6 = 8.0 * Vdsat * Vdsat - 6.0 * Vdsat * d->vds + 1.2 * d->vds * d->vds; double T8 = T2 / T1; double T7 = d->vds - T1 - T8 * T6; double T9 = 0.25 * CoxWL; double T4 = T9 * Alphaz; d->qdrn = T4 * T7; T7 *= T9; tmp = T8 / T1; double tmp1 = T4 * (2.0 - 4.0 * tmp * T6 + T8 * (16.0 * Vdsat - 6.0 * d->vds)); d->cdgb = (T7 * dAlphaz_dVg - tmp1 * dVdsat_dVg) * dVgs_eff_dVg; double T10 = T7 * dAlphaz_dVb - tmp1 * dVdsat_dVb; d->cddb = T4 * (2.0 - (1.0 / (3.0 * T1 * T1) + 2.0 * tmp) * T6 + T8 * (6.0 * Vdsat - 2.4 * d->vds)); d->cdsb = -(d->cdgb + T10 + d->cddb); T7 = 2.0 * (T1 + T3); d->qbulk = -(d->qgate - T4 * T7); T7 *= T9; double T0 = 4.0 * T4 * (1.0 - T5); double T12 = (-T7 * dAlphaz_dVg - d->cdgb - T0 * dVdsat_dVg) * dVgs_eff_dVg; double T11 = -T7 * dAlphaz_dVb - T10 - T0 * dVdsat_dVb; T10 = -4.0 * T4 * (T2 - 0.5 + 0.5 * T5) - d->cddb; tmp = -(T10 + T11 + T12); d->cbgb = -(d->cggb + d->cdgb + T12); d->cbdb = -(d->cgdb + d->cddb + T11); d->cbsb = -(d->cgsb + d->cdsb + tmp); trace3("0,40/60,lin", T10, T11, T12); trace3("0,40/60,lin", d->cbgb, d->cbdb, d->cbsb); } }else{ /* 50/50 partitioning */ if (d->vds >= Vdsat) { /* saturation region */ double T1 = Vdsat / 3.0; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - T1); double T2 = -Two_Third_CoxWL * Vgst; d->qbulk = -(d->qgate + T2); d->qdrn = 0.5 * T2; T2 = -One_Third_CoxWL * dVdsat_dVb; d->cggb = One_Third_CoxWL * (3.0 - dVdsat_dVg) * dVgs_eff_dVg; d->cgsb = -(d->cggb + T2); d->cgdb = 0.0; double T4 = One_Third_CoxWL * dVth_dVb; d->cdgb = -One_Third_CoxWL * dVgs_eff_dVg; d->cddb = 0.0; d->cdsb = -(T4 + d->cdgb); double T3 = -(T2 + Two_Third_CoxWL * dVth_dVb); d->cbgb = -(d->cggb - Two_Third_CoxWL * dVgs_eff_dVg); d->cbsb = -(d->cbgb + T3); d->cbdb = 0.0; }else{ /* linear region */ double T1 = 2.0 * Vdsat - d->vds; double T2 = d->vds / (3.0 * T1); double T3 = T2 * d->vds; double T5 = T3 / T1; double tmp = -CoxWL * T5 * dVdsat_dVb; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - 0.5 * (d->vds-T3)); d->cggb = CoxWL * (1.0 - T5 * dVdsat_dVg) * dVgs_eff_dVg; d->cgdb = CoxWL * (T2 - 0.5 + 0.5 * T5); d->cgsb = -(d->cggb + d->cgdb + tmp); double T6 = 1.0 / Vdsat; double Alphaz = T6 * Vgst; double dAlphaz_dVg = T6 * (1.0 - Alphaz * dVdsat_dVg); double dAlphaz_dVb = -T6 * (dVth_dVb + Alphaz * dVdsat_dVb); double T9 = 0.25 * CoxWL; double T4 = T9 * Alphaz; double T7 = T1 + T3; d->qdrn = -T4 * T7; d->qbulk = - (d->qgate + d->qdrn + d->qdrn); T7 *= T9; double T0 = T4 * (2.0 * T5 - 2.0); double T12 = T0 * dVdsat_dVb - T7 * dAlphaz_dVb; d->cdgb = (T0 * dVdsat_dVg - T7 * dAlphaz_dVg) * dVgs_eff_dVg; d->cddb = T4 * (1.0 - 2.0 * T2 - T5); d->cdsb = -(d->cdgb + T12 + d->cddb); d->cbgb = -(d->cggb + 2.0 * d->cdgb); d->cbdb = -(d->cgdb + 2.0 * d->cddb); d->cbsb = -(d->cgsb + 2.0 * d->cdsb); } } } // begins 1328 this 1618 trace0("end capMod == 0"); // end of else if (m->capMod == 0) line 1454 this 1709 }else{ trace0("begin capMod != 0 (mos7)"); assert(m->capMod != 0); double qsrc; double VbseffCV, dVbseffCV_dVb; if (Vbseff < 0.0) { VbseffCV = Vbseff; dVbseffCV_dVb = 1.0; }else{ VbseffCV = t->phi - Phis; dVbseffCV_dVb = -dPhis_dVb; } trace2("", VbseffCV, dVbseffCV_dVb); //double Vth = d->von; // possibly wrong value -- scope problem double Vfb = d->von - t->phi - t->k1 * sqrtPhis; double dVfb_dVb = 0.;//////dVth_dVb - t->k1 * dsqrtPhis_dVb; double dVfb_dVd = 0.;//////dVth_dVd; //double Vgst = Vgs_eff - d->von; //trace3("", d->vgst, Vgst, VgstNVt); trace2("", n, t->vtm); double Vgsteff; { if ((VgstNVt > -EXP_THRESHOLD) && (VgstNVt < EXP_THRESHOLD)) { trace0("VgstNVt in range"); assert(ExpVgst != NOT_VALID); ExpVgst *= ExpVgst; ExpVgst = exp(VgstNVt); ////// test trace1("", ExpVgst); Vgsteff = n * t->vtm * log(1.0 + ExpVgst); dVgsteff_dVg = ExpVgst / (1.0 + ExpVgst); dVgsteff_dVd = -dVgsteff_dVg * (dVth_dVd + (Vgs_eff - d->von) / n * dn_dVd) + Vgsteff / n * dn_dVd; dVgsteff_dVb = -dVgsteff_dVg * (dVth_dVb + (Vgs_eff - d->von) / n * dn_dVb) + Vgsteff / n * dn_dVb; dVgsteff_dVg *= dVgs_eff_dVg; }else{ Vgsteff = d->vgst; } } trace4("", Vgsteff, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); double CoxWL = m->cox * s->weffCV * s->leffCV; // redundant?? if (m->capMod == 1) { double Cgg, Cgd, Cgb; { double Arg1 = Vgs_eff - VbseffCV - Vfb - Vgsteff; if (Arg1 <= 0.0) { d->qgate = CoxWL * Arg1; Cgg = CoxWL * (dVgs_eff_dVg - dVgsteff_dVg); Cgd = -CoxWL * (dVfb_dVd + dVgsteff_dVd); Cgb = -CoxWL * (dVfb_dVb + dVbseffCV_dVb + dVgsteff_dVb); }else{ double T0 = 0.5 * t->k1; double T1 = sqrt(T0 * T0 + Arg1); double T2 = CoxWL * T0 / T1; d->qgate = CoxWL * t->k1 * (T1 - T0); Cgg = T2 * (dVgs_eff_dVg - dVgsteff_dVg); Cgd = -T2 * (dVfb_dVd + dVgsteff_dVd); Cgb = -T2 * (dVfb_dVb + dVbseffCV_dVb + dVgsteff_dVb); } } d->qbulk = -d->qgate; double Cbg = -Cgg; double Cbd = -Cgd; double Cbb = -Cgb; double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; double Csg, Csb, Csd; { double VdsatCV = Vgsteff / AbulkCV; if (VdsatCV < d->vds) { double One_Third_CoxWL = CoxWL / 3.0; double Two_Third_CoxWL = 2.0 * One_Third_CoxWL; double dVdsatCV_dVg = 1.0 / AbulkCV; double dVdsatCV_dVb = -VdsatCV * dAbulkCV_dVb / AbulkCV; { double T0 = Vgsteff - VdsatCV / 3.0; double dT0_dVg = 1.0 - dVdsatCV_dVg / 3.0; double dT0_dVb = -dVdsatCV_dVb / 3.0; d->qgate += CoxWL * T0; double Cgg1 = CoxWL * dT0_dVg; double Cgb1 = CoxWL * dT0_dVb + Cgg1 * dVgsteff_dVb; double Cgd1 = Cgg1 * dVgsteff_dVd; Cgg1 *= dVgsteff_dVg; Cgg += Cgg1; Cgb += Cgb1; Cgd += Cgd1; } { double T0 = VdsatCV - Vgsteff; double dT0_dVg = dVdsatCV_dVg - 1.0; double dT0_dVb = dVdsatCV_dVb; d->qbulk += One_Third_CoxWL * T0; double Cbg1 = One_Third_CoxWL * dT0_dVg; double Cbb1 = One_Third_CoxWL * dT0_dVb + Cbg1 * dVgsteff_dVb; double Cbd1 = Cbg1 * dVgsteff_dVd; Cbg1 *= dVgsteff_dVg; Cbg += Cbg1; Cbb += Cbb1; Cbd += Cbd1; } double T0; if (m->xpart > 0.5) { T0 = -Two_Third_CoxWL; }else if (m->xpart < 0.5) { T0 = -0.4 * CoxWL; }else{ T0 = -One_Third_CoxWL; } qsrc = T0 * Vgsteff; Csg = T0 * dVgsteff_dVg; Csb = T0 * dVgsteff_dVb; Csd = T0 * dVgsteff_dVd; Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; }else{ double T0 = AbulkCV * d->vds; double T1 = 12.0 * (Vgsteff - 0.5 * T0 + 1.e-20); double Cgg1, Cgb1, Cgd1, Cbg1, Cbb1, Cbd1; { double T2 = d->vds / T1; double T3 = T0 * T2; double dT3_dVg = -12.0 * T2 * T2 * AbulkCV; double dT3_dVd = 6.0 * T0 * (4.0*Vgsteff - T0) / T1 / T1 - 0.5; double dT3_dVb = 12.0 * T2 * T2 * dAbulkCV_dVb * Vgsteff; d->qgate += CoxWL * (Vgsteff - 0.5 * d->vds + T3); Cgg1 = CoxWL * (1.0 + dT3_dVg); Cgb1 = CoxWL * dT3_dVb + Cgg1 * dVgsteff_dVb; Cgd1 = CoxWL * dT3_dVd + Cgg1 * dVgsteff_dVd; Cgg1 *= dVgsteff_dVg; Cgg += Cgg1; Cgb += Cgb1; Cgd += Cgd1; d->qbulk += CoxWL * (1.0 - AbulkCV) * (0.5 * d->vds - T3); Cbg1 = -CoxWL * ((1.0 - AbulkCV) * dT3_dVg); Cbb1 = -CoxWL * ((1.0 - AbulkCV) * dT3_dVb + (0.5 * d->vds - T3) * dAbulkCV_dVb) + Cbg1 * dVgsteff_dVb; Cbd1 = -CoxWL * (1.0 - AbulkCV) * dT3_dVd + Cbg1 * dVgsteff_dVd; Cbg1 *= dVgsteff_dVg; Cbg += Cbg1; Cbb += Cbb1; Cbd += Cbd1; } if (m->xpart > 0.5) { /* 0/100 Charge petition model */ T1 = T1 + T1; qsrc = -CoxWL * (0.5 * Vgsteff + 0.25 * T0 - T0 * T0 / T1); Csg = -CoxWL * (0.5 + 24.0 * T0 * d->vds / T1 / T1 * AbulkCV); Csb = -CoxWL * (0.25 * d->vds * dAbulkCV_dVb - 12.0 * T0 * d->vds / T1 / T1 * (4.0 * Vgsteff - T0) * dAbulkCV_dVb) + Csg * dVgsteff_dVb; Csd = -CoxWL * (0.25 * AbulkCV - 12.0 * AbulkCV * T0 / T1 / T1 * (4.0 * Vgsteff - T0)) + Csg * dVgsteff_dVd; Csg *= dVgsteff_dVg; }else if (m->xpart < 0.5) { /* 40/60 Charge petition model */ T1 = T1 / 12.0; double T2 = 0.5 * CoxWL / (T1 * T1); double T3 = Vgsteff * (2.0 * T0 * T0 / 3.0 + Vgsteff * (Vgsteff - 4.0 * T0 / 3.0)) - 2.0 * T0 * T0 * T0 / 15.0; qsrc = -T2 * T3; double T4 = 4.0 / 3.0 * Vgsteff * (Vgsteff-T0) + 0.4 * T0 * T0; Csg = -2.0 * qsrc / T1 - T2 * (Vgsteff * (3.0 * Vgsteff - 8.0 * T0 / 3.0) + 2.0 * T0 * T0 / 3.0); Csb = (qsrc / T1 * d->vds + T2 * T4 * d->vds) * dAbulkCV_dVb + Csg * dVgsteff_dVb; Csd = (qsrc / T1 + T2 * T4) * AbulkCV + Csg * dVgsteff_dVd; Csg *= dVgsteff_dVg; }else{ /* 50/50 Charge petition model */ qsrc = -0.5 * (d->qgate + d->qbulk); Csg = -0.5 * (Cgg1 + Cbg1); Csb = -0.5 * (Cgb1 + Cbb1); Csd = -0.5 * (Cgd1 + Cbd1); } Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; } } d->qdrn = -(d->qgate + d->qbulk + qsrc); d->cggb = Cgg; d->cgsb = -(Cgg + Cgd + Cgb); d->cgdb = Cgd; d->cdgb = -(Cgg + Cbg + Csg); d->cdsb = (Cgg + Cgd + Cgb + Cbg + Cbd + Cbb + Csg + Csd + Csb); d->cddb = -(Cgd + Cbd + Csd); d->cbgb = Cbg; d->cbsb = -(Cbg + Cbd + Cbb); d->cbdb = Cbd; trace0("end capMod == 1"); }else if (m->capMod == 2) { trace0("begin capMod == 2"); double Qac0, dQac0_dVg, dQac0_dVd, dQac0_dVb; double Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb; { double Vfbeff, dVfbeff_dVd, dVfbeff_dVg, dVfbeff_dVb; { const double DELTA_3 = 0.02; double V3 = Vfb - Vgs_eff + VbseffCV - DELTA_3; double T0, T2; if (Vfb <= 0.0) { T0 = sqrt(V3 * V3 - 4.0 * DELTA_3 * Vfb); T2 = -DELTA_3 / T0; }else{ T0 = sqrt(V3 * V3 + 4.0 * DELTA_3 * Vfb); T2 = DELTA_3 / T0; } double T1 = 0.5 * (1.0 + V3 / T0); Vfbeff = Vfb - 0.5 * (V3 + T0); dVfbeff_dVd = (1.0 - T1 - T2) * dVfb_dVd; dVfbeff_dVg = T1 * dVgs_eff_dVg; dVfbeff_dVb = (1.0 - T1 - T2) * dVfb_dVb - T1 * dVbseffCV_dVb; } trace3("", Vfbeff, dVfbeff_dVg, dVfbeff_dVb); trace1("", dVfbeff_dVd); //double Qac0, dQac0_dVg, dQac0_dVd, dQac0_dVb; { Qac0 = CoxWL * (Vfbeff - Vfb); dQac0_dVg = CoxWL * dVfbeff_dVg; dQac0_dVd = CoxWL * (dVfbeff_dVd - dVfb_dVd); dQac0_dVb = CoxWL * (dVfbeff_dVb - dVfb_dVb); } //double Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb; { double T0 = 0.5 * t->k1; double T3 = Vgs_eff - Vfbeff - VbseffCV - Vgsteff; double T1, T2; if (t->k1 == 0.0) { T1 = 0.0; T2 = 0.0; }else if (T3 < 0.0) { T1 = T0 + T3 / t->k1; T2 = CoxWL; }else{ T1 = sqrt(T0 * T0 + T3); T2 = CoxWL * T0 / T1; } Qsub0 = CoxWL * t->k1 * (T1 - T0); dQsub0_dVg = T2 * (dVgs_eff_dVg - dVfbeff_dVg - dVgsteff_dVg); dQsub0_dVd = -T2 * (dVfbeff_dVd + dVgsteff_dVd); dQsub0_dVb = -T2 * (dVfbeff_dVb +dVbseffCV_dVb +dVgsteff_dVb); } } trace3("", Qac0, dQac0_dVg, dQac0_dVb); trace1("", dQac0_dVd); trace4("", Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb); double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; trace2("", AbulkCV, dAbulkCV_dVb); double VdseffCV, dVdseffCV_dVg, dVdseffCV_dVd, dVdseffCV_dVb; { const double DELTA_4 = 0.02; double VdsatCV = Vgsteff / AbulkCV; double V4 = VdsatCV - d->vds - DELTA_4; double T0 = sqrt(V4 * V4 + 4.0 * DELTA_4 * VdsatCV); VdseffCV = VdsatCV - 0.5 * (V4 + T0); double T1 = 0.5 * (1.0 + V4 / T0); double T2 = DELTA_4 / T0; double T3 = (1.0 - T1 - T2) / AbulkCV; dVdseffCV_dVg = T3; dVdseffCV_dVd = T1; dVdseffCV_dVb = -T3 * VdsatCV * dAbulkCV_dVb; } trace4("", VdseffCV, dVdseffCV_dVg, dVdseffCV_dVd, dVdseffCV_dVb); double T0 = AbulkCV * VdseffCV; double T1 = 12.0 * (Vgsteff - 0.5 * T0 + 1e-20); trace2("", T0, T1); double Cgg1, Cgd1, Cgb1, Cbg1, Cbd1, Cbb1; // also 1st estimate of d->qgate, d->qbulk { double T2 = VdseffCV / T1; double T3 = T0 * T2; double T4 = (1.0 - 12.0 * T2 * T2 * AbulkCV); double T5 = (6.0 * T0 * (4.0 * Vgsteff - T0) / (T1 * T1) - 0.5); double T6 = 12.0 * T2 * T2 * Vgsteff; d->qgate = CoxWL * (Vgsteff - 0.5 * VdseffCV + T3); Cgg1 = CoxWL * (T4 + T5 * dVdseffCV_dVg); Cgd1 = CoxWL * T5 * dVdseffCV_dVd + Cgg1 * dVgsteff_dVd; Cgb1 = CoxWL * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Cgg1 * dVgsteff_dVb; Cgg1 *= dVgsteff_dVg; double T7 = 1.0 - AbulkCV; d->qbulk = CoxWL * T7 * (0.5 * VdseffCV - T3); T4 = -T7 * (T4 - 1.0); T5 = -T7 * T5; T6 = -(T7 * T6 + (0.5 * VdseffCV - T3)); Cbg1 = CoxWL * (T4 + T5 * dVdseffCV_dVg); Cbd1 = CoxWL * T5 * dVdseffCV_dVd + Cbg1 * dVgsteff_dVd; Cbb1 = CoxWL * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Cbg1 * dVgsteff_dVb; Cbg1 *= dVgsteff_dVg; } trace3("", Cgg1, Cgd1, Cgb1); trace3("", Cbg1, Cbd1, Cbb1); trace2("2-1", d->qgate, d->qbulk); double Csg, Csd, Csb; trace1("", m->xpart); if (m->xpart > 0.5) { trace0("0/100 Charge petition model"); T1 = T1 + T1; qsrc = -CoxWL * (0.5 * Vgsteff + 0.25 * T0 - T0 * T0 / T1); double T7 = (4.0 * Vgsteff - T0) / (T1 * T1); double T4 = -(0.5 + 24.0 * T0 * T0 / (T1 * T1)); double T5 = -(0.25 * AbulkCV - 12.0 * AbulkCV * T0 * T7); double T6 = -(0.25 * VdseffCV - 12.0 * T0 * VdseffCV * T7); Csg = CoxWL * (T4 + T5 * dVdseffCV_dVg); Csd = CoxWL * T5 * dVdseffCV_dVd + Csg * dVgsteff_dVd; Csb = CoxWL * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Csg * dVgsteff_dVb; Csg *= dVgsteff_dVg; }else if (m->xpart < 0.5) { trace0("40/60 Charge petition model"); T1 = T1 / 12.0; double T2 = 0.5 * CoxWL / (T1 * T1); double T3 = Vgsteff * (2.0 * T0 * T0 / 3.0 + Vgsteff * (Vgsteff - 4.0 * T0 / 3.0)) - 2.0 * T0 * T0 * T0 / 15.0; qsrc = -T2 * T3; double T7 = 4.0 / 3.0 * Vgsteff * (Vgsteff - T0) + 0.4 * T0 * T0; double T4 = -2.0 * qsrc / T1 - T2 * (Vgsteff * (3.0 * Vgsteff - 8.0 * T0 / 3.0) + 2.0 * T0 * T0 / 3.0); double T5 = (qsrc / T1 + T2 * T7) * AbulkCV; double T6 = (qsrc / T1 * VdseffCV + T2 * T7 * VdseffCV); Csg = (T4 + T5 * dVdseffCV_dVg); Csd = T5 * dVdseffCV_dVd + Csg * dVgsteff_dVd; Csb = (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Csg * dVgsteff_dVb; Csg *= dVgsteff_dVg; }else{ trace0("50/50 Charge petition model"); qsrc = -0.5 * (d->qgate + d->qbulk); Csg = -0.5 * (Cgg1 + Cbg1); Csb = -0.5 * (Cgb1 + Cbb1); Csd = -0.5 * (Cgd1 + Cbd1); } trace4("", Csg, Csd, Csb, qsrc); d->qgate += Qac0 + Qsub0; d->qbulk -= (Qac0 + Qsub0); d->qdrn = -(d->qgate + d->qbulk + qsrc); trace3("2-2", d->qgate, d->qbulk, d->qdrn); double Cgg = dQac0_dVg + dQsub0_dVg + Cgg1; double Cgd = dQac0_dVd + dQsub0_dVd + Cgd1; double Cgb = dQac0_dVb + dQsub0_dVb + Cgb1; trace3("", Cgg, Cgd, Cgb); double Cbg = Cbg1 - dQac0_dVg - dQsub0_dVg; double Cbd = Cbd1 - dQac0_dVd - dQsub0_dVd; double Cbb = Cbb1 - dQac0_dVb - dQsub0_dVb; trace3("", Cbg, Cbd, Cbb); Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; trace3("adjusted", Cgb, Cbb, Csb); d->cggb = Cgg; d->cgsb = -(Cgg + Cgd + Cgb); d->cgdb = Cgd; d->cdgb = -(Cgg + Cbg + Csg); d->cdsb = (Cgg + Cgd + Cgb + Cbg + Cbd + Cbb + Csg + Csd + Csb); d->cddb = -(Cgd + Cbd + Csd); d->cbgb = Cbg; d->cbsb = -(Cbg + Cbd + Cbb); d->cbdb = Cbd; trace0("end capMod == 2"); }else{ error(bDANGER, "illegal capmod = %d\n", int(m->capMod)); d->qbulk = d->qgate = NOT_VALID; } /* Non-quasi-static Model */ double tconst; if (m->nqsMod) { // d->gtau double qcheq = -d->qbulk - d->qgate; double T0 = s->leffCV * s->leffCV; tconst = t->u0temp * s->elm / CoxWL / T0; if (qcheq == 0.0) { tconst = 0.0; }else if (qcheq < 0.0) { tconst = -tconst; }else{ } double gtau_drift = std::abs(tconst * qcheq); double gtau_diff = 16.0 * t->u0temp * t->vtm / T0; d->gtau = gtau_drift + gtau_diff; d->cqgb = -(d->cggb + d->cbgb); d->cqdb = -(d->cgdb + d->cbdb); d->cqsb = -(d->cgsb + d->cbsb); d->cqbb = d->cggb +d->cgdb +d->cgsb +d->cbgb +d->cbdb +d->cbsb; d->qbulk = d->qgate = d->qdrn = qsrc = 0.0; d->cggb = d->cgsb = d->cgdb = 0.0; d->cdgb = d->cdsb = d->cddb = 0.0; d->cbgb = d->cbsb = d->cbdb = 0.0; #if 0 *(ckt->CKTstate0 + d->qcheq) = qcheq; if (ckt->CKTmode & MODEINITTRAN) *(ckt->CKTstate1 + d->qcheq) = *(ckt->CKTstate0 + d->qcheq); error = NIintegrate(ckt, &geq, &ceq, 0.0, d->qcheq); if (error) return (error); #endif }else{ d->gtau = 0.0; d->cqgb = d->cqdb = d->cqsb = d->cqbb = 0.0; } } } trace0("mos7"); trace3("", d->qgate, d->qdrn, d->qbulk); trace3("", d->cggb, d->cgsb, d->cgdb); trace3("", d->cdgb, d->cdsb, d->cddb); trace3("", d->cbgb, d->cbsb, d->cbdb); trace2("", d->ids, d->gds); trace4("", d->gmf, d->gmr, d->gmbf, d->gmbr); //trace4("", d->isub, d->gbbs, d->gbgs, d->gbds); trace4("", d->qgate, d->cggb, d->cgsb, d->cgdb); trace4("", d->qdrn, d->cdgb, d->cdsb, d->cddb); trace4("", d->qbulk, d->cbgb, d->cbsb, d->cbdb); trace1("", d->gtau); trace4("", d->cqgb, d->cqsb, d->cqdb, d->cqbb); //trace1("", d->tconst); //trace2("", d->cgb, d->qgb); //trace2("", d->qgd, d->cgd); trace2("", d->qgs, d->cgs); trace3("", d->vgs, d->vds, d->vbs); trace3("", d->vdsat, d->vgst, d->von); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos8.model000066400000000000000000002725061316501211100142370ustar00rootroot00000000000000/* $Id: d_mos8.model $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Berkeley BSIM3v3.3 model ********** derived from......... * Copyright 2004 Regents of the University of California. All rights reserved. * File: b3ld.c of BSIM3v3.3.0 * Author: 1991 JianHui Huang and Min-Chie Jeng. * Modified by Mansun Chan (1995). * Author: 1997-1999 Weidong Liu. * Author: 2001 Xuemei Xi * Modified by Xuemei Xi, 10/05, 12/21, 2001. * Modified by Xuemei Xi, 07/29/2005. ********** * Recoded for Gnucap model compiler, Al Davis, 2006 */ h_headers { #include "d_mos_base.h" } cc_headers { #include "l_compar.h" #include "l_denoise.h" } /*--------------------------------------------------------------------------*/ /* from diode no fc??? double bulkJctPotential "Source/drain junction built-in potential" name=PB default=1.0; double unitAreaJctCap "Source/drain bottom junction capacitance per unit area" name=CJ default=5.0E-4; double bulkJctBotGradingCoeff "Source/drain bottom junction capacitance grading coefficient" name=MJ default=0.5; double sidewallJctPotential "Source/drain sw junction capacitance built in potential" name=PBSW default=1.0; double unitLengthSidewallJctCap "Source/drain sw junction capacitance per unit periphery" name=CJSW default=5.0E-10; double bulkJctSideGradingCoeff "Source/drain sw junction capacitance grading coefficient" name=MJSW default=0.33; double kf "Flicker noise coefficient" name=KF default=0.0; double af "Flicker noise exponent" name=AF default=1.0; from mos_base no is??? double jctSatCurDensity "Source/drain junction reverse saturation current density" name=JS default=1.0E-4; double sheetResistance "Source-drain sheet resistance" name=RSH default=0.0; no rd??? no rs??? no cbd??? no cbs??? double cgso "Gate-source overlap capacitance per width" "CGSO default=NA; double cgdo "Gate-drain overlap capacitance per width" name=CGDO default=NA; double cgbo "Gate-bulk overlap capacitance per length" name=CGBO default=NA; */ model BUILT_IN_MOS8 { level 8 public_keys { nmos8 polarity=pN; pmos8 polarity=pP; nmos49 polarity=pN; pmos49 polarity=pP; } dev_type BUILT_IN_MOS; inherit BUILT_IN_MOS_BASE; independent { override { double mjsw "" final_default=.33; double pb "" final_default=1.0 quiet_min=0.1; double pbsw "" final_default=pb quiet_min=0.1; double cjo "" default=5.0E-4; double cgdo "" final_default="(((dlc != NA) && (dlc > 0.0)) ? dlc * cox - cgdl.nom() : 0.6 * xj.nom() * cox)"; double cgso "" final_default="(((dlc != NA) && (dlc > 0.0)) ? dlc * cox - cgsl.nom() : 0.6 * xj.nom() * cox)"; double cgbo "" final_default="((dwc != NA) ? 2.0 * dwc * cox : 2.0 * Wint * cox)"; /* assumes cg?? final_default is BEFORE d?c final_default */ int cmodel "CMODEL" print_test="cmodel!=0" calculate="((!cmodel)?0:cmodel)"; bool needs_isub "" calculate="(alpha0.nom()!=0.)"; int mos_level "back-annotate for diode" name=DIODElevel print_test="mos_level != LEVEL" default=LEVEL; } raw_parameters { int capMod "Capacitance model selector (0, 1, 2, other?)" name=CAPMOD default=3; int nqsMod "Non-quasi-static model selector (0, !0)" name=NQSMOD default=0; int mobMod "Mobility model selector (1,2,3,other?)" name=MOBMOD default=1; int noiMod "Noise model selector (not used)" name=NOIMOD default=1; int paramChk "Model parameter checking selector (not used)" name=PARAMCHK default=0; int binUnit "Bin unit selector (1, !1)" name=BINUNIT default=1; double version "parameter for model version (not used)" name=VERSION default=3.3; double tox "Gate oxide thickness in meters" name=TOX default=150.0e-10; double xpart "Channel charge partitioning" name=XPART default=0.0; double jctSidewallSatCurDensity "Sidewall junction reverse saturation current density" name=JSW default=0.0; double mjswg "Source/drain (gate side) sw junction capacitance grading coefficient" name=MJSWG default=NA final_default=mjsw; double pbswg "Source/drain (gate side) sw junction capacitance built in potential" name=PBSWG default=NA final_default=pbsw quiet_min=0.1; double unitLengthGateSidewallJctCap "Source/drain (gate side) sidewall junction capacitance per unit width" name=CJSWG default=NA final_default=cjsw; double jctEmissionCoeff "Source/drain junction emission coefficient" name=NJ default=1.0; double jctTempExponent "Junction current temperature exponent" name=XTI default=3.0; double Lint "Length reduction parameter" name=LINT default=0.0; double Ll "Length reduction parameter" name=LL default=0.0; double Lln "Length reduction parameter" name=LLN default=1.0; double Lw "Length reduction parameter" name=LW default=0.0; double Lwn "Length reduction parameter" name=LWN default=1.0; double Lwl "Length reduction parameter" name=LWL default=0.0; double Wint "Width reduction parameter" name=WINT default=0.0; double Wl "Width reduction parameter" name=WL default=0.0; double Wln "Width reduction parameter" name=WLN default=1.0; double Ww "Width reduction parameter" name=WW default=0.0; double Wwn "Width reduction parameter" name=WWN default=1.0; double Wwl "Width reduction parameter" name=WWL default=0.0; double dwc "Delta W for C-V model" name=DWC default=NA final_default=Wint; double dlc "Delta L for C-V model" name=DLC default=NA final_default=Lint; double noia "Flicker noise parameter, oxide trap density A" name=NOIA default=NA final_default="(polarity==pN) ? 1e20 : 9.9e18"; double noib "Flicker noise parameter, oxide trap density B" name=NOIB default=NA final_default="(polarity==pN) ? 5e4 : 2.4e3"; double noic "Flicker noise parameter, oxide trap density C" name=NOIC default=NA final_default="(polarity==pN) ?-1.4e-12 :1.4e-12"; double em "Flicker noise parameter V/m" name=EM default=4.1e7; double ef "Flicker noise frequency exponent" name=EF default=1.0; // version 3.3 int acnqsMod "AC NQS model selector" name=ACNQSMOD default=0 quiet_max=1; double toxm "Gate oxide thickness used in extraction" name=TOXM default=tox; double lintnoi "lint offset for noise calculation" name=LINTNOI default=0.0; double ijth "Diode limiting current" name=IJTH default=0.1; double tpb "Temperature coefficient of pb" name=TPB default=0.0; double tcj "Temperature coefficient of cj" name=TCJ default=0.0; double tpbsw "Temperature coefficient of pbsw" name=TPBSW default=0.0; double tcjsw "Temperature coefficient of cjsw" name=TCJSW default=0.0; double tpbswg "Temperature coefficient of pbswg" name=TPBSWG default=0.0; double tcjswg "Temperature coefficient of cjswg" name=TCJSWG default=0.0; double Llc "Length reduction parameter for CV" name=LLC default=Ll; double Lwc "Length reduction parameter for CV" name=LWC default=Lw; double Lwlc "Length reduction parameter for CV" name=LWLC default=Lwl; double Wlc "Width reduction parameter for CV" name=WLC default=Wl; double Wwc "Width reduction parameter for CV" name=WWC default=Ww; double Wwlc "Width reduction parameter for CV" name=WWLC default=Wwl; // level 49 parameters, probably dummy for now int acm "area calculation method, ignored" name=ACM default=10; } calculated_parameters { double cox; double factor1 "" calculate="sqrt(tox * P_EPS_SI / P_EPS_OX)"; double vt_at_tnom "" calculate="tnom_k * P_K_Q"; double ni "" calculate="(1.45e10 * (tnom_k / 300.15) * sqrt(tnom_k / 300.15) * exp(21.5565981 - egap / (2.0 * vt_at_tnom)))"; } code_pre { //tox = std::max(tox, 1e-20); cox = 3.453133e-11 / tox; } code_post { if (npeak.nom() > 1.0e20) { npeak.set_nom(npeak.nom() * 1.0e-6); } if (ngate.nom() > 1.0e23) { ngate.set_nom(ngate.nom() * 1.0e-6); } } } size_dependent { raw_parameters { double cdsc "Drain/Source and channel coupling capacitance Q/V/m^2" name=CDSC default=2.4e-4; double cdscb "Body-bias dependence of cdsc Q/V/m^2" name=CDSCB default=0.0; double cdscd "Drain-bias dependence of cdsc Q/V/m^2" name=CDSCD default=0.0; double cit "Interface state capacitance Q/V/m^2" name=CIT default=0.0; double nfactor "Subthreshold swing Coefficient" name=NFACTOR default=1; double xj "Junction depth in meters" name=XJ default=.15e-6; double vsat "Saturation velocity at tnom m/s" name=VSAT default=8.0e4; double at "Temperature coefficient of vsat m/s" name=AT default=3.3e4; double a0 "Non-uniform depletion width effect coefficient." name=A0 default=1.0; double ags "Gate bias coefficient of Abulk." name=AGS default=0.0; double a1 "Non-saturation effect coefficient" name=A1 default=0.0; double a2 "Non-saturation effect coefficient" name=A2 default=1.0; double keta "Body-bias coefficient of non-uniform depletion width effect. 1/v" name=KETA default=-0.047; double nsub "Substrate doping concentration 1/cm3" name=NSUB default=6.0e16; double npeak "Channel doping concentration 1/cm3" name=NCH default=NA; double ngate "Poly-gate doping concentration 1/cm3" name=NGATE default=0.0; double gamma1 "Vth body coefficient" name=GAMMA1 default=NA; double gamma2 "Vth body coefficient" name=GAMMA2 default=NA; double vbx "Vth transition body Voltage" name=VBX default=NA; double vbm "Maximum body voltage" name=VBM default=-3.0; double xt "Doping depth" name=XT default=1.55e-7; double k1 "Bulk effect coefficient 1" name=K1 default=NA; double kt1 "Temperature coefficient of Vth" name=KT1 default=-0.11; double kt1l "Temperature coefficient of Vth" name=KT1L default=0.0; double kt2 "Body-coefficient of kt1" name=KT2 default=0.022; double k2 "Bulk effect coefficient 2" name=K2 default=NA; double k3 "Narrow width effect coefficient" name=K3 default=80.0; double k3b "Body effect coefficient of k3" name=K3B default=0.0; double w0 "Narrow width effect parameter" name=W0 default=2.5e-6; double nlx "Lateral non-uniform doping effect" name=NLX default=1.74e-7; double dvt0 "Short channel effect coeff. 0" name=DVT0 default=2.2; double dvt1 "Short channel effect coeff. 1" name=DVT1 default=0.53; double dvt2 "Short channel effect coeff. 2 1/v" name=DVT2 default=-0.032; double dvt0w "Narrow Width coeff. 0" name=DVT0W default=0.0; double dvt1w "Narrow Width effect coeff. 1" name=DVT1W default=5.3e6; double dvt2w "Narrow Width effect coeff. 2" name=DVT2W default=-0.032; double drout "DIBL coefficient of output resistance" name=DROUT default=0.56; double dsub "DIBL coefficient in the subthreshold region" name=DSUB default=NA final_default="drout"; double vth0 "Threshold voltage" name=VTH0 default=NA final_default=NA; double ua1 "Temperature coefficient of ua m/v" name=UA1 default=4.31e-9; double ua "Linear gate dependence of mobility m/v" name=UA default=2.25e-9; double ub1 "Temperature coefficient of ub (m/V)**2" name=UB1 default=-7.61e-18; double ub "Quadratic gate dependence of mobility (m/V)**2" name=UB default=5.87e-19; double uc1 "Temperature coefficient of uc" name=UC1 default=NA final_default="((m->mobMod==3) ? -0.056 : -0.056e-9)"; double uc "Body-bias dependence of mobility" name=UC default=NA final_default="((m->mobMod==3) ? -0.0465 : -0.0465e-9)"; double u0 "Low-field mobility at Tnom" name=U0 default=NA final_default="((m->polarity == pN) ? 0.067 : 0.025)"; double ute "Temperature coefficient of mobility" name=UTE default=-1.5; double voff "Threshold voltage offset" name=VOFF default=-0.08; double delta "Effective Vds parameter" name=DELTA default=0.01; double rdsw "Source-drain resistance per width" name=RDSW default=0.0; double prwg "Gate-bias effect on parasitic resistance" name=PRWG default=0.0; double prwb "Body-effect on parasitic resistance" name=PRWB default=0.0; double prt "Temperature coefficient of parasitic resistance" name=PRT default=0.0; double eta0 "Subthreshold region DIBL coefficient" name=ETA0 default=0.08; double etab "Subthreshold region DIBL coefficient 1/v" name=ETAB default=-0.07; double pclm "Channel length modulation Coefficient" name=PCLM default=1.3; double pdibl1 "Drain-induced barrier lowering coefficient" name=PDIBLC1 default=.39; double pdibl2 "Drain-induced barrier lowering coefficient" name=PDIBLC2 default=0.0086; double pdiblb "Body-effect on drain-induced barrier lowering 1/v" name=PDIBLCB default=0.0; double pscbe1 "Substrate current body-effect coefficient" name=PSCBE1 default=4.24e8; double pscbe2 "Substrate current body-effect coefficient" name=PSCBE2 default=1.0e-5; double pvag "Gate dependence of output resistance parameter" name=PVAG default=0.0; double wr "Width dependence of rds" name=WR default=1.0; double dwg "Width reduction parameter" name=DWG default=0.0; double dwb "Width reduction parameter" name=DWB default=0.0; double b0 "Abulk narrow width parameter" name=B0 default=0.0; double b1 "Abulk narrow width parameter" name=B1 default=0.0; double alpha0 "substrate current model parameter" name=ALPHA0 default=0.0; double beta0 "substrate current model parameter" name=BETA0 default=30.0; /* CV model */ double elm "Non-quasi-static Elmore Constant Parameter" name=ELM default=5.0; double vfbcv "Flat Band Voltage parameter for capmod=0 only" name=VFBCV default=-1.0; double cgsl "New C-V model parameter" name=CGSL default=0.0; double cgdl "New C-V model parameter" name=CGDL default=0.0; double ckappa "New C-V model parameter" name=CKAPPA default=0.6; double cf "Fringe capacitance parameter" name=CF default=NA final_default="2.0 * P_EPS_OX / M_PI * log(1.0 + 0.4e-6 / m->tox)"; double clc "Vdsat parameter for C-V model" name=CLC default=0.1e-6; double cle "Vdsat parameter for C-V model" name=CLE default=0.6; // version 3.3 double vfb "Flat Band Voltage" name=VFB default=NA; double acde "Exponential coefficient for finite charge thickness, capmod=3" name=ACDE default=1.0 quiet_min=0.4 quiet_max=1.6; double moin "Coefficient for gate-bias dependent surface potential, capmod=3" name=MOIN default=15.0 quiet_min=5.0 quiet_max=25.0; double noff "C-V turn-on/off parameter, capmod=1,2,3" name=NOFF default=1.0 quiet_min=0.1 quiet_max=4.0; double voffcv "C-V lateral-shift parameter, capmod=1,2,3" name=VOFFCV default=0.0 quiet_min=-0.5 quiet_max=0.5; double alpha1 "substrate current model parameter" name=ALPHA1 default=0.0; } calculated_parameters { double dl; double dlc; double dw; double dwc; double leff; /* BUG:: why not reuse from super */ double weff; double leffCV; double weffCV; double abulkCVfactor "" calculate="1.0 + pow((clc / leff), cle)"; double litl "" calculate="sqrt(3.0 * xj * m->tox)"; // version 3.3 double ldeb; } code_pre { { double T0 = pow(c->l_in, m->Lln); double T1 = pow(c->w_in, m->Lwn); double tmp1 = m->Ll / T0 + m->Lw / T1 + m->Lwl / (T0 * T1); dl = m->Lint + tmp1; dlc = m->dlc + tmp1; } { double T2 = pow(c->l_in, m->Wln); double T3 = pow(c->w_in, m->Wwn); double tmp2 = m->Wl / T2 + m->Ww / T3 + m->Wwl / (T2 * T3); dw = m->Wint + tmp2; dwc = m->dwc + tmp2; } leff = c->l_in - 2.0 * dl; weff = c->w_in - 2.0 * dw; leffCV = c->l_in - 2.0 * dlc; weffCV = c->w_in - 2.0 * dwc; cgate = m->cox * w_eff * l_eff; /* BUG:: not adjusted values?? */ double L = leff; double W = weff; if (m->binUnit == 1) { L /= MICRON2METER; W /= MICRON2METER; } } code_post { cgso = (m->cgso + cf) * weffCV; cgdo = (m->cgdo + cf) * weffCV; cgbo = m->cgbo * leffCV; if (u0 > 1.0) { u0 /= 1.0e4; } if (m->npeak.nom() == NA) { if (m->gamma1.nom() != NA) { double T0 = gamma1 * m->cox; npeak = 3.021E22 * T0 * T0; }else{ npeak = 1.7e17; } } if (m->k1.nom() != NA && m->k2.nom() != NA) { if (m->k1.nom() == NA) { k1 = 0.53; } if (m->k2.nom() == NA) { k2 = -0.0186; } }else{ vbm = -std::abs(vbm); if (m->gamma1.nom() == NA) { gamma1 = 5.753e-12 * sqrt(npeak) / m->cox; } if (m->gamma2.nom() == NA) { gamma2 = 5.753e-12 * sqrt(nsub) / m->cox; } } // version 3.3 acde *= pow((npeak / 2.0e16), -0.25); ldeb = sqrt(P_EPS_SI * m->vt_at_tnom / (P_Q * npeak * 1.0e6)) / 3.0; } } temperature_dependent { calculated_parameters { double temp; double tempratio "" calculate="temp / m->tnom_k"; double tempratio_1 "" calculate="tempratio - 1"; double vtm "vtm" calculate="temp * P_K_Q"; double ua; double ub; double uc; double u0temp; double vsattemp; double rds0; double phi; double sqrtPhi; double phis3; double Xdep0; double vbi; double cdep0; double k1; double k2; double vbsc; double vth0; double vfb; double theta0vb0; double thetaRout; // version 3.3 double k1ox; double k2ox; double vfbzb; } code_pre { temp = d->_sim->_temp_c + P_CELSIUS0; double egap = 1.16 - 7.02e-4 * temp * temp / (temp + 1108.0); } code_post { const double EXP_THRESHOLD = 34.0; const double MIN_EXP = 1.713908431e-15; double jctTempSatCurDensity; double jctSidewallTempSatCurDensity; if (temp != m->tnom_k) { double T0 = m->egap / m->vt_at_tnom - egap / vtm + m->jctTempExponent * log(temp / m->tnom_k); double T1 = exp(T0 / m->jctEmissionCoeff); jctTempSatCurDensity = m->js * T1; jctSidewallTempSatCurDensity = m->jctSidewallSatCurDensity * T1; }else{ jctTempSatCurDensity = m->js; jctSidewallTempSatCurDensity = m->jctSidewallSatCurDensity; } if (jctTempSatCurDensity < 0.0) { jctTempSatCurDensity = 0.0; } if (jctSidewallTempSatCurDensity < 0.0) { jctSidewallTempSatCurDensity = 0.0; } { double T0 = (tempratio - 1.0); ua = s->ua + s->ua1 * T0; ub = s->ub + s->ub1 * T0; uc = s->uc + s->uc1 * T0; u0temp = s->u0 * pow(tempratio, s->ute); vsattemp = s->vsat - s->at * T0; rds0 = (s->rdsw + s->prt * T0) / pow(s->weff * 1E6, s->wr); rds0 = std::max(rds0,0.0); } phi = 2.0 * m->vt_at_tnom * log(s->npeak / m->ni); sqrtPhi = sqrt(phi); phis3 = sqrtPhi * phi; Xdep0 = sqrt(2.0 * P_EPS_SI / (P_Q * s->npeak * 1.0e6)) * sqrtPhi; vbi = m->vt_at_tnom * log(1.0e20 * s->npeak / (m->ni * m->ni)); cdep0 = sqrt(P_Q * P_EPS_SI * s->npeak * 1.0e6 / 2.0 / phi); if (m->k1.nom() != NA && m->k2.nom() != NA) { k2 = s->k2; k1 = s->k1; }else{ double vbx = (m->vbx.nom() == NA) ? -std::abs(phi - 7.7348e-4 * s->npeak * s->xt * s->xt) : -std::abs(s->vbx); double T0 = s->gamma1 - s->gamma2; double T1 = sqrt(phi - vbx) - sqrtPhi; double T2 = sqrt(phi * (phi - s->vbm)) - phi; k2 = T0 * T1 / (2.0 * T2 + s->vbm); k1 = s->gamma2 - 2.0 * k2 * sqrt(phi - s->vbm); } k1ox = k1 * m->tox / m->toxm; k2ox = k2 * m->tox / m->toxm; if (k2 < 0.) { double T0 = 0.5 * k1 / k2; vbsc = to_range(-30.0, (0.9 * (phi - T0 * T0)), -3.0); }else{ vbsc = -30.0; } vbsc = std::min(vbsc, s->vbm); if (s->vfb == NA) { if (s->vth0 == NA) { vfb = -1.0; }else{ vfb = m->polarity * s->vth0 - phi - k1 * sqrtPhi; } }else{ vfb = s->vfb; trace1("", s->vfb); } if (s->vth0 == NA) { vth0 = m->polarity * (vfb + phi + k1 * sqrtPhi); }else{ vth0 = s->vth0; } trace3("", s->vth0, vth0, vfb); { double T1 = sqrt(P_EPS_SI / P_EPS_OX * m->tox * Xdep0); double T0 = exp(-0.5 * s->dsub * s->leff / T1); theta0vb0 = (T0 + 2.0 * T0 * T0); T0 = exp(-0.5 * s->drout * s->leff / T1); double T2 = (T0 + 2.0 * T0 * T0); thetaRout = s->pdibl1 * T2 + s->pdibl2; } { // vfbzb double tmp1 = vbi - phi; double tmp2 = m->factor1 * sqrt(Xdep0); double T2; { double T0 = -0.5 * s->dvt1w * s->weff * s->leff / tmp2; double T1 = (T0 > -EXP_THRESHOLD) ? exp(T0) : MIN_EXP; T2 = T1 * (1.0 + 2.0 * T1); T0 = s->dvt0w * T2; T2 = T0 * tmp1; } double T3; { double T0 = -0.5 * s->dvt1 * s->leff / tmp2; double T1 = (T0 > -EXP_THRESHOLD) ? exp(T0) : MIN_EXP; double t2 = T1 * (1.0 + 2.0 * T1); T3 = s->dvt0 * t2 * tmp1; } double T4 = m->tox * phi / (s->weff + s->w0); double T5; { double T0 = sqrt(1.0 + s->nlx / s->leff); T5 = k1ox * (T0 - 1.0) * sqrtPhi + (s->kt1 + s->kt1l / s->leff) * (tempratio - 1.0); } { double tmp3 = m->polarity * vth0 - T2 - T3 + s->k3 * T4 + T5; vfbzb = tmp3 - phi - k1 * sqrtPhi; } } } } /*-----------------------------------------------------------------------*/ tr_eval { trace3("", d->vds, d->vgs, d->vbs); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const double EXP_THRESHOLD = 34.0; const double MIN_EXP = 1.713908431e-15; const double MAX_EXP = 5.834617425e14; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d->reverse_if_needed(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Vbseff, dVbseff_dVb; { double T0 = d->vbs - t->vbsc - 0.001; double T1 = sqrt(T0 * T0 - 0.004 * t->vbsc); trace3("", t->vbsc, T0, T1); Vbseff = t->vbsc + 0.5 * (T0 + T1); dVbseff_dVb = 0.5 * (1.0 + T0 / T1); trace2("raw", Vbseff, dVbseff_dVb); fixzero(&Vbseff, t->vbsc); if (Vbseff < d->vbs) { // From Spice, to fix numeric problems //untested(); // inadequately. Above fixzero should do a Vbseff = d->vbs; // better job, but I left this in case. } } trace2("fixed", Vbseff, dVbseff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Phis, dPhis_dVb, sqrtPhis, dsqrtPhis_dVb; if (Vbseff > 0.0) { //untested(); d->sbfwd = true; double T0 = t->phi / (t->phi + Vbseff); Phis = t->phi * T0; dPhis_dVb = -T0 * T0; sqrtPhis = t->phis3 / (t->phi + 0.5 * Vbseff); dsqrtPhis_dVb = -0.5 * sqrtPhis * sqrtPhis / t->phis3; trace0("bs-fwd-bias"); }else{ d->sbfwd = false; Phis = t->phi - Vbseff; dPhis_dVb = -1.0; sqrtPhis = sqrt(Phis); dsqrtPhis_dVb = -0.5 / sqrtPhis; trace0("bs-normal"); } trace4("", Phis, dPhis_dVb, sqrtPhis, dsqrtPhis_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Xdep = t->Xdep0 * sqrtPhis / t->sqrtPhi; double dXdep_dVb = (t->Xdep0 / t->sqrtPhi) * dsqrtPhis_dVb; trace2("", Xdep, dXdep_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Theta0, dTheta0_dVb; { double lt1, dlt1_dVb; { double T3 = sqrt(Xdep); double T0 = s->dvt2 * Vbseff; double T1, T2; if (T0 >= - 0.5) { T1 = 1.0 + T0; T2 = s->dvt2; trace4("", T0, T1, T2, T3); }else{ untested(); /* Added to avoid any discontinuity problems caused by dvt2 */ double T4 = 1.0 / (3.0 + 8.0 * T0); T1 = (1.0 + 3.0 * T0) * T4; T2 = s->dvt2 * T4 * T4; trace4("dvd2 fix", T0, T1, T2, T3); } lt1 = m->factor1 * T3 * T1; dlt1_dVb = m->factor1 * (0.5 / T3 * T1 * dXdep_dVb + T3 * T2); } trace2("", lt1, dlt1_dVb); double T0 = -0.5 * s->dvt1 * s->leff / lt1; if (T0 > -EXP_THRESHOLD) { double T1 = exp(T0); Theta0 = T1 * (1.0 + 2.0 * T1); double dT1_dVb = -T0 / lt1 * T1 * dlt1_dVb; dTheta0_dVb = (1.0 + 4.0 * T1) * dT1_dVb; trace2("T0 > -ET", Theta0, dTheta0_dVb); }else{ double T1 = MIN_EXP; Theta0 = T1 * (1.0 + 2.0 * T1); dTheta0_dVb = 0.0; trace2("T0 < -ET", Theta0, dTheta0_dVb); } } trace2("", Theta0, dTheta0_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double dVth_dVb, dVth_dVd; // d->von { double V0 = t->vbi - t->phi; double T2, dT2_dVb; { double ltw, dltw_dVb; { double T3 = sqrt(Xdep); double T0 = s->dvt2w * Vbseff; double T1, t2; if (T0 >= - 0.5) { T1 = 1.0 + T0; t2 = s->dvt2w; }else{ untested(); /* Added to avoid any discontinuity problems caused by dvt2w */ double T4 = 1.0 / (3.0 + 8.0 * T0); T1 = (1.0 + 3.0 * T0) * T4; t2 = s->dvt2w * T4 * T4; } trace4("", T0, T1, t2, T3); ltw = m->factor1 * T3 * T1; dltw_dVb = m->factor1 * (0.5 / T3 * T1 * dXdep_dVb + T3 * t2); } trace2("", ltw, dltw_dVb); double T0 = -0.5 * s->dvt1w * s->weff * s->leff / ltw; if (T0 > -EXP_THRESHOLD) { double T1 = exp(T0); T2 = T1 * (1.0 + 2.0 * T1); double dT1_dVb = -T0 / ltw * T1 * dltw_dVb; dT2_dVb = (1.0 + 4.0 * T1) * dT1_dVb; }else{ double T1 = MIN_EXP; T2 = T1 * (1.0 + 2.0 * T1); dT2_dVb = 0.0; } T0 = s->dvt0w * T2; T2 = T0 * V0; dT2_dVb = s->dvt0w * dT2_dVb * V0; } trace3("", V0, T2, dT2_dVb); double T0 = sqrt(1.0 + s->nlx / s->leff); double T1 = t->k1ox * (T0 - 1.0) * t->sqrtPhi + (s->kt1 + s->kt1l / s->leff + s->kt2 * Vbseff) * t->tempratio_1; double tmp2 = m->tox * t->phi / (s->weff + s->w0); double T3 = s->eta0 + s->etab * Vbseff; trace4("", T0, T1, tmp2, T3); double T4; if (T3 < 1.0e-4) { untested(); /* avoid discontinuity problems caused by etab */ double T9 = 1.0 / (3.0 - 2.0e4 * T3); T3 = (2.0e-4 - T3) * T9; T4 = T9 * T9; trace3("", T9, T3, T4); }else{ T4 = 1.0; trace1("", T4); } double thetavth = s->dvt0 * Theta0; double Delt_vth = thetavth * V0; double dDelt_vth_dVb = s->dvt0 * dTheta0_dVb * V0; trace4("", thetavth, t->theta0vb0, Delt_vth, dDelt_vth_dVb); double dDIBL_Sft_dVd = T3 * t->theta0vb0; double DIBL_Sft = dDIBL_Sft_dVd * d->vds; trace2("", dDIBL_Sft_dVd, DIBL_Sft); trace4("", t->vth0, t->k1, sqrtPhis, t->sqrtPhi); trace4("", t->k2, Vbseff, Delt_vth, T2); trace4("", s->k3, s->k3b, Vbseff, tmp2); trace2("", T1, DIBL_Sft); double Vth = m->polarity * t->vth0 + t->k1ox * sqrtPhis - t->k1 * t->sqrtPhi - t->k2ox * Vbseff - Delt_vth - T2 + (s->k3 + s->k3b * Vbseff) * tmp2 + T1 - DIBL_Sft; d->von = Vth; dVth_dVb = t->k1ox * dsqrtPhis_dVb - t->k2ox - dDelt_vth_dVb - dT2_dVb + s->k3b * tmp2 - s->etab * d->vds * t->theta0vb0 * T4 + s->kt2 * t->tempratio_1; dVth_dVd = -dDIBL_Sft_dVd; } trace3("", d->von, dVth_dVb, dVth_dVd); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate n */ double n, dn_dVb, dn_dVd; { double tmp2 = s->nfactor * P_EPS_SI / Xdep; double tmp3 = s->cdsc + s->cdscb * Vbseff + s->cdscd * d->vds; double tmp4 = (tmp2 + tmp3 * Theta0 + s->cit) / m->cox; trace3("", tmp2, tmp3, tmp4); if (tmp4 >= -0.5) { n = 1.0 + tmp4; dn_dVb = (-tmp2 / Xdep * dXdep_dVb + tmp3 * dTheta0_dVb + s->cdscb * Theta0) / m->cox; dn_dVd = s->cdscd * Theta0 / m->cox; trace3("n", n, dn_dVb, dn_dVd); }else{ /* avoid discontinuity problems caused by tmp4 */ double T0 = 1.0 / (3.0 + 8.0 * tmp4); n = (1.0 + 3.0 * tmp4) * T0; T0 *= T0; dn_dVb = (-tmp2 / Xdep * dXdep_dVb + tmp3 * dTheta0_dVb + s->cdscb * Theta0) / m->cox * T0; dn_dVd = s->cdscd * Theta0 / m->cox * T0; trace3("n disc", n, dn_dVb, dn_dVd); } } trace3("", n, dn_dVb, dn_dVd); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Poly Gate Si Depletion Effect */ double Vgs_eff, dVgs_eff_dVg; { double T0 = t->vfb + t->phi; trace2("Poly", t->vfb, t->phi); trace3("", s->ngate, d->vgs, T0); if ((s->ngate > 1.e18) && (s->ngate < 1.e25) && (d->vgs > T0)) { /* added to avoid the problem caused by ngate */ double T1 = 1.0e6 * P_Q * P_EPS_SI * s->ngate / (m->cox * m->cox); double T4 = sqrt(1.0 + 2.0 * (d->vgs - T0) / T1); double T2 = T1 * (T4 - 1.0); double T3 = 0.5 * T2 * T2 / T1; /* T3 = Vpoly */ double T7 = 1.12 - T3 - 0.05; double T6 = sqrt(T7 * T7 + 0.224); double T5 = 1.12 - 0.5 * (T7 + T6); Vgs_eff = d->vgs - T5; dVgs_eff_dVg = 1.0 - (0.5 - 0.5 / T4) * (1.0 + T7 / T6); trace2("><", Vgs_eff, dVgs_eff_dVg); }else{ Vgs_eff = d->vgs; dVgs_eff_dVg = 1.0; trace2("const", Vgs_eff, dVgs_eff_dVg); } } trace2("", Vgs_eff, dVgs_eff_dVg); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Effective Vgst (Vgsteff) Calculation */ double /*Vgsteff,*/ dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb, Vgst2Vtm; // d->vgst { double Vgst = Vgs_eff - d->von; double T10 = 2.0 * n * t->vtm; double VgstNVt = Vgst / T10; double ExpArg = (2.0 * s->voff - Vgst) / T10; trace4("", Vgst, T10, VgstNVt, ExpArg); /* MCJ: Very small Vgst */ if (VgstNVt > EXP_THRESHOLD) { d->vgst = Vgst; dVgsteff_dVg = dVgs_eff_dVg; dVgsteff_dVd = -dVth_dVd; dVgsteff_dVb = -dVth_dVb; trace4(">>", d->vgst, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); }else if (ExpArg > EXP_THRESHOLD) { double T0 = (Vgst - s->voff) / (n * t->vtm); double ExpVgst = exp(T0); d->vgst = t->vtm * t->cdep0 / m->cox * ExpVgst; dVgsteff_dVg = d->vgst / (n * t->vtm); dVgsteff_dVd = -dVgsteff_dVg * (dVth_dVd + T0 * t->vtm * dn_dVd); dVgsteff_dVb = -dVgsteff_dVg * (dVth_dVb + T0 * t->vtm * dn_dVb); dVgsteff_dVg *= dVgs_eff_dVg; trace4(">", d->vgst, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); }else{ double ExpVgst = exp(VgstNVt); double T1 = T10 * log(1.0 + ExpVgst); double dT1_dVg = ExpVgst / (1.0 + ExpVgst); double dT1_dVb = -dT1_dVg * (dVth_dVb + Vgst / n * dn_dVb) + T1 / n * dn_dVb; double dT1_dVd = -dT1_dVg * (dVth_dVd + Vgst / n * dn_dVd) + T1 / n * dn_dVd; double dT2_dVg = -m->cox / (t->vtm * t->cdep0) * exp(ExpArg); double T2 = 1.0 - T10 * dT2_dVg; double dT2_dVd = -dT2_dVg * (dVth_dVd - 2.0 * t->vtm * ExpArg * dn_dVd) + (T2 - 1.0) / n * dn_dVd; double dT2_dVb = -dT2_dVg * (dVth_dVb - 2.0 * t->vtm * ExpArg * dn_dVb) + (T2 - 1.0) / n * dn_dVb; d->vgst = T1 / T2; double T3 = T2 * T2; dVgsteff_dVg = (T2 * dT1_dVg - T1 * dT2_dVg) / T3 * dVgs_eff_dVg; dVgsteff_dVd = (T2 * dT1_dVd - T1 * dT2_dVd) / T3; dVgsteff_dVb = (T2 * dT1_dVb - T1 * dT2_dVb) / T3; trace4("<", d->vgst, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); } Vgst2Vtm = d->vgst + 2.0 * t->vtm; trace3("", d->vgst, t->vtm, Vgst2Vtm); } trace1("", d->vgst); trace4("", dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb, Vgst2Vtm); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Effective Channel Geometry */ double Weff, dWeff_dVg, dWeff_dVb; { double T9 = sqrtPhis - t->sqrtPhi; Weff = s->weff - 2.0 * (s->dwg * d->vgst + s->dwb * T9); dWeff_dVg = -2.0 * s->dwg; dWeff_dVb = -2.0 * s->dwb * dsqrtPhis_dVb; if (Weff < 2.0e-8) { /* to avoid the discontinuity problem due to Weff*/ double T0 = 1.0 / (6.0e-8 - 2.0 * Weff); Weff = 2.0e-8 * (4.0e-8 - Weff) * T0; T0 *= T0 * 4.0e-16; dWeff_dVg *= T0; dWeff_dVb *= T0; trace3("Weff fix", Weff, dWeff_dVg, dWeff_dVb); } } trace3("", Weff, dWeff_dVg, dWeff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Rds, dRds_dVg, dRds_dVb; { double T9 = sqrtPhis - t->sqrtPhi; double T0 = s->prwg * d->vgst + s->prwb * T9; if (T0 >= -0.9) { Rds = t->rds0 * (1.0 + T0); dRds_dVg = t->rds0 * s->prwg; dRds_dVb = t->rds0 * s->prwb * dsqrtPhis_dVb; }else{ /* to avoid the discontinuity problem due to prwg and prwb*/ double T1 = 1.0 / (17.0 + 20.0 * T0); Rds = t->rds0 * (0.8 + T0) * T1; T1 *= T1; dRds_dVg = t->rds0 * s->prwg * T1; dRds_dVb = t->rds0 * s->prwb * dsqrtPhis_dVb * T1; trace3("Rds fix", T9, T0, T1); trace3("Rds fix", Rds, dRds_dVg, dRds_dVb); } ////////// d->rds = Rds /* Noise Bugfix */ } trace3("", Rds, dRds_dVg, dRds_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Abulk */ double Abulk0, dAbulk0_dVb, dAbulk_dVg, Abulk, dAbulk_dVb; { double T1 = 0.5 * t->k1ox / sqrtPhis; double dT1_dVb = -T1 / sqrtPhis * dsqrtPhis_dVb; double T9 = sqrt(s->xj * Xdep); double tmp1 = s->leff + 2.0 * T9; double T5 = s->leff / tmp1; double tmp2 = s->a0 * T5; double tmp3 = s->weff + s->b1; double tmp4 = s->b0 / tmp3; double T2 = tmp2 + tmp4; double dT2_dVb = -T9 / tmp1 / Xdep * dXdep_dVb; double T6 = T5 * T5; double T7 = T5 * T6; Abulk0 = 1.0 + T1 * T2; dAbulk0_dVb = T1 * tmp2 * dT2_dVb + T2 * dT1_dVb; double T8 = s->ags * s->a0 * T7; dAbulk_dVg = -T1 * T8; Abulk = Abulk0 + dAbulk_dVg * d->vgst; dAbulk_dVb = dAbulk0_dVb - T8 * d->vgst * (dT1_dVb + 3.0 * T1 * dT2_dVb); trace2("1", Abulk0, dAbulk0_dVb); trace3("1", dAbulk_dVg, Abulk, dAbulk_dVb); if (Abulk0 < 0.1) { /* added to avoid the problems caused by Abulk0 */ double t9 = 1.0 / (3.0 - 20.0 * Abulk0); Abulk0 = (0.2 - Abulk0) * t9; dAbulk0_dVb *= t9 * t9; trace2("2", Abulk0, dAbulk0_dVb); } if (Abulk < 0.1) { /* added to avoid the problems caused by Abulk */ double t9 = 1.0 / (3.0 - 20.0 * Abulk); Abulk = (0.2 - Abulk) * t9; double T10 = t9 * t9; dAbulk_dVb *= T10; dAbulk_dVg *= T10; trace3("2", dAbulk_dVg, Abulk, dAbulk_dVb); } ////////// d->Abulk = Abulk double T0, dT0_dVb; { double t2 = s->keta * Vbseff; if (t2 >= -0.9) { T0 = 1.0 / (1.0 + t2); dT0_dVb = -s->keta * T0 * T0; trace3("", t2, T0, dT0_dVb); }else{ /* added to avoid the problems caused by Keta */ double t1 = 1.0 / (0.8 + t2); T0 = (17.0 + 20.0 * t2) * t1; dT0_dVb = -s->keta * t1 * t1; trace3("keta fix", t2, T0, dT0_dVb); } } dAbulk_dVg *= T0; dAbulk_dVb = dAbulk_dVb * T0 + Abulk * dT0_dVb; dAbulk0_dVb = dAbulk0_dVb * T0 + Abulk0 * dT0_dVb; Abulk *= T0; Abulk0 *= T0; ////////// d->AbovVgst2Vtm = Abulk / Vgst2Vtm } trace2("", Abulk0, dAbulk0_dVb); trace3("", dAbulk_dVg, Abulk, dAbulk_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Mobility calculation */ double ueff, dueff_dVg, dueff_dVd, dueff_dVb; { double Denomi, dDenomi_dVg, dDenomi_dVd, dDenomi_dVb; { double T5; if (m->mobMod == 1) { double T0 = d->vgst + d->von + d->von; double T2 = t->ua + t->uc * Vbseff; double T3 = T0 / m->tox; T5 = T3 * (T2 + t->ub * T3); dDenomi_dVg = (T2 + 2.0 * t->ub * T3) / m->tox; dDenomi_dVd = dDenomi_dVg * 2.0 * dVth_dVd; dDenomi_dVb = dDenomi_dVg * 2.0 * dVth_dVb + t->uc * T3; }else if (m->mobMod == 2) { T5 = d->vgst / m->tox * (t->ua + t->uc * Vbseff + t->ub * d->vgst / m->tox); dDenomi_dVg = (t->ua + t->uc * Vbseff + 2.0 * t->ub * d->vgst / m->tox) / m->tox; dDenomi_dVd = 0.0; dDenomi_dVb = d->vgst * t->uc / m->tox; }else{ double T0 = d->vgst + d->von + d->von; double T2 = 1.0 + t->uc * Vbseff; double T3 = T0 / m->tox; double T4 = T3 * (t->ua + t->ub * T3); T5 = T4 * T2; dDenomi_dVg = (t->ua + 2.0 * t->ub * T3) * T2 / m->tox; dDenomi_dVd = dDenomi_dVg * 2.0 * dVth_dVd; dDenomi_dVb = dDenomi_dVg * 2.0 * dVth_dVb + t->uc * T4; } if (T5 >= -0.8) { Denomi = 1.0 + T5; }else{ /* Added to avoid the discontinuity problem caused by ua and ub*/ double T9 = 1.0 / (7.0 + 10.0 * T5); Denomi = (0.6 + T5) * T9; T9 *= T9; dDenomi_dVg *= T9; dDenomi_dVd *= T9; dDenomi_dVb *= T9; } } ueff = t->u0temp / Denomi; double T9 = -ueff / Denomi; dueff_dVg = T9 * dDenomi_dVg; dueff_dVd = T9 * dDenomi_dVd; dueff_dVb = T9 * dDenomi_dVb; } trace4("", ueff, dueff_dVg, dueff_dVd, dueff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double Esat, EsatL, dEsatL_dVg, dEsatL_dVd, dEsatL_dVb; { Esat = 2.0 * t->vsattemp / ueff; EsatL = Esat * s->leff; double T0 = -EsatL /ueff; dEsatL_dVg = T0 * dueff_dVg; dEsatL_dVd = T0 * dueff_dVd; dEsatL_dVb = T0 * dueff_dVb; } trace2("", Esat, EsatL); trace3("", dEsatL_dVg, dEsatL_dVd, dEsatL_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Saturation Drain Voltage Vdsat */ double Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb; // d->vdsat double Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd; { double WVCoxRds; { double WVCox = Weff * t->vsattemp * m->cox; WVCoxRds = WVCox * Rds; } trace1("", WVCoxRds); double Lambda, dLambda_dVg; { if (s->a1 == 0.0) { Lambda = s->a2; dLambda_dVg = 0.0; }else if (s->a1 > 0.0) { /* avoid discontinuity problem caused by s->a1 and s->a2 (Lambda) */ double T0 = 1.0 - s->a2; double T1 = T0 - s->a1 * d->vgst - 0.0001; double T2 = sqrt(T1 * T1 + 0.0004 * T0); Lambda = s->a2 + T0 - 0.5 * (T1 + T2); dLambda_dVg = 0.5 * s->a1 * (1.0 + T1 / T2); }else{ double T1 = s->a2 + s->a1 * d->vgst - 0.0001; double T2 = sqrt(T1 * T1 + 0.0004 * s->a2); Lambda = 0.5 * (T1 + T2); dLambda_dVg = 0.5 * s->a1 * (1.0 + T1 / T2); } } trace2("", Lambda, dLambda_dVg); double tmp2, tmp3; if (Rds > 0) { tmp2 = dRds_dVg / Rds + dWeff_dVg / Weff; tmp3 = dRds_dVb / Rds + dWeff_dVb / Weff; }else{ tmp2 = dWeff_dVg / Weff; tmp3 = dWeff_dVb / Weff; } trace2("", tmp2, tmp3); //double Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb; // d->vdsat double tmp1; { if ((Rds == 0.0) && (Lambda == 1.0)) { double T0 = 1.0 / (Abulk * EsatL + Vgst2Vtm); tmp1 = 0.0; double T1 = T0 * T0; double T2 = Vgst2Vtm * T0; double T3 = EsatL * Vgst2Vtm; Vdsat = T3 * T0; double dT0_dVg = -(Abulk * dEsatL_dVg + EsatL * dAbulk_dVg + 1.0)*T1; double dT0_dVd = -(Abulk * dEsatL_dVd) * T1; double dT0_dVb = -(Abulk * dEsatL_dVb + dAbulk_dVb * EsatL) * T1; dVdsat_dVg = T3 * dT0_dVg + T2 * dEsatL_dVg + EsatL * T0; dVdsat_dVd = T3 * dT0_dVd + T2 * dEsatL_dVd; dVdsat_dVb = T3 * dT0_dVb + T2 * dEsatL_dVb; }else{ tmp1 = dLambda_dVg / (Lambda * Lambda); double T9 = Abulk * WVCoxRds; double T8 = Abulk * T9; double T7 = Vgst2Vtm * T9; double T6 = Vgst2Vtm * WVCoxRds; double T0 = 2.0 * Abulk * (T9 - 1.0 + 1.0 / Lambda); double dT0_dVg = 2.0 * (T8 * tmp2 - Abulk * tmp1 + (2.0 * T9 + 1.0 / Lambda - 1.0) * dAbulk_dVg); double dT0_dVb = 2.0 * (T8 * (2.0 / Abulk * dAbulk_dVb + tmp3) + (1.0 / Lambda - 1.0) * dAbulk_dVb); //double dT0_dVd = 0.0; double T1 = Vgst2Vtm * (2.0 / Lambda - 1.0) + Abulk * EsatL + 3.0*T7; double dT1_dVg = (2.0 / Lambda - 1.0) - 2.0 * Vgst2Vtm * tmp1 + Abulk * dEsatL_dVg + EsatL * dAbulk_dVg + 3.0 * (T9 + T7 * tmp2 + T6 * dAbulk_dVg); double dT1_dVb = Abulk * dEsatL_dVb + EsatL * dAbulk_dVb + 3.0 * (T6 * dAbulk_dVb + T7 * tmp3); double dT1_dVd = Abulk * dEsatL_dVd; double T2 = Vgst2Vtm * (EsatL + 2.0 * T6); double dT2_dVg = EsatL + Vgst2Vtm * dEsatL_dVg + T6 * (4.0 + 2.0 * Vgst2Vtm * tmp2); double dT2_dVb = Vgst2Vtm * (dEsatL_dVb + 2.0 * T6 * tmp3); double dT2_dVd = Vgst2Vtm * dEsatL_dVd; double T3 = sqrt(T1 * T1 - 2.0 * T0 * T2); Vdsat = (T1 - T3) / T0; dVdsat_dVg = (dT1_dVg - (T1 * dT1_dVg - dT0_dVg * T2 - T0 * dT2_dVg) / T3 - Vdsat * dT0_dVg) / T0; dVdsat_dVb = (dT1_dVb - (T1 * dT1_dVb - dT0_dVb * T2 - T0 * dT2_dVb) / T3 - Vdsat * dT0_dVb) / T0; dVdsat_dVd = (dT1_dVd - (T1 * dT1_dVd - T0 * dT2_dVd) / T3) / T0; } d->vdsat = Vdsat; d->saturated = (d->vds >= d->vdsat); } trace1("", tmp1); trace4("d->vdsat", Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb); /* Calculate VAsat */ // double Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd; { double tmp4 = 1.0 - 0.5 * Abulk * Vdsat / Vgst2Vtm; double T9 = WVCoxRds * d->vgst; double T8 = T9 / Vgst2Vtm; double T0 = EsatL + Vdsat + 2.0 * T9 * tmp4; double T7 = 2.0 * WVCoxRds * tmp4; double dT0_dVg = dEsatL_dVg + dVdsat_dVg + T7 * (1.0 + tmp2 * d->vgst) - T8 * (Abulk * dVdsat_dVg - Abulk * Vdsat / Vgst2Vtm + Vdsat * dAbulk_dVg); double dT0_dVb = dEsatL_dVb + dVdsat_dVb + T7 * tmp3 * d->vgst - T8 * (dAbulk_dVb * Vdsat + Abulk * dVdsat_dVb); double dT0_dVd = dEsatL_dVd + dVdsat_dVd - T8 * Abulk * dVdsat_dVd; T9 = WVCoxRds * Abulk; double T1 = 2.0 / Lambda - 1.0 + T9; double dT1_dVg = -2.0 * tmp1 + WVCoxRds * (Abulk * tmp2 + dAbulk_dVg); double dT1_dVb = dAbulk_dVb * WVCoxRds + T9 * tmp3; Vasat = T0 / T1; dVasat_dVg = (dT0_dVg - Vasat * dT1_dVg) / T1; dVasat_dVb = (dT0_dVb - Vasat * dT1_dVb) / T1; dVasat_dVd = dT0_dVd / T1; } trace4("", Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd); } trace1("", d->vdsat); trace4("", Vdsat, dVdsat_dVg, dVdsat_dVd, dVdsat_dVb); trace4("", Vasat, dVasat_dVg, dVasat_dVb, dVasat_dVd); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Effective Vds (Vdseff) Calculation */ double Vdseff, diffVds, dVdseff_dVg, dVdseff_dVd, dVdseff_dVb; { double T1 = Vdsat - d->vds - s->delta; double dT1_dVg = dVdsat_dVg; double dT1_dVd = dVdsat_dVd - 1.0; double dT1_dVb = dVdsat_dVb; trace4("", T1, dT1_dVg, dT1_dVd, dT1_dVb); double T2 = sqrt(T1 * T1 + 4.0 * s->delta * Vdsat); double T0 = T1 / T2; double T3 = 2.0 * s->delta / T2; trace3("", T2, T0, T3); double dT2_dVg = T0 * dT1_dVg + T3 * dVdsat_dVg; double dT2_dVd = T0 * dT1_dVd + T3 * dVdsat_dVd; double dT2_dVb = T0 * dT1_dVb + T3 * dVdsat_dVb; trace3("", dT2_dVg, dT2_dVd, dT2_dVb); Vdseff = Vdsat - 0.5 * (T1 + T2); dVdseff_dVg = dVdsat_dVg - 0.5 * (dT1_dVg + dT2_dVg); dVdseff_dVd = dVdsat_dVd - 0.5 * (dT1_dVd + dT2_dVd); dVdseff_dVb = dVdsat_dVb - 0.5 * (dT1_dVb + dT2_dVb); trace4("raw", Vdseff, dVdseff_dVg, dVdseff_dVd, dVdseff_dVb); fixzero(&Vdseff, Vdsat); fixzero(&dVdseff_dVg, dVdsat_dVg); fixzero(&dVdseff_dVd, dVdsat_dVd); fixzero(&dVdseff_dVb, dVdsat_dVb); /* Added to eliminate non-zero Vdseff at Vds=0.0 */ if (d->vds == 0.0) { assert(Vdseff == 0.0); assert(dVdseff_dVg == 0.0); assert(dVdseff_dVb == 0.0); } if (Vdseff > d->vds) { // From Spice, to fix numeric problems. trace2("numeric problems", Vdseff, d->vds); Vdseff = d->vds; } trace4("fixed", Vdseff, dVdseff_dVg, dVdseff_dVd, dVdseff_dVb); diffVds = d->vds - Vdseff; trace2("", Vdseff, diffVds); ////////// d->Vdseff = Vdseff; } trace2("", Vdseff, diffVds); trace3("", dVdseff_dVg, dVdseff_dVd, dVdseff_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Ids */ double Idsa, dIdsa_dVg, dIdsa_dVd, dIdsa_dVb; { double Va, dVa_dVg, dVa_dVd, dVa_dVb; { /* Calculate VACLM */ double VACLM, dVACLM_dVg, dVACLM_dVb, dVACLM_dVd; if ((s->pclm > 0.0) && (diffVds > 1.0e-10)) { double T0 = 1.0 / (s->pclm * Abulk * s->litl); double dT0_dVb = -T0 / Abulk * dAbulk_dVb; double dT0_dVg = -T0 / Abulk * dAbulk_dVg; double T2 = d->vgst / EsatL; double T1 = s->leff * (Abulk + T2); double dT1_dVg = s->leff * ((1.0-T2*dEsatL_dVg)/EsatL + dAbulk_dVg); double dT1_dVb = s->leff * (dAbulk_dVb - T2 * dEsatL_dVb / EsatL); double dT1_dVd = -T2 * dEsatL_dVd / Esat; double T9 = T0 * T1; VACLM = T9 * diffVds; dVACLM_dVg = T0 * dT1_dVg * diffVds - T9 * dVdseff_dVg + T1 * diffVds * dT0_dVg; dVACLM_dVb = (dT0_dVb*T1 + T0*dT1_dVb) * diffVds - T9 * dVdseff_dVb; dVACLM_dVd = T0 * dT1_dVd * diffVds + T9 * (1.0 - dVdseff_dVd); }else{ VACLM = MAX_EXP; dVACLM_dVd = dVACLM_dVg = dVACLM_dVb = 0.0; } trace4("", VACLM, dVACLM_dVg, dVACLM_dVb, dVACLM_dVd); /* Calculate VADIBL */ double VADIBL, dVADIBL_dVg, dVADIBL_dVb, dVADIBL_dVd; if (t->thetaRout > 0.0) { double T8 = Abulk * Vdsat; double T0 = Vgst2Vtm * T8; double dT0_dVg = Vgst2Vtm * Abulk * dVdsat_dVg + T8 + Vgst2Vtm * Vdsat * dAbulk_dVg; double dT0_dVb = Vgst2Vtm * (dAbulk_dVb*Vdsat + Abulk*dVdsat_dVb); double dT0_dVd = Vgst2Vtm * Abulk * dVdsat_dVd; double T1 = Vgst2Vtm + T8; double dT1_dVg = 1.0 + Abulk * dVdsat_dVg + Vdsat * dAbulk_dVg; double dT1_dVb = Abulk * dVdsat_dVb + dAbulk_dVb * Vdsat; double dT1_dVd = Abulk * dVdsat_dVd; double T9 = T1 * T1; double T2 = t->thetaRout; VADIBL = (Vgst2Vtm - T0 / T1) / T2; dVADIBL_dVg = (1.0 - dT0_dVg / T1 + T0 * dT1_dVg / T9) / T2; dVADIBL_dVb = (-dT0_dVb / T1 + T0 * dT1_dVb / T9) / T2; dVADIBL_dVd = (-dT0_dVd / T1 + T0 * dT1_dVd / T9) / T2; double T7 = s->pdiblb * Vbseff; if (T7 >= -0.9) { double T3 = 1.0 / (1.0 + T7); VADIBL *= T3; dVADIBL_dVg *= T3; dVADIBL_dVb = (dVADIBL_dVb - VADIBL * s->pdiblb) * T3; dVADIBL_dVd *= T3; }else{ /* Added to avoid the discontinuity problem caused by pdiblcb */ double T4 = 1.0 / (0.8 + T7); double T3 = (17.0 + 20.0 * T7) * T4; dVADIBL_dVg *= T3; dVADIBL_dVb = dVADIBL_dVb * T3 - VADIBL * s->pdiblb * T4 * T4; dVADIBL_dVd *= T3; VADIBL *= T3; } }else{ VADIBL = MAX_EXP; dVADIBL_dVd = dVADIBL_dVg = dVADIBL_dVb = 0.0; } trace4("", VADIBL, dVADIBL_dVg, dVADIBL_dVb, dVADIBL_dVd); /* Calculate VA */ double T8 = s->pvag / EsatL; double T9 = T8 * d->vgst; double T0, dT0_dVg, dT0_dVb, dT0_dVd; if (T9 > -0.9) { T0 = 1.0 + T9; dT0_dVg = T8 * (1.0 - d->vgst * dEsatL_dVg / EsatL); dT0_dVb = -T9 * dEsatL_dVb / EsatL; dT0_dVd = -T9 * dEsatL_dVd / EsatL; }else{ /* Added to avoid the discontinuity problems caused by pvag */ double T1 = 1.0 / (17.0 + 20.0 * T9); T0 = (0.8 + T9) * T1; T1 *= T1; dT0_dVg = T8 * (1.0 - d->vgst * dEsatL_dVg / EsatL) * T1; T9 *= T1 / EsatL; dT0_dVb = -T9 * dEsatL_dVb; dT0_dVd = -T9 * dEsatL_dVd; } double tmp1 = VACLM * VACLM; double tmp2 = VADIBL * VADIBL; double tmp3 = VACLM + VADIBL; double T1 = VACLM * VADIBL / tmp3; tmp3 *= tmp3; double dT1_dVg = (tmp1 * dVADIBL_dVg + tmp2 * dVACLM_dVg) / tmp3; double dT1_dVd = (tmp1 * dVADIBL_dVd + tmp2 * dVACLM_dVd) / tmp3; double dT1_dVb = (tmp1 * dVADIBL_dVb + tmp2 * dVACLM_dVb) / tmp3; Va = Vasat + T0 * T1; dVa_dVg = dVasat_dVg + T1 * dT0_dVg + T0 * dT1_dVg; dVa_dVd = dVasat_dVd + T1 * dT0_dVd + T0 * dT1_dVd; dVa_dVb = dVasat_dVb + T1 * dT0_dVb + T0 * dT1_dVb; } trace4("", Va, dVa_dVg, dVa_dVd, dVa_dVb); double Idl, dIdl_dVg, dIdl_dVd, dIdl_dVb; { double gche, dgche_dVg, dgche_dVd, dgche_dVb; { double beta, dbeta_dVg, dbeta_dVd, dbeta_dVb; { double CoxWovL = m->cox * Weff / s->leff; beta = ueff * CoxWovL; dbeta_dVg = CoxWovL * dueff_dVg + beta * dWeff_dVg / Weff; dbeta_dVd = CoxWovL * dueff_dVd; dbeta_dVb = CoxWovL * dueff_dVb + beta * dWeff_dVb / Weff; } trace4("", beta, dbeta_dVg, dbeta_dVd, dbeta_dVb); double fgche1, dfgche1_dVg, dfgche1_dVd, dfgche1_dVb; { double T0 = 1.0 - 0.5 * Abulk * Vdseff / Vgst2Vtm; double dT0_dVg = -0.5 * (Abulk * dVdseff_dVg - Abulk * Vdseff / Vgst2Vtm + Vdseff * dAbulk_dVg) / Vgst2Vtm; double dT0_dVd = -0.5 * Abulk * dVdseff_dVd / Vgst2Vtm; double dT0_dVb = -0.5 * (Abulk*dVdseff_dVb + dAbulk_dVb*Vdseff) / Vgst2Vtm; fgche1 = d->vgst * T0; dfgche1_dVg = d->vgst * dT0_dVg + T0; dfgche1_dVd = d->vgst * dT0_dVd; dfgche1_dVb = d->vgst * dT0_dVb; } trace4("", fgche1, dfgche1_dVg, dfgche1_dVd, dfgche1_dVb); double fgche2, dfgche2_dVg, dfgche2_dVd, dfgche2_dVb; { double T9 = Vdseff / EsatL; fgche2 = 1.0 + T9; dfgche2_dVg = (dVdseff_dVg - T9 * dEsatL_dVg) / EsatL; dfgche2_dVd = (dVdseff_dVd - T9 * dEsatL_dVd) / EsatL; dfgche2_dVb = (dVdseff_dVb - T9 * dEsatL_dVb) / EsatL; } trace4("", fgche2, dfgche2_dVg, dfgche2_dVd, dfgche2_dVb); gche = beta * fgche1 / fgche2; dgche_dVg = (beta * dfgche1_dVg + fgche1 * dbeta_dVg - gche * dfgche2_dVg) / fgche2; dgche_dVd = (beta * dfgche1_dVd + fgche1 * dbeta_dVd - gche * dfgche2_dVd) / fgche2; dgche_dVb = (beta * dfgche1_dVb + fgche1 * dbeta_dVb - gche * dfgche2_dVb) / fgche2; } trace4("", gche, dgche_dVg, dgche_dVd, dgche_dVb); double T0 = 1.0 + gche * Rds; double T9 = Vdseff / T0; Idl = gche * T9; dIdl_dVg = (gche * dVdseff_dVg + T9 * dgche_dVg) / T0 - Idl * gche / T0 * dRds_dVg; dIdl_dVd = (gche * dVdseff_dVd + T9 * dgche_dVd) / T0; dIdl_dVb = (gche*dVdseff_dVb + T9*dgche_dVb - Idl*dRds_dVb*gche) / T0; } trace4("", Idl, dIdl_dVg, dIdl_dVd, dIdl_dVb); double T9 = diffVds / Va; double T0 = 1.0 + T9; Idsa = Idl * T0; dIdsa_dVg = T0 * dIdl_dVg - Idl * (dVdseff_dVg + T9 * dVa_dVg) / Va; dIdsa_dVd = T0 * dIdl_dVd + Idl * (1.0 - dVdseff_dVd - T9*dVa_dVd) / Va; dIdsa_dVb = T0 * dIdl_dVb - Idl * (dVdseff_dVb + T9 * dVa_dVb) / Va; } trace4("", Idsa, dIdsa_dVg, dIdsa_dVd, dIdsa_dVb); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // d->ids, d->gds, d->gmf, d->gmbf { double VASCBE, dVASCBE_dVg, dVASCBE_dVd, dVASCBE_dVb; if (s->pscbe2 > 0.0) { if (diffVds > s->pscbe1 * s->litl / EXP_THRESHOLD) { double T0 = s->pscbe1 * s->litl / diffVds; VASCBE = s->leff * exp(T0) / s->pscbe2; double T1 = T0 * VASCBE / diffVds; dVASCBE_dVg = T1 * dVdseff_dVg; dVASCBE_dVd = -T1 * (1.0 - dVdseff_dVd); dVASCBE_dVb = T1 * dVdseff_dVb; }else{ VASCBE = MAX_EXP * s->leff/s->pscbe2; dVASCBE_dVg = dVASCBE_dVd = dVASCBE_dVb = 0.0; } }else{ VASCBE = MAX_EXP; dVASCBE_dVg = dVASCBE_dVd = dVASCBE_dVb = 0.0; } double T9 = diffVds / VASCBE; double T0 = 1.0 + T9; double Ids = Idsa * T0; double Gm = T0*dIdsa_dVg - Idsa*(dVdseff_dVg + T9*dVASCBE_dVg) / VASCBE; double Gds = T0 * dIdsa_dVd + Idsa * (1.0 - dVdseff_dVd - T9 * dVASCBE_dVd) / VASCBE; double Gmb = T0 * dIdsa_dVb - Idsa * (dVdseff_dVb + T9 * dVASCBE_dVb) / VASCBE; trace3("", T0, dIdsa_dVb, (T0 * dIdsa_dVb)); trace4("", dVdseff_dVb, T9, dVASCBE_dVb, (dVdseff_dVb + T9*dVASCBE_dVb)); trace3("", Idsa, VASCBE, (Idsa*(dVdseff_dVb+T9*dVASCBE_dVb)/VASCBE)); Gds += Gm * dVgsteff_dVd; Gmb += Gm * dVgsteff_dVb; Gm *= dVgsteff_dVg; Gmb *= dVbseff_dVb; trace4("", Ids, Gm, Gds, Gmb); trace0("========================="); d->gds = Gds; if (d->reversed) { d->ids = -Ids; d->gmr = Gm; d->gmbr = Gmb; d->gmf = d->gmbf = 0; }else{ d->ids = Ids; d->gmf = Gm; d->gmbf = Gmb; d->gmr = d->gmbr = 0.; } } trace4("", d->ids, d->gds, d->gmf, d->gmbf); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // d->isub, d->gbbs, d->gbgs, d->gbds { /* calculate substrate current Isub */ double Isub, Gbd, Gbb, Gbg; double tmp = s->alpha0 + s->alpha1 * s->leff; if ((tmp <= 0.0) || (s->beta0 <= 0.0)) { Isub = Gbd = Gbb = Gbg = 0.0; trace4("no-isub", Isub, Gbd, Gbb, Gbg); }else{ double T2 = tmp / s->leff; double T1, dT1_dVg, dT1_dVd, dT1_dVb; if (diffVds > s->beta0 / EXP_THRESHOLD) { double T0 = -s->beta0 / diffVds; T1 = T2 * diffVds * exp(T0); double T3 = T1 / diffVds * (T0 - 1.0); trace3("", T0, T2, T3); dT1_dVg = T3 * dVdseff_dVg; dT1_dVd = T3 * (dVdseff_dVd - 1.0); dT1_dVb = T3 * dVdseff_dVb; trace4("vds > ?", T1, dT1_dVg, dT1_dVd, dT1_dVb); }else{ double T3 = T2 * MIN_EXP; trace2("", T2, T3); T1 = T3 * diffVds; dT1_dVg = -T3 * dVdseff_dVg; dT1_dVd = T3 * (1.0 - dVdseff_dVd); dT1_dVb = -T3 * dVdseff_dVb; trace4("vds < ?", T1, dT1_dVg, dT1_dVd, dT1_dVb); } Isub = T1 * Idsa; Gbg = T1 * dIdsa_dVg + Idsa * dT1_dVg; Gbd = T1 * dIdsa_dVd + Idsa * dT1_dVd; Gbb = T1 * dIdsa_dVb + Idsa * dT1_dVb; trace4("raw", Isub, Gbd, Gbb, Gbg); Gbd += Gbg * dVgsteff_dVd; Gbb += Gbg * dVgsteff_dVb; Gbg *= dVgsteff_dVg; Gbb *= dVbseff_dVb; /* bug fixing */ } trace4("", Isub, Gbd, Gbb, Gbg); if (!(d->reversed)) { d->idb = Isub; d->gdbds = Gbd; d->gdbgs = Gbg; d->gdbbs = Gbb; d->isb = d->gsbsd = d->gsbgd = d->gsbbd = 0.; }else{ d->idb = d->gdbds = d->gdbgs = d->gdbbs = 0.; d->isb = Isub; d->gsbsd = Gbd; d->gsbgd = Gbg; d->gsbbd = Gbb; } //double d__csub = Isub - (Gbb * Vbseff + Gbd * d->vds + Gbg * d->vgs); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* Calculate Qinv for Noise analysis */ { // from 3.1 //double T1 = d->vgst * (1.0 - 0.5 * Abulk * Vdseff / Vgst2Vtm); //double d__qinv = -m->cox * Weff * s->leff * T1; // from 3.3 // /* BSIM3 thermal noise Qinv calculated from all capMod // 0, 1, 2 & 3 stored in here->BSIM3qinv 1/1998 */ } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ends line 2020 (finished) // d->qgate, d->qdrn, d->qbulk // d->cggb, d->cgsb, d->cgdb // d->cdgb, d->cdsb, d->cddb // d->cbgb, d->cbsb, d->cbdb assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); { const bool ChargeComputationNeeded = true; trace2("", m->xpart, m->capMod); if ((m->xpart < 0) || (!ChargeComputationNeeded)) { d->qgate = d->qdrn = d->qbulk = 0.0; d->cggb = d->cgsb = d->cgdb = 0.0; d->cdgb = d->cdsb = d->cddb = 0.0; d->cbgb = d->cbsb = d->cbdb = 0.0; ////////// d->cqdb = d->cqsb = d->cqgb = d->cqbb = 0.0; ////////// d->gtau = 0.0; trace0("xpart < 0 || no charge computation"); untested(); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); untested(); }else if (m->capMod == 0) { untested(); // block ends 1876 this 1599 trace0("begin capMod == 0 (mos8)"); if (Vbseff < 0.0) { // redefinition Vbseff = d->vbs; dVbseff_dVb = 1.0; }else{ Vbseff = t->phi - Phis; dVbseff_dVb = -dPhis_dVb; } trace1("old value replaced", dVth_dVb); double Vfb = s->vfbcv; // possible improper redefinition later double Vth = Vfb + t->phi + t->k1ox * sqrtPhis; dVth_dVb = t->k1ox * dsqrtPhis_dVb; // redefinition double Vgst = Vgs_eff - Vth; //double dVgst_dVb = -dVth_dVb; //double dVgst_dVg = dVgs_eff_dVg; double CoxWL = m->cox * s->weffCV * s->leffCV; double Arg1 = Vgs_eff - Vbseff - Vfb; trace3("", Vfb, Vth, dVth_dVb); trace3("", Vgst, CoxWL, Arg1); // ends 1618 this 1328 if (Arg1 <= 0.0) { trace0("Arg1 <= 0.0"); d->qgate = CoxWL * Arg1; d->cggb = CoxWL * dVgs_eff_dVg; d->cgdb = 0.0; d->cgsb = CoxWL * (dVbseff_dVb - dVgs_eff_dVg); d->qbulk = -d->qgate; d->cbgb = -CoxWL * dVgs_eff_dVg; d->cbdb = 0.0; d->cbsb = -d->cgsb; d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; ////////// d->qinv = 0.0; }else if (Vgst <= 0.0) { trace0("Vgst <= 0.0"); double T1 = 0.5 * t->k1ox; double T2 = sqrt(T1 * T1 + Arg1); double T0 = CoxWL * T1 / T2; d->qgate = CoxWL * t->k1 * (T2 - T1); d->cggb = T0 * dVgs_eff_dVg; d->cgdb = 0.0; d->cgsb = T0 * (dVbseff_dVb - dVgs_eff_dVg); d->qbulk = -d->qgate; d->cbgb = -d->cggb; d->cbdb = 0.0; d->cbsb = -d->cgsb; d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; }else{ trace0("!(Arg1 <= 0.0 || Vgst <= 0.0)"); double One_Third_CoxWL = CoxWL / 3.0; double Two_Third_CoxWL = 2.0 * One_Third_CoxWL; // redefine Vdsat, dVdsat_dVg, dVdsat_dVb { double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; Vdsat = Vgst / AbulkCV; dVdsat_dVg = dVgs_eff_dVg / AbulkCV; dVdsat_dVb = - (Vdsat * dAbulkCV_dVb + dVth_dVb)/ AbulkCV; } if (m->xpart > 0.5) { /* 0/100 Charge partition model */ if (d->vds >= Vdsat) { /* saturation region */ double T1 = Vdsat / 3.0; double T2 = -One_Third_CoxWL * dVdsat_dVb; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - T1); d->cggb = One_Third_CoxWL * (3.0 - dVdsat_dVg) * dVgs_eff_dVg; d->cgsb = -(d->cggb + T2); d->cgdb = 0.0; double T2a = -Two_Third_CoxWL * Vgst; double T3 = -(T2 + Two_Third_CoxWL * dVth_dVb); d->qbulk = -(d->qgate + T2a); d->cbgb = -(d->cggb - Two_Third_CoxWL * dVgs_eff_dVg); d->cbsb = -(d->cbgb + T3); d->cbdb = 0.0; d->qdrn = 0.0; d->cdgb = 0.0; d->cddb = 0.0; d->cdsb = 0.0; ////////// d->qinv = -(d->qgate + d->qbulk); }else{ /* linear region */ double Alphaz = Vgst / Vdsat; double T1 = 2.0 * Vdsat - d->vds; double T2 = d->vds / (3.0 * T1); double T3 = T2 * d->vds; double T9 = 0.25 * CoxWL; double T4 = T9 * Alphaz; double T7 = 2.0 * d->vds - T1 - 3.0 * T3; double T8 = T3 - T1 - 2.0 * d->vds; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - 0.5 * (d->vds-T3)); double T10 = T4 * T8; d->qdrn = T4 * T7; d->qbulk = -(d->qgate + d->qdrn + T10); ////////// d->qinv = -(d->qgate + d->qbulk); double T5 = T3 / T1; d->cggb = CoxWL * (1.0 - T5 * dVdsat_dVg) * dVgs_eff_dVg; double T11 = -CoxWL * T5 * dVdsat_dVb; d->cgdb = CoxWL * (T2 - 0.5 + 0.5 * T5); d->cgsb = -(d->cggb + T11 + d->cgdb); double T6 = 1.0 / Vdsat; double dAlphaz_dVg = T6 * (1.0 - Alphaz * dVdsat_dVg); double dAlphaz_dVb = -T6 * (dVth_dVb + Alphaz * dVdsat_dVb); T7 = T9 * T7; T8 = T9 * T8; T9 = 2.0 * T4 * (1.0 - 3.0 * T5); d->cdgb = (T7 * dAlphaz_dVg - T9 * dVdsat_dVg) * dVgs_eff_dVg; double T12 = T7 * dAlphaz_dVb - T9 * dVdsat_dVb; d->cddb = T4 * (3.0 - 6.0 * T2 - 3.0 * T5); d->cdsb = -(d->cdgb + T12 + d->cddb); T9 = 2.0 * T4 * (1.0 + T5); T10 = (T8 * dAlphaz_dVg - T9 * dVdsat_dVg) * dVgs_eff_dVg; T11 = T8 * dAlphaz_dVb - T9 * dVdsat_dVb; T12 = T4 * (2.0 * T2 + T5 - 1.0); double T0 = -(T10 + T11 + T12); d->cbgb = -(d->cggb + d->cdgb + T10); d->cbdb = -(d->cgdb + d->cddb + T12); d->cbsb = -(d->cgsb + d->cdsb + T0); } }else if (m->xpart < 0.5) { /* 40/60 Charge partition model */ if (d->vds >= Vdsat) { /* saturation region */ double T1 = Vdsat / 3.0; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - T1); double T2 = -Two_Third_CoxWL * Vgst; d->qbulk = -(d->qgate + T2); d->qdrn = 0.4 * T2; ////////// d->qinv = -(d->qgate + d->qbulk); d->cggb = One_Third_CoxWL * (3.0 - dVdsat_dVg) * dVgs_eff_dVg; T2 = -One_Third_CoxWL * dVdsat_dVb; d->cgsb = -(d->cggb + T2); d->cgdb = 0.0; double T3 = 0.4 * Two_Third_CoxWL; d->cdgb = -T3 * dVgs_eff_dVg; d->cddb = 0.0; double T4 = T3 * dVth_dVb; d->cdsb = -(T4 + d->cdgb); d->cbgb = -(d->cggb - Two_Third_CoxWL * dVgs_eff_dVg); T3 = -(T2 + Two_Third_CoxWL * dVth_dVb); d->cbsb = -(d->cbgb + T3); d->cbdb = 0.0; }else{ /* linear region */ double T1 = 2.0 * Vdsat - d->vds; double T2 = d->vds / (3.0 * T1); double T3 = T2 * d->vds; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - 0.5 * (d->vds - T3)); double T5 = T3 / T1; d->cggb = CoxWL * (1.0 - T5 * dVdsat_dVg) * dVgs_eff_dVg; double tmp = -CoxWL * T5 * dVdsat_dVb; d->cgdb = CoxWL * (T2 - 0.5 + 0.5 * T5); d->cgsb = -(d->cggb + d->cgdb + tmp); double T6 = 1.0 / Vdsat; double Alphaz = T6 * Vgst; double dAlphaz_dVg = T6 * (1.0 - Alphaz * dVdsat_dVg); double dAlphaz_dVb = -T6 * (dVth_dVb + Alphaz * dVdsat_dVb); T6 = 8.0 * Vdsat * Vdsat - 6.0 * Vdsat * d->vds + 1.2 * d->vds * d->vds; double T8 = T2 / T1; double T7 = d->vds - T1 - T8 * T6; double T9 = 0.25 * CoxWL; double T4 = T9 * Alphaz; d->qdrn = T4 * T7; T7 *= T9; tmp = T8 / T1; double tmp1 = T4 * (2.0 - 4.0 * tmp * T6 + T8 * (16.0 * Vdsat - 6.0 * d->vds)); d->cdgb = (T7 * dAlphaz_dVg - tmp1 * dVdsat_dVg) * dVgs_eff_dVg; double T10 = T7 * dAlphaz_dVb - tmp1 * dVdsat_dVb; d->cddb = T4 * (2.0 - (1.0 / (3.0 * T1 * T1) + 2.0 * tmp) * T6 + T8 * (6.0 * Vdsat - 2.4 * d->vds)); d->cdsb = -(d->cdgb + T10 + d->cddb); T7 = 2.0 * (T1 + T3); d->qbulk = -(d->qgate - T4 * T7); T7 *= T9; double T0 = 4.0 * T4 * (1.0 - T5); double T12 = (-T7 * dAlphaz_dVg - d->cdgb - T0 * dVdsat_dVg) * dVgs_eff_dVg; double T11 = -T7 * dAlphaz_dVb - T10 - T0 * dVdsat_dVb; T10 = -4.0 * T4 * (T2 - 0.5 + 0.5 * T5) - d->cddb; tmp = -(T10 + T11 + T12); d->cbgb = -(d->cggb + d->cdgb + T12); d->cbdb = -(d->cgdb + d->cddb + T10); /* bug fix 3.3 */ d->cbsb = -(d->cgsb + d->cdsb + tmp); trace3("0,40/60,lin", T10, T11, T12); trace3("0,40/60,lin", d->cbgb, d->cbdb, d->cbsb); ////////// d->qinv = -(d->qgate + d->qbulk); } }else{ /* 50/50 partitioning */ if (d->vds >= Vdsat) { /* saturation region */ double T1 = Vdsat / 3.0; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - T1); double T2 = -Two_Third_CoxWL * Vgst; d->qbulk = -(d->qgate + T2); ////////// d->qinv = -(d->qgate + d->qbulk); d->qdrn = 0.5 * T2; T2 = -One_Third_CoxWL * dVdsat_dVb; d->cggb = One_Third_CoxWL * (3.0 - dVdsat_dVg) * dVgs_eff_dVg; d->cgsb = -(d->cggb + T2); d->cgdb = 0.0; double T4 = One_Third_CoxWL * dVth_dVb; d->cdgb = -One_Third_CoxWL * dVgs_eff_dVg; d->cddb = 0.0; d->cdsb = -(T4 + d->cdgb); double T3 = -(T2 + Two_Third_CoxWL * dVth_dVb); d->cbgb = -(d->cggb - Two_Third_CoxWL * dVgs_eff_dVg); d->cbsb = -(d->cbgb + T3); d->cbdb = 0.0; }else{ /* linear region */ double T1 = 2.0 * Vdsat - d->vds; double T2 = d->vds / (3.0 * T1); double T3 = T2 * d->vds; double T5 = T3 / T1; double tmp = -CoxWL * T5 * dVdsat_dVb; d->qgate = CoxWL * (Vgs_eff - Vfb - t->phi - 0.5 * (d->vds-T3)); d->cggb = CoxWL * (1.0 - T5 * dVdsat_dVg) * dVgs_eff_dVg; d->cgdb = CoxWL * (T2 - 0.5 + 0.5 * T5); d->cgsb = -(d->cggb + d->cgdb + tmp); double T6 = 1.0 / Vdsat; double Alphaz = T6 * Vgst; double dAlphaz_dVg = T6 * (1.0 - Alphaz * dVdsat_dVg); double dAlphaz_dVb = -T6 * (dVth_dVb + Alphaz * dVdsat_dVb); double T9 = 0.25 * CoxWL; double T4 = T9 * Alphaz; double T7 = T1 + T3; d->qdrn = -T4 * T7; d->qbulk = - (d->qgate + d->qdrn + d->qdrn); ////////// d->qinv = -(d->qgate + d->qbulk); T7 *= T9; double T0 = T4 * (2.0 * T5 - 2.0); double T12 = T0 * dVdsat_dVb - T7 * dAlphaz_dVb; d->cdgb = (T0 * dVdsat_dVg - T7 * dAlphaz_dVg) * dVgs_eff_dVg; d->cddb = T4 * (1.0 - 2.0 * T2 - T5); d->cdsb = -(d->cdgb + T12 + d->cddb); d->cbgb = -(d->cggb + 2.0 * d->cdgb); d->cbdb = -(d->cgdb + 2.0 * d->cddb); d->cbsb = -(d->cgsb + 2.0 * d->cdsb); } } } // begins 1328 this 1618 trace0("end capMod == 0"); // end of else if (m->capMod == 0) line 1598 this 1875 untested(); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); untested(); }else{ trace0("begin capMod != 0 (mos8)"); assert(m->capMod != 0); double qsrc; double VbseffCV, dVbseffCV_dVb; if (Vbseff < 0.0) { VbseffCV = Vbseff; dVbseffCV_dVb = 1.0; }else{ VbseffCV = t->phi - Phis; dVbseffCV_dVb = -dPhis_dVb; } trace2("", VbseffCV, dVbseffCV_dVb); //////////-----------moved??? //double Vth = d->von; // possibly wrong value -- scope problem //double Vfb = Vth - t->phi - t->k1 * sqrtPhis; //double dVfb_dVb = dVth_dVb - t->k1 * dsqrtPhis_dVb; //double dVfb_dVd = dVth_dVd; //////////-------------end moved? double Vgsteff; { /* Seperate VgsteffCV with noff and voffcv */ double nnoff = n * s->noff; double dnoff_dVd = s->noff * dn_dVd; double dnoff_dVb = s->noff * dn_dVb; double T0 = t->vtm * nnoff; double Vgst = Vgs_eff - d->von; double VgstNVt = (Vgst - s->voffcv) / T0; trace3("", d->vgst, Vgst, VgstNVt); trace2("", n, t->vtm); if (VgstNVt > EXP_THRESHOLD) { trace0("VgstNVt above"); Vgsteff = Vgst - s->voffcv; dVgsteff_dVg = dVgs_eff_dVg; dVgsteff_dVd = -dVth_dVd; dVgsteff_dVb = -dVth_dVb; }else if (VgstNVt < -EXP_THRESHOLD) { trace0("VgstNVt below"); Vgsteff = T0 * log(1.0 + MIN_EXP); dVgsteff_dVg = 0.0; dVgsteff_dVd = Vgsteff / nnoff; dVgsteff_dVb = dVgsteff_dVd * dnoff_dVb; dVgsteff_dVd *= dnoff_dVd; }else{ trace0("VgstNVt in range"); double ExpVgst = exp(VgstNVt); trace1("", ExpVgst); Vgsteff = T0 * log(1.0 + ExpVgst); dVgsteff_dVg = ExpVgst / (1.0 + ExpVgst); dVgsteff_dVd = -dVgsteff_dVg * (dVth_dVd + (Vgst - s->voffcv) / nnoff * dnoff_dVd) + Vgsteff / nnoff * dnoff_dVd; dVgsteff_dVb = -dVgsteff_dVg * (dVth_dVb + (Vgst - s->voffcv) / nnoff * dnoff_dVb) + Vgsteff / nnoff * dnoff_dVb; dVgsteff_dVg *= dVgs_eff_dVg; } /* End of VgsteffCV */ } trace4("", Vgsteff, dVgsteff_dVg, dVgsteff_dVd, dVgsteff_dVb); /* old code if ((VgstNVt > -EXP_THRESHOLD) && (VgstNVt < EXP_THRESHOLD)) { assert(ExpVgst != NOT_VALID); ExpVgst *= ExpVgst; Vgsteff = n * t->vtm * log(1.0 + ExpVgst); dVgsteff_dVg = ExpVgst / (1.0 + ExpVgst); dVgsteff_dVd = -dVgsteff_dVg * (dVth_dVd + (Vgs_eff-Vth)/n * dn_dVd) + Vgsteff/n * dn_dVd; dVgsteff_dVb = -dVgsteff_dVg * (dVth_dVb + (Vgs_eff-Vth)/n * dn_dVb) + Vgsteff/n * dn_dVb; dVgsteff_dVg *= dVgs_eff_dVg; }else{ Vgsteff = d->vgst; } */ double CoxWL = m->cox * s->weffCV * s->leffCV; // redundant?? if (m->capMod == 1) { untested(); double Cgg, Cgd, Cgb; { double Vfb = t->vfbzb; double Arg1 = Vgs_eff - VbseffCV - Vfb - Vgsteff; if (Arg1 <= 0.0) { d->qgate = CoxWL * Arg1; Cgg = CoxWL * (dVgs_eff_dVg - dVgsteff_dVg); //Cgd = -CoxWL * (dVfb_dVd + dVgsteff_dVd); //Cgb = -CoxWL * (dVfb_dVb + dVbseffCV_dVb + dVgsteff_dVb); Cgd = -CoxWL * dVgsteff_dVd; Cgb = -CoxWL * (dVbseffCV_dVb + dVgsteff_dVb); }else{ double T0 = 0.5 * t->k1ox; double T1 = sqrt(T0 * T0 + Arg1); double T2 = CoxWL * T0 / T1; d->qgate = CoxWL * t->k1ox * (T1 - T0); Cgg = T2 * (dVgs_eff_dVg - dVgsteff_dVg); //Cgd = -T2 * (dVfb_dVd + dVgsteff_dVd); //Cgb = -T2 * (dVfb_dVb + dVbseffCV_dVb + dVgsteff_dVb); Cgd = -T2 * dVgsteff_dVd; Cgb = -T2 * (dVbseffCV_dVb + dVgsteff_dVb); } } d->qbulk = -d->qgate; double Cbg = -Cgg; double Cbd = -Cgd; double Cbb = -Cgb; double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; double Csg, Csb, Csd; { double VdsatCV = Vgsteff / AbulkCV; if (VdsatCV < d->vds) { double One_Third_CoxWL = CoxWL / 3.0; double Two_Third_CoxWL = 2.0 * One_Third_CoxWL; double dVdsatCV_dVg = 1.0 / AbulkCV; double dVdsatCV_dVb = -VdsatCV * dAbulkCV_dVb / AbulkCV; { double T0 = Vgsteff - VdsatCV / 3.0; double dT0_dVg = 1.0 - dVdsatCV_dVg / 3.0; double dT0_dVb = -dVdsatCV_dVb / 3.0; d->qgate += CoxWL * T0; double Cgg1 = CoxWL * dT0_dVg; double Cgb1 = CoxWL * dT0_dVb + Cgg1 * dVgsteff_dVb; double Cgd1 = Cgg1 * dVgsteff_dVd; Cgg1 *= dVgsteff_dVg; Cgg += Cgg1; Cgb += Cgb1; Cgd += Cgd1; } { double T0 = VdsatCV - Vgsteff; double dT0_dVg = dVdsatCV_dVg - 1.0; double dT0_dVb = dVdsatCV_dVb; d->qbulk += One_Third_CoxWL * T0; double Cbg1 = One_Third_CoxWL * dT0_dVg; double Cbb1 = One_Third_CoxWL * dT0_dVb + Cbg1 * dVgsteff_dVb; double Cbd1 = Cbg1 * dVgsteff_dVd; Cbg1 *= dVgsteff_dVg; Cbg += Cbg1; Cbb += Cbb1; Cbd += Cbd1; } double T0; if (m->xpart > 0.5) { T0 = -Two_Third_CoxWL; }else if (m->xpart < 0.5) { T0 = -0.4 * CoxWL; }else{ T0 = -One_Third_CoxWL; } qsrc = T0 * Vgsteff; Csg = T0 * dVgsteff_dVg; Csb = T0 * dVgsteff_dVb; Csd = T0 * dVgsteff_dVd; Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; }else{ double T0 = AbulkCV * d->vds; double T1 = 12.0 * (Vgsteff - 0.5 * T0 + 1.e-20); double Cgg1, Cgb1, Cgd1, Cbg1, Cbb1, Cbd1; { double T2 = d->vds / T1; double T3 = T0 * T2; double dT3_dVg = -12.0 * T2 * T2 * AbulkCV; double dT3_dVd = 6.0 * T0 * (4.0*Vgsteff - T0) / T1 / T1 - 0.5; double dT3_dVb = 12.0 * T2 * T2 * dAbulkCV_dVb * Vgsteff; d->qgate += CoxWL * (Vgsteff - 0.5 * d->vds + T3); Cgg1 = CoxWL * (1.0 + dT3_dVg); Cgb1 = CoxWL * dT3_dVb + Cgg1 * dVgsteff_dVb; Cgd1 = CoxWL * dT3_dVd + Cgg1 * dVgsteff_dVd; Cgg1 *= dVgsteff_dVg; Cgg += Cgg1; Cgb += Cgb1; Cgd += Cgd1; d->qbulk += CoxWL * (1.0 - AbulkCV) * (0.5 * d->vds - T3); Cbg1 = -CoxWL * ((1.0 - AbulkCV) * dT3_dVg); Cbb1 = -CoxWL * ((1.0 - AbulkCV) * dT3_dVb + (0.5 * d->vds - T3) * dAbulkCV_dVb) + Cbg1 * dVgsteff_dVb; Cbd1 = -CoxWL * (1.0 - AbulkCV) * dT3_dVd + Cbg1 * dVgsteff_dVd; Cbg1 *= dVgsteff_dVg; Cbg += Cbg1; Cbb += Cbb1; Cbd += Cbd1; } if (m->xpart > 0.5) { /* 0/100 Charge petition model */ T1 = T1 + T1; qsrc = -CoxWL * (0.5 * Vgsteff + 0.25 * T0 - T0 * T0 / T1); Csg = -CoxWL * (0.5 + 24.0 * T0 * d->vds / T1 / T1 * AbulkCV); Csb = -CoxWL * (0.25 * d->vds * dAbulkCV_dVb - 12.0 * T0 * d->vds / T1 / T1 * (4.0 * Vgsteff - T0) * dAbulkCV_dVb) + Csg * dVgsteff_dVb; Csd = -CoxWL * (0.25 * AbulkCV - 12.0 * AbulkCV * T0 / T1 / T1 * (4.0 * Vgsteff - T0)) + Csg * dVgsteff_dVd; Csg *= dVgsteff_dVg; }else if (m->xpart < 0.5) { /* 40/60 Charge petition model */ T1 = T1 / 12.0; double T2 = 0.5 * CoxWL / (T1 * T1); double T3 = Vgsteff * (2.0 * T0 * T0 / 3.0 + Vgsteff * (Vgsteff - 4.0 * T0 / 3.0)) - 2.0 * T0 * T0 * T0 / 15.0; qsrc = -T2 * T3; double T4 = 4.0 / 3.0 * Vgsteff * (Vgsteff-T0) + 0.4 * T0 * T0; Csg = -2.0 * qsrc / T1 - T2 * (Vgsteff * (3.0 * Vgsteff - 8.0 * T0 / 3.0) + 2.0 * T0 * T0 / 3.0); Csb = (qsrc / T1 * d->vds + T2 * T4 * d->vds) * dAbulkCV_dVb + Csg * dVgsteff_dVb; Csd = (qsrc / T1 + T2 * T4) * AbulkCV + Csg * dVgsteff_dVd; Csg *= dVgsteff_dVg; }else{ /* 50/50 Charge petition model */ qsrc = -0.5 * (d->qgate + d->qbulk); Csg = -0.5 * (Cgg1 + Cbg1); Csb = -0.5 * (Cgb1 + Cbb1); Csd = -0.5 * (Cgd1 + Cbd1); } Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; } } d->qdrn = -(d->qgate + d->qbulk + qsrc); d->cggb = Cgg; d->cgsb = -(Cgg + Cgd + Cgb); d->cgdb = Cgd; d->cdgb = -(Cgg + Cbg + Csg); d->cdsb = (Cgg + Cgd + Cgb + Cbg + Cbd + Cbb + Csg + Csd + Csb); d->cddb = -(Cgd + Cbd + Csd); d->cbgb = Cbg; d->cbsb = -(Cbg + Cbd + Cbb); d->cbdb = Cbd; ////////// d->qinv = -(d->qgate + d->qbulk); trace0("end capMod == 1"); untested(); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); untested(); }else if (m->capMod == 2) { trace0("begin capMod == 2"); double Qac0, dQac0_dVg, dQac0_dVb; double Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb; { double Vfb = t->vfbzb; double Vfbeff, dVfbeff_dVg, dVfbeff_dVb; { const double DELTA_3 = 0.02; double V3 = Vfb - Vgs_eff + VbseffCV - DELTA_3; double T0; //, T2; if (Vfb <= 0.0) { T0 = sqrt(V3 * V3 - 4.0 * DELTA_3 * Vfb); //T2 = -DELTA_3 / T0; }else{ T0 = sqrt(V3 * V3 + 4.0 * DELTA_3 * Vfb); //T2 = DELTA_3 / T0; } double T1 = 0.5 * (1.0 + V3 / T0); Vfbeff = Vfb - 0.5 * (V3 + T0); //dVfbeff_dVd = (1.0 - T1 - T2) * dVfb_dVd; dVfbeff_dVg = T1 * dVgs_eff_dVg; //dVfbeff_dVb = (1.0 - T1 - T2) * dVfb_dVb - T1 * dVbseffCV_dVb; dVfbeff_dVb = -T1 * dVbseffCV_dVb; } trace3("", Vfbeff, dVfbeff_dVg, dVfbeff_dVb); //double Qac0, dQac0_dVg, dQac0_dVd, dQac0_dVb; { Qac0 = CoxWL * (Vfbeff - Vfb); dQac0_dVg = CoxWL * dVfbeff_dVg; //dQac0_dVd = CoxWL * (dVfbeff_dVd - dVfb_dVd); //dQac0_dVb = CoxWL * (dVfbeff_dVb - dVfb_dVb); dQac0_dVb = CoxWL * dVfbeff_dVb; } //double Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb; { double T0 = 0.5 * t->k1ox; double T3 = Vgs_eff - Vfbeff - VbseffCV - Vgsteff; double T1, T2; if (t->k1ox == 0.0) { T1 = 0.0; T2 = 0.0; }else if (T3 < 0.0) { T1 = T0 + T3 / t->k1ox; T2 = CoxWL; }else{ T1 = sqrt(T0 * T0 + T3); T2 = CoxWL * T0 / T1; } Qsub0 = CoxWL * t->k1ox * (T1 - T0); dQsub0_dVg = T2 * (dVgs_eff_dVg - dVfbeff_dVg - dVgsteff_dVg); //dQsub0_dVd = -T2 * (dVfbeff_dVd + dVgsteff_dVd); dQsub0_dVd = -T2 * dVgsteff_dVd; dQsub0_dVb = -T2 * (dVfbeff_dVb +dVbseffCV_dVb +dVgsteff_dVb); } } trace3("", Qac0, dQac0_dVg, dQac0_dVb); trace4("", Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb); double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; trace2("", AbulkCV, dAbulkCV_dVb); double VdseffCV, dVdseffCV_dVg, dVdseffCV_dVd, dVdseffCV_dVb; { const double DELTA_4 = 0.02; double VdsatCV = Vgsteff / AbulkCV; double V4 = VdsatCV - d->vds - DELTA_4; double T0 = sqrt(V4 * V4 + 4.0 * DELTA_4 * VdsatCV); VdseffCV = VdsatCV - 0.5 * (V4 + T0); double T1 = 0.5 * (1.0 + V4 / T0); double T2 = DELTA_4 / T0; double T3 = (1.0 - T1 - T2) / AbulkCV; dVdseffCV_dVg = T3; dVdseffCV_dVd = T1; dVdseffCV_dVb = -T3 * VdsatCV * dAbulkCV_dVb; /* Added to eliminate non-zero VdseffCV at Vds=0.0 */ if (d->vds == 0.0) { //////VdseffCV = 0.0; //////dVdseffCV_dVg = 0.0; //////dVdseffCV_dVb = 0.0; } } trace4("", VdseffCV, dVdseffCV_dVg, dVdseffCV_dVd, dVdseffCV_dVb); double T0 = AbulkCV * VdseffCV; double T1 = 12.0 * (Vgsteff - 0.5 * T0 + 1e-20); trace2("", T0, T1); double Cgg1, Cgd1, Cgb1, Cbg1, Cbd1, Cbb1; // also 1st estimate of d->qgate, d->qbulk { double T2 = VdseffCV / T1; double T3 = T0 * T2; double T4 = (1.0 - 12.0 * T2 * T2 * AbulkCV); double T5 = (6.0 * T0 * (4.0 * Vgsteff - T0) / (T1 * T1) - 0.5); double T6 = 12.0 * T2 * T2 * Vgsteff; ////////// double qinoi = -CoxWL * (Vgsteff - 0.5 * T0 + AbulkCV * T3); ////////// d->qinv = qinoi; d->qgate = CoxWL * (Vgsteff - 0.5 * VdseffCV + T3); Cgg1 = CoxWL * (T4 + T5 * dVdseffCV_dVg); Cgd1 = CoxWL * T5 * dVdseffCV_dVd + Cgg1 * dVgsteff_dVd; Cgb1 = CoxWL * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Cgg1 * dVgsteff_dVb; Cgg1 *= dVgsteff_dVg; double T7 = 1.0 - AbulkCV; d->qbulk = CoxWL * T7 * (0.5 * VdseffCV - T3); T4 = -T7 * (T4 - 1.0); T5 = -T7 * T5; T6 = -(T7 * T6 + (0.5 * VdseffCV - T3)); Cbg1 = CoxWL * (T4 + T5 * dVdseffCV_dVg); Cbd1 = CoxWL * T5 * dVdseffCV_dVd + Cbg1 * dVgsteff_dVd; Cbb1 = CoxWL * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Cbg1 * dVgsteff_dVb; Cbg1 *= dVgsteff_dVg; } trace3("", Cgg1, Cgd1, Cgb1); trace3("", Cbg1, Cbd1, Cbb1); trace2("2-1", d->qgate, d->qbulk); double Csg, Csd, Csb; trace1("", m->xpart); if (m->xpart > 0.5) { trace0("0/100 Charge petition model"); T1 = T1 + T1; qsrc = -CoxWL * (0.5 * Vgsteff + 0.25 * T0 - T0 * T0 / T1); double T7 = (4.0 * Vgsteff - T0) / (T1 * T1); double T4 = -(0.5 + 24.0 * T0 * T0 / (T1 * T1)); double T5 = -(0.25 * AbulkCV - 12.0 * AbulkCV * T0 * T7); double T6 = -(0.25 * VdseffCV - 12.0 * T0 * VdseffCV * T7); Csg = CoxWL * (T4 + T5 * dVdseffCV_dVg); Csd = CoxWL * T5 * dVdseffCV_dVd + Csg * dVgsteff_dVd; Csb = CoxWL * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Csg * dVgsteff_dVb; Csg *= dVgsteff_dVg; }else if (m->xpart < 0.5) { trace0("40/60 Charge petition model"); T1 = T1 / 12.0; double T2 = 0.5 * CoxWL / (T1 * T1); double T3 = Vgsteff * (2.0 * T0 * T0 / 3.0 + Vgsteff * (Vgsteff - 4.0 * T0 / 3.0)) - 2.0 * T0 * T0 * T0 / 15.0; qsrc = -T2 * T3; double T7 = 4.0 / 3.0 * Vgsteff * (Vgsteff - T0) + 0.4 * T0 * T0; double T4 = -2.0 * qsrc / T1 - T2 * (Vgsteff * (3.0 * Vgsteff - 8.0 * T0 / 3.0) + 2.0 * T0 * T0 / 3.0); double T5 = (qsrc / T1 + T2 * T7) * AbulkCV; double T6 = (qsrc / T1 * VdseffCV + T2 * T7 * VdseffCV); Csg = (T4 + T5 * dVdseffCV_dVg); Csd = T5 * dVdseffCV_dVd + Csg * dVgsteff_dVd; Csb = (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Csg * dVgsteff_dVb; Csg *= dVgsteff_dVg; }else{ trace0("50/50 Charge petition model"); qsrc = -0.5 * (d->qgate + d->qbulk); Csg = -0.5 * (Cgg1 + Cbg1); Csb = -0.5 * (Cgb1 + Cbb1); Csd = -0.5 * (Cgd1 + Cbd1); } trace4("", Csg, Csd, Csb, qsrc); d->qgate += Qac0 + Qsub0; d->qbulk -= (Qac0 + Qsub0); d->qdrn = -(d->qgate + d->qbulk + qsrc); trace3("2-2", d->qgate, d->qbulk, d->qdrn); double Cgg = dQac0_dVg + dQsub0_dVg + Cgg1; //double Cgd = dQac0_dVd + dQsub0_dVd + Cgd1; double Cgd = dQsub0_dVd + Cgd1; double Cgb = dQac0_dVb + dQsub0_dVb + Cgb1; trace3("", Cgg, Cgd, Cgb); double Cbg = Cbg1 - dQac0_dVg - dQsub0_dVg; //double Cbd = Cbd1 - dQac0_dVd - dQsub0_dVd; double Cbd = Cbd1 - dQsub0_dVd; double Cbb = Cbb1 - dQac0_dVb - dQsub0_dVb; trace3("", Cbg, Cbd, Cbb); Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; trace3("adjusted", Cgb, Cbb, Csb); d->cggb = Cgg; d->cgsb = -(Cgg + Cgd + Cgb); d->cgdb = Cgd; d->cdgb = -(Cgg + Cbg + Csg); d->cdsb = (Cgg + Cgd + Cgb + Cbg + Cbd + Cbb + Csg + Csd + Csb); d->cddb = -(Cgd + Cbd + Csd); d->cbgb = Cbg; d->cbsb = -(Cbg + Cbd + Cbb); d->cbdb = Cbd; trace0("end capMod == 2"); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); }else if (m->capMod == 3) { trace0("begin capMod == 3"); double Vfbeff, dVfbeff_dVg, dVfbeff_dVb; { const double DELTA_3 = 0.02; double V3 = t->vfbzb - Vgs_eff + VbseffCV - DELTA_3; double T0; if (t->vfbzb <= 0.0) { T0 = sqrt(V3 * V3 - 4.0 * DELTA_3 * t->vfbzb); //T2 = -DELTA_3 / T0; }else{ T0 = sqrt(V3 * V3 + 4.0 * DELTA_3 * t->vfbzb); //T2 = DELTA_3 / T0; } double T1 = 0.5 * (1.0 + V3 / T0); Vfbeff = t->vfbzb - 0.5 * (V3 + T0); dVfbeff_dVg = T1 * dVgs_eff_dVg; dVfbeff_dVb = -T1 * dVbseffCV_dVb; } double Cox = m->cox; double Tox = 1.0e8 * m->tox; trace2("", Cox, Tox); double Qac0, dQac0_dVg, dQac0_dVb; double Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb; { double Coxeff, dCoxeff_dVg, dCoxeff_dVb, CoxWLcen; { double Tcen, dTcen_dVg, dTcen_dVb; { double T0 = (Vgs_eff - VbseffCV - t->vfbzb) / Tox; double tmp = T0 * s->acde; trace2("", T0, tmp); if ((-EXP_THRESHOLD < tmp) && (tmp < EXP_THRESHOLD)) { double dT0_dVg = dVgs_eff_dVg / Tox; double dT0_dVb = -dVbseffCV_dVb / Tox; trace4("", dT0_dVg, dT0_dVb, s->ldeb, exp(tmp)); Tcen = s->ldeb * exp(tmp); dTcen_dVg = s->acde * Tcen; dTcen_dVb = dTcen_dVg * dT0_dVb; dTcen_dVg *= dT0_dVg; }else if (tmp <= -EXP_THRESHOLD) { Tcen = s->ldeb * MIN_EXP; dTcen_dVg = dTcen_dVb = 0.0; }else{ Tcen = s->ldeb * MAX_EXP; dTcen_dVg = dTcen_dVb = 0.0; } trace3("1", Tcen, dTcen_dVg, dTcen_dVb); double LINK = 1.0e-3 * m->tox; double V3 = s->ldeb - Tcen - LINK; double V4 = sqrt(V3 * V3 + 4.0 * LINK * s->ldeb); double T1 = 0.5 * (1.0 + V3 / V4); trace4("", LINK, V3, V4, T1); Tcen = s->ldeb - 0.5 * (V3 + V4); dTcen_dVg *= T1; dTcen_dVb *= T1; } trace3("2", Tcen, dTcen_dVg, dTcen_dVb); { double Ccen = P_EPS_SI / Tcen; double T2 = Cox / (Cox + Ccen); double T3 = -Ccen / Tcen; trace3("Coxeff", Ccen, T2, T3); Coxeff = T2 * Ccen; dCoxeff_dVg = T2 * T2 * T3; dCoxeff_dVb = dCoxeff_dVg * dTcen_dVb; dCoxeff_dVg *= dTcen_dVg; CoxWLcen = CoxWL * Coxeff / Cox; } } trace4("", Coxeff, dCoxeff_dVg, dCoxeff_dVb, CoxWLcen); //double Qac0, dQac0_dVg, dQac0_dVb; { trace4("Qac0", CoxWLcen, Vfbeff, t->vfbzb, Coxeff); Qac0 = CoxWLcen * (Vfbeff - t->vfbzb); double QovCox = Qac0 / Coxeff; dQac0_dVg = CoxWLcen * dVfbeff_dVg + QovCox * dCoxeff_dVg; dQac0_dVb = CoxWLcen * dVfbeff_dVb + QovCox * dCoxeff_dVb; } trace3("", Qac0, dQac0_dVg, dQac0_dVb); //double Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb; { double T0 = 0.5 * t->k1ox; double T3 = Vgs_eff - Vfbeff - VbseffCV - Vgsteff; double T1, T2; if (t->k1ox == 0.0) { T1 = 0.0; T2 = 0.0; }else if (T3 < 0.0) { T1 = T0 + T3 / t->k1ox; T2 = CoxWLcen; }else{ T1 = sqrt(T0 * T0 + T3); T2 = CoxWLcen * T0 / T1; } Qsub0 = CoxWLcen * t->k1ox * (T1 - T0); double QovCox = Qsub0 / Coxeff; dQsub0_dVg = T2 * (dVgs_eff_dVg - dVfbeff_dVg - dVgsteff_dVg) + QovCox * dCoxeff_dVg; dQsub0_dVd = -T2 * dVgsteff_dVd; dQsub0_dVb = -T2 * (dVfbeff_dVb + dVbseffCV_dVb + dVgsteff_dVb) + QovCox * dCoxeff_dVb; } trace4("", Qsub0, dQsub0_dVg, dQsub0_dVd, dQsub0_dVb); } // end scope Coxeff, CoxWLcen assert(Qac0 == Qac0); assert(Qsub0 == Qsub0); double VgDP, dVgDP_dVg; { double DeltaPhi, dDeltaPhi_dVg; { /* Gate-bias dependent delta Phis begins */ double Denomi, T0; if (t->k1ox <= 0.0) { Denomi = 0.25 * s->moin * t->vtm; T0 = 0.5 * t->sqrtPhi; }else{ Denomi = s->moin * t->vtm * t->k1ox * t->k1ox; T0 = t->k1ox * t->sqrtPhi; } double T1 = 2.0 * T0 + Vgsteff; DeltaPhi = t->vtm * log(1.0 + T1 * Vgsteff / Denomi); dDeltaPhi_dVg = 2.0 * t->vtm * (T1-T0) / (Denomi + T1 * Vgsteff); } /* VgDP = Vgsteff - DeltaPhi */ double T0 = Vgsteff - DeltaPhi - 0.001; double dT0_dVg = 1.0 - dDeltaPhi_dVg; double T1 = sqrt(T0 * T0 + Vgsteff * 0.004); VgDP = 0.5 * (T0 + T1); dVgDP_dVg = 0.5 * (dT0_dVg + (T0 * dT0_dVg + 0.002) / T1); } double Coxeff, dCoxeff_dVg, dCoxeff_dVd, dCoxeff_dVb; { double Tcen, dTcen_dVg, dTcen_dVd, dTcen_dVb; { double T3 = 4.0 * (d->von - t->vfbzb - t->phi); Tox += Tox; double T0, dT0_dVd, dT0_dVb; if (T3 >= 0.0) { T0 = (Vgsteff + T3) / Tox; dT0_dVd = (dVgsteff_dVd + 4.0 * dVth_dVd) / Tox; dT0_dVb = (dVgsteff_dVb + 4.0 * dVth_dVb) / Tox; }else{ T0 = (Vgsteff + 1.0e-20) / Tox; dT0_dVd = dVgsteff_dVd / Tox; dT0_dVb = dVgsteff_dVb / Tox; } double tmp = exp(0.7 * log(T0)); double T1 = 1.0 + tmp; double T2 = 0.7 * tmp / (T0 * Tox); Tcen = 1.9e-9 / T1; dTcen_dVg = -1.9e-9 * T2 / T1 /T1; dTcen_dVd = Tox * dTcen_dVg; dTcen_dVb = dTcen_dVd * dT0_dVb; dTcen_dVd *= dT0_dVd; dTcen_dVg *= dVgsteff_dVg; } double Ccen = P_EPS_SI / Tcen; double T0 = Cox / (Cox + Ccen); Coxeff = T0 * Ccen; double T1 = -Ccen / Tcen; dCoxeff_dVg = T0 * T0 * T1; dCoxeff_dVd = dCoxeff_dVg * dTcen_dVd; dCoxeff_dVb = dCoxeff_dVg * dTcen_dVb; dCoxeff_dVg *= dTcen_dVg; } double CoxWLcen = CoxWL * Coxeff / Cox; double AbulkCV = Abulk0 * s->abulkCVfactor; double dAbulkCV_dVb = s->abulkCVfactor * dAbulk0_dVb; double VdseffCV, dVdseffCV_dVg, dVdseffCV_dVd, dVdseffCV_dVb; { const double DELTA_4 = 0.02; double VdsatCV = VgDP / AbulkCV; double T0 = VdsatCV - d->vds - DELTA_4; double dT0_dVg = dVgDP_dVg / AbulkCV; double dT0_dVb = -VdsatCV * dAbulkCV_dVb / AbulkCV; double T1 = sqrt(T0 * T0 + 4.0 * DELTA_4 * VdsatCV); double dT1_dVg = (T0 + DELTA_4 + DELTA_4) / T1; double dT1_dVd = -T0 / T1; double dT1_dVb = dT1_dVg * dT0_dVb; dT1_dVg *= dT0_dVg; if (T0 >= 0.0) { VdseffCV = VdsatCV - 0.5 * (T0 + T1); dVdseffCV_dVg = 0.5 * (dT0_dVg - dT1_dVg); dVdseffCV_dVd = 0.5 * (1.0 - dT1_dVd); dVdseffCV_dVb = 0.5 * (dT0_dVb - dT1_dVb); }else{ double T3 = (DELTA_4 + DELTA_4) / (T1 - T0); double T4 = 1.0 - T3; double T5 = VdsatCV * T3 / (T1 - T0); VdseffCV = VdsatCV * T4; dVdseffCV_dVg = dT0_dVg * T4 + T5 * (dT1_dVg - dT0_dVg); dVdseffCV_dVd = T5 * (dT1_dVd + 1.0); dVdseffCV_dVb = dT0_dVb * (1.0 - T5) + T5 * dT1_dVb; } /* Added to eliminate non-zero VdseffCV at Vds=0.0 */ if (d->vds == 0.0) { VdseffCV = 0.0; dVdseffCV_dVg = 0.0; dVdseffCV_dVb = 0.0; } } double T0 = AbulkCV * VdseffCV; double T1 = VgDP; double T2 = 12.0 * (T1 - 0.5 * T0 + 1.0e-20); double T3 = T0 / T2; double T4 = 1.0 - 12.0 * T3 * T3; double T5 = AbulkCV * (6.0 * T0 * (4.0 * T1 - T0) / (T2*T2) - 0.5); double T6 = T5 * VdseffCV / AbulkCV; d->qgate = CoxWLcen * (T1 - T0 * (0.5 - T3)); //////////double qinoi = qgate; double Cgg1, Cgd1, Cgb1; { double QovCox = d->qgate / Coxeff; Cgg1 = CoxWLcen * (T4 * dVgDP_dVg + T5 * dVdseffCV_dVg); Cgd1 = CoxWLcen * T5 * dVdseffCV_dVd + Cgg1 * dVgsteff_dVd + QovCox * dCoxeff_dVd; Cgb1 = CoxWLcen * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Cgg1 * dVgsteff_dVb + QovCox * dCoxeff_dVb; Cgg1 = Cgg1 * dVgsteff_dVg + QovCox * dCoxeff_dVg; } double T7 = 1.0 - AbulkCV; double T8 = T2 * T2; double T9 = 12.0 * T7 * T0 * T0 / (T8 * AbulkCV); double T10 = T9 * dVgDP_dVg; double T11 = -T7 * T5 / AbulkCV; double T12 = -(T9 * T1 / AbulkCV + VdseffCV * (0.5 - T0 / T2)); d->qbulk = CoxWLcen * T7 * (0.5 * VdseffCV - T0 * VdseffCV / T2); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); double Cbg1, Cbd1, Cbb1; { double QovCox = d->qbulk / Coxeff; Cbg1 = CoxWLcen * (T10 + T11 * dVdseffCV_dVg); Cbd1 = CoxWLcen * T11 * dVdseffCV_dVd + Cbg1 * dVgsteff_dVd + QovCox * dCoxeff_dVd; Cbb1 = CoxWLcen * (T11 * dVdseffCV_dVb + T12 * dAbulkCV_dVb) + Cbg1 * dVgsteff_dVb + QovCox * dCoxeff_dVb; Cbg1 = Cbg1 * dVgsteff_dVg + QovCox * dCoxeff_dVg; } //////////qsrc -- scope too wide?? double Csg, Csd, Csb; if (m->xpart > 0.5) { /* 0/100 partition */ qsrc = -CoxWLcen * (T1 / 2.0 + T0 / 4.0 - 0.5 * T0 * T0 / T2); double QovCox = qsrc / Coxeff; T2 += T2; T3 = T2 * T2; T7 = -(0.25 - 12.0 * T0 * (4.0 * T1 - T0) / T3); T4 = -(0.5 + 24.0 * T0 * T0 / T3) * dVgDP_dVg; T5 = T7 * AbulkCV; T6 = T7 * VdseffCV; Csg = CoxWLcen * (T4 + T5 * dVdseffCV_dVg); Csd = CoxWLcen * T5 * dVdseffCV_dVd + Csg * dVgsteff_dVd + QovCox * dCoxeff_dVd; Csb = CoxWLcen * (T5 * dVdseffCV_dVb + T6 * dAbulkCV_dVb) + Csg * dVgsteff_dVb + QovCox * dCoxeff_dVb; Csg = Csg * dVgsteff_dVg + QovCox * dCoxeff_dVg; }else if (m->xpart < 0.5) { /* 40/60 partition */ T2 = T2 / 12.0; T3 = 0.5 * CoxWLcen / (T2 * T2); T4 = T1 * (2.0 * T0 * T0 / 3.0 + T1 * (T1 - 4.0 * T0 / 3.0)) - 2.0 * T0 * T0 * T0 / 15.0; qsrc = -T3 * T4; double QovCox = qsrc / Coxeff; T8 = 4.0 / 3.0 * T1 * (T1 - T0) + 0.4 * T0 * T0; T5 = -2.0 * qsrc / T2 - T3 * (T1 * (3.0 * T1 - 8.0 * T0 / 3.0) + 2.0 * T0 * T0 / 3.0); T6 = AbulkCV * (qsrc / T2 + T3 * T8); T7 = T6 * VdseffCV / AbulkCV; Csg = T5 * dVgDP_dVg + T6 * dVdseffCV_dVg; Csd = Csg * dVgsteff_dVd + T6 * dVdseffCV_dVd + QovCox * dCoxeff_dVd; Csb = Csg * dVgsteff_dVb + T6 * dVdseffCV_dVb + T7 * dAbulkCV_dVb + QovCox * dCoxeff_dVb; Csg = Csg * dVgsteff_dVg + QovCox * dCoxeff_dVg; }else{ /* 50/50 partition */ qsrc = -0.5 * d->qgate; Csg = -0.5 * Cgg1; Csd = -0.5 * Cgd1; Csb = -0.5 * Cgb1; } ////////// assert(Qsub0 == Qsub0); assert(Qac0 == Qac0); d->qgate += Qac0 + Qsub0 - d->qbulk; d->qbulk -= (Qac0 + Qsub0); d->qdrn = -(d->qgate + d->qbulk + qsrc); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); { double Cbg = Cbg1 - dQac0_dVg - dQsub0_dVg; double Cbd = Cbd1 - dQsub0_dVd; double Cbb = Cbb1 - dQac0_dVb - dQsub0_dVb; double Cgg = Cgg1 - Cbg; double Cgd = Cgd1 - Cbd; double Cgb = Cgb1 - Cbb; Cgb *= dVbseff_dVb; Cbb *= dVbseff_dVb; Csb *= dVbseff_dVb; d->cggb = Cgg; d->cgsb = -(Cgg + Cgd + Cgb); d->cgdb = Cgd; d->cdgb = -(Cgg + Cbg + Csg); d->cdsb = (Cgg + Cgd + Cgb + Cbg + Cbd + Cbb + Csg + Csd + Csb); d->cddb = -(Cgd + Cbd + Csd); d->cbgb = Cbg; d->cbsb = -(Cbg + Cbd + Cbb); d->cbdb = Cbd; } ////////// d->qinv = -qinoi; assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); }else{ error(bDANGER, "illegal capmod = %d\n", int(m->capMod)); d->qgate = d->qdrn = d->qbulk = 0.0; d->cggb = d->cgsb = d->cgdb = 0.0; d->cdgb = d->cdsb = d->cddb = 0.0; d->cbgb = d->cbsb = d->cbdb = 0.0; ////////// d->cqdb = d->cqsb = d->cqgb = d->cqbb = 0.0; ////////// d->gtau = 0.0; trace0("xpart < 0 || no charge computation"); untested(); assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); untested(); } assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); /* Non-quasi-static Model */ double tconst; if (m->nqsMod) { // d->gtau double qcheq = -d->qbulk - d->qgate; double T0 = s->leffCV * s->leffCV; tconst = t->u0temp * s->elm / CoxWL / T0; if (qcheq == 0.0) { tconst = 0.0; }else if (qcheq < 0.0) { tconst = -tconst; }else{ } double gtau_drift = std::abs(tconst * qcheq); double gtau_diff = 16.0 * t->u0temp * t->vtm / T0; d->gtau = gtau_drift + gtau_diff; d->cqgb = -(d->cggb + d->cbgb); d->cqdb = -(d->cgdb + d->cbdb); d->cqsb = -(d->cgsb + d->cbsb); d->cqbb = d->cggb +d->cgdb +d->cgsb +d->cbgb +d->cbdb +d->cbsb; d->qbulk = d->qgate = d->qdrn = qsrc = 0.0; d->cggb = d->cgsb = d->cgdb = 0.0; d->cdgb = d->cdsb = d->cddb = 0.0; d->cbgb = d->cbsb = d->cbdb = 0.0; #if 0 *(ckt->CKTstate0 + d->qcheq) = qcheq; if (ckt->CKTmode & MODEINITTRAN) *(ckt->CKTstate1 + d->qcheq) = *(ckt->CKTstate0 + d->qcheq); error = NIintegrate(ckt, &geq, &ceq, 0.0, d->qcheq); if (error) return (error); #endif }else{ d->gtau = 0.0; d->cqgb = d->cqdb = d->cqsb = d->cqbb = 0.0; } } } if (d->reversed) { d->qdrn = -d->qdrn; d->cdgb = -d->cdgb; { double t1 = d->cdsb; d->cdsb = -d->cddb; d->cddb = -t1; } d->qgd = d->qgate; d->cgdgb = d->cggb; d->cgdsb = d->cgsb; d->cgddb = d->cgdb; d->qgs = 0.; d->cgsgb = 0.; d->cgssb = 0.; d->cgsdb = 0.; d->qbd = d->qbulk; d->cbdgb = d->cbgb; d->cbdsb = d->cbsb; d->cbddb = d->cbdb; d->qbs = 0.; d->cbsgb = 0.; d->cbssb = 0.; d->cbsdb = 0.; }else{ d->qgs = d->qgate; d->cgsgb = d->cggb; d->cgssb = d->cgsb; d->cgsdb = d->cgdb; d->qgd = 0.; d->cgdgb = 0.; d->cgdsb = 0.; d->cgddb = 0.; d->qbs = d->qbulk; d->cbsgb = d->cbgb; d->cbssb = d->cbsb; d->cbsdb = d->cbdb; d->qbd = 0.; d->cbdgb = 0.; d->cbdsb = 0.; d->cbddb = 0.; } if (m->polarity == pP){ d->qgs *= -1; d->qbd *= -1; d->qbs *= -1; d->qgd *= -1; d->qdrn *= -1; //d->qbulk *= -1; }else{ } assert(d->qbulk == d->qbulk); assert(d->qdrn == d->qdrn); assert(d->qgate == d->qgate); trace0("mos8"); trace4("", d->qgate, d->cggb, d->cgsb, d->cgdb); trace4("", d->qdrn, d->cdgb, d->cdsb, d->cddb); trace4("", d->qbulk, d->cbgb, d->cbsb, d->cbdb); trace2("", d->ids, d->gds); trace4("", d->gmf, d->gmr, d->gmbf, d->gmbr); //trace4("", d->isub, d->gbbs, d->gbgs, d->gbds); trace4("", d->qgate, d->cggb, d->cgsb, d->cgdb); trace4("", d->qdrn, d->cdgb, d->cdsb, d->cddb); trace4("", d->qbulk, d->cbgb, d->cbsb, d->cbdb); trace1("", d->gtau); trace4("", d->cqgb, d->cqsb, d->cqdb, d->cqbb); //trace1("", d->tconst); //trace2("", d->cgb, d->qgb); //trace2("", d->qgd, d->cgd); trace2("", d->qgs, d->cgs); trace3("", d->vgs, d->vds, d->vbs); trace3("", d->vdsat, d->vgst, d->von); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_mos_base.model000066400000000000000000000171021316501211100151260ustar00rootroot00000000000000/* $Id: d_mos_base.model,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * MOS model - base for levels 1,2,3,6 */ h_headers { #include "d_mos.h" } cc_headers { const double mDEFAULT_is = 1e-14; } /*--------------------------------------------------------------------------*/ model BUILT_IN_MOS_BASE { dev_type BUILT_IN_MOS; hide_base; inherit BUILT_IN_DIODE; private_keys { nmos polarity=pN; pmos polarity=pP; } validate { c->l_in.e_val(OPT::defl,d->scope()); c->w_in.e_val(OPT::defw,d->scope()); m->lmin.e_val(0,m->scope()); m->lmax.e_val(INF,m->scope()); m->wmin.e_val(0,m->scope()); m->wmax.e_val(INF,m->scope()); return c->l_in >= m->lmin && c->l_in <= m->lmax && c->w_in >= m->wmin && c->w_in <= m->wmax; } independent { override { double _tnom_c "" name=TNOM default=OPT::tnom_c; double fc "coef for fwd bias depl cap formula" name=FC; double pb "junction potential" name=PB positive; double cjo "zero-bias jct capacitance (per area)" name=CJ; double mj "grading coefficient" name=MJ; double cjsw "zero bias sidewall cap (per perim.)" name=CJSW; double pbsw "sidewall junction potential" name=PBSW print_test="pbsw != pb"; double mjsw "sidewall grading coefficient" name=MJSW; double kf "flicker noise coefficient" name=KF print_test="has_good_value(kf)"; double af "flicker noise exponent" name=AF print_test="has_good_value(af)"; } raw_parameters { int level "dummy" name=LEVEL default=1 print_test=false; double wmax "max width" name=WMAX positive default=INF print_test="wmaxis_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": rd input, but not rs. setting rs = 0.\n"); rs.set_default(0.); }else if ((!has_hard_value(rd)) && has_hard_value(rs)) {untested();//109 error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": rs input, but not rd. setting rd = 0.\n"); rd.set_default(0.); }else{ /* rd, rs are ok, either have both or neither */ } if (has_hard_value(rsh) && (has_hard_value(rd) || has_hard_value(rs))) { error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": rsh - rs - rd conflict: using " + (((rd <= 0.) && (rs <= 0.)) ? "rsh" : "rs,rd") + '\n'); }else if (!has_hard_value(rsh) && (!has_hard_value(rd)) && (!has_hard_value(rs))) { // don't have anything }else{ /* rsh, rd are ok, have one or other */ } if (!has_hard_value(is) && !has_hard_value(js)) { /* don't have either, use default is */ }else if (has_hard_value(is) && has_hard_value(js)) { error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": is - js conflict\n"); }else{ /* is, js are ok, have one or other */ } } } size_dependent { calculated_parameters { double l_eff "-23-c- actual (electrical) channel length" calculate="(has_hard_value(c->l_in)) ? c->l_in * m->lmlt + m->xl - 2. * (m->ld + m->del) : OPT::defl"; double w_eff "--3-c- actual (electrical) channel width" calculate="(has_hard_value(c->w_in)) ? c->w_in * m->wmlt + m->xw - 2. * m->wd : OPT::defw"; double ad "----c- drain area, actual" calculate="(has_hard_value(c->ad_in)) ? c->ad_in : OPT::defad"; double as "----c- source area, actual" calculate="(has_hard_value(c->as_in)) ? c->as_in : OPT::defas"; double cgate "-----b gate to channel capacitance" calculate=NA; double idsat "-----b drain junction saturation current"; double issat "-----b source junction saturation current"; double rd "-----b ohmic drain resistance"; double rs "-----b ohmic source resistance"; double phi "surface potential at strong inversion" calculate=NA; double cgso "" calculate="m->cgso * w_eff"; double cgdo "" calculate="m->cgdo * w_eff"; double cgbo "" calculate="m->cgbo * l_eff"; } code_post { if (has_hard_value(m->rd) || has_hard_value(m->rs)) { rd = m->rd; rs = m->rs; }else{ rd = m->rsh * c->nrd; rs = m->rsh * c->nrs; } if (!has_hard_value(m->js) || ad == 0. || as == 0.) { idsat = issat = m->is; /* this convoluted logic */ }else{ /* is for Spice compatibility */ idsat = m->js * ad; issat = m->js * as; } } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ apps/d_poly_cap.cc000066400000000000000000000231131316501211100144300ustar00rootroot00000000000000/*$Id: d_poly_cap.cc $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * DEV_CPOLY_CAP * number of nodes = 2*n_ports * number of val, ov = n_ports+1 * val[0] is the constant part, val[1] is self admittance, * val[2+] are transadmittances, up to n_ports * node[0] and node[1] are the output. * node[2] up are inputs. * node[2*i] and node[2*i+1] correspond to val[i+1] */ //testing=script 2006.07.17 #include "globals.h" #include "e_storag.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_CPOLY_CAP : public STORAGE { protected: double* _vy0; // vector form of _y0 _values; charge, capacitance double* _vy1; // vector form of _y1 _old_values; double* _vi0; // vector form of _i0; current, difference conductance double* _vi1; // vector form of _i1 int _n_ports; double _load_time; const double** _inputs; protected: explicit DEV_CPOLY_CAP(const DEV_CPOLY_CAP& p); public: explicit DEV_CPOLY_CAP(); ~DEV_CPOLY_CAP(); protected: // override virtual char id_letter()const {unreachable(); return '\0';} std::string value_name()const {incomplete(); return "";} std::string dev_type()const {unreachable(); return "cpoly_cap";} int max_nodes()const {return net_nodes();} int min_nodes()const {return net_nodes();} int matrix_nodes()const {return _n_ports*2;} int net_nodes()const {return _n_ports*2;} CARD* clone()const {unreachable();return new DEV_CPOLY_CAP(*this);} void tr_iwant_matrix() {tr_iwant_matrix_extended();} bool tr_needs_eval()const {/*assert(!is_q_for_eval());*/ return true;} bool do_tr(); void tr_load(); TIME_PAIR tr_review() {return _time_by.reset();}//BUG//review(_i0.f0, _it1.f0);} void tr_unload(); double tr_involts()const {unreachable(); return NOT_VALID;} double tr_involts_limited()const {unreachable(); return NOT_VALID;} double tr_amps()const; void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_load(); COMPLEX ac_involts()const {itested(); return NOT_VALID;} COMPLEX ac_amps()const {itested(); return NOT_VALID;} std::string port_name(int)const {untested(); incomplete(); unreachable(); return ""; } public: void set_parameters(const std::string& Label, CARD* Parent, COMMON_COMPONENT* Common, double Value, int state_count, double state[], int node_count, const node_t nodes[]); // const double* inputs[]=0); protected: bool do_tr_con_chk_and_q(); }; /*--------------------------------------------------------------------------*/ class DEV_FPOLY_CAP : public DEV_CPOLY_CAP { private: explicit DEV_FPOLY_CAP(const DEV_FPOLY_CAP& p) :DEV_CPOLY_CAP(p) {} public: explicit DEV_FPOLY_CAP() :DEV_CPOLY_CAP() {} private: // override virtual char id_letter()const {unreachable(); return '\0';} std::string dev_type()const{unreachable(); return "fpoly_cap";} CARD* clone()const {return new DEV_FPOLY_CAP(*this);} bool do_tr(); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CPOLY_CAP::DEV_CPOLY_CAP(const DEV_CPOLY_CAP& p) :STORAGE(p), _vy0(NULL), _vy1(NULL), _vi0(NULL), _vi1(NULL), _n_ports(p._n_ports), _load_time(NOT_VALID), _inputs(NULL) { // not really a copy .. only valid to copy a default // too lazy to do it right, and that's all that is being used // to do it correctly requires a deep copy // just filling in defaults is better than a shallow copy, hence this: assert(!p._vy0); assert(!p._vy1); assert(!p._vi0); assert(!p._vi1); assert(p._n_ports == 0); assert(!p._inputs); } /*--------------------------------------------------------------------------*/ DEV_CPOLY_CAP::DEV_CPOLY_CAP() :STORAGE(), _vy0(NULL), _vy1(NULL), _vi0(NULL), _vi1(NULL), _n_ports(0), _load_time(NOT_VALID), _inputs(NULL) { } /*--------------------------------------------------------------------------*/ DEV_CPOLY_CAP::~DEV_CPOLY_CAP() { delete [] _vy1; delete [] _vi0; delete [] _vi1; if (net_nodes() > NODES_PER_BRANCH) { delete [] _n; }else{ // it is part of a base class } } /*--------------------------------------------------------------------------*/ bool DEV_CPOLY_CAP::do_tr_con_chk_and_q() { q_load(); assert(_vy1); set_converged(conchk(_load_time, _sim->_time0)); _load_time = _sim->_time0; for (int i=0; converged() && i<=_n_ports; ++i) { set_converged(conchk(_vy1[i], _vy0[i])); } set_converged(); return converged(); } /*--------------------------------------------------------------------------*/ bool DEV_CPOLY_CAP::do_tr() {untested(); incomplete(); _m0 = CPOLY1(0., _vi0[0], _vi0[1]); return do_tr_con_chk_and_q(); } /*--------------------------------------------------------------------------*/ bool DEV_FPOLY_CAP::do_tr() { assert((_time[0] == 0) || (_vy0[0] == _vy0[0])); _y[0].x = tr_outvolts(); _y[0].f0 = _vy0[0]; _y[0].f1 = _vy0[1]; _i[0] = differentiate(_y, _i, _time, _method_a); _vi0[0] = _i[0].f0; _vi0[1] = _i[0].f1; assert(_vi0[0] == _vi0[0]); if (_inputs) {untested(); for (int i=1; i<=_n_ports; ++i) {untested(); _vi0[i] = tr_c_to_g(_vy0[i], _vi0[i]); _vi0[0] -= *(_inputs[i]) * _vi0[i]; } }else{ for (int i=1; i<=_n_ports; ++i) { _vi0[i] = tr_c_to_g(_vy0[i], _vi0[i]); _vi0[0] -= volts_limited(_n[2*i-2],_n[2*i-1]) * _vi0[i]; assert(_vi0[i] == _vi0[i]); assert(_vi0[0] == _vi0[0]); } } for (int i=0; i<=_n_ports; ++i) { assert(_vi0[i] == _vi0[i]); } _m0 = CPOLY1(0., _vi0[0], _vi0[1]); return do_tr_con_chk_and_q(); } /*--------------------------------------------------------------------------*/ void DEV_CPOLY_CAP::tr_load() { for (int i=0; i<=_n_ports; ++i) { assert(_vi0[i] == _vi0[i]); } tr_load_passive(); _vi1[0] = _vi0[0]; _vi1[1] = _vi0[1]; for (int i=2; i<=_n_ports; ++i) { tr_load_extended(_n[OUT1], _n[OUT2], _n[2*i-2], _n[2*i-1], &(_vi0[i]), &(_vi1[i])); } } /*--------------------------------------------------------------------------*/ void DEV_CPOLY_CAP::tr_unload() {untested(); std::fill_n(_vi0, _n_ports+1, 0.); _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load(); } /*--------------------------------------------------------------------------*/ double DEV_CPOLY_CAP::tr_amps()const {untested(); double amps = _m0.c0; for (int i=1; i<=_n_ports; ++i) {untested(); amps += dn_diff(_n[2*i-2].v0(),_n[2*i-1].v0()) * _vi0[i]; } return amps; } /*--------------------------------------------------------------------------*/ void DEV_CPOLY_CAP::ac_load() { _acg = _vy0[1] * _sim->_jomega; ac_load_passive(); for (int i=2; i<=_n_ports; ++i) { ac_load_extended(_n[OUT1], _n[OUT2], _n[2*i-2], _n[2*i-1], _vy0[i] * _sim->_jomega); } } /*--------------------------------------------------------------------------*/ /* set: set parameters, used in model building */ void DEV_CPOLY_CAP::set_parameters(const std::string& Label, CARD *Owner, COMMON_COMPONENT *Common, double Value, int n_states, double states[], int n_nodes, const node_t nodes[]) // const double* inputs[]) { bool first_time = (net_nodes() == 0); set_label(Label); set_owner(Owner); set_value(Value); attach_common(Common); if (first_time) { _n_ports = n_nodes/2; // sets num_nodes() = _n_ports*2 assert(_n_ports == n_states-1); assert(!_vy1); assert(!_vi0); assert(!_vi1); _vy1 = new double[n_states]; _vi0 = new double[n_states]; _vi1 = new double[n_states]; if (net_nodes() > NODES_PER_BRANCH) { // allocate a bigger node list _n = new node_t[net_nodes()]; }else{ // use the default node list, already set } }else{itested(); assert(_n_ports == n_states-1); assert(_vy1); assert(_vi0); assert(_vi1); assert(net_nodes() == n_nodes); // assert could fail if changing the number of nodes after a run } //_inputs = inputs; _inputs = 0; _vy0 = states; std::fill_n(_vy0, n_states, 0.); std::fill_n(_vy1, n_states, 0.); std::fill_n(_vi0, n_states, 0.); std::fill_n(_vi1, n_states, 0.); notstd::copy_n(nodes, net_nodes(), _n); assert(net_nodes() == _n_ports * 2); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_FPOLY_CAP p4; DISPATCHER::INSTALL d4(&device_dispatcher, "fpoly_cap", &p4); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_poly_g.cc000066400000000000000000000212711316501211100141160ustar00rootroot00000000000000/*$Id: d_poly_g.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * DEV_CPOLY_G * number of nodes = 2*n_ports * number of val, ov = n_ports+1 * val[0] is the constant part, val[1] is self admittance, * val[2+] are transadmittances, up to n_ports * node[0] and node[1] are the output. * node[2] up are inputs. * node[2*i] and node[2*i+1] correspond to val[i+1] */ //testing=script 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_CPOLY_G : public ELEMENT { protected: double* _values; double* _old_values; int _n_ports; double _time; const double** _inputs; protected: explicit DEV_CPOLY_G(const DEV_CPOLY_G& p); public: explicit DEV_CPOLY_G(); ~DEV_CPOLY_G(); protected: // override virtual char id_letter()const {unreachable(); return '\0';} std::string value_name()const {incomplete(); return "";} std::string dev_type()const {unreachable(); return "cpoly_g";} int max_nodes()const {return net_nodes();} int min_nodes()const {return net_nodes();} int matrix_nodes()const {return _n_ports*2;} int net_nodes()const {return _n_ports*2;} CARD* clone()const {return new DEV_CPOLY_G(*this);} void tr_iwant_matrix() {tr_iwant_matrix_extended();} bool do_tr(); void tr_load(); void tr_unload(); double tr_involts()const {unreachable(); return NOT_VALID;} double tr_involts_limited()const {unreachable(); return NOT_VALID;} double tr_amps()const; void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_load(); COMPLEX ac_involts()const {itested(); return NOT_VALID;} COMPLEX ac_amps()const {itested(); return NOT_VALID;} std::string port_name(int)const {untested(); incomplete(); unreachable(); return ""; } public: void set_parameters(const std::string& Label, CARD* Parent, COMMON_COMPONENT* Common, double Value, int state_count, double state[], int node_count, const node_t nodes[]); // const double* inputs[]=0); protected: bool do_tr_con_chk_and_q(); }; /*--------------------------------------------------------------------------*/ #if 0 class DEV_FPOLY_G : public DEV_CPOLY_G { private: explicit DEV_FPOLY_G(const DEV_FPOLY_G& p) :DEV_CPOLY_G(p) {incomplete(); unreachable();} public: explicit DEV_FPOLY_G() :DEV_CPOLY_G() {untested();} private: // override virtual char id_letter()const {unreachable(); return '\0';} std::string dev_type()const {unreachable(); return "fpoly_g";} CARD* clone()const {unreachable(); return new DEV_FPOLY_G(*this);} bool do_tr(); }; #endif /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CPOLY_G::DEV_CPOLY_G(const DEV_CPOLY_G& p) :ELEMENT(p), _values(NULL), _old_values(NULL), _n_ports(p._n_ports), _time(NOT_VALID), _inputs(NULL) { // not really a copy .. only valid to copy a default // too lazy to do it right, and that's all that is being used // to do it correctly requires a deep copy // just filling in defaults is better than a shallow copy, hence this: assert(!p._values); assert(!p._old_values); assert(p._n_ports == 0); assert(!p._inputs); } /*--------------------------------------------------------------------------*/ DEV_CPOLY_G::DEV_CPOLY_G() :ELEMENT(), _values(NULL), _old_values(NULL), _n_ports(0), _time(NOT_VALID), _inputs(NULL) { } /*--------------------------------------------------------------------------*/ DEV_CPOLY_G::~DEV_CPOLY_G() { delete [] _old_values; if (net_nodes() > NODES_PER_BRANCH) { delete [] _n; }else{ // it is part of a base class } } /*--------------------------------------------------------------------------*/ bool DEV_CPOLY_G::do_tr_con_chk_and_q() { q_load(); assert(_old_values); set_converged(conchk(_time, _sim->_time0)); _time = _sim->_time0; for (int i=0; converged() && i<=_n_ports; ++i) { set_converged(conchk(_old_values[i], _values[i])); } return converged(); } /*--------------------------------------------------------------------------*/ bool DEV_CPOLY_G::do_tr() { assert(_values); _m0 = CPOLY1(0., _values[0], _values[1]); return do_tr_con_chk_and_q(); } /*--------------------------------------------------------------------------*/ #if 0 bool DEV_FPOLY_G::do_tr() {untested(); assert(_values); double c0 = _values[0]; if (_inputs) {untested(); untested(); for (int i=1; i<=_n_ports; ++i) {untested(); c0 -= *(_inputs[i]) * _values[i]; trace4("", i, *(_inputs[i]), _values[i], *(_inputs[i]) * _values[i]); } }else{untested(); for (int i=1; i<=_n_ports; ++i) {untested(); c0 -= volts_limited(_n[2*i-2],_n[2*i-1]) * _values[i]; trace4("", i, volts_limited(_n[2*i-2],_n[2*i-1]), _values[i], volts_limited(_n[2*i-2],_n[2*i-1]) * _values[i]); } } trace2("", _values[0], c0); _m0 = CPOLY1(0., c0, _values[1]); return do_tr_con_chk_and_q(); } #endif /*--------------------------------------------------------------------------*/ void DEV_CPOLY_G::tr_load() { tr_load_passive(); _old_values[0] = _values[0]; _old_values[1] = _values[1]; for (int i=2; i<=_n_ports; ++i) { tr_load_extended(_n[OUT1], _n[OUT2], _n[2*i-2], _n[2*i-1], &(_values[i]), &(_old_values[i])); } } /*--------------------------------------------------------------------------*/ void DEV_CPOLY_G::tr_unload() { std::fill_n(_values, _n_ports+1, 0.); _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load(); } /*--------------------------------------------------------------------------*/ double DEV_CPOLY_G::tr_amps()const { double amps = _m0.c0; for (int i=1; i<=_n_ports; ++i) { amps += dn_diff(_n[2*i-2].v0(),_n[2*i-1].v0()) * _values[i]; } return amps; } /*--------------------------------------------------------------------------*/ void DEV_CPOLY_G::ac_load() { _acg = _values[1]; ac_load_passive(); for (int i=2; i<=_n_ports; ++i) { ac_load_extended(_n[OUT1], _n[OUT2], _n[2*i-2], _n[2*i-1], _values[i]); } } /*--------------------------------------------------------------------------*/ /* set: set parameters, used in model building */ void DEV_CPOLY_G::set_parameters(const std::string& Label, CARD *Owner, COMMON_COMPONENT *Common, double Value, int n_states, double states[], int n_nodes, const node_t nodes[]) // const double* inputs[]) { bool first_time = (net_nodes() == 0); set_label(Label); set_owner(Owner); set_value(Value); attach_common(Common); if (first_time) { _n_ports = n_nodes/2; // sets num_nodes() = _n_ports*2 assert(_n_ports == n_states-1); assert(!_old_values); _old_values = new double[n_states]; if (net_nodes() > NODES_PER_BRANCH) { // allocate a bigger node list _n = new node_t[net_nodes()]; }else{ // use the default node list, already set } }else{ assert(_n_ports == n_states-1); assert(_old_values); assert(net_nodes() == n_nodes); // assert could fail if changing the number of nodes after a run } //_inputs = inputs; _inputs = 0; _values = states; std::fill_n(_values, n_states, 0.); std::fill_n(_old_values, n_states, 0.); notstd::copy_n(nodes, net_nodes(), _n); assert(net_nodes() == _n_ports * 2); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_CPOLY_G p4; DISPATCHER::INSTALL d4(&device_dispatcher, "cpoly_g", &p4); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_res.cc000066400000000000000000000120411316501211100134110ustar00rootroot00000000000000/*$Id: d_res.cc 2016/09/11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions for resistor. * y.x = amps, y.f0 = volts, ev = y.f1 = ohms * m.x = volts, m.c0 = amps, acg = m.c1 = mhos. */ //testing=script,complete 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_RESISTANCE : public ELEMENT { private: explicit DEV_RESISTANCE(const DEV_RESISTANCE& p) :ELEMENT(p) {} public: explicit DEV_RESISTANCE() :ELEMENT() {} private: // override virtual char id_letter()const {return 'R';} std::string value_name()const {return "r";} std::string dev_type()const {return "resistor";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int matrix_nodes()const {return 2;} int net_nodes()const {return 2;} bool has_iv_probe()const {return true;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_RESISTANCE(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_passive();} void tr_begin(); bool do_tr(); void tr_load() {tr_load_passive();} void tr_unload() {untested();tr_unload_passive();} double tr_involts()const {return tr_outvolts();} double tr_input()const {untested(); return _m0.c0 + _m0.c1 * tr_involts();} double tr_involts_limited()const {return tr_outvolts_limited();} double tr_input_limited()const {return _m0.c0+_m0.c1*tr_involts_limited();} void ac_iwant_matrix() {ac_iwant_matrix_passive();} void ac_begin() {_ev = _y[0].f1; _acg = 1. / _ev;} void do_ac(); void ac_load() {ac_load_passive();} COMPLEX ac_involts()const {return ac_outvolts();} std::string port_name(int i)const { assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ void DEV_RESISTANCE::precalc_last() { ELEMENT::precalc_last(); set_constant(!has_tr_eval()); set_converged(!has_tr_eval()); } /*--------------------------------------------------------------------------*/ void DEV_RESISTANCE::tr_begin() { ELEMENT::tr_begin(); _y1.f1 = _y[0].f1 = (value() != 0.) ? value() : OPT::shortckt; _m0.x = _y[0].x; _m0.c1 = 1./_y[0].f1; _m0.c0 = 0.; _m1 = _m0; assert(_loss0 == 0.); assert(_loss1 == 0.); if (value() == 0. && !has_common()) { error(bPICKY, long_label() + ": short circuit\n"); }else{ } } /*--------------------------------------------------------------------------*/ bool DEV_RESISTANCE::do_tr() { if (using_tr_eval()) { _m0.x = tr_involts_limited(); _y[0].x = tr_input_limited();; tr_eval(); assert(_y[0].f0 != LINEAR); if (_y[0].f1 == 0.) { error(bPICKY, long_label() + ": short circuit\n"); _y[0].f1 = OPT::shortckt; set_converged(conv_check()); }else{ } store_values(); q_load(); _m0.c1 = 1./_y[0].f1; _m0.c0 = _y[0].x - _y[0].f0 / _y[0].f1; }else{ assert(_y[0].f0 == LINEAR); assert(_y[0].f1 == value() || _y[0].f1 == OPT::shortckt); assert(conchk(_m0.c1, 1./_y[0].f1)); assert(_m0.c0 == 0.); assert(_y1 == _y[0]); assert(converged()); } return converged(); } /*--------------------------------------------------------------------------*/ void DEV_RESISTANCE::do_ac() { if (using_ac_eval()) { ac_eval(); if (_ev == 0.) { error(bPICKY, long_label() + ": short circuit\n"); _ev = OPT::shortckt; }else{ } _acg = 1. / _ev; }else{ assert(_ev == _y[0].f1); assert(has_tr_eval() || _ev == double(value()) || _ev == OPT::shortckt); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_RESISTANCE p1; DISPATCHER::INSTALL d1(&device_dispatcher, "R|resistor", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_switch.cc000066400000000000000000000507631316501211100141360ustar00rootroot00000000000000/*$Id: d_switch.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * voltage (and current) controlled switch. * netlist syntax: * device: Sxxxx n+ n- vc+ vc- mname | * model: .model mname SW * current controlled switch * device: Wxxxx n+ n- controlelement mname | * model: .model mname CSW */ //testing=script 2006.06.14 #include "globals.h" #include "e_model.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ enum state_t {_UNKNOWN, _ON, _OFF}; /*--------------------------------------------------------------------------*/ class COMMON_SWITCH : public COMMON_COMPONENT { private: explicit COMMON_SWITCH(const COMMON_SWITCH& p) :COMMON_COMPONENT(p), _ic(p._ic) {} public: explicit COMMON_SWITCH(int c=0) :COMMON_COMPONENT(c), _ic(_UNKNOWN) {} bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new COMMON_SWITCH(*this);} std::string name()const {untested(); return "switch";} bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (1 + COMMON_COMPONENT::param_count());} public: state_t _ic; /* initial state, belongs in common */ //BUG// no way to set _ic }; /*--------------------------------------------------------------------------*/ class SWITCH_BASE : public ELEMENT { protected: explicit SWITCH_BASE(); explicit SWITCH_BASE(const SWITCH_BASE& p); protected: // override virtual std::string value_name()const {return "";} std::string dev_type()const {assert(common()); return common()->modelname().c_str();} bool print_type_in_spice()const {return true;} int tail_size()const {return 1;} int max_nodes()const = 0; int min_nodes()const = 0; int matrix_nodes()const {return 2;} int net_nodes()const = 0; CARD* clone()const = 0; void expand(); void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_passive();} void tr_begin(); void dc_advance(); void tr_advance(); void tr_regress(); bool tr_needs_eval()const {return _sim->analysis_is_static();} // also q by tr_advance bool do_tr(); void tr_load() {tr_load_passive();} TIME_PAIR tr_review(); void tr_unload() {untested(); tr_unload_passive();} double tr_involts()const {untested(); return tr_outvolts();} double tr_involts_limited()const {unreachable(); return tr_outvolts_limited();} void ac_iwant_matrix() {ac_iwant_matrix_passive();} void ac_begin() {_ev = _y[0].f1; _acg = _m0.c1;} void do_ac(); void ac_load() {ac_load_passive();} COMPLEX ac_involts()const {untested(); return ac_outvolts();} protected: const ELEMENT* _input; private: double _in[OPT::_keep_time_steps]; state_t _state[OPT::_keep_time_steps]; }; /*--------------------------------------------------------------------------*/ class DEV_VSWITCH : public SWITCH_BASE { private: explicit DEV_VSWITCH(const DEV_VSWITCH& p) :SWITCH_BASE(p) {} public: explicit DEV_VSWITCH() :SWITCH_BASE() {} private: // override virtual int max_nodes()const {return 4;} int min_nodes()const {return 4;} int net_nodes()const {return 4;} CARD* clone()const {return new DEV_VSWITCH(*this);} char id_letter()const {return 'S';} std::string port_name(int i)const {itested(); assert(i >= 0); assert(i < 4); static std::string names[] = {"p", "n", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ class DEV_CSWITCH : public SWITCH_BASE { private: explicit DEV_CSWITCH(const DEV_CSWITCH& p) :SWITCH_BASE(p), _input_label(p._input_label) {} public: explicit DEV_CSWITCH() :SWITCH_BASE(), _input_label() {} private: // override virtual int max_nodes()const {return 3;} int ext_nodes()const {return 2;} int min_nodes()const {return 3;} int net_nodes()const {return 2;} int num_current_ports()const {return 1;} const std::string current_port_value(int)const {return _input_label;}; CARD* clone()const {return new DEV_CSWITCH(*this);} void expand(); char id_letter()const {return 'W';} void set_port_by_name(std::string& Name, std::string& Value) {untested(); SWITCH_BASE::set_port_by_name(Name,Value);} void set_port_by_index(int, std::string&); bool node_is_connected(int)const; std::string port_name(int i)const {itested(); assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } std::string current_port_name(int i)const { assert(i >= 0); assert(i < 1); static std::string names[] = {"in"}; return names[i]; } private: std::string _input_label; }; /*--------------------------------------------------------------------------*/ class MODEL_SWITCH : public MODEL_CARD { private: explicit MODEL_SWITCH(const MODEL_SWITCH& p); public: explicit MODEL_SWITCH(const SWITCH_BASE*); private: // override virtual void set_dev_type(const std::string& nt); std::string dev_type()const; CARD* clone()const {return new MODEL_SWITCH(*this);} void precalc_first(); void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (6 + MODEL_CARD::param_count());} public: PARAMETER vt; /* threshold voltage */ PARAMETER vh; /* hysteresis voltage */ PARAMETER ron; /* on resistance */ PARAMETER roff; /* off resistance */ PARAMETER von; PARAMETER voff; enum control_t {VOLTAGE, CURRENT}; control_t type; /* current or voltage controlled */ private: static double const _default_vt; static double const _default_vh; static double const _default_ron; static double const _default_roff; }; /*--------------------------------------------------------------------------*/ static COMMON_SWITCH Default_SWITCH(CC_STATIC); double const MODEL_SWITCH::_default_vt = 0.; double const MODEL_SWITCH::_default_vh = 0.; double const MODEL_SWITCH::_default_ron = 1.; double const MODEL_SWITCH::_default_roff = 1e12; /*--------------------------------------------------------------------------*/ bool COMMON_SWITCH::operator==(const COMMON_COMPONENT& x)const { const COMMON_SWITCH* p = dynamic_cast(&x); return p && COMMON_COMPONENT::operator==(x); } /*--------------------------------------------------------------------------*/ bool COMMON_SWITCH::param_is_printable(int i)const { switch (COMMON_SWITCH::param_count() - 1 - i) { case 0: return (_ic == _ON || _ic == _OFF); default: return COMMON_COMPONENT::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string COMMON_SWITCH::param_name(int i)const { switch (COMMON_SWITCH::param_count() - 1 - i) { case 0: return "ic"; default: return COMMON_COMPONENT::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string COMMON_SWITCH::param_name(int i, int j)const {itested(); if (j == 0) {itested(); return param_name(i); }else if (i >= COMMON_COMPONENT::param_count()) {itested(); return ""; }else{itested(); return COMMON_COMPONENT::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string COMMON_SWITCH::param_value(int i)const {itested(); switch (COMMON_SWITCH::param_count() - 1 - i) { case 0: return (_ic == _ON) ? "1" : "0"; default: return COMMON_COMPONENT::param_value(i); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ MODEL_SWITCH::MODEL_SWITCH(const SWITCH_BASE* p) :MODEL_CARD(p), vt(_default_vt), vh(_default_vh), ron(_default_ron), roff(_default_roff), von(_default_vt + _default_vh), voff(_default_vt - _default_vh), type(VOLTAGE) { } /*--------------------------------------------------------------------------*/ MODEL_SWITCH::MODEL_SWITCH(const MODEL_SWITCH& p) :MODEL_CARD(p), vt(p.vt), vh(p.vh), ron(p.ron), roff(p.roff), von(p.von), voff(p.voff), type(p.type) { } /*--------------------------------------------------------------------------*/ void MODEL_SWITCH::set_dev_type(const std::string& new_type) { if (new_type == "sw") { type = VOLTAGE; }else if (new_type == "csw") { type = CURRENT; }else{ MODEL_CARD::set_dev_type(new_type); } } /*--------------------------------------------------------------------------*/ void MODEL_SWITCH::precalc_first() { MODEL_CARD::precalc_first(); const CARD_LIST* par_scope = scope(); assert(par_scope); vt.e_val(_default_vt, par_scope); vh.e_val(_default_vh, par_scope); ron.e_val(_default_ron, par_scope); roff.e_val(_default_roff, par_scope); von.e_val(vt + vh, par_scope); voff.e_val(vt - vh, par_scope); } /*--------------------------------------------------------------------------*/ std::string MODEL_SWITCH::dev_type()const { switch (type) { case VOLTAGE: return "sw"; break; case CURRENT: return "csw"; break; } unreachable(); return ""; } /*--------------------------------------------------------------------------*/ void MODEL_SWITCH::set_param_by_index(int i, std::string& value, int offset) { switch (MODEL_SWITCH::param_count() - 1 - i) { case 0: vt = value; break; case 1: vh = value; break; case 2: von = value; break; case 3: voff = value; break; case 4: ron = value; break; case 5: roff = value; break; default: MODEL_CARD::set_param_by_index(i, value, offset); break; } } /*--------------------------------------------------------------------------*/ bool MODEL_SWITCH::param_is_printable(int i)const { switch (MODEL_SWITCH::param_count() - 1 - i) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return MODEL_CARD::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SWITCH::param_name(int i)const { switch (type) { case VOLTAGE: switch (MODEL_SWITCH::param_count() - 1 - i) { case 0: return "vt"; case 1: return "vh"; case 2: return "von"; case 3: return "voff"; case 4: return "ron"; case 5: return "roff"; default: return MODEL_CARD::param_name(i); } case CURRENT: switch (MODEL_SWITCH::param_count() - 1 - i) { case 0: return "it"; case 1: return "ih"; case 2: return "ion"; case 3: return "ioff"; case 4: return "ron"; case 5: return "roff"; default: return MODEL_CARD::param_name(i); } } unreachable(); return ""; } /*--------------------------------------------------------------------------*/ std::string MODEL_SWITCH::param_name(int i, int j)const { if (j == 0) { return param_name(i); }else if (i >= MODEL_CARD::param_count()) { return ""; }else{ return MODEL_CARD::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SWITCH::param_value(int i)const { switch (MODEL_SWITCH::param_count() - 1 - i) { case 0: return vt.string(); case 1: return vh.string(); case 2: return von.string(); case 3: return voff.string(); case 4: return ron.string(); case 5: return roff.string(); default: return MODEL_CARD::param_value(i); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ SWITCH_BASE::SWITCH_BASE() :ELEMENT(), _input(NULL) { attach_common(&Default_SWITCH); std::fill_n(_in, int(OPT::_keep_time_steps), 0.); std::fill_n(_state, int(OPT::_keep_time_steps), _UNKNOWN); } /*--------------------------------------------------------------------------*/ SWITCH_BASE::SWITCH_BASE(const SWITCH_BASE& p) :ELEMENT(p), _input(NULL) { notstd::copy_n(p._in, int(OPT::_keep_time_steps), _in); notstd::copy_n(p._state, int(OPT::_keep_time_steps), _state); } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::expand() { ELEMENT::expand(); attach_model(); const COMMON_SWITCH* c = dynamic_cast(common()); assert(c); const MODEL_SWITCH* m = dynamic_cast(c->model()); if (!m) { assert(has_common()); throw Exception_Model_Type_Mismatch(long_label(), common()->modelname(), "switch (SW or CSW)"); }else{ } } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::precalc_last() { ELEMENT::precalc_last(); if (_sim->has_op() == s_NONE) { const COMMON_SWITCH* c = prechecked_cast(common()); assert(c); const MODEL_SWITCH* m = prechecked_cast(c->model()); assert(m); _y1.f1 = _y[0].f1 = (c->_ic == _ON) ? m->ron : m->roff; // override, unknown is off assert(!is_constant()); // depends on input // converged????? _m0.c1 = 1./_y[0].f1; _m0.c0 = 0.; _m1 = _m0; _state[1] = _state[0] = c->_ic; }else{ } assert(_loss0 == 0.); assert(_loss1 == 0.); } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::tr_begin() { ELEMENT::tr_begin(); const COMMON_SWITCH* c = prechecked_cast(common()); assert(c); const MODEL_SWITCH* m = prechecked_cast(c->model()); assert(m); assert(_loss0 == 0.); assert(_loss1 == 0.); assert(_y[0].f0 == LINEAR); _y1.f1 = _y[0].f1 = ((c->_ic == _ON) ? m->ron : m->roff); /* unknown is off */ _m0.c1 = 1./_y[0].f1; assert(_m0.c0 == 0.); _m1 = _m0; _state[1] = _state[0] = c->_ic; set_converged(); } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::dc_advance() { ELEMENT::dc_advance(); _state[1] = _state[0]; } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::tr_advance() { ELEMENT::tr_advance(); const COMMON_SWITCH* c = prechecked_cast(common()); assert(c); const MODEL_SWITCH* m = prechecked_cast(c->model()); assert(m); _state[1] = _state[0]; _y[0].x = _in[1] = _in[0]; if (_y[0].x >= m->von) { _state[0] = _ON; }else if (_y[0].x <= m->voff) { _state[0] = _OFF; }else{ _state[0] = _state[1]; } if (_state[1] != _state[0]) { _y[0].f1 = (_state[0] == _ON) ? m->ron : m->roff; /* unknown is off */ _m0.c1 = 1./_y[0].f1; q_eval(); }else{ } assert(_y[0].f1 == ((_state[0] == _ON) ? m->ron : m->roff)); assert(_y[0].f0 == LINEAR); trace4("", _m0.c1, 1./_y[0].f1, ((_m0.c1) - (1./_y[0].f1)), ((_m0.c1) / (1./_y[0].f1))); assert(conchk(_m0.c1, 1./_y[0].f1)); assert(_m0.c0 == 0.); set_converged(); } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::tr_regress() { ELEMENT::tr_regress(); const COMMON_SWITCH* c = prechecked_cast(common()); assert(c); const MODEL_SWITCH* m = prechecked_cast(c->model()); assert(m); assert(_y[0].f1 == ((_state[0] == _ON) ? m->ron : m->roff)); assert(_y[0].f0 == LINEAR); assert(_m0.c1 == 1./_y[0].f1); assert(_m0.c0 == 0.); set_converged(); } /*--------------------------------------------------------------------------*/ bool SWITCH_BASE::do_tr() { const COMMON_SWITCH* c = prechecked_cast(common()); assert(c); const MODEL_SWITCH* m = prechecked_cast(c->model()); assert(m); if (_sim->analysis_is_static()) { _y[0].x = (_input) /* _y[0].x is controlling value */ ? CARD::probe(_input,"I") /* current controlled */ : _n[IN1].v0() - _n[IN2].v0(); /* voltage controlled */ state_t new_state; if (_y[0].x > m->von) { new_state = _ON; }else if (_y[0].x < m->voff) { new_state = _OFF; }else{ new_state = _state[1]; } if (new_state != _state[0]) { _y[0].f1 = (new_state == _ON) ? m->ron : m->roff; /* unknown is off */ _state[0] = new_state; _m0.c1 = 1./_y[0].f1; trace4("change", new_state, _state[1], _y[0].f1, _m0.c1); q_load(); store_values(); set_not_converged(); }else{ trace3("no change", new_state, _y[0].f1, _m0.c1); set_converged(); } }else{ // Above isn't necessary because it was done in tr_advance, // and doesn't iterate. // I believe it is not necessary on restart, because it is stored. if (_state[0] != _state[1]) { q_load(); store_values(); }else{ // gets here only on "nobypass" } assert(converged()); } assert(_y[0].f1 == ((_state[0] == _ON) ? m->ron : m->roff)); assert(_y[0].f0 == LINEAR); //assert(_m0.c1 == 1./_y[0].f1); assert(_m0.c0 == 0.); return converged(); } /*--------------------------------------------------------------------------*/ TIME_PAIR SWITCH_BASE::tr_review() { ELEMENT::tr_review(); const COMMON_SWITCH* c = prechecked_cast(common()); assert(c); const MODEL_SWITCH* m = prechecked_cast(c->model()); assert(m); _in[0] = (_input) ? CARD::probe(_input,"I") : _n[IN1].v0() - _n[IN2].v0(); double old_dt = _time[0] - _time[1]; double old_dv = _in[0] - _in[1]; if (_state[0] != _ON && old_dv > 0) { double new_dv = m->von - _in[1]; double new_dt = old_dt * new_dv / old_dv; _time_by.min_event(_time[1] + new_dt); }else if (_state[0] != _OFF && old_dv < 0) { double new_dv = m->voff - _in[1]; double new_dt = old_dt * new_dv / old_dv; _time_by.min_event(_time[1] + new_dt); }else{ assert(_time_by._event == NEVER); } // _time_by_event is the predicted switch time return _time_by; } /*--------------------------------------------------------------------------*/ void SWITCH_BASE::do_ac() { assert(_ev == _y[0].f1); assert(_acg == _m0.c1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_CSWITCH::expand() { SWITCH_BASE::expand(); _input = dynamic_cast(find_in_my_scope(_input_label)); if (!_input) { throw Exception(long_label() + ": " + _input_label + " cannot be used as input"); }else{ } } /*--------------------------------------------------------------------------*/ void DEV_CSWITCH::set_port_by_index(int Num, std::string& Value) { if (Num == 2) { _input_label = Value; }else{ SWITCH_BASE::set_port_by_index(Num, Value); } } /*--------------------------------------------------------------------------*/ bool DEV_CSWITCH::node_is_connected(int i)const { if (i == 2) { return _input_label != ""; }else{ return SWITCH_BASE::node_is_connected(i); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_VSWITCH p2; DEV_CSWITCH p3; DISPATCHER::INSTALL d2(&device_dispatcher, "S|vswitch", &p2), d3(&device_dispatcher, "W|cswitch|iswitch", &p3); MODEL_SWITCH p1(&p2); MODEL_SWITCH p4(&p3); DISPATCHER::INSTALL d1(&model_dispatcher, "sw", &p1), d4(&model_dispatcher, "csw", &p4); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_trln.cc000066400000000000000000000437471316501211100136200ustar00rootroot00000000000000/*$Id: d_trln.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Transmission line. (ideal lossless.) */ //testing=script,sparse 2006.07.17 #include "globals.h" #include "m_wave.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ enum {NUM_INIT_COND = 4}; /*--------------------------------------------------------------------------*/ class COMMON_TRANSLINE : public COMMON_COMPONENT { private: PARAMETER len; /* length multiplier */ PARAMETER R; PARAMETER L; PARAMETER G; PARAMETER C; PARAMETER z0; /* characteristic impedance */ PARAMETER td; /* delay time */ PARAMETER f; /* specification frequency */ PARAMETER nl; /* length (wavelengths) at f */ double ic[NUM_INIT_COND]; /* initial conditions: v1, i1, v2, i2 */ int icset; /* flag: initial condition set */ public: double real_z0; double real_td; private: explicit COMMON_TRANSLINE(const COMMON_TRANSLINE& p); public: explicit COMMON_TRANSLINE(int c=0); bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new COMMON_TRANSLINE(*this);} void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (9 + COMMON_COMPONENT::param_count());} public: void precalc_last(const CARD_LIST*); std::string name()const {untested(); return "transline";} }; /*--------------------------------------------------------------------------*/ class DEV_TRANSLINE : public ELEMENT { private: WAVE _forward; WAVE _reflect; double _if0; // value of current source representing incident wave double _ir0; // value of current source representing reflected wave double _if1; // val of cs rep incident wave, one load ago double _ir1; // val of cs rep reflected wave, one load ago COMPLEX _y11;// AC equiv ckt COMPLEX _y12;// AC equiv ckt private: explicit DEV_TRANSLINE(const DEV_TRANSLINE& p) :ELEMENT(p), _forward(), _reflect(), _if0(0), _ir0(0), _if1(0), _ir1(0) {} public: explicit DEV_TRANSLINE(); private: // override virtual char id_letter()const {return 'T';} std::string value_name()const {return "#";} std::string dev_type()const {itested(); return "tline";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} CARD* clone()const {return new DEV_TRANSLINE(*this);} void precalc_last(); void tr_iwant_matrix(); void tr_begin(); void dc_advance(); void tr_advance(); void tr_regress(); bool tr_needs_eval()const; bool do_tr(); void tr_load(); TIME_PAIR tr_review(); void tr_accept(); void tr_unload(); double tr_involts()const; double tr_involts_limited()const; void ac_iwant_matrix() {ac_iwant_matrix_extended();} void do_ac(); void ac_load(); COMPLEX ac_involts()const; std::string port_name(int i)const {itested(); assert(i >= 0); assert(i < 4); static std::string names[] = {"t1", "b1", "t2", "b2"}; return names[i]; } private: void setinitcond(CS&); }; /*--------------------------------------------------------------------------*/ inline bool DEV_TRANSLINE::tr_needs_eval()const { assert(!is_q_for_eval()); return (_if0!=_if1 || _ir0!=_ir1); } /*--------------------------------------------------------------------------*/ inline double DEV_TRANSLINE::tr_involts()const { return dn_diff(_n[IN1].v0(), _n[IN2].v0()); } /*--------------------------------------------------------------------------*/ inline double DEV_TRANSLINE::tr_involts_limited()const { unreachable(); return volts_limited(_n[IN1],_n[IN2]); } /*--------------------------------------------------------------------------*/ inline COMPLEX DEV_TRANSLINE::ac_involts()const {untested(); return _n[IN1]->vac() - _n[IN2]->vac(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ const double _default_len (1); const double _default_R (0); const double _default_L (NOT_INPUT); const double _default_G (0); const double _default_C (NOT_INPUT); const double _default_z0 (50.); const double _default_td (NOT_INPUT); const double _default_f (NOT_INPUT); const double _default_nl (0.25); const double LINLENTOL = .000001; static COMMON_TRANSLINE Default_TRANSLINE(CC_STATIC); /*--------------------------------------------------------------------------*/ COMMON_TRANSLINE::COMMON_TRANSLINE(int c) :COMMON_COMPONENT(c), len(_default_len), R(_default_R), L(_default_L), G(_default_G), C(_default_C), z0(_default_z0), td(_default_td), f(_default_f), nl(_default_nl), icset(false), real_z0(NOT_INPUT), real_td(NOT_INPUT) { for (int i = 0; i < NUM_INIT_COND; ++i) { ic[i] = 0.; } } /*--------------------------------------------------------------------------*/ COMMON_TRANSLINE::COMMON_TRANSLINE(const COMMON_TRANSLINE& p) :COMMON_COMPONENT(p), len(p.len), R(p.R), L(p.L), G(p.G), C(p.C), z0(p.z0), td(p.td), f(p.f), nl(p.nl), icset(p.icset), real_z0(p.real_z0), real_td(p.real_td) { for (int i = 0; i < NUM_INIT_COND; ++i) { ic[i] = p.ic[i]; } } /*--------------------------------------------------------------------------*/ bool COMMON_TRANSLINE::operator==(const COMMON_COMPONENT& x)const { const COMMON_TRANSLINE* p = dynamic_cast(&x); bool rv = p && len == p->len && R == p->R && L == p->L && G == p->G && C == p->C && z0 == p->z0 && td == p->td && f == p->f && nl == p->nl && icset == p->icset && COMMON_COMPONENT::operator==(x); if (rv) { for (int i=0; iic[i]; } }else{ } return rv; } /*--------------------------------------------------------------------------*/ void COMMON_TRANSLINE::set_param_by_index(int I, std::string& Value, int Offset) { switch (COMMON_TRANSLINE::param_count() - 1 - I) { case 0: len = Value; break; case 1: R = Value; break; case 2: L = Value; break; case 3: G = Value; break; case 4: C = Value; break; case 5: z0 = Value; break; case 6: td = Value; break; case 7: f = Value; break; case 8: nl = Value; break; default: COMMON_COMPONENT::set_param_by_index(I, Value, Offset); break; } //BUG// does not print IC } /*--------------------------------------------------------------------------*/ bool COMMON_TRANSLINE::param_is_printable(int I)const { switch (COMMON_TRANSLINE::param_count() - 1 - I) { case 0: return len.has_hard_value(); case 1: return R.has_hard_value(); case 2: return L.has_hard_value(); case 3: return G.has_hard_value(); case 4: return C.has_hard_value(); case 5: return z0.has_hard_value(); case 6: return td.has_hard_value(); case 7: return f.has_hard_value(); case 8: return nl.has_hard_value(); default: return COMMON_COMPONENT::param_is_printable(I); } //BUG// does not print IC #if 0 if (icset) {untested(); o << " IC="; for (int i = 0; i < NUM_INIT_COND; ++i) {untested(); o << ic[i] << ' '; } }else{ } #endif } /*--------------------------------------------------------------------------*/ std::string COMMON_TRANSLINE::param_name(int I)const { switch (COMMON_TRANSLINE::param_count() - 1 - I) { case 0: return "len"; case 1: return "r"; case 2: return "l"; case 3: return "g"; case 4: return "c"; case 5: return "z0"; case 6: return "td"; case 7: return "f"; case 8: return "nl"; default: return COMMON_COMPONENT::param_name(I); } //BUG// does not print IC } /*--------------------------------------------------------------------------*/ std::string COMMON_TRANSLINE::param_name(int I, int j)const { if (j == 0) { return param_name(I); }else if (I >= COMMON_COMPONENT::param_count()) { switch (COMMON_TRANSLINE::param_count() - 1 - I) { case 5: return (j==1) ? "z" : (j==2) ? "zo" : ""; case 6: return (j==1) ? "d" : (j==2) ? "delay" : ""; case 7: return (j==1) ? "freq" : ""; default: return ""; } }else{ return COMMON_COMPONENT::param_name(I, j); } //BUG// does not print IC } /*--------------------------------------------------------------------------*/ std::string COMMON_TRANSLINE::param_value(int I)const { switch (COMMON_TRANSLINE::param_count() - 1 - I) { case 0: return len.string(); case 1: return R.string(); case 2: return L.string(); case 3: return G.string(); case 4: return C.string(); case 5: return z0.string(); case 6: return td.string(); case 7: return f.string(); case 8: return nl.string(); default: return COMMON_COMPONENT::param_value(I); } //BUG// does not print IC } /*--------------------------------------------------------------------------*/ void COMMON_TRANSLINE::precalc_last(const CARD_LIST* Scope) { assert(Scope); COMMON_COMPONENT::precalc_last(Scope); len.e_val(_default_len, Scope); R.e_val(_default_R, Scope); L.e_val(_default_L, Scope); G.e_val(_default_G, Scope); C.e_val(_default_C, Scope); z0.e_val(_default_z0, Scope); td.e_val(_default_td, Scope); f.e_val(_default_f, Scope); nl.e_val(_default_nl, Scope); { // real_td if (td.has_hard_value()) {untested(); real_td = len * td; if (f.has_hard_value()) {untested(); // check for conflicts if (!conchk(td, nl/f, OPT::vntol)) {untested(); error(bDANGER, "td, f&nl conflict. using td\n"); }else{untested(); } }else{untested(); } }else if (f.has_hard_value()) { real_td = len * nl / f; }else if (L.has_hard_value() && C.has_hard_value()) {untested(); real_td = len * sqrt(L * C); }else{untested(); assert(real_td == NOT_INPUT); error(bDANGER, "can't determine length\n"); } } { // real_z0 if (z0.has_hard_value()) { real_z0 = z0; if (L.has_hard_value() && C.has_hard_value()) {untested(); error(bDANGER, "redundant specification both Z0 and LC, using Z0\n"); }else{ } }else{untested(); if (L.has_hard_value() && C.has_hard_value()) {untested(); real_z0 = sqrt(L / C); }else{untested(); assert(_default_z0 == 50.); error(bDANGER, "can't determine Z0, assuming 50\n"); real_z0 = _default_z0; } } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_TRANSLINE::DEV_TRANSLINE() :ELEMENT(), _forward(), _reflect(), _if0(0), _ir0(0), _if1(0), _ir1(0), _y11(), _y12() { attach_common(&Default_TRANSLINE); } /*--------------------------------------------------------------------------*/ void DEV_TRANSLINE::precalc_last() { ELEMENT::precalc_last(); const COMMON_TRANSLINE* c=prechecked_cast(common()); assert(c); _forward.set_delay(c->real_td); _reflect.set_delay(c->real_td); set_converged(); assert(!is_constant()); } /*--------------------------------------------------------------------------*/ void DEV_TRANSLINE::tr_iwant_matrix() { _sim->_aa.iwant(_n[OUT1].m_(),_n[OUT2].m_()); _sim->_aa.iwant(_n[IN1].m_(), _n[IN2].m_()); _sim->_lu.iwant(_n[OUT1].m_(),_n[OUT2].m_()); _sim->_lu.iwant(_n[IN1].m_(), _n[IN2].m_()); } /*--------------------------------------------------------------------------*/ /* first setup, initial dc, empty the lines */ void DEV_TRANSLINE::tr_begin() { ELEMENT::tr_begin(); const COMMON_TRANSLINE* c=prechecked_cast(common()); assert(c); _forward.initialize().push(0.-c->real_td, 0.).push(0., 0.); _reflect.initialize().push(0.-c->real_td, 0.).push(0., 0.); } /*--------------------------------------------------------------------------*/ /* before anything else .. see what is coming out * _if0 = output current .. * The "wave" class stores voltages, but we need currents, * because the simulator uses the Norton equivalent circuit. * This makes the Thevenin to Norton conversion. */ void DEV_TRANSLINE::dc_advance() { ELEMENT::dc_advance(); const COMMON_TRANSLINE* c=prechecked_cast(common()); assert(c); _if0 = _forward.v_out(_sim->_time0).f0/c->real_z0; _ir0 = _reflect.v_out(_sim->_time0).f0/c->real_z0; } void DEV_TRANSLINE::tr_advance() { ELEMENT::tr_advance(); const COMMON_TRANSLINE* c=prechecked_cast(common()); assert(c); _if0 = _forward.v_out(_sim->_time0).f0/c->real_z0; _ir0 = _reflect.v_out(_sim->_time0).f0/c->real_z0; } void DEV_TRANSLINE::tr_regress() { ELEMENT::tr_regress(); const COMMON_TRANSLINE* c=prechecked_cast(common()); assert(c); _if0 = _forward.v_out(_sim->_time0).f0/c->real_z0; _ir0 = _reflect.v_out(_sim->_time0).f0/c->real_z0; } /*--------------------------------------------------------------------------*/ /* usually nothing, always converged. It is all done in advance and accept. * UNLESS ... it is a very short line .. then we fake it here. * very short line means delay is less than internal time step. */ bool DEV_TRANSLINE::do_tr() { // code to deal with short lines goes here. //if (_if0 != _if1 || _ir0 != _ir1) { if (!conchk(_if0, _if1, OPT::abstol, OPT::reltol*.01) || !conchk(_ir0, _ir1, OPT::abstol, OPT::reltol*.01)) { q_load(); }else{ } assert(converged()); return true; } /*--------------------------------------------------------------------------*/ void DEV_TRANSLINE::tr_load() { //BUG// explicit mfactor double lvf = NOT_VALID; // load value, forward double lvr = NOT_VALID; // load value, reflected if (!_sim->is_inc_mode()) { const COMMON_TRANSLINE* c = prechecked_cast(common()); assert(c); _sim->_aa.load_symmetric(_n[OUT1].m_(), _n[OUT2].m_(), mfactor()/c->real_z0); _sim->_aa.load_symmetric(_n[IN1].m_(), _n[IN2].m_(), mfactor()/c->real_z0); lvf = _if0; lvr = _ir0; }else{ lvf = dn_diff(_if0, _if1); lvr = dn_diff(_ir0, _ir1); } if (lvf != 0.) { if (_n[OUT1].m_() != 0) { _n[OUT1].i() += mfactor() * lvf; }else{untested(); } if (_n[OUT2].m_() != 0) {untested(); _n[OUT2].i() -= mfactor() * lvf; }else{ } }else{ } if (lvr != 0.) { if (_n[IN1].m_() != 0) { _n[IN1].i() += mfactor() * lvr; }else{untested(); } if (_n[IN2].m_() != 0) {untested(); _n[IN2].i() -= mfactor() * lvr; }else{ } }else{ } _if1 = _if0; _ir1 = _ir0; } /*--------------------------------------------------------------------------*/ /* limit the time step to no larger than a line length. */ TIME_PAIR DEV_TRANSLINE::tr_review() { q_accept(); const COMMON_TRANSLINE* c=prechecked_cast(common()); assert(c); return TIME_PAIR(_sim->_time0 + c->real_td, NEVER); // ok to miss the spikes, for now } /*--------------------------------------------------------------------------*/ /* after this step is all done, determine the reflections and send them on. */ void DEV_TRANSLINE::tr_accept() { trace1(short_label().c_str(), _sim->_time0); _reflect.push(_sim->_time0, _forward.v_reflect(_sim->_time0, tr_outvolts())); _forward.push(_sim->_time0, _reflect.v_reflect(_sim->_time0, tr_involts())); } /*--------------------------------------------------------------------------*/ void DEV_TRANSLINE::tr_unload() {untested(); } /*--------------------------------------------------------------------------*/ void DEV_TRANSLINE::do_ac() { const COMMON_TRANSLINE*c=prechecked_cast(common()); assert(c); double lenth = _sim->_freq * c->real_td * 4; /* length in quarter waves */ double dif = lenth - floor(lenth+.5); /* avoid divide by zero if close to */ if (std::abs(dif) < LINLENTOL) { /* resonance by tweeking a little */ error(bDEBUG, long_label() + ": transmission line too close to resonance\n"); lenth = (dif<0.) ? floor(lenth+.5)-LINLENTOL : floor(lenth+.5)+LINLENTOL; }else{ } lenth *= (M_PI_2); /* now in radians */ _y12 = COMPLEX(0., -1. / (c->real_z0 * sin(lenth))); _y11 = COMPLEX(0., tan(lenth/2) / c->real_z0) + _y12; } /*--------------------------------------------------------------------------*/ void DEV_TRANSLINE::ac_load() { //BUG// explicit mfactor _sim->_acx.load_symmetric(_n[OUT1].m_(), _n[OUT2].m_(), mfactor()*_y11); _sim->_acx.load_symmetric(_n[IN1].m_(), _n[IN2].m_(), mfactor()*_y11); _sim->_acx.load_asymmetric(_n[OUT1].m_(),_n[OUT2].m_(), _n[IN2].m_(), _n[IN1].m_(), mfactor()*_y12); _sim->_acx.load_asymmetric(_n[IN1].m_(), _n[IN2].m_(), _n[OUT2].m_(), _n[OUT1].m_(), mfactor()*_y12); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_TRANSLINE p1; DISPATCHER::INSTALL d1(&device_dispatcher, "T|tline", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_vcg.cc000066400000000000000000000104431316501211100134030ustar00rootroot00000000000000/*$Id: d_vcg.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * admittance devices: * self-admittance (old Y device) * y.x = volts, y.f0 = amps, ev = y.f1 = mhos. * m.x = volts, m.c0 = amps, acg = m.c1 = mhos. * trans-admittance (VCCS, G device) * voltage controlled admittance * y.x = volts(control), y.f0 = mhos, ev = y.f1 = mhos/volt * m.x = volts(control), m.c0 = 0, acg = m.c1 = mhos * _loss0 == 1/R. (mhos) */ //testing=script 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_VCG : public ELEMENT { private: explicit DEV_VCG(const DEV_VCG& p) :ELEMENT(p) {} public: explicit DEV_VCG() :ELEMENT() {} private: // override virtual char id_letter()const {untested();return '\0';} std::string value_name()const {untested(); return "g";} std::string dev_type()const {return "vcg";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_VCG(*this);} void tr_iwant_matrix() {tr_iwant_matrix_extended();} void tr_begin(); bool do_tr(); void tr_load() {tr_load_shunt(); tr_load_active();} void tr_unload() {untested(); tr_unload_shunt(); tr_unload_active();} double tr_involts()const {return dn_diff(_n[IN1].v0(), _n[IN2].v0());} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_begin() {_ev = _y[0].f0; _acg = _m0.c1;} void do_ac(); void ac_load() {ac_load_shunt(); ac_load_active();} COMPLEX ac_involts()const {return _n[IN1]->vac() - _n[IN2]->vac();} std::string port_name(int i)const {untested(); assert(i >= 0); assert(i < 4); static std::string names[] = {"p", "n", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_VCG::tr_begin() { ELEMENT::tr_begin(); _y1.f0 = _y[0].f0 = 0; // override _loss1 = _loss0 = 0; _m0.x = 0.; _m0.c1 = 0.; _m0.c0 = 0.; _m1 = _m0; } /*--------------------------------------------------------------------------*/ bool DEV_VCG::do_tr() { _y[0].x = tr_input_limited(); tr_eval(); assert(_y[0].f0 != LINEAR); store_values(); q_load(); _loss0 = _y[0].f0; _m0.x = tr_outvolts(); // fake _m0.c1 = _y[0].f1 * tr_outvolts(); _m0.c0 = -_y[0].x * _m0.c1; return converged(); } /*--------------------------------------------------------------------------*/ void DEV_VCG::do_ac() { if (using_ac_eval()) { ac_eval(); _acg = _ev * _m0.x; _ev *= _y[0].x; }else{ assert(_ev == _y[0].f0); assert(_acg == _m0.c1); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_VCG p3; DISPATCHER::INSTALL d3(&device_dispatcher, "vcg", &p3); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_vcr.cc000066400000000000000000000124651316501211100134240ustar00rootroot00000000000000/*$Id: d_vcr.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * voltage controlled resistor. * y.x = volts(control), ev = y.f0 = ohms, y.f1 = ohms/volt * m.x = volts(control), m.c0 = 0, acg = m.c1 = mhos * _loss0 == 1/R. (mhos) */ //testing=script,complete 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_VCR : public ELEMENT { private: explicit DEV_VCR(const DEV_VCR& p) :ELEMENT(p) {} public: explicit DEV_VCR() :ELEMENT() {} private: // override virtual char id_letter()const {itested();return '\0';} std::string value_name()const {itested(); return "r";} std::string dev_type()const {return "vcr";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_VCR(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_extended();} void tr_begin(); bool do_tr(); void tr_load() {tr_load_shunt(); tr_load_active();} void tr_unload() {untested(); tr_unload_shunt(); tr_unload_active();} double tr_involts()const {untested(); return dn_diff(_n[IN1].v0(), _n[IN2].v0());} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} double tr_amps()const {untested(); return ELEMENT::tr_amps();} void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_begin(); void do_ac(); void ac_load() {ac_load_shunt(); ac_load_active();} COMPLEX ac_involts()const {untested();return _n[IN1]->vac()-_n[IN2]->vac();} COMPLEX ac_amps()const {untested(); return ELEMENT::ac_amps();} std::string port_name(int i)const {untested(); assert(i >= 0); assert(i < 4); static std::string names[] = {"p", "n", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_VCR::precalc_last() { ELEMENT::precalc_last(); assert(!is_constant()); set_not_converged(); } /*--------------------------------------------------------------------------*/ void DEV_VCR::tr_begin() { ELEMENT::tr_begin(); _loss1 = _loss0 = 1./OPT::shortckt; _m0.x = 0.; _m0.c1 = 0.; _m0.c0 = 0.; _m1 = _m0; } /*--------------------------------------------------------------------------*/ bool DEV_VCR::do_tr() { _y[0].x = tr_input_limited(); tr_eval(); trace3("vcr", _y[0].x, _y[0].f0, _y[0].f1); assert(_y[0].f0 != LINEAR); if (_y[0].f0 == 0.) { error(bDEBUG, long_label() + ": short circuit\n"); _y[0].f0 = OPT::shortckt; set_converged(conv_check()); }else{ } store_values(); q_load(); _loss0 = 1./_y[0].f0; _m0.x = tr_outvolts(); // fake _m0.c1 = -_y[0].f1 * _loss0 * _loss0 * tr_outvolts(); _m0.c0 = -_y[0].x * _m0.c1; trace3("vcr", _loss0, _m0.c0, _m0.c1); return converged(); } /*--------------------------------------------------------------------------*/ void DEV_VCR::ac_begin() { _ev = _y[0].f0; _acg = _m0.c1; trace4("vcr-ac_begin", _y[0].f0, _y[0].f1, _m0.c0, _m0.c1); trace4("", _ev.real(), _ev.imag(), _acg.real(), _acg.imag()); trace1("", _loss0); } /*--------------------------------------------------------------------------*/ void DEV_VCR::do_ac() { if (using_ac_eval()) { ac_eval(); _acg = -_ev * _loss0 * _loss0 * _m0.x; trace4("vcr-do_ac(eval)", _y[0].f0, _y[0].f1, _m0.c0, _m0.c1); trace4("", _ev.real(), _ev.imag(), _acg.real(), _acg.imag()); _ev *= _y[0].x; trace4("", _ev.real(), _ev.imag(), _loss0, _m0.x); }else{ trace4("vcr-do_ac", _y[0].f0, _y[0].f1, _m0.c0, _m0.c1); trace4("", _ev.real(), _ev.imag(), _acg.real(), _acg.imag()); trace1("", _loss0); assert(_ev == _y[0].f0); assert(_acg == _m0.c1); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_VCR p1; DISPATCHER::INSTALL d1(&device_dispatcher, "vcr", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_vcvs.cc000066400000000000000000000111501316501211100136010ustar00rootroot00000000000000/*$Id: d_vcvs.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions for vcvs * temporary kluge: it has resistance */ //testing=script,complete 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_VCVS : public ELEMENT { private: explicit DEV_VCVS(const DEV_VCVS& p) :ELEMENT(p) {} public: explicit DEV_VCVS() :ELEMENT() {} private: // override virtual char id_letter()const {return 'E';} std::string value_name()const {return "gain";} std::string dev_type()const {return "vcvs";} int max_nodes()const {return 4;} int min_nodes()const {return 4;} int matrix_nodes()const {return 4;} int net_nodes()const {return 4;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_VCVS(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_extended();} void tr_begin(); bool do_tr(); void tr_load() {tr_load_shunt(); tr_load_active();} void tr_unload() {untested();tr_unload_active();} double tr_involts()const {return dn_diff(_n[IN1].v0(), _n[IN2].v0());} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_begin(); void do_ac(); void ac_load() {ac_load_shunt(); ac_load_active();} COMPLEX ac_involts()const {return _n[IN1]->vac() - _n[IN2]->vac();} std::string port_name(int i)const { assert(i >= 0); assert(i < 4); static std::string names[] = {"p", "n", "ps", "ns"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_VCVS::precalc_last() { ELEMENT::precalc_last(); set_constant(!has_tr_eval()); set_converged(!has_tr_eval()); } /*--------------------------------------------------------------------------*/ void DEV_VCVS::tr_begin() { ELEMENT::tr_begin(); _loss1 = _loss0 = 1./OPT::shortckt; _m0.x = 0.; _m0.c1 = -_loss0 * _y[0].f1; _m0.c0 = 0.; _m1 = _m0; } /*--------------------------------------------------------------------------*/ bool DEV_VCVS::do_tr() { if (using_tr_eval()) { _y[0].x = _m0.x = tr_involts_limited(); //_y[0].x = tr_input_limited(); //assert(_y[0].x == _m0.x); tr_eval(); assert(_y[0].f0 != LINEAR); store_values(); q_load(); _m0 = CPOLY1(_y[0]); _m0 *= -_loss0; }else{ assert(conchk(_loss0, 1./OPT::shortckt)); assert(_y[0].f0 == LINEAR); assert(_y[0].f1 == value()); assert(conchk(_m0.c1, -_loss0 * _y[0].f1)); assert(_m0.c0 == 0.); assert(_y1 == _y[0]); assert(converged()); } return converged(); } /*--------------------------------------------------------------------------*/ void DEV_VCVS::ac_begin() { _loss1 = _loss0 = 1./OPT::shortckt; _ev = _y[0].f1; _acg = -_loss0 * _ev; } /*--------------------------------------------------------------------------*/ void DEV_VCVS::do_ac() { if (using_ac_eval()) { ac_eval(); _acg = -_loss0 * _ev; }else{ assert(_ev == _y[0].f1); assert(has_tr_eval() || _ev == double(value())); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_VCVS p1; DISPATCHER::INSTALL d1(&device_dispatcher, "E|vcvs", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/d_vs.cc000066400000000000000000000120041316501211100132470ustar00rootroot00000000000000/*$Id: d_vs.cc 2016/09/11 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions for fixed voltage sources * temporary kluge: it has resistance */ //testing=script 2006.07.17 #include "globals.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DEV_VS : public ELEMENT { private: explicit DEV_VS(const DEV_VS& p) :ELEMENT(p) {} public: explicit DEV_VS() :ELEMENT() {} private: // override virtual char id_letter()const {return 'V';} std::string value_name()const {return "dc";} std::string dev_type()const {return "vsource";} int max_nodes()const {return 2;} int min_nodes()const {return 2;} int matrix_nodes()const {return 2;} int net_nodes()const {return 2;} bool is_source()const {return true;} bool f_is_value()const {return true;} bool has_iv_probe()const {return true;} bool use_obsolete_callback_parse()const {return true;} CARD* clone()const {return new DEV_VS(*this);} void precalc_last(); void tr_iwant_matrix() {tr_iwant_matrix_passive();} void tr_begin(); bool do_tr(); void tr_load() {tr_load_shunt(); tr_load_source();} void tr_unload() {untested();tr_unload_source();} double tr_involts()const {return 0.;} double tr_involts_limited()const {unreachable(); return 0.;} void ac_iwant_matrix() {ac_iwant_matrix_passive();} void ac_begin() {_loss1 = _loss0 = 1./OPT::shortckt; _acg = _ev = 0.;} void do_ac(); void ac_load() {ac_load_shunt(); ac_load_source();} COMPLEX ac_involts()const {return 0.;} COMPLEX ac_amps()const {return (_acg + ac_outvolts()*_loss0);} std::string port_name(int i)const { assert(i >= 0); assert(i < 2); static std::string names[] = {"p", "n"}; return names[i]; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DEV_VS::precalc_last() { //ELEMENT::precalc_last(); //BUG// skip COMPONENT::precalc_last(); set_constant(!has_tr_eval()); set_converged(!has_tr_eval()); set_constant(false); } /*--------------------------------------------------------------------------*/ void DEV_VS::tr_begin() { ELEMENT::tr_begin(); _y[0].x = 0.; _y[0].f1 = value(); _y1.f0 = _y[0].f0 = 0.; //BUG// override _loss1 = _loss0 = 1./OPT::shortckt; _m0.x = 0.; _m0.c0 = -_loss0 * _y[0].f1; _m0.c1 = 0.; _m1 = _m0; if (!using_tr_eval()) { if (_n[OUT2].m_() == 0) { _sim->set_limit(value()); }else if (_n[OUT1].m_() == 0) { _sim->set_limit(-value()); }else{ //BUG// don't set limit } }else{ } } /*--------------------------------------------------------------------------*/ bool DEV_VS::do_tr() { assert(_m0.x == 0.); if (using_tr_eval()) { _y[0].x = _sim->_time0; tr_eval(); if (_n[OUT2].m_() == 0) { _sim->set_limit(_y[0].f1); }else if (_n[OUT1].m_() == 0) { _sim->set_limit(-_y[0].f1); }else{ //BUG// don't set limit } store_values(); q_load(); _m0.c0 = -_loss0 * _y[0].f1; assert(_m0.c1 == 0.); }else{ assert(conchk(_loss0, 1./OPT::shortckt)); assert(_y[0].x == 0.); assert(_y[0].f0 == 0.); assert(_y[0].f1 == value()); assert(_m0.x == 0.); assert(conchk(_m0.c0, -_loss0 * _y[0].f1)); assert(_m0.c1 == 0.); assert(_y1 == _y[0]); assert(converged()); } return converged(); } /*--------------------------------------------------------------------------*/ void DEV_VS::do_ac() { if (using_ac_eval()) { ac_eval(); _acg = -_loss0 * _ev; }else{itested(); assert(_acg == 0.); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_VS p1; DISPATCHER::INSTALL d1(&device_dispatcher, "V|vsource", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/func_core.cc000066400000000000000000000205411316501211100142640ustar00rootroot00000000000000/*$Id: func_core.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class abs : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::abs(x)); } } p_abs; DISPATCHER::INSTALL d_abs(&function_dispatcher, "abs", &p_abs); /*--------------------------------------------------------------------------*/ class sqrt : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::sqrt(x)); } } p_sqrt; DISPATCHER::INSTALL d_sqrt(&function_dispatcher, "sqrt", &p_sqrt); /*--------------------------------------------------------------------------*/ class log : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::log(x)); } } p_log; DISPATCHER::INSTALL d_log(&function_dispatcher, "log", &p_log); /*--------------------------------------------------------------------------*/ class exp : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::exp(x)); } } p_exp; DISPATCHER::INSTALL d_exp(&function_dispatcher, "exp", &p_exp); /*--------------------------------------------------------------------------*/ class INT : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::floor(x)); } } p_int; DISPATCHER::INSTALL d_int(&function_dispatcher, "int", &p_int); /*--------------------------------------------------------------------------*/ class pow : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x, y; Cmd >> x >> y; x.e_val(NOT_INPUT, Scope); y.e_val(NOT_INPUT, Scope); return to_string(std::pow(x,y)); } } p_pow; DISPATCHER::INSTALL d_pow(&function_dispatcher, "pow", &p_pow); /*--------------------------------------------------------------------------*/ class MAX : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x, y; Cmd >> x >> y; x.e_val(NOT_INPUT, Scope); y.e_val(NOT_INPUT, Scope); return to_string(std::max(x,y)); } } p_max; DISPATCHER::INSTALL d_max(&function_dispatcher, "max", &p_max); /*--------------------------------------------------------------------------*/ class MIN : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x, y; Cmd >> x >> y; x.e_val(NOT_INPUT, Scope); y.e_val(NOT_INPUT, Scope); return to_string(std::min(x,y)); } } p_min; DISPATCHER::INSTALL d_min(&function_dispatcher, "min", &p_min); /*--------------------------------------------------------------------------*/ class IF : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x, y, z; Cmd >> x >> y >> z; x.e_val(NOT_INPUT, Scope); y.e_val(NOT_INPUT, Scope); z.e_val(NOT_INPUT, Scope); return to_string(x ? y : z); } } p_if; DISPATCHER::INSTALL d_if(&function_dispatcher, "if", &p_if); /*--------------------------------------------------------------------------*/ class sin : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::sin(x)); } } p_sin; DISPATCHER::INSTALL d_sin(&function_dispatcher, "sin", &p_sin); /*--------------------------------------------------------------------------*/ class sinh : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::sinh(x)); } } p_sinh; DISPATCHER::INSTALL d_sinh(&function_dispatcher, "sinh", &p_sinh); /*--------------------------------------------------------------------------*/ class cos : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::cos(x)); } } p_cos; DISPATCHER::INSTALL d_cos(&function_dispatcher, "cos", &p_cos); /*--------------------------------------------------------------------------*/ class cosh : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::cosh(x)); } } p_cosh; DISPATCHER::INSTALL d_cosh(&function_dispatcher, "cosh", &p_cosh); /*--------------------------------------------------------------------------*/ class tan : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::tan(x)); } } p_tan; DISPATCHER::INSTALL d_tan(&function_dispatcher, "tan", &p_tan); /*--------------------------------------------------------------------------*/ class tanh : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER x; Cmd >> x; x.e_val(NOT_INPUT, Scope); return to_string(std::tanh(x)); } } p_tanh; DISPATCHER::INSTALL d_tanh(&function_dispatcher, "tanh", &p_tanh); /*--------------------------------------------------------------------------*/ class na : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER arg; Cmd >> arg; arg.e_val(NOT_INPUT, Scope); return "NA"; //return (arg.has_hard_value()) ? (to_string(double(arg))) : ("NA"); } } p_na; DISPATCHER::INSTALL d_na(&function_dispatcher, "na", &p_na); /*--------------------------------------------------------------------------*/ // random funcs: // Respectively you can give a parameter a statistical dispersion function, // either rectangular distribution // UNIF(nom_val, rel_var) // AUNIF(nom_val, abs_var) // or normal distribution: // GAUSS(nom_val, rel_var, sigma) // AGAUSS(nom_val, abs_var, sigma) // Normal distribution can be represented with variation values of 1, 2 or 3 sigmas. // In both cases rel_var=abs_var/nom_val. // for now, stubs, return nom_val /*--------------------------------------------------------------------------*/ class RANDOM_STUB : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER arg; Cmd >> arg; arg.e_val(NOT_INPUT, Scope); return to_string(double(arg)); } } p_stub; DISPATCHER::INSTALL d_stub(&function_dispatcher, "agauss|gauss|aunif|unif", &p_stub); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/lang_spectre.cc000066400000000000000000000322461316501211100147740ustar00rootroot00000000000000/*$Id: lang_spectre.cc 2016/09/17 $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2015.01.27 #include "globals.h" #include "c_comand.h" #include "d_dot.h" #include "d_coment.h" #include "e_subckt.h" #include "e_model.h" #include "u_lang.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class LANG_SPECTRE : public LANGUAGE { public: LANG_SPECTRE() {} ~LANG_SPECTRE() {} std::string name()const {return "spectre";} bool case_insensitive()const {return false;} UNITS units()const {return uSI;} public: // override virtual, used by callback std::string arg_front()const {unreachable();return " ";} std::string arg_mid()const {unreachable();return "=";} std::string arg_back()const {unreachable();return "";} public: // override virtual, called by commands void parse_top_item(CS&, CARD_LIST*); DEV_COMMENT* parse_comment(CS&, DEV_COMMENT*); DEV_DOT* parse_command(CS&, DEV_DOT*); MODEL_CARD* parse_paramset(CS&, MODEL_CARD*); BASE_SUBCKT* parse_module(CS&, BASE_SUBCKT*); COMPONENT* parse_instance(CS&, COMPONENT*); std::string find_type_in_string(CS&); private: // override virtual, called by print_item void print_paramset(OMSTREAM&, const MODEL_CARD*); void print_module(OMSTREAM&, const BASE_SUBCKT*); void print_instance(OMSTREAM&, const COMPONENT*); void print_comment(OMSTREAM&, const DEV_COMMENT*); void print_command(OMSTREAM& o, const DEV_DOT* c); private: // local void print_args(OMSTREAM&, const CARD*); } lang_spectre; DISPATCHER::INSTALL d(&language_dispatcher, lang_spectre.name(), &lang_spectre); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void parse_type(CS& cmd, CARD* x) { assert(x); std::string new_type; cmd >> new_type; x->set_dev_type(new_type); } /*--------------------------------------------------------------------------*/ static void parse_args(CS& cmd, CARD* x) { assert(x); unsigned here = 0; while (cmd.more() && !cmd.stuck(&here)) { std::string name = cmd.ctos("=", "", ""); cmd >> '='; std::string value = cmd.ctos("", "(", ")"); try{ x->set_param_by_name(name, value); }catch (Exception_No_Match&) {untested(); cmd.warn(bDANGER, here, x->long_label() + ": bad parameter " + name + " ignored"); } } } /*--------------------------------------------------------------------------*/ static void parse_label(CS& cmd, CARD* x) { assert(x); std::string my_name; cmd >> my_name; x->set_label(my_name); } /*--------------------------------------------------------------------------*/ static void parse_ports(CS& cmd, COMPONENT* x) { assert(x); int index = 0; if (cmd >> '(') { while (cmd.is_alnum()) { unsigned here = cmd.cursor(); try{ std::string value; cmd >> value; x->set_port_by_index(index++, value); }catch (Exception_Too_Many& e) { cmd.warn(bDANGER, here, e.message()); } } cmd >> ')'; }else{ unsigned here = cmd.cursor(); OPT::language->find_type_in_string(cmd); unsigned stop = cmd.cursor(); cmd.reset(here); while (cmd.cursor() < stop) { here = cmd.cursor(); try{ std::string value; cmd >> value; x->set_port_by_index(index++, value); }catch (Exception_Too_Many& e) { cmd.warn(bDANGER, here, e.message()); } } } if (index < x->min_nodes()) { cmd.warn(bDANGER, "need " + to_string(x->min_nodes()-index) +" more nodes, grounding"); for (int iii = index; iii < x->min_nodes(); ++iii) { x->set_port_to_ground(iii); } }else{ } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_COMMENT* LANG_SPECTRE::parse_comment(CS& cmd, DEV_COMMENT* x) { assert(x); x->set(cmd.fullstring()); return x; } /*--------------------------------------------------------------------------*/ DEV_DOT* LANG_SPECTRE::parse_command(CS& cmd, DEV_DOT* x) { assert(x); x->set(cmd.fullstring()); CARD_LIST* scope = (x->owner()) ? x->owner()->subckt() : &CARD_LIST::card_list; cmd.reset().skipbl(); if ((cmd >> "model |simulator |parameters |subckt ")) { cmd.reset(); CMD::cmdproc(cmd, scope); }else{ std::string label; cmd >> label; if (label != "-") { unsigned here = cmd.cursor(); std::string command; cmd >> command; cmd.reset(here); std::string file_name = label + '.' + command; std::string s = cmd.tail() + " > " + file_name; CS augmented_cmd(CS::_STRING, s); CMD::cmdproc(augmented_cmd, scope); }else{ CMD::cmdproc(cmd, scope); } } delete x; return NULL; } /*--------------------------------------------------------------------------*/ MODEL_CARD* LANG_SPECTRE::parse_paramset(CS& cmd, MODEL_CARD* x) { assert(x); cmd.reset().skipbl(); cmd >> "model "; parse_label(cmd, x); parse_type(cmd, x); parse_args(cmd, x); cmd.check(bWARNING, "what's this?"); return x; } /*--------------------------------------------------------------------------*/ BASE_SUBCKT* LANG_SPECTRE::parse_module(CS& cmd, BASE_SUBCKT* x) { assert(x); // header cmd.reset().skipbl(); cmd >> "subckt "; parse_label(cmd, x); parse_ports(cmd, x); // body for (;;) { cmd.get_line("spectre-subckt>"); if (cmd >> "ends ") { break; }else{ new__instance(cmd, x, x->subckt()); } } return x; } /*--------------------------------------------------------------------------*/ COMPONENT* LANG_SPECTRE::parse_instance(CS& cmd, COMPONENT* x) { assert(x); cmd.reset(); parse_label(cmd, x); parse_ports(cmd, x); parse_type(cmd, x); parse_args(cmd, x); cmd.check(bWARNING, "what's this?"); return x; } /*--------------------------------------------------------------------------*/ std::string LANG_SPECTRE::find_type_in_string(CS& cmd) { // known to be not always correct cmd.reset().skipbl(); unsigned here = 0; std::string type; if ((cmd >> "*|//")) { assert(here == 0); type = "dev_comment"; }else if ((cmd >> "model |simulator |parameters |subckt ")) { // type is first, it's a control statement type = cmd.trimmed_last_match(); }else if (cmd.reset().skiparg().match1("(") && cmd.scan(")")) { // node list surrounded by parens // type follows here = cmd.cursor(); cmd.reset(here); cmd >> type; }else if (cmd.reset().scan("=")) { // back up two, by starting over cmd.reset().skiparg(); unsigned here1 = cmd.cursor(); cmd.skiparg(); unsigned here2 = cmd.cursor(); cmd.skiparg(); unsigned here3 = cmd.cursor(); while (here2 != here3 && !cmd.match1('=')) { cmd.skiparg(); here1 = here2; here2 = here3; here3 = cmd.cursor(); } here = here1; cmd.reset(here); cmd >> type; }else{ // type is second cmd.reset().skiparg(); here = cmd.cursor(); cmd.reset(here); cmd >> type; } cmd.reset(here); return type; } /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::parse_top_item(CS& cmd, CARD_LIST* Scope) { cmd.get_line("gnucap-spectre>"); new__instance(cmd, NULL, Scope); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::print_args(OMSTREAM& o, const CARD* x) { assert(x); o << ' '; if (x->use_obsolete_callback_print()) { x->print_args_obsolete_callback(o, this); //BUG//callback// }else{ for (int ii = x->param_count() - 1; ii >= 0; --ii) { if (x->param_is_printable(ii)) { std::string arg = " " + x->param_name(ii) + "=" + x->param_value(ii); o << arg; }else{ } } } } /*--------------------------------------------------------------------------*/ static void print_type(OMSTREAM& o, const COMPONENT* x) { assert(x); o << ' ' << x->dev_type(); } /*--------------------------------------------------------------------------*/ static void print_label(OMSTREAM& o, const COMPONENT* x) { assert(x); o << x->short_label(); } /*--------------------------------------------------------------------------*/ static void print_ports(OMSTREAM& o, const COMPONENT* x) { assert(x); o << " ("; std::string sep = ""; for (int ii = 0; x->port_exists(ii); ++ii) { o << sep << x->port_value(ii); sep = " "; } for (int ii = 0; x->current_port_exists(ii); ++ii) {untested(); o << sep << x->current_port_value(ii); sep = " "; } o << ")"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::print_paramset(OMSTREAM& o, const MODEL_CARD* x) { assert(x); o << "model " << x->short_label() << ' ' << x->dev_type() << ' '; print_args(o, x); o << "\n\n"; } /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::print_module(OMSTREAM& o, const BASE_SUBCKT* x) { assert(x); assert(x->subckt()); o << "subckt " << x->short_label(); print_ports(o, x); o << "\n"; for (CARD_LIST::const_iterator ci = x->subckt()->begin(); ci != x->subckt()->end(); ++ci) { print_item(o, *ci); } o << "ends " << x->short_label() << "\n\n"; } /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::print_instance(OMSTREAM& o, const COMPONENT* x) { print_label(o, x); print_ports(o, x); print_type(o, x); print_args(o, x); o << "\n"; } /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::print_comment(OMSTREAM& o, const DEV_COMMENT* x) { assert(x); if (x->comment()[0] != '*') { o << "*"; }else{untested(); } o << x->comment() << '\n'; } /*--------------------------------------------------------------------------*/ void LANG_SPECTRE::print_command(OMSTREAM& o, const DEV_DOT* x) {untested(); assert(x); o << x->s() << '\n'; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class CMD_MODEL : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { // already got "model" std::string my_name, base_name; cmd >> my_name; unsigned here = cmd.cursor(); cmd >> base_name; //const MODEL_CARD* p = model_dispatcher[base_name]; const CARD* p = lang_spectre.find_proto(base_name, NULL); if (p) { MODEL_CARD* new_card = dynamic_cast(p->clone()); if (new_card) { assert(!new_card->owner()); lang_spectre.parse_paramset(cmd, new_card); Scope->push_back(new_card); }else{untested(); cmd.warn(bDANGER, here, "model: base has incorrect type"); } }else{untested(); cmd.warn(bDANGER, here, "model: no match"); } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "model", &p1); /*--------------------------------------------------------------------------*/ class CMD_SUBCKT : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { BASE_SUBCKT* new_module = dynamic_cast(device_dispatcher.clone("subckt")); assert(new_module); assert(!new_module->owner()); assert(new_module->subckt()); assert(new_module->subckt()->is_empty()); assert(!new_module->is_device()); lang_spectre.parse_module(cmd, new_module); Scope->push_back(new_module); } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "subckt", &p2); /*--------------------------------------------------------------------------*/ class CMD_SIMULATOR : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { command("options " + cmd.tail(), Scope); } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, "simulator", &p3); /*--------------------------------------------------------------------------*/ class CMD_SPECTRE : public CMD { public: void do_it(CS&, CARD_LIST* Scope) { command("options lang=spectre", Scope); } } p8; DISPATCHER::INSTALL d8(&command_dispatcher, "spectre", &p8); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/lang_spice.cc000066400000000000000000001007731316501211100144330ustar00rootroot00000000000000/*$Id: lang_spice.cc 2016/09/17 al $ -*- C++ -*- * Copyright (C) 2006 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2015.01.27 #include "globals.h" #include "u_status.h" #include "c_comand.h" #include "d_dot.h" #include "d_coment.h" #include "e_subckt.h" #include "u_lang.h" #include "d_logic.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class LANG_SPICE_BASE : public LANGUAGE { public: LANG_SPICE_BASE() {} ~LANG_SPICE_BASE() {} enum EOB {NO_EXIT_ON_BLANK, EXIT_ON_BLANK}; public: // override virtual, used by callback std::string arg_front()const {return " ";} std::string arg_mid()const {return "=";} std::string arg_back()const {return "";} public: // override virtual, called by commands DEV_COMMENT* parse_comment(CS&, DEV_COMMENT*); DEV_DOT* parse_command(CS&, DEV_DOT*); MODEL_CARD* parse_paramset(CS&, MODEL_CARD*); BASE_SUBCKT* parse_module(CS&, BASE_SUBCKT*); COMPONENT* parse_instance(CS&, COMPONENT*); std::string find_type_in_string(CS&); public: // "local?", called by own commands void parse_module_body(CS&, BASE_SUBCKT*, CARD_LIST*, const std::string&, EOB, const std::string&); private: // local void parse_type(CS&, CARD*); void parse_args(CS&, CARD*); void parse_label(CS&, CARD*); void parse_ports(CS&, COMPONENT*, int minnodes, int start, int num_nodes, bool all_new); private: // compatibility hacks void parse_element_using_obsolete_callback(CS&, COMPONENT*); void parse_logic_using_obsolete_callback(CS&, COMPONENT*); private: // override virtual, called by print_item void print_paramset(OMSTREAM&, const MODEL_CARD*); void print_module(OMSTREAM&, const BASE_SUBCKT*); void print_instance(OMSTREAM&, const COMPONENT*); void print_comment(OMSTREAM&, const DEV_COMMENT*); void print_command(OMSTREAM&, const DEV_DOT*); private: // local void print_args(OMSTREAM&, const MODEL_CARD*); void print_type(OMSTREAM&, const COMPONENT*); void print_args(OMSTREAM&, const COMPONENT*); void print_label(OMSTREAM&, const COMPONENT*); void print_ports(OMSTREAM&, const COMPONENT*); }; /*--------------------------------------------------------------------------*/ class LANG_SPICE : public LANG_SPICE_BASE { public: LANG_SPICE() {} ~LANG_SPICE() {} std::string name()const {return "spice";} bool case_insensitive()const {return true;} UNITS units()const {return uSPICE;} void parse_top_item(CS&, CARD_LIST*); } lang_spice; DISPATCHER::INSTALL ds(&language_dispatcher, lang_spice.name(), &lang_spice); /*--------------------------------------------------------------------------*/ class LANG_ACS : public LANG_SPICE_BASE { public: LANG_ACS() {} ~LANG_ACS() {} std::string name()const {return "acs";} bool case_insensitive()const {return true;} UNITS units()const {return uSPICE;} } lang_acs; DISPATCHER::INSTALL da(&language_dispatcher, lang_acs.name(), &lang_acs); /*--------------------------------------------------------------------------*/ DEV_COMMENT p0; DISPATCHER::INSTALL d0(&device_dispatcher, ";|#|*|'|\"|dev_comment", &p0); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void skip_pre_stuff(CS& cmd) { cmd.skipbl(); while (cmd.umatch(CKT_PROMPT)) {untested(); /* skip any number of copies of the prompt */ } cmd.umatch(ANTI_COMMENT); /* skip mark so spice ignores but gnucap reads */ } /*--------------------------------------------------------------------------*/ /* count_ports: figure out how many ports * returns the number of ports * side effect: "CS" is advanced to past the ports, ready for what follows */ static int count_ports(CS& cmd, int maxnodes, int minnodes, int leave_tail, int start) { assert(start < maxnodes); assert(minnodes <= maxnodes); int num_nodes = 0; std::vector spots; int paren = cmd.skip1b('('); int i = start; // loop over the tokens to try to guess where the nodes end // and other stuff begins spots.push_back(cmd.cursor()); for (;;) { ++i; //cmd.skiparg(); std::string node_name; cmd >> node_name; spots.push_back(cmd.cursor()); if (paren && cmd.skip1b(')')) { num_nodes = i; break; }else if (cmd.is_end()) { // found the end, no '=' if (i <= minnodes) { num_nodes = i; }else if (i <= minnodes + leave_tail) { num_nodes = minnodes; }else if (i <= maxnodes + leave_tail) { num_nodes = i - leave_tail; }else{ num_nodes = maxnodes; } break; }else if (cmd.skip1b("({})")) { // found '(', it's past the end of nodes if (i > maxnodes + leave_tail) { num_nodes = maxnodes; }else{ num_nodes = i - leave_tail; } break; }else if (cmd.skip1b('=')) { // found '=', it's past the end of nodes if (i > maxnodes + leave_tail + 1) { num_nodes = maxnodes; }else{ num_nodes = i - leave_tail - 1; } break; }else{ } } if (num_nodes < start) {untested(); cmd.reset(spots.back()); throw Exception("what's this?"); }else{ } cmd.reset(spots[static_cast(num_nodes-start)]); //cmd.warn(bDANGER, "past-nodes?"); //BUG// assert fails on current controlled sources with (node node dev) syntax // it's ok with (node node) dev syntax or node node dev syntax assert(num_nodes <= maxnodes); return num_nodes; } /*--------------------------------------------------------------------------*/ /* parse_ports: parse circuit connections from input string * fills in the rest of the array with 0 * returns the number of nodes actually read * The purpose of this complexity is to handle the variants of Spice formats, * which might have keys between nodes, * an unknown number of nodes with unknown number of args and no delimeters. * Consider: X1 a b c d e f g h i j k * Clearly (?) a,b,c,d,e are nodes, f is a subckt name, the rest are args. * But how do you know? * * Args: * maxnodes: the maximum number of port nodes to parse. * Stop here, even if it seems there should be more. * * minnodes: the minimum number of port nodes to parse. * It is an error if there are fewer than this. * * leave_tail: The number of arguments that are not nodes, * and don't have equal signs, following. * It is an aid to distinguishing the nodes from things that follow. * minnodes wins over leave_tail, but leave_tail wins over maxnodes. * The above example would need leave_tail=6 to parse correctly. * This one: X1 a b c d e f g=h i=j k * where a,b,c,d,e are nodes, f is a subckt or model identifier * would parse correctly with leave_tail=1. * Usual values for leave_tail are 0 or 1. * * start: start at this number, used for continuing after HSPICE kluge. * Other than that, the only useful value for start is 0. * * all_new: All node names must be new (not already defined) and unique. * This is used for the header line in .subckt, which starts clean. * The main benefit is to reject duplicates. */ void LANG_SPICE_BASE::parse_ports(CS& cmd, COMPONENT* x, int minnodes, int start, int num_nodes, bool all_new) { assert(x); int paren = cmd.skip1b('('); int ii = start; unsigned here1 = cmd.cursor(); try{ for (;;) { here1 = cmd.cursor(); if (paren && cmd.skip1b(')')) { --paren; break; // done. have closing paren. }else if (ii >= num_nodes) { break; // done. have maxnodes. }else if (!cmd.more()) {untested(); break; // done. premature end of line. }else if (OPT::keys_between_nodes && (cmd.umatch("poly ") || cmd.umatch("pwl ") || cmd.umatch("vccap ") || cmd.umatch("vcg ") || cmd.umatch("vcr ")) ) { cmd.reset(here1); break; // done, found reserved word between nodes }else{ //---------------------- unsigned here = cmd.cursor(); std::string node_name; cmd >> node_name; if (cmd.stuck(&here)) {untested(); // didn't move, probably a terminator. throw Exception("bad node name"); }else{ // legal node name, store it. x->set_port_by_index(ii, node_name); } //---------------------- if (!(x->node_is_connected(ii))) {untested(); break; // illegal node name, might be proper exit. }else{ if (all_new) { if (x->node_is_grounded(ii)) {untested(); cmd.warn(bDANGER, here1, "node 0 not allowed here"); }else{ } }else{ } ++ii; } } } }catch (Exception& e) {untested(); cmd.warn(bDANGER, here1, e.message()); } if (ii < minnodes) {untested(); cmd.warn(bDANGER, "need " + to_string(minnodes-ii) +" more nodes"); }else{ } if (paren != 0) {untested(); cmd.warn(bWARNING, "need )"); }else{ } //assert(x->_net_nodes == ii); // ground unused input nodes for (int iii = ii; iii < minnodes; ++iii) {untested(); x->set_port_to_ground(iii); } //assert(x->_net_nodes >= ii); } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::parse_element_using_obsolete_callback(CS& cmd, COMPONENT* x) { assert(x); ELEMENT* xx = dynamic_cast(x); assert(xx); { unsigned here = cmd.cursor(); int stop_nodes = x->max_nodes() - x->num_current_ports(); int num_nodes = count_ports(cmd, stop_nodes, 0, 0, 0); // max min tail already_got cmd.reset(here); parse_ports(cmd, x, 0, 0, num_nodes, false); // min already_got } int gotnodes = x->_net_nodes; COMMON_COMPONENT* c = NULL; if (gotnodes < x->min_nodes()) { // HSPICE compatibility kluge. // The device type or function type could be stuck between the nodes. xx->skip_dev_type(cmd); // (redundant) c = EVAL_BM_ACTION_BASE::parse_func_type(cmd); { unsigned here = cmd.cursor(); int num_nodes = count_ports(cmd, x->max_nodes(), x->min_nodes(), 0, gotnodes); cmd.reset(here); parse_ports(cmd, x, x->min_nodes(), gotnodes, num_nodes, false); } }else{ // Normal mode. nodes first, then data. } if (!c) { xx->skip_dev_type(cmd); // (redundant) c = bm_dispatcher.clone("eval_bm_cond"); }else{ } if (!c) {untested(); c = bm_dispatcher.clone("eval_bm_value"); }else{ } assert(c); // we have a blank common of the most general type // (or HSPICE kluge) // let it continue parsing unsigned here = cmd.cursor(); c->parse_common_obsolete_callback(cmd); //BUG//callback if (cmd.stuck(&here)) {untested(); cmd.warn(bDANGER, "needs a value"); }else{ } // At this point, there is ALWAYS a common "c", which may have more // commons attached to it. Try to reduce its complexity. // "c->deflate()" may return "c" or some simplification of "c". COMMON_COMPONENT* dc = c->deflate(); // dc == deflated_common // It might be just "c". // It might be something else that is simpler but equivalent. if (dc->is_trivial()) { assert(dynamic_cast(dc)); // If it is a simple value, don't use a common. // Just store the value directly. x->obsolete_move_parameters_from_common(dc); delete c; }else{ x->attach_common(dc); if (dc != c) { delete c; }else{ } } cmd.check(bDANGER, "what's this?"); } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::parse_logic_using_obsolete_callback(CS& cmd, COMPONENT* x) { assert(x); { unsigned here = cmd.cursor(); int num_nodes = count_ports(cmd, x->max_nodes(), x->min_nodes(), x->tail_size(), 0/*start*/); cmd.reset(here); parse_ports(cmd, x, x->min_nodes(), 0/*start*/, num_nodes, false); } int incount = x->net_nodes() - x->min_nodes() + 1; assert(incount > 0); std::string modelname = cmd.ctos(TOKENTERM); COMMON_LOGIC* common = 0; if (cmd.umatch("and " )) {untested();common = new LOGIC_AND;} else if (cmd.umatch("nand ")) {common = new LOGIC_NAND;} else if (cmd.umatch("or " )) {untested();common = new LOGIC_OR;} else if (cmd.umatch("nor " )) {common = new LOGIC_NOR;} else if (cmd.umatch("xor " )) {untested();common = new LOGIC_XOR;} else if (cmd.umatch("xnor ")) {untested();common = new LOGIC_XNOR;} else if (cmd.umatch("inv " )) {common = new LOGIC_INV;} else {untested(); cmd.warn(bWARNING,"need and,nand,or,nor,xor,xnor,inv"); common=new LOGIC_NONE; } assert(common); common->incount = incount; common->set_modelname(modelname); x->attach_common(common); } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::parse_type(CS& cmd, CARD* x) { assert(x); std::string new_type; cmd >> new_type; x->set_dev_type(new_type); } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::parse_args(CS& cmd, CARD* x) { assert(x); COMPONENT* xx = dynamic_cast(x); cmd >> "params:"; // optional, skip it. if (!x->use_obsolete_callback_parse()) { int paren = cmd.skip1b('('); if (xx && cmd.is_float()) { // simple unnamed value std::string value; cmd >> value; x->set_param_by_name(xx->value_name(), value); }else if (cmd.match1("'{")) { // quoted unnamed value std::string value; cmd >> value; // strips off the quotes value = '{' + value + '}'; // put them back x->set_param_by_name(xx->value_name(), value); }else{ // only name=value pairs } unsigned here = cmd.cursor(); for (int i=0; ; ++i) { if (paren && cmd.skip1b(')')) { break; }else if (!cmd.more()) { break; }else{ std::string Name = cmd.ctos("=", "", ""); cmd >> '='; std::string value = cmd.ctos(",=;)", "\"'{(", "\"'})"); unsigned there = here; if (cmd.stuck(&here)) {untested(); break; }else{ try{ if (value == "") {untested(); cmd.warn(bDANGER, there, x->long_label() + ": " + Name + " has no value?"); }else{ } x->set_param_by_name(Name, value); }catch (Exception_No_Match&) {untested(); cmd.warn(bDANGER, there, x->long_label() + ": bad parameter " + Name + " ignored"); } } } } }else if (MODEL_CARD* pp = dynamic_cast(x)) { // used only for "table" int paren = cmd.skip1b('('); bool in_error = false; for (;;) { unsigned here = cmd.cursor(); pp->parse_params_obsolete_callback(cmd); //BUG//callback// if (!cmd.more()) { break; }else if (paren && cmd.skip1b(')')) {untested(); break; }else if (cmd.stuck(&here)) {untested(); if (in_error) {untested(); // so you don't get two errors on name = value. cmd.skiparg(); in_error = false; }else{untested(); cmd.warn(bDANGER, "bad paramerter -- ignored"); cmd.skiparg().skip1b("="); in_error = true; } }else{ in_error = false; } } }else{untested(); // using obsolete_callback } } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::parse_label(CS& cmd, CARD* x) { assert(x); std::string my_name; cmd >> my_name; x->set_label(my_name); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_COMMENT* LANG_SPICE_BASE::parse_comment(CS& cmd, DEV_COMMENT* x) { assert(x); x->set(cmd.fullstring()); return x; } /*--------------------------------------------------------------------------*/ DEV_DOT* LANG_SPICE_BASE::parse_command(CS& cmd, DEV_DOT* x) { assert(x); x->set(cmd.fullstring()); CARD_LIST* scope = (x->owner()) ? x->owner()->subckt() : &CARD_LIST::card_list; cmd.reset(); skip_pre_stuff(cmd); unsigned here = cmd.cursor(); std::string s; cmd >> s; cmd.reset(here); if (!command_dispatcher[s]) { cmd.skip(); ++here; }else{ } CMD::cmdproc(cmd, scope); delete x; return NULL; } /*--------------------------------------------------------------------------*/ MODEL_CARD* LANG_SPICE_BASE::parse_paramset(CS& cmd, MODEL_CARD* x) { assert(x); cmd.reset(); cmd >> ".model "; parse_label(cmd, x); parse_type(cmd, x); parse_args(cmd, x); cmd.check(bWARNING, "what's this?"); return x; } /*--------------------------------------------------------------------------*/ BASE_SUBCKT* LANG_SPICE_BASE::parse_module(CS& cmd, BASE_SUBCKT* x) { assert(x); // header cmd.reset(); (cmd >> ".subckt |.macro "); parse_label(cmd, x); { unsigned here = cmd.cursor(); int num_nodes = count_ports(cmd, x->max_nodes(), x->min_nodes(), 0/*no unnamed par*/, 0/*start*/); cmd.reset(here); parse_ports(cmd, x, x->min_nodes(), 0/*start*/, num_nodes, true/*all new*/); } x->subckt()->params()->parse(cmd); // body parse_module_body(cmd, x, x->subckt(), name() + "-subckt>", NO_EXIT_ON_BLANK, ".ends |.eom "); return x; } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::parse_module_body(CS& cmd, BASE_SUBCKT* x, CARD_LIST* Scope, const std::string& prompt, EOB exit_on_blank, const std::string& exit_key) { try { for (;;) { cmd.get_line(prompt); if ((exit_on_blank==EXIT_ON_BLANK && cmd.is_end()) || cmd.umatch(exit_key)) { break; }else{ skip_pre_stuff(cmd); new__instance(cmd, x, Scope); } } }catch (Exception_End_Of_Input& e) { } } /*--------------------------------------------------------------------------*/ COMPONENT* LANG_SPICE_BASE::parse_instance(CS& cmd, COMPONENT* x) { try { assert(x); cmd.reset().umatch(ANTI_COMMENT); // ACS dot type specifier if (cmd.skip1b('.')) { parse_type(cmd, x); }else{ } parse_label(cmd, x); if (x->use_obsolete_callback_parse()) { parse_element_using_obsolete_callback(cmd, x); }else if (DEV_LOGIC* xx = dynamic_cast(x)) { parse_logic_using_obsolete_callback(cmd, xx); }else{ { unsigned here = cmd.cursor(); int num_nodes = count_ports(cmd, x->max_nodes(), x->min_nodes(), x->tail_size(), 0); cmd.reset(here); parse_ports(cmd, x, x->min_nodes(), 0/*start*/, num_nodes, false); } if (x->print_type_in_spice()) { parse_type(cmd, x); }else{ } parse_args(cmd, x); } }catch (Exception& e) {untested(); cmd.warn(bDANGER, e.message()); } return x; } /*--------------------------------------------------------------------------*/ std::string LANG_SPICE_BASE::find_type_in_string(CS& cmd) { cmd.umatch(ANTI_COMMENT); /* skip mark so spice ignores but gnucap reads */ unsigned here = cmd.cursor(); std::string s; char id_letter = cmd.peek(); if (OPT::case_insensitive) { id_letter = static_cast(toupper(id_letter)); }else{ } switch (id_letter) {untested(); case '\0':untested(); s = ""; break; case '.': cmd >> s; cmd.reset(here); if (!command_dispatcher[s]) { cmd.skip(); ++here; s = s.substr(1); }else{ } break; case 'G': here = cmd.cursor(); if (cmd.scan("vccap |vcg |vcr |vccs ")) { s = cmd.trimmed_last_match(); }else{ s = "G"; } break; default: s = id_letter; break; } cmd.reset(here); return s; } /*--------------------------------------------------------------------------*/ void LANG_SPICE::parse_top_item(CS& cmd, CARD_LIST* Scope) { if (0 && cmd.is_file() && cmd.is_first_read() && (Scope == &CARD_LIST::card_list) && (Scope->is_empty()) && (head == "'")) {untested(); //BUG// ugly hack cmd.get_line("gnucap-spice-title>"); head = cmd.fullstring(); IO::mstdout << head << '\n'; }else{ cmd.get_line("gnucap-spice>"); new__instance(cmd, NULL, Scope); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static char fix_case(char c) { return ((OPT::case_insensitive) ? (static_cast(tolower(c))) : (c)); } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_paramset(OMSTREAM& o, const MODEL_CARD* x) { assert(x); o << ".model " << x->short_label() << ' ' << x->dev_type() << " ("; print_args(o, x); o << ")\n"; } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_module(OMSTREAM& o, const BASE_SUBCKT* x) { assert(x); assert(x->subckt()); o << ".subckt " << x->short_label(); print_ports(o, x); o << '\n'; for (CARD_LIST::const_iterator ci = x->subckt()->begin(); ci != x->subckt()->end(); ++ci) { print_item(o, *ci); } o << ".ends " << x->short_label() << "\n"; } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_instance(OMSTREAM& o, const COMPONENT* x) { print_label(o, x); print_ports(o, x); print_type(o, x); print_args(o, x); o << '\n'; } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_comment(OMSTREAM& o, const DEV_COMMENT* x) { assert(x); if (x->comment()[1] != '+') { if (x->comment()[0] != '*') { o << "*"; }else{ } o << x->comment() << '\n'; }else{ } // Suppress printing of comment lines starting with "*+". // These are generated as a way to display calculated values. } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_command(OMSTREAM& o, const DEV_DOT* x) {untested(); assert(x); o << x->s() << '\n'; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_args(OMSTREAM& o, const MODEL_CARD* x) { assert(x); if (x->use_obsolete_callback_print()) { x->print_args_obsolete_callback(o, this); //BUG//callback// }else{ for (int ii = x->param_count() - 1; ii >= x->param_count_dont_print(); --ii) { if (x->param_is_printable(ii)) { std::string arg = " " + x->param_name(ii) + "=" + x->param_value(ii); o << arg; }else{ } } } } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_type(OMSTREAM& o, const COMPONENT* x) { assert(x); if (x->print_type_in_spice()) { o << " " << x->dev_type(); }else if (fix_case(x->short_label()[0]) != fix_case(x->id_letter())) {untested(); o << " " << x->dev_type(); }else{ // don't print type } } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_args(OMSTREAM& o, const COMPONENT* x) { assert(x); o << ' '; if (x->use_obsolete_callback_print()) { x->print_args_obsolete_callback(o, this); //BUG//callback// }else{ for (int ii = x->param_count() - 1; ii >= x->param_count_dont_print(); --ii) { if (x->param_is_printable(ii)) { if ((ii != x->param_count() - 1) || (x->param_name(ii) != x->value_name())) { // skip name if plain value o << " " << x->param_name(ii) << "="; }else{ } o << x->param_value(ii); }else{ } } } } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_label(OMSTREAM& o, const COMPONENT* x) { assert(x); o << x->short_label(); } /*--------------------------------------------------------------------------*/ void LANG_SPICE_BASE::print_ports(OMSTREAM& o, const COMPONENT* x) { assert(x); o << " ( "; std::string sep = ""; for (int ii = 0; x->port_exists(ii); ++ii) { o << sep << x->port_value(ii); sep = " "; } for (int ii = 0; x->current_port_exists(ii); ++ii) { o << sep << x->current_port_value(ii); sep = " "; } o << " )"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class CMD_MODEL : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { // already got "model" std::string my_name, base_name; cmd >> my_name; unsigned here1 = cmd.cursor(); cmd >> base_name; // "level" kluge .... // if there is a "level" keyword, with integer argument, // tack that onto the given modelname and look for that cmd.skip1b('('); int level = 0; { unsigned here = cmd.cursor(); scan_get(cmd, "level ", &level); if (!cmd.stuck(&here)) { char buf[20]; sprintf(buf, "%u", level); base_name += buf; }else{ } } const MODEL_CARD* p = model_dispatcher[base_name]; if (p) { MODEL_CARD* new_card = dynamic_cast(p->clone()); if (new_card) { assert(!new_card->owner()); lang_spice.parse_paramset(cmd, new_card); Scope->push_back(new_card); }else{untested(); cmd.warn(bDANGER, here1, "model: base has incorrect type"); } }else{ cmd.warn(bDANGER, here1, "model: \"" + base_name + "\" no match"); } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, ".model", &p1); /*--------------------------------------------------------------------------*/ class CMD_SUBCKT : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { BASE_SUBCKT* new_module = dynamic_cast(device_dispatcher.clone("subckt")); assert(new_module); assert(!new_module->owner()); assert(new_module->subckt()); assert(new_module->subckt()->is_empty()); assert(!new_module->is_device()); lang_spice.parse_module(cmd, new_module); Scope->push_back(new_module); } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, ".subckt|.macro", &p2); /*--------------------------------------------------------------------------*/ enum Skip_Header {NO_HEADER, SKIP_HEADER}; /*--------------------------------------------------------------------------*/ /* getmerge: actually do the work for "get", "merge", etc. */ static void getmerge(CS& cmd, Skip_Header skip_header, CARD_LIST* Scope) { ::status.get.reset().start(); assert(Scope); std::string file_name, section_name; cmd >> file_name; bool echoon = false; /* echo on/off flag (echo as read from file) */ bool liston = false; /* list on/off flag (list actual values) */ bool quiet = false; /* don't echo title */ unsigned here = cmd.cursor(); do{ ONE_OF || Get(cmd, "echo", &echoon) || Get(cmd, "list", &liston) || Get(cmd, "quiet", &quiet) || Get(cmd, "section", §ion_name) ; }while (cmd.more() && !cmd.stuck(&here)); if (cmd.more()) { cmd >> section_name; }else{ } cmd.check(bWARNING, "need section, echo, list, or quiet"); CS file(CS::_INC_FILE, file_name); if (skip_header) { // get and store the header line file.get_line(">>>>"); head = file.fullstring(); if (!quiet) { IO::mstdout << head << '\n'; }else{untested(); } }else{ } if (section_name == "") { lang_spice.parse_module_body(file, NULL, Scope, ">>>>", lang_spice.NO_EXIT_ON_BLANK, ".end "); }else{ try { for (;;) { file.get_line("lib " + section_name + '>'); if (file.umatch(".lib " + section_name + ' ')) { lang_spice.parse_module_body(file, NULL, Scope, section_name, lang_spice.NO_EXIT_ON_BLANK, ".endl {" + section_name + "}"); }else{ // skip it } } }catch (Exception_End_Of_Input& e) { } } ::status.get.stop(); } /*--------------------------------------------------------------------------*/ /* cmd_lib: lib command */ class CMD_LIB : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { unsigned here = cmd.cursor(); std::string section_name, more_stuff; cmd >> section_name >> more_stuff; if (more_stuff != "") { cmd.reset(here); getmerge(cmd, NO_HEADER, Scope); }else{ for (;;) { cmd.get_line(section_name + '>'); if (cmd.umatch(".endl {" + section_name + "}")) { break; }else{ // skip it } } } } } p33; DISPATCHER::INSTALL d33(&command_dispatcher, ".lib|lib", &p33); /*--------------------------------------------------------------------------*/ /* cmd_include: include command * as get or run, but do not clear first, inherit the run-mode. */ class CMD_INCLUDE : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) {untested(); getmerge(cmd, NO_HEADER, Scope); } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, ".include", &p3); /*--------------------------------------------------------------------------*/ /* cmd_merge: merge command * as get, but do not clear first */ class CMD_MERGE : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) {untested(); SET_RUN_MODE xx(rPRESET); getmerge(cmd, NO_HEADER, Scope); } } p4; DISPATCHER::INSTALL d4(&command_dispatcher, ".merge|merge", &p4); /*--------------------------------------------------------------------------*/ /* cmd_run: "<" and "<<" commands * run in batch mode. Spice format. * "<<" clears old circuit first, "<" does not * get circuit from file, execute dot cards in sequence */ class CMD_RUN : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { while (cmd.match1('<')) {untested(); command("clear", Scope); cmd.skip(); cmd.skipbl(); } SET_RUN_MODE xx(rSCRIPT); getmerge(cmd, SKIP_HEADER, Scope); } } p5; DISPATCHER::INSTALL d5(&command_dispatcher, "<", &p5); /*--------------------------------------------------------------------------*/ /* cmd_get: get command * get circuit from a file, after clearing the old one * preset, but do not execute "dot cards" */ class CMD_GET : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { SET_RUN_MODE xx(rPRESET); command("clear", Scope); getmerge(cmd, SKIP_HEADER, Scope); } } p6; DISPATCHER::INSTALL d6(&command_dispatcher, ".get|get", &p6); /*--------------------------------------------------------------------------*/ /* cmd_build: build command * get circuit description direct from keyboard (or stdin if redirected) * Command syntax: build * Bare command: add to end of list * If there is an arg: add before that element * null line exits this mode * preset, but do not execute "dot cards" */ class CMD_BUILD : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) {untested(); SET_RUN_MODE xx(rPRESET); ::status.get.reset().start(); lang_spice.parse_module_body(cmd, NULL, Scope, ">", lang_spice.EXIT_ON_BLANK, ". "); ::status.get.stop(); } } p7; DISPATCHER::INSTALL d7(&command_dispatcher, ".build|build", &p7); /*--------------------------------------------------------------------------*/ class CMD_SPICE : public CMD { public: void do_it(CS&, CARD_LIST* Scope) { command("options lang=spice", Scope); } } p8; DISPATCHER::INSTALL d8(&command_dispatcher, "spice", &p8); /*--------------------------------------------------------------------------*/ class CMD_ACS : public CMD { public: void do_it(CS&, CARD_LIST* Scope) {untested(); command("options lang=acs", Scope); } } p9; DISPATCHER::INSTALL d9(&command_dispatcher, "acs", &p9); /*--------------------------------------------------------------------------*/ class CMD_ENDC : public CMD { public: void do_it(CS&, CARD_LIST* Scope) {untested(); if (OPT::language == &lang_acs) {untested(); command("options lang=spice", Scope); }else{untested(); } } } p88; DISPATCHER::INSTALL d88(&command_dispatcher, ".endc", &p88); /*--------------------------------------------------------------------------*/ class CMD_CONTROL : public CMD { public: void do_it(CS&, CARD_LIST* Scope) {untested(); if (OPT::language == &lang_spice) {untested(); command("options lang=acs", Scope); }else{untested(); } } } p99; DISPATCHER::INSTALL d99(&command_dispatcher, ".control", &p99); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/lang_verilog.cc000066400000000000000000000361111316501211100147710ustar00rootroot00000000000000/*$Id: lang_verilog.cc 2016/09/17 al $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2016.09.10 #include "globals.h" #include "c_comand.h" #include "d_dot.h" #include "d_coment.h" #include "e_subckt.h" #include "e_model.h" #include "u_lang.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class LANG_VERILOG : public LANGUAGE { enum MODE {mDEFAULT, mPARAMSET} _mode; mutable int arg_count; enum {INACTIVE = -1}; public: LANG_VERILOG() : arg_count(INACTIVE) {} ~LANG_VERILOG() {} std::string name()const {return "verilog";} bool case_insensitive()const {return false;} UNITS units()const {return uSI;} public: // override virtual, used by callback std::string arg_front()const {untested(); switch (_mode) { case mPARAMSET:untested(); return " ."; break; case mDEFAULT:untested(); return (arg_count++ > 0) ? ", ." : "."; break; } unreachable(); return ""; } std::string arg_mid()const {untested(); switch (_mode) { case mPARAMSET:untested(); return "="; break; case mDEFAULT:untested(); return "("; break; } unreachable(); return ""; } std::string arg_back()const {untested(); switch (_mode) { case mPARAMSET:untested(); return ";"; break; case mDEFAULT:untested(); return ")"; break; } unreachable(); return ""; } public: // override virtual, called by commands void parse_top_item(CS&, CARD_LIST*); DEV_COMMENT* parse_comment(CS&, DEV_COMMENT*); DEV_DOT* parse_command(CS&, DEV_DOT*); MODEL_CARD* parse_paramset(CS&, MODEL_CARD*); BASE_SUBCKT* parse_module(CS&, BASE_SUBCKT*); COMPONENT* parse_instance(CS&, COMPONENT*); std::string find_type_in_string(CS&); private: // override virtual, called by print_item void print_paramset(OMSTREAM&, const MODEL_CARD*); void print_module(OMSTREAM&, const BASE_SUBCKT*); void print_instance(OMSTREAM&, const COMPONENT*); void print_comment(OMSTREAM&, const DEV_COMMENT*); void print_command(OMSTREAM& o, const DEV_DOT* c); private: // local void print_args(OMSTREAM&, const MODEL_CARD*); void print_args(OMSTREAM&, const COMPONENT*); } lang_verilog; DISPATCHER::INSTALL d(&language_dispatcher, lang_verilog.name(), &lang_verilog); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void parse_type(CS& cmd, CARD* x) { assert(x); std::string new_type; cmd >> new_type; x->set_dev_type(new_type); } /*--------------------------------------------------------------------------*/ static void parse_args_paramset(CS& cmd, MODEL_CARD* x) { assert(x); while (cmd >> '.') { unsigned here = cmd.cursor(); std::string name, value; try{ cmd >> name >> '=' >> value >> ';'; x->set_param_by_name(name, value); }catch (Exception_No_Match&) {untested(); cmd.warn(bDANGER, here, x->long_label() + ": bad parameter " + name + " ignored"); } } } /*--------------------------------------------------------------------------*/ static void parse_args_instance(CS& cmd, CARD* x) { assert(x); if (cmd >> "#(") { if (cmd.match1('.')) { // by name while (cmd >> '.') { unsigned here = cmd.cursor(); std::string name = cmd.ctos("(", "", ""); std::string value = cmd.ctos(",)", "(", ")"); cmd >> ','; try{ x->set_param_by_name(name, value); }catch (Exception_No_Match&) {untested(); cmd.warn(bDANGER, here, x->long_label() + ": bad parameter " + name + " ignored"); } } }else{ // by order int index = 1; while (cmd.is_alnum() || cmd.match1("+-.")) { unsigned here = cmd.cursor(); try{ std::string value = cmd.ctos(",)", "", ""); x->set_param_by_index(x->param_count() - index++, value, 0/*offset*/); }catch (Exception_Too_Many& e) {untested(); cmd.warn(bDANGER, here, e.message()); } } } cmd >> ')'; }else{untested(); // no args } } /*--------------------------------------------------------------------------*/ static void parse_label(CS& cmd, CARD* x) { assert(x); std::string my_name; cmd >> my_name; x->set_label(my_name); } /*--------------------------------------------------------------------------*/ static void parse_ports(CS& cmd, COMPONENT* x) { assert(x); if (cmd >> '(') { if (cmd.is_alnum()) { // by order int index = 0; while (cmd.is_alnum()) { unsigned here = cmd.cursor(); try{ std::string value; cmd >> value; x->set_port_by_index(index++, value); }catch (Exception_Too_Many& e) { cmd.warn(bDANGER, here, e.message()); } } if (index < x->min_nodes()) { cmd.warn(bDANGER, "need " + to_string(x->min_nodes()-index) +" more nodes, grounding"); for (int iii = index; iii < x->min_nodes(); ++iii) { x->set_port_to_ground(iii); } }else{ } }else{ // by name while (cmd >> '.') { unsigned here = cmd.cursor(); try{ std::string name, value; cmd >> name >> '(' >> value >> ')' >> ','; x->set_port_by_name(name, value); }catch (Exception_No_Match&) {untested(); cmd.warn(bDANGER, here, "mismatch, ignored"); } } } cmd >> ')'; }else{untested(); cmd.warn(bDANGER, "'(' required (parse ports)"); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_COMMENT* LANG_VERILOG::parse_comment(CS& cmd, DEV_COMMENT* x) {untested(); assert(x); x->set(cmd.fullstring()); return x; } /*--------------------------------------------------------------------------*/ DEV_DOT* LANG_VERILOG::parse_command(CS& cmd, DEV_DOT* x) { assert(x); x->set(cmd.fullstring()); CARD_LIST* scope = (x->owner()) ? x->owner()->subckt() : &CARD_LIST::card_list; cmd.reset(); CMD::cmdproc(cmd, scope); delete x; return NULL; } /*--------------------------------------------------------------------------*/ /* "paramset" ";" * * * * * "endparamset" */ //BUG// no paramset_item_declaration, falls back to spice mode MODEL_CARD* LANG_VERILOG::parse_paramset(CS& cmd, MODEL_CARD* x) { assert(x); cmd.reset(); cmd >> "paramset "; parse_label(cmd, x); parse_type(cmd, x); cmd >> ';'; for (;;) { parse_args_paramset(cmd, x); if (cmd >> "endparamset ") { break; }else if (!cmd.more()) { cmd.get_line("verilog-paramset>"); }else{untested(); cmd.check(bWARNING, "what's this?"); break; } } return x; } /*--------------------------------------------------------------------------*/ /* "module" "(" ")" ";" * * * "endmodule" */ //BUG// strictly one device per line BASE_SUBCKT* LANG_VERILOG::parse_module(CS& cmd, BASE_SUBCKT* x) { assert(x); // header cmd.reset(); (cmd >> "module |macromodule "); parse_label(cmd, x); parse_ports(cmd, x); cmd >> ';'; // body for (;;) { cmd.get_line("verilog-module>"); if (cmd >> "endmodule ") { break; }else{ new__instance(cmd, x, x->subckt()); } } return x; } /*--------------------------------------------------------------------------*/ COMPONENT* LANG_VERILOG::parse_instance(CS& cmd, COMPONENT* x) { assert(x); cmd.reset(); parse_type(cmd, x); parse_args_instance(cmd, x); parse_label(cmd, x); parse_ports(cmd, x); cmd >> ';'; cmd.check(bWARNING, "what's this?"); return x; } /*--------------------------------------------------------------------------*/ std::string LANG_VERILOG::find_type_in_string(CS& cmd) { unsigned here = cmd.cursor(); std::string type; if ((cmd >> "//")) {untested(); assert(here == 0); type = "dev_comment"; }else{ cmd >> type; } cmd.reset(here); return type; } /*--------------------------------------------------------------------------*/ void LANG_VERILOG::parse_top_item(CS& cmd, CARD_LIST* Scope) { cmd.get_line("gnucap-verilog>"); new__instance(cmd, NULL, Scope); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_args(OMSTREAM& o, const MODEL_CARD* x) { assert(x); if (x->use_obsolete_callback_print()) {untested(); x->print_args_obsolete_callback(o, this); //BUG//callback// }else{ for (int ii = x->param_count() - 1; ii >= 0; --ii) { if (x->param_is_printable(ii)) { std::string arg = " ." + x->param_name(ii) + "=" + x->param_value(ii) + ";"; o << arg; }else{ } } } } /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_args(OMSTREAM& o, const COMPONENT* x) { assert(x); o << " #("; if (x->use_obsolete_callback_print()) { arg_count = 0; x->print_args_obsolete_callback(o, this); //BUG//callback// arg_count = INACTIVE; }else{ std::string sep = "."; for (int ii = x->param_count() - 1; ii >= 0; --ii) { if (x->param_is_printable(ii)) { o << sep << x->param_name(ii) << "(" << x->param_value(ii) << ")"; sep = ",."; }else{ } } } o << ") "; } /*--------------------------------------------------------------------------*/ static void print_type(OMSTREAM& o, const COMPONENT* x) { assert(x); o << x->dev_type(); } /*--------------------------------------------------------------------------*/ static void print_label(OMSTREAM& o, const COMPONENT* x) { assert(x); o << x->short_label(); } /*--------------------------------------------------------------------------*/ static void print_ports_long(OMSTREAM& o, const COMPONENT* x) { // print in long form ... .name(value) assert(x); o << " ("; std::string sep = "."; for (int ii = 0; x->port_exists(ii); ++ii) { o << sep << x->port_name(ii) << '(' << x->port_value(ii) << ')'; sep = ",."; } for (int ii = 0; x->current_port_exists(ii); ++ii) {untested(); o << sep << x->current_port_name(ii) << '(' << x->current_port_value(ii) << ')'; sep = ",."; } o << ")"; } /*--------------------------------------------------------------------------*/ static void print_ports_short(OMSTREAM& o, const COMPONENT* x) { // print in short form ... value only assert(x); o << " ("; std::string sep = ""; for (int ii = 0; x->port_exists(ii); ++ii) { o << sep << x->port_value(ii); sep = ","; } for (int ii = 0; x->current_port_exists(ii); ++ii) {untested(); o << sep << x->current_port_value(ii); sep = ","; } o << ")"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_paramset(OMSTREAM& o, const MODEL_CARD* x) { assert(x); _mode = mPARAMSET; o << "paramset " << x->short_label() << ' ' << x->dev_type() << ";\\\n"; print_args(o, x); o << "\\\n" "endparmset\n\n"; _mode = mDEFAULT; } /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_module(OMSTREAM& o, const BASE_SUBCKT* x) { assert(x); assert(x->subckt()); o << "module " << x->short_label(); print_ports_short(o, x); o << ";\n"; for (CARD_LIST::const_iterator ci = x->subckt()->begin(); ci != x->subckt()->end(); ++ci) { print_item(o, *ci); } o << "endmodule // " << x->short_label() << "\n\n"; } /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_instance(OMSTREAM& o, const COMPONENT* x) { print_type(o, x); print_args(o, x); print_label(o, x); print_ports_long(o, x); o << ";\n"; } /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_comment(OMSTREAM& o, const DEV_COMMENT* x) {untested(); assert(x); if ((x->comment().compare(0, 2, "//")) != 0) {untested(); o << "//"; }else{untested(); } o << x->comment() << '\n'; } /*--------------------------------------------------------------------------*/ void LANG_VERILOG::print_command(OMSTREAM& o, const DEV_DOT* x) {untested(); assert(x); o << x->s() << '\n'; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class CMD_PARAMSET : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { // already got "paramset" std::string my_name, base_name; cmd >> my_name; unsigned here = cmd.cursor(); cmd >> base_name; //const MODEL_CARD* p = model_dispatcher[base_name]; const CARD* p = lang_verilog.find_proto(base_name, NULL); if (p) { MODEL_CARD* new_card = dynamic_cast(p->clone()); if (new_card) { assert(!new_card->owner()); lang_verilog.parse_paramset(cmd, new_card); Scope->push_back(new_card); }else{untested(); cmd.warn(bDANGER, here, "paramset: base has incorrect type"); } }else{untested(); cmd.warn(bDANGER, here, "paramset: no match"); } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "paramset", &p1); /*--------------------------------------------------------------------------*/ class CMD_MODULE : public CMD { void do_it(CS& cmd, CARD_LIST* Scope) { BASE_SUBCKT* new_module = dynamic_cast(device_dispatcher.clone("subckt")); assert(new_module); assert(!new_module->owner()); assert(new_module->subckt()); assert(new_module->subckt()->is_empty()); assert(!new_module->is_device()); lang_verilog.parse_module(cmd, new_module); Scope->push_back(new_module); } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "module|macromodule", &p2); /*--------------------------------------------------------------------------*/ class CMD_VERILOG : public CMD { public: void do_it(CS&, CARD_LIST* Scope) {untested(); command("options lang=verilog", Scope); } } p8; DISPATCHER::INSTALL d8(&command_dispatcher, "verilog", &p8); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_at.cc000066400000000000000000000045561316501211100144560ustar00rootroot00000000000000/*$Id: measure_at.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER x; bool derivative = false; unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "x", &x) || Get(Cmd, "at", &x) || Get(Cmd, "deriv{ative}", &derivative) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { x.e_val(BIGBIG, Scope); return to_string((derivative) ? (w->v_out(x).f1) : (w->v_out(x).f0)); }else{ throw Exception_No_Match(probe_name); } } } p1; DISPATCHER::INSTALL d1(&measure_dispatcher, "at", &p1); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_average.cc000066400000000000000000000055371316501211100154640ustar00rootroot00000000000000/*$Id: measure_average.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); WAVE::const_iterator lower = begin; double area = 0; WAVE::const_iterator i = begin; while (++i < end) { area += .5 * (lower->second + i->second) * (i->first - lower->first); lower = i; } return to_string(area/(lower->first - begin->first)); }else{ throw Exception_No_Match(probe_name); } } } p4; DISPATCHER::INSTALL d4(&measure_dispatcher, "average|mean", &p4); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_cross.cc000066400000000000000000000071421316501211100151750ustar00rootroot00000000000000/*$Id: measure_cross.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); PARAMETER cross(0.); int slope = 1; bool last = false; unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) || Get(Cmd, "cross", &cross) || Set(Cmd, "rise", &slope, 1) || Set(Cmd, "fall", &slope, -1) || Set(Cmd, "last", &last, true) || Set(Cmd, "first", &last, false) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); cross.e_val(0., Scope); double cross1 = cross * slope; enum STAT {WAITING, READY, DONE} stat = WAITING; double x_time = (last) ? -BIGBIG : BIGBIG; WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); WAVE::const_iterator lower = begin; for (WAVE::const_iterator i = begin; i < end && stat != DONE; ++i) { double val = i->second * slope; switch (stat) { case WAITING: if (val < cross1) { stat = READY; lower = i; }else{ } break; case READY: if (val > cross1) { stat = (last) ? WAITING : DONE; WAVE::const_iterator upper = i; double position = (cross1*slope - lower->second) / (upper->second - lower->second); x_time = lower->first + position * (upper->first - lower->first); }else{ lower = i; } break; case DONE: break; }; } return to_string(x_time); }else{ throw Exception_No_Match(probe_name); } } } p4; DISPATCHER::INSTALL d4(&measure_dispatcher, "cross", &p4); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_eval.cc000066400000000000000000000034011316501211100147650ustar00rootroot00000000000000/*$Id: measure_eval.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "u_parameter.h" #include "globals.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { PARAMETER arg; Cmd >> arg; arg.e_val(BIGBIG, Scope); return to_string(double(arg)); } } p1; DISPATCHER::INSTALL d1(&measure_dispatcher, "eval", &p1); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_integral.cc000066400000000000000000000055071316501211100156540ustar00rootroot00000000000000/*$Id: measure_integral.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); WAVE::const_iterator lower = begin; double area = 0; for (WAVE::const_iterator i = begin; ++i < end; ) { area += .5 * (lower->second + i->second) * (i->first - lower->first); lower = i; } return to_string(area); }else{ throw Exception_No_Match(probe_name); } } } p4; DISPATCHER::INSTALL d4(&measure_dispatcher, "integrate|integral|area", &p4); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_max.cc000066400000000000000000000057701316501211100146360ustar00rootroot00000000000000/*$Id: measure_max.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); bool last = false; bool arg = false; unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) || Set(Cmd, "arg", &arg, true) || Set(Cmd, "last", &last, true) || Set(Cmd, "first", &last, false) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); double time = (last) ? -BIGBIG : BIGBIG; double m = -BIGBIG; WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); for (WAVE::const_iterator i = begin; i < end; ++i) { double val = i->second; if (val > m || (last && (val == m))) { time = i->first; m = val; }else{ } } return to_string((arg) ? (time) : (m)); }else{ throw Exception_No_Match(probe_name); } } } p1; DISPATCHER::INSTALL d1(&measure_dispatcher, "max", &p1); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_min.cc000066400000000000000000000057671316501211100146420ustar00rootroot00000000000000/*$Id: measure_min.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); bool last = false; bool arg = false; unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) || Set(Cmd, "arg", &arg, true) || Set(Cmd, "last", &last, true) || Set(Cmd, "first", &last, false) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); double time = (last) ? -BIGBIG : BIGBIG; double m = BIGBIG; WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); for (WAVE::const_iterator i = begin; i < end; ++i) { double val = i->second; if (val < m || (last && (val == m))) { time = i->first; m = val; }else{ } } return to_string((arg) ? (time) : (m)); }else{ throw Exception_No_Match(probe_name); } } } p2; DISPATCHER::INSTALL d2(&measure_dispatcher, "min", &p2); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_rms.cc000066400000000000000000000055631316501211100146520ustar00rootroot00000000000000/*$Id: measure_rms.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); WAVE::const_iterator lower = begin; double area = 0; WAVE::const_iterator i = begin; while (++i < end) { area += .5 * (lower->second*lower->second + i->second*i->second) * (i->first - lower->first); lower = i; } return to_string(sqrt(area/(lower->first - begin->first))); }else{ throw Exception_No_Match(probe_name); } } } p4; DISPATCHER::INSTALL d4(&measure_dispatcher, "rms", &p4); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/measure_slewrate.cc000066400000000000000000000125031316501211100156670ustar00rootroot00000000000000/*$Id: measure_slewrate.cc,v 26.137 2010/04/10 02:37:05 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ #include "globals.h" #include "l_compar.h" #include "u_parameter.h" #include "m_wave.h" #include "u_function.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class MEASURE : public FUNCTION { public: std::string eval(CS& Cmd, const CARD_LIST* Scope)const { std::string probe_name; PARAMETER before(BIGBIG); PARAMETER after(-BIGBIG); PARAMETER start_val; PARAMETER stop_val; bool last = false; bool expression = false; unsigned here = Cmd.cursor(); Cmd >> probe_name; WAVE* w = find_wave(probe_name); if (!w) { Cmd.reset(here); }else{ } here = Cmd.cursor(); do { ONE_OF || Get(Cmd, "probe", &probe_name) || Get(Cmd, "before", &before) || Get(Cmd, "after", &after) || Get(Cmd, "end", &before) || Get(Cmd, "begin", &after) || Get(Cmd, "initial", &start_val) || Get(Cmd, "final", &stop_val) || Get(Cmd, "start_val", &start_val) || Get(Cmd, "to", &stop_val) || Set(Cmd, "last", &last, true) || Set(Cmd, "first", &last, false) || Set(Cmd, "expr{ession}",&expression, true) ; }while (Cmd.more() && !Cmd.stuck(&here)); if (!w) { w = find_wave(probe_name); }else{ } if (w) { before.e_val(BIGBIG, Scope); after.e_val(-BIGBIG, Scope); start_val.e_val(0., Scope); stop_val.e_val(0., Scope); enum STAT {WAITING, READY, IN_RANGE, DONE} stat = WAITING; double try_start_time = BIGBIG; double start_time = BIGBIG; double stop_time = BIGBIG; WAVE::const_iterator begin = lower_bound(w->begin(), w->end(), DPAIR(after, -BIGBIG)); WAVE::const_iterator end = upper_bound(w->begin(), w->end(), DPAIR(before, BIGBIG)); WAVE::const_iterator lower = begin; for (WAVE::const_iterator i = begin; i < end && stat != DONE; ++i) { double val = i->second; switch (stat) { case WAITING: if (in_order(val, double(start_val), double(stop_val))) { stat = READY; }else{ // still WAITING } break; case READY: if (in_order(val, double(start_val), double(stop_val))) { // still READY }else if (in_order(double(start_val), val, double(stop_val))) { stat = IN_RANGE; WAVE::const_iterator upper = i; double position = (start_val - lower->second) / (upper->second - lower->second); try_start_time = lower->first + position * (upper->first - lower->first); }else if (in_order(double(start_val), double(stop_val), val)) { // not accurate, was never IN_RANGE stat = DONE; double position = (start_val - lower->second) / (i->second - lower->second); start_time = lower->first + position * (i->first - lower->first); position = (stop_val - lower->second) / (i->second - lower->second); stop_time = lower->first + position * (i->first - lower->first); }else{untested(); // something is wrong } break; case IN_RANGE: if (in_order(val, double(start_val), double(stop_val))) { // false start stat = READY; }else if (in_order(double(start_val), val, double(stop_val))) { // still IN_RANGE }else if (in_order(double(start_val), double(stop_val), val)) { stat = (last) ? WAITING : DONE; start_time = try_start_time; double position = (stop_val - lower->second) / (i->second - lower->second); stop_time = lower->first + position * (i->first - lower->first); }else{untested(); // something is wrong } break; case DONE: break; }; lower = i; } if (stop_time < BIGBIG) { assert(stop_time > start_time); if (expression) { return "((" + to_string(stop_val) + "-" + to_string(start_val) + ")/(" + to_string(stop_time) + "-" + to_string(start_time) + "))"; }else{ return to_string((stop_val-start_val)/(stop_time-start_time)); } }else{ return to_string(BIGBIG); } }else{ throw Exception_No_Match(probe_name); } } } p3; DISPATCHER::INSTALL d3(&measure_dispatcher, "ddt|slewrate|slope", &p3); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s__init.cc000066400000000000000000000056641316501211100137560ustar00rootroot00000000000000/* $Id: s__init.cc 2016/03/28 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * initialization (allocation, node mapping, etc) */ //testing=obsolete #include "e_cardlist.h" #include "u_status.h" #include "u_sim_data.h" #include "s__.h" /*--------------------------------------------------------------------------*/ void SIM::command_base(CS& cmd) { assert(_sim); reset_timers(); _sim->reset_iteration_counter(_sim->_mode); _sim->reset_iteration_counter(iPRINTSTEP); try { setup(cmd); _sim->init(); CARD_LIST::card_list.precalc_last(); _sim->alloc_vectors(); _sim->_aa.reallocate(); _sim->_aa.dezero(OPT::gmin); _sim->_aa.set_min_pivot(OPT::pivtol); _sim->_lu.reallocate(); _sim->_lu.dezero(OPT::gmin); _sim->_lu.set_min_pivot(OPT::pivtol); assert(_sim->_nstat); ::status.set_up.stop(); switch (ENV::run_mode) { case rPRE_MAIN: unreachable(); break; case rBATCH: case rINTERACTIVE: case rSCRIPT: sweep(); break; case rPRESET: /*nothing*/ break; } }catch (Exception& e) { error(bDANGER, e.message() + '\n'); _sim->count_iterations(iTOTAL); _sim->_lu.unallocate(); _sim->_aa.unallocate(); } _sim->unalloc_vectors(); finish(); ::status.total.stop(); } /*--------------------------------------------------------------------------*/ SIM::~SIM() { //assert(!_scope); if (_sim) { _sim->uninit(); }else{ } } /*--------------------------------------------------------------------------*/ void SIM::reset_timers() { ::status.advance.reset(); ::status.queue.reset(); ::status.evaluate.reset(); ::status.load.reset(); ::status.lud.reset(); ::status.back.reset(); ::status.review.reset(); ::status.accept.reset(); ::status.output.reset(); ::status.aux1.reset(); ::status.aux2.reset(); ::status.aux3.reset(); ::status.set_up.reset().start(); ::status.total.reset().start(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s__out.cc000066400000000000000000000111261316501211100136100ustar00rootroot00000000000000/*$Id: s__out.cc 2016/09/22 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * tr,dc analysis output functions (and some ac) */ //testing=obsolete,script 2005.09.17 #include "u_sim_data.h" #include "u_status.h" #include "m_wave.h" #include "u_prblst.h" #include "declare.h" /* plottr, plopen */ #include "s__.h" /*--------------------------------------------------------------------------*/ /* SIM::____list: access probe lists */ const PROBELIST& SIM::alarmlist()const { return _probe_lists->alarm[_sim->_mode]; } const PROBELIST& SIM::plotlist()const { return _probe_lists->plot[_sim->_mode]; } const PROBELIST& SIM::printlist()const { return _probe_lists->print[_sim->_mode]; } const PROBELIST& SIM::storelist()const { return _probe_lists->store[_sim->_mode]; } /*--------------------------------------------------------------------------*/ /* SIM::out: output the data, "keep" for ac reference * x = the x coordinate * print = selected points, "print" to screen, files, etc. * store = all points, for internal postprocessing, measure * keep = after the command is done, dcop for ac */ void SIM::outdata(double x, int outflags) { ::status.output.start(); if (outflags & ofKEEP) { _sim->keep_voltages(); }else{ } if (outflags & ofPRINT) { plottr(x, plotlist()); print_results(x); _sim->reset_iteration_counter(iPRINTSTEP); ::status.hidden_steps = 0; }else{ ++::status.hidden_steps; } if (outflags & ofSTORE) { alarm(); store_results(x); }else{ } ::status.output.stop(); } /*--------------------------------------------------------------------------*/ /* SIM::head: print column headings and draw plot borders */ void SIM::head(double start, double stop, const std::string& col1) { if (_sim->_waves) { delete [] _sim->_waves; }else{ } _sim->_waves = new WAVE [storelist().size()]; if (!plopen(start, stop, plotlist())) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ int width = std::min(OPT::numdgt+5, BIGBUFLEN-10); char format[20]; //sprintf(format, "%%c%%-%u.%us", width, width); sprintf(format, "%%c%%-%us", width); _out.form(format, '#', col1.c_str()); for (PROBELIST::const_iterator p=printlist().begin(); p!=printlist().end(); ++p) { _out.form(format, ' ', p->label().c_str()); } _out << '\n'; }else{ } } /*--------------------------------------------------------------------------*/ /* SIM::print_results: print the list of results (text form) to _out * The argument is the first column (independent variable, aka "x") */ void SIM::print_results(double x) { if (!IO::plotout.any()) { _out.setfloatwidth(OPT::numdgt, OPT::numdgt+6); assert(x != NOT_VALID); _out << x; for (PROBELIST::const_iterator p=printlist().begin(); p!=printlist().end(); ++p) { _out << p->value(); } _out << '\n'; }else{ } } /*--------------------------------------------------------------------------*/ /* SIM::alarm: print a message when a probe is out of range */ void SIM::alarm(void) { _out.setfloatwidth(OPT::numdgt, OPT::numdgt+6); for (PROBELIST::const_iterator p=alarmlist().begin(); p!=alarmlist().end(); ++p) { if (!p->in_range()) { _out << p->label() << '=' << p->value() << '\n'; }else{ } } } /*--------------------------------------------------------------------------*/ /* SIM::store: store data in preparation for post processing */ void SIM::store_results(double x) { int ii = 0; for (PROBELIST::const_iterator p=storelist().begin(); p!=storelist().end(); ++p) { _sim->_waves[ii++].push(x, p->value()); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s__solve.cc000066400000000000000000000211501316501211100141270ustar00rootroot00000000000000/*$Id: s__solve.cc,v 26.138 2013/04/24 02:44:30 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * solve one step of a transient or dc analysis */ //testing=script 2006.07.14 #include "e_cardlist.h" #include "u_status.h" #include "e_node.h" #include "s__.h" /*--------------------------------------------------------------------------*/ // bool SIM::solve(int,int); // void SIM::finish_building_evalq(); // void SIM::advance_time(); // void SIM::set_flags(); // void SIM::clear_arrays(); // void SIM::evaluate_models(); // void SIM::set_damp(); // void SIM::load_matrix(); // void SIM::solve_equations(); /*--------------------------------------------------------------------------*/ static bool converged = false; /*--------------------------------------------------------------------------*/ bool SIM::solve(OPT::ITL itl, TRACE trace) { assert(_sim->_loadq.empty()); converged = false; int convergedcount = 0; _sim->reset_iteration_counter(iSTEP); advance_time(); _sim->_damp = OPT::dampmax; do{ if (trace >= tITERATION) { print_results(static_cast(-_sim->iteration_number())); } set_flags(); clear_arrays(); finish_building_evalq(); _sim->count_iterations(iPRINTSTEP); _sim->count_iterations(iSTEP); _sim->count_iterations(_sim->_mode); _sim->count_iterations(iTOTAL); evaluate_models(); if (converged) { if (_sim->_limiting) { error(bDEBUG, "converged beyond limit, resetting limit\n"); _sim->set_limit(); convergedcount = 0; }else{ ++convergedcount; } }else{ convergedcount = 0; } if (convergedcount <= OPT::itermin) { converged = false; }else{ } if (!converged || !OPT::fbbypass || _sim->_damp < .99) { set_damp(); load_matrix(); solve_equations(); }else{ _sim->_loadq.clear(); } }while (!converged && !_sim->exceeds_iteration_limit(itl)); return converged; } /*--------------------------------------------------------------------------*/ bool SIM::solve_with_homotopy(OPT::ITL itl, TRACE trace) { solve(itl, trace); trace2("plain", _sim->_iter[iSTEP], OPT::gmin); if (!converged && OPT::itl[OPT::SSTEP] > 0) { int save_itermin = OPT::itermin; OPT::itermin = 0; double save_gmin = OPT::gmin; OPT::gmin = 1; while (_sim->_iter[iPRINTSTEP] < OPT::itl[OPT::SSTEP] && OPT::gmin > save_gmin) { //CARD_LIST::card_list.precalc(); _sim->set_inc_mode_no(); solve(itl, trace); if (!converged) { trace2("fail", _sim->_iter[iSTEP], OPT::gmin); OPT::gmin *= 3.5; }else{ trace2("success", _sim->_iter[iSTEP], OPT::gmin); OPT::gmin /= 4; } } OPT::itermin = save_itermin; OPT::gmin = save_gmin; //CARD_LIST::card_list.precalc(); solve(itl, trace); if (!converged) { trace2("final fail", _sim->_iter[iSTEP], OPT::gmin); }else{ trace2("final success", _sim->_iter[iSTEP], OPT::gmin); } }else{ } return converged; } /*--------------------------------------------------------------------------*/ /* finish_building_evalq * This function scans the circuit to queue for evaluation anything * that is relevant that the devices missed themselves. * For now, it scans the whole circuit, but this will change. * This is slow, but the result is still faster than not having a queue. * The plan is .. every node knows whether it needs eval or not, and * only those nodes needing eval will be scanned. * Its purpose is to catch nodes that wake up after being dormant */ void SIM::finish_building_evalq(void) { ::status.queue.start(); CARD_LIST::card_list.tr_queue_eval(); ::status.queue.stop(); } /*--------------------------------------------------------------------------*/ void SIM::advance_time(void) { ::status.advance.start(); static double last_iter_time; if (_sim->_time0 > 0) { if (_sim->_time0 > last_iter_time) { /* moving forward */ notstd::copy_n(_sim->_v0, _sim->_total_nodes+1, _sim->_vt1); CARD_LIST::card_list.tr_advance(); }else{ /* moving backward */ /* don't save voltages. They're wrong! */ /* instead, restore a clean start for iteration */ notstd::copy_n(_sim->_vt1, _sim->_total_nodes+1, _sim->_v0); CARD_LIST::card_list.tr_regress(); } }else{ CARD_LIST::card_list.dc_advance(); } last_iter_time = _sim->_time0; ::status.advance.stop(); } /* last_iter_time is initially 0 by C definition. * On subsequent runs it will start with an arbitrary positive value. * _sim->_time0 starts at either 0 or the ending time of the last run. * In either case, (time0 > last_iter_time) is false on the first step. * This correctly results in "don't save voltages..." */ /*--------------------------------------------------------------------------*/ void SIM::set_flags() { _sim->_limiting = false; _sim->_fulldamp = false; if (OPT::incmode == false) { _sim->set_inc_mode_no(); }else if (_sim->inc_mode_is_bad()) { _sim->set_inc_mode_no(); }else if (_sim->is_iteration_number(OPT::itl[OPT::TRLOW])) { _sim->set_inc_mode_no(); }else if (_sim->is_iteration_number(0)) { // leave it as is }else{ _sim->set_inc_mode_yes(); } _sim->_bypass_ok = (is_step_rejected() || _sim->_damp < OPT::dampmax*OPT::dampmax) ? false : bool(OPT::bypass); } /*--------------------------------------------------------------------------*/ void SIM::clear_arrays(void) { if (!_sim->is_inc_mode()) { /* Clear working array */ _sim->_aa.zero(); _sim->_aa.dezero(OPT::gmin); /* gmin fudge */ std::fill_n(_sim->_i, _sim->_aa.size()+1, 0); }else{ } assert(_sim->_loadq.empty()); } /*--------------------------------------------------------------------------*/ void SIM::evaluate_models() { ::status.evaluate.start(); if (OPT::bypass) { converged = true; swap(_sim->_evalq, _sim->_evalq_uc); while (!_sim->_evalq->empty()) { converged &= _sim->_evalq->front()->do_tr(); _sim->_evalq->pop_front(); } }else{ _sim->_evalq_uc->clear(); converged = CARD_LIST::card_list.do_tr(); } while (!_sim->_late_evalq.empty()) { //BUG// encapsulation violation converged &= _sim->_late_evalq.front()->do_tr_last(); _sim->_late_evalq.pop_front(); } ::status.evaluate.stop(); } /*--------------------------------------------------------------------------*/ void SIM::set_damp() { if (_sim->is_second_iteration() && !converged && OPT::dampstrategy&dsINIT) { _sim->_damp = OPT::dampmin; }else if (_sim->is_first_iteration() || converged) { _sim->_damp = OPT::dampmax; }else if (_sim->_fulldamp) { _sim->_damp = OPT::dampmin; }else{ _sim->_damp = OPT::dampmax; } trace1("", _sim->_damp); } /*--------------------------------------------------------------------------*/ void SIM::load_matrix() { ::status.load.start(); if (OPT::traceload && _sim->is_inc_mode()) { while (!_sim->_loadq.empty()) { _sim->_loadq.back()->tr_load(); _sim->_loadq.pop_back(); } }else{ _sim->_loadq.clear(); CARD_LIST::card_list.tr_load(); } assert(_sim->_loadq.empty()); ::status.load.stop(); } /*--------------------------------------------------------------------------*/ void SIM::solve_equations() { ::status.lud.start(); _sim->_lu.lu_decomp(_sim->_aa, bool(OPT::lubypass && _sim->is_inc_mode())); ::status.lud.stop(); ::status.back.start(); _sim->_lu.fbsub(_sim->_v0, _sim->_i, _sim->_v0); ::status.back.stop(); if (_sim->_nstat) { // mixed mode for (int ii = _sim->_lu.size(); ii >= 1; --ii) { _sim->_nstat[ii].set_a_iter(); } }else{ // pure analog untested(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s_ac.cc000066400000000000000000000206761316501211100132370ustar00rootroot00000000000000/*$Id: s_ac.cc 2016/09/22 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * ac analysis top */ //testing=script 2008.08.06 #include "globals.h" #include "u_sim_data.h" #include "u_status.h" #include "u_parameter.h" #include "u_prblst.h" #include "s__.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class AC : public SIM { public: void do_it(CS&, CARD_LIST*); explicit AC(): SIM(), _start(), _stop(), _step_in(), _step(0.), _linswp(false), _prevopppoint(false), _stepmode(ONE_PT) {} ~AC() {} private: explicit AC(const AC&):SIM() {unreachable(); incomplete();} void sweep(); void first(); bool next(); void solve(); void clear(); void setup(CS&); private: PARAMETER _start; // sweep start frequency PARAMETER _stop; // sweep stop frequency PARAMETER _step_in; // step size, as input double _step; // printed step size bool _linswp; // flag: use linear sweep (vs log sweep) bool _prevopppoint; // flag: use previous op point enum {ONE_PT, LIN_STEP, LIN_PTS, TIMES, OCTAVE, DECADE} _stepmode; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void AC::do_it(CS& Cmd, CARD_LIST* Scope) { _scope = Scope; _sim->set_command_ac(); reset_timers(); ::status.ac.reset().start(); try { setup(Cmd); _sim->init(); CARD_LIST::card_list.precalc_last(); _sim->alloc_vectors(); _sim->_acx.reallocate(); _sim->_acx.set_min_pivot(OPT::pivtol); ::status.set_up.stop(); switch (ENV::run_mode) { case rPRE_MAIN: unreachable(); break; case rBATCH: case rINTERACTIVE: case rSCRIPT: sweep(); break; case rPRESET: /*nothing*/ break; } }catch (Exception& e) {untested(); error(bDANGER, e.message() + '\n'); } _sim->_acx.unallocate(); _sim->unalloc_vectors(); _sim->_has_op = s_AC; _scope = NULL; ::status.ac.stop(); ::status.total.stop(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static int needslinfix; // flag: lin option needs patch later (spice compat) /*--------------------------------------------------------------------------*/ void AC::setup(CS& Cmd) { _out = IO::mstdout; _out.reset(); //BUG// don't know why this is needed //temp_c = OPT::temp_c; // Don't set temperature. Keep whatever was there before, // from "op" or whatever. bool ploton = IO::plotset && plotlist().size() > 0; ONE_OF || (Get(Cmd, "*", &_step_in) && (_stepmode = TIMES)) || (Get(Cmd, "+", &_step_in) && (_stepmode = LIN_STEP)) || (Get(Cmd, "by", &_step_in) && (_stepmode = LIN_STEP)) || (Get(Cmd, "step", &_step_in) && (_stepmode = LIN_STEP)) || (Get(Cmd, "d{ecade}", &_step_in) && (_stepmode = DECADE)) || (Get(Cmd, "ti{mes}", &_step_in) && (_stepmode = TIMES)) || (Get(Cmd, "lin", &_step_in) && (_stepmode = LIN_PTS)) || (Get(Cmd, "o{ctave}", &_step_in) && (_stepmode = OCTAVE)); if (Cmd.match1("'\"({") || Cmd.is_float()) { Cmd >> _start; if (Cmd.match1("'\"({") || Cmd.is_float()) { Cmd >> _stop; }else{ _stop = _start; } if (Cmd.match1("'\"({") || Cmd.is_float()) { _stepmode = LIN_STEP; Cmd >> _step_in; }else{ } } unsigned here = Cmd.cursor(); do{ ONE_OF || (Get(Cmd, "*", &_step_in) && (_stepmode = TIMES)) || (Get(Cmd, "+", &_step_in) && (_stepmode = LIN_STEP)) || (Get(Cmd, "by", &_step_in) && (_stepmode = LIN_STEP)) || (Get(Cmd, "step", &_step_in) && (_stepmode = LIN_STEP)) || (Get(Cmd, "d{ecade}", &_step_in) && (_stepmode = DECADE)) || (Get(Cmd, "ti{mes}", &_step_in) && (_stepmode = TIMES)) || (Get(Cmd, "lin", &_step_in) && (_stepmode = LIN_PTS)) || (Get(Cmd, "o{ctave}", &_step_in) && (_stepmode = OCTAVE)) || Get(Cmd, "dt{emp}", &_sim->_temp_c, mOFFSET, OPT::temp_c) || Get(Cmd, "pl{ot}", &ploton) || Get(Cmd, "pr{evoppoint}",&_prevopppoint) || Get(Cmd, "sta{rt}", &_start) || Get(Cmd, "sto{p}", &_stop) || Get(Cmd, "te{mperature}",&_sim->_temp_c) || outset(Cmd,&_out) ; }while (Cmd.more() && !Cmd.stuck(&here)); Cmd.check(bWARNING, "what's this??"); _start.e_val(0., _scope); _stop.e_val(0., _scope); _step_in.e_val(0., _scope); _step = _step_in; switch (_stepmode) { case ONE_PT: case LIN_STEP: needslinfix = false; _linswp = true; break; case LIN_PTS:untested(); if (_step <= 2.) {untested();// need to fix step, later _step = 2.; // do it at the end of setup }else{untested(); // a kluge, but this is a patch } needslinfix = true; // and I am too lazy to do it _linswp = true; // right. break; case TIMES:untested(); if (_step == 0. && _start != 0.) {untested(); _step = _stop / _start; }else{untested(); } needslinfix = false; _linswp = false; break; case OCTAVE: if (_step == 0.) {untested(); _step = 1.; }else{ } _step = pow(2.00000001, 1./_step); needslinfix = false; _linswp = false; break; case DECADE: if (_step == 0.) { _step = 1.; }else{ } _step = pow(10., 1./_step); needslinfix = false; _linswp = false; break; }; if (needslinfix) {untested(); // LIN option is # of points. assert(_step >= 2); // Must compute step after _step=(_stop-_start)/(_step-1.); // reading start and stop, needslinfix = false; // but step must be read first }else{ // for Spice compatibility } if (_step==0.) { _step = _stop - _start; _linswp = true; }else{ } IO::plotout = (ploton) ? IO::mstdout : OMSTREAM(); initio(_out); } /*--------------------------------------------------------------------------*/ void AC::solve() { _sim->_acx.zero(); std::fill_n(_sim->_ac, _sim->_total_nodes+1, 0.); ::status.load.start(); _sim->count_iterations(iTOTAL); CARD_LIST::card_list.do_ac(); CARD_LIST::card_list.ac_load(); ::status.load.stop(); ::status.lud.start(); _sim->_acx.lu_decomp(); ::status.lud.stop(); ::status.back.start(); _sim->_acx.fbsub(_sim->_ac); ::status.back.stop(); } /*--------------------------------------------------------------------------*/ void AC::sweep() { head(_start, _stop, "Freq"); first(); CARD_LIST::card_list.ac_begin(); do { _sim->_jomega = COMPLEX(0., _sim->_freq * M_TWO_PI); solve(); outdata(_sim->_freq, ofPRINT | ofSTORE); } while (next()); } /*--------------------------------------------------------------------------*/ void AC::first() { _sim->_freq = _start; } /*--------------------------------------------------------------------------*/ bool AC::next() { double realstop = (_linswp) ? _stop - _step/100. : _stop / pow(_step,.01); if (!in_order(double(_start), _sim->_freq, realstop)) { return false; }else{ } _sim->_freq = (_linswp) ? _sim->_freq + _step : _sim->_freq * _step; if (in_order(_sim->_freq, double(_start), double(_stop))) { return false; }else{ return true; } } /*--------------------------------------------------------------------------*/ static AC p1; static DISPATCHER::INSTALL d1(&command_dispatcher, "ac", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s_dc.cc000066400000000000000000000346121316501211100132350ustar00rootroot00000000000000/*$Id: s_dc.cc 2016/09/22 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * dc analysis top */ //testing=script 2016.03.25 #include "globals.h" #include "u_status.h" #include "u_prblst.h" #include "u_cardst.h" #include "e_elemnt.h" #include "s__.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class DCOP : public SIM { public: void finish(); protected: void fix_args(int); void options(CS&, int); private: void sweep(); void sweep_recursive(int); void first(int); bool next(int); explicit DCOP(const DCOP&): SIM() {unreachable(); incomplete();} protected: explicit DCOP(); ~DCOP() {} protected: enum {DCNEST = 4}; int _n_sweeps; PARAMETER _start[DCNEST]; PARAMETER _stop[DCNEST]; PARAMETER _step_in[DCNEST]; double _step[DCNEST]; bool _linswp[DCNEST]; double* (_sweepval[DCNEST]); /* pointer to thing to sweep, dc command */ ELEMENT* (_zap[DCNEST]); /* to branch to zap, for re-expand */ CARDSTASH _stash[DCNEST]; /* store std values of elements being swept */ bool _loop[DCNEST]; /* flag: do it again backwards */ bool _reverse_in[DCNEST]; /* flag: sweep backwards, input */ bool _reverse[DCNEST]; /* flag: sweep backwards, working */ bool _cont; /* flag: continue from previous run */ TRACE _trace; /* enum: show extended diagnostics */ enum {ONE_PT, LIN_STEP, LIN_PTS, TIMES, OCTAVE, DECADE} _stepmode[DCNEST]; }; /*--------------------------------------------------------------------------*/ class DC : public DCOP { public: explicit DC(): DCOP() {} ~DC() {} void do_it(CS&, CARD_LIST*); private: void setup(CS&); explicit DC(const DC&): DCOP() {unreachable(); incomplete();} }; /*--------------------------------------------------------------------------*/ class OP : public DCOP { public: explicit OP(): DCOP() {} ~OP() {} void do_it(CS&, CARD_LIST*); private: void setup(CS&); explicit OP(const OP&): DCOP() {unreachable(); incomplete();} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void DC::do_it(CS& Cmd, CARD_LIST* Scope) { _scope = Scope; _sim->_time0 = 0.; _sim->set_command_dc(); _sim->_phase = p_INIT_DC; ::status.dc.reset().start(); command_base(Cmd); _sim->_has_op = s_DC; _scope = NULL; ::status.dc.stop(); } /*--------------------------------------------------------------------------*/ void OP::do_it(CS& Cmd, CARD_LIST* Scope) { _scope = Scope; _sim->_time0 = 0.; _sim->set_command_op(); _sim->_phase = p_INIT_DC; ::status.op.reset().start(); command_base(Cmd); _sim->_has_op = s_OP; _scope = NULL; ::status.op.stop(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DCOP::DCOP() :SIM(), _n_sweeps(1), _cont(false), _trace(tNONE) { for (int ii = 0; ii < DCNEST; ++ii) { _loop[ii] = false; _reverse_in[ii] = false; _reverse[ii] = false; _step[ii]=0.; _linswp[ii]=true; _sweepval[ii]=&_sim->_genout; _zap[ii]=NULL; _stepmode[ii] = ONE_PT; } //BUG// in SIM. should be initialized there. //_sim->_genout=0.; _out=IO::mstdout; //_sim->_uic=false; } /*--------------------------------------------------------------------------*/ void DCOP::finish(void) { for (int ii = 0; ii < _n_sweeps; ++ii) { if (_zap[ii]) { // component _stash[ii].restore(); _zap[ii]->dec_probes(); _zap[ii]->precalc_first(); _zap[ii]->precalc_last(); _zap[ii] = NULL; }else{ } } } /*--------------------------------------------------------------------------*/ void OP::setup(CS& Cmd) { _sim->_temp_c = OPT::temp_c; _cont = false; _trace = tNONE; _out = IO::mstdout; _out.reset(); //BUG// don't know why this is needed */ bool ploton = IO::plotset && plotlist().size() > 0; _zap[0] = NULL; _sweepval[0] = &(_sim->_temp_c); if (Cmd.match1("'\"({") || Cmd.is_float()) { Cmd >> _start[0]; if (Cmd.match1("'\"({") || Cmd.is_float()) { Cmd >> _stop[0]; }else{ _stop[0] = _start[0]; } }else{ } _step[0] = 0.; _sim->_genout = 0.; options(Cmd,0); _n_sweeps = 1; Cmd.check(bWARNING, "what's this?"); _sim->_freq = 0; IO::plotout = (ploton) ? IO::mstdout : OMSTREAM(); initio(_out); _start[0].e_val(OPT::temp_c, _scope); fix_args(0); } /*--------------------------------------------------------------------------*/ void DC::setup(CS& Cmd) { _sim->_temp_c = OPT::temp_c; _cont = false; _trace = tNONE; _out = IO::mstdout; _out.reset(); //BUG// don't know why this is needed */ bool ploton = IO::plotset && plotlist().size() > 0; if (Cmd.more()) { for (_n_sweeps = 0; Cmd.more() && _n_sweeps < DCNEST; ++_n_sweeps) { CARD_LIST::fat_iterator ci = findbranch(Cmd, &CARD_LIST::card_list); if (!ci.is_end()) { // sweep a component if (ELEMENT* c = dynamic_cast(*ci)) { _zap[_n_sweeps] = c; }else{untested(); throw Exception("dc/op: can't sweep " + (**ci).long_label() + '\n'); } }else if (Cmd.is_float()) { // sweep the generator _zap[_n_sweeps] = NULL; }else{ // leave as it was .. repeat Cmd with no args } if (Cmd.match1("'\"({") || Cmd.is_float()) { // set up parameters _start[_n_sweeps] = "NA"; _stop[_n_sweeps] = "NA"; Cmd >> _start[_n_sweeps] >> _stop[_n_sweeps]; _step[_n_sweeps] = 0.; }else{ // leave it as it was .. repeat Cmd with no args } _sim->_genout = 0.; options(Cmd,_n_sweeps); } }else{ } Cmd.check(bWARNING, "what's this?"); IO::plotout = (ploton) ? IO::mstdout : OMSTREAM(); initio(_out); assert(_n_sweeps > 0); for (int ii = 0; ii < _n_sweeps; ++ii) { _start[ii].e_val(0., _scope); fix_args(ii); if (_zap[ii]) { // component _stash[ii] = _zap[ii]; // stash the std value _zap[ii]->inc_probes(); // we need to keep track of it _zap[ii]->set_value(_zap[ii]->value(),0); // zap out extensions _zap[ii]->set_constant(false); // so it will be updated _sweepval[ii] = _zap[ii]->set__value(); // point to value to patch }else{ // generator _sweepval[ii] = &_sim->_genout; // point to value to patch } } _sim->_freq = 0; } /*--------------------------------------------------------------------------*/ void DCOP::fix_args(int Nest) { _stop[Nest].e_val(_start[Nest], _scope); _step_in[Nest].e_val(0., _scope); _step[Nest] = _step_in[Nest]; switch (_stepmode[Nest]) { case ONE_PT: case LIN_STEP: _linswp[Nest] = true; break; case LIN_PTS:untested(); if (_step[Nest] <= 2.) {untested(); _step[Nest] = 2.; }else{untested(); } _linswp[Nest] = true; break; case TIMES:untested(); if (_step[Nest] == 0. && _start[Nest] != 0.) {untested(); _step[Nest] = _stop[Nest] / _start[Nest]; }else{untested(); } _linswp[Nest] = false; break; case OCTAVE:untested(); if (_step[Nest] == 0.) {untested(); _step[Nest] = 1.; }else{untested(); } _step[Nest] = pow(2.00000001, 1./_step[Nest]); _linswp[Nest] = false; break; case DECADE: if (_step[Nest] == 0.) {untested(); _step[Nest] = 1.; }else{ } _step[Nest] = pow(10., 1./_step[Nest]); _linswp[Nest] = false; break; }; if (_step[Nest] == 0.) { // prohibit log sweep from 0 _step[Nest] = _stop[Nest] - _start[Nest]; _linswp[Nest] = true; }else{ } } /*--------------------------------------------------------------------------*/ void DCOP::options(CS& Cmd, int Nest) { _sim->_uic = _loop[Nest] = _reverse_in[Nest] = false; unsigned here = Cmd.cursor(); do{ ONE_OF || (Cmd.match1("'\"({") && ((Cmd >> _step_in[Nest]), (_stepmode[Nest] = LIN_STEP))) || (Cmd.is_float() && ((Cmd >> _step_in[Nest]), (_stepmode[Nest] = LIN_STEP))) || (Get(Cmd, "*", &_step_in[Nest]) && (_stepmode[Nest] = TIMES)) || (Get(Cmd, "+", &_step_in[Nest]) && (_stepmode[Nest] = LIN_STEP)) || (Get(Cmd, "by", &_step_in[Nest]) && (_stepmode[Nest] = LIN_STEP)) || (Get(Cmd, "step", &_step_in[Nest]) && (_stepmode[Nest] = LIN_STEP)) || (Get(Cmd, "d{ecade}", &_step_in[Nest]) && (_stepmode[Nest] = DECADE)) || (Get(Cmd, "ti{mes}", &_step_in[Nest]) && (_stepmode[Nest] = TIMES)) || (Get(Cmd, "lin", &_step_in[Nest]) && (_stepmode[Nest] = LIN_PTS)) || (Get(Cmd, "o{ctave}", &_step_in[Nest]) && (_stepmode[Nest] = OCTAVE)) || Get(Cmd, "c{ontinue}", &_cont) || Get(Cmd, "dt{emp}", &(_sim->_temp_c), mOFFSET, OPT::temp_c) || Get(Cmd, "lo{op}", &_loop[Nest]) || Get(Cmd, "re{verse}", &_reverse_in[Nest]) || Get(Cmd, "te{mperature}",&(_sim->_temp_c)) || (Cmd.umatch("tr{ace} {=}") && (ONE_OF || Set(Cmd, "n{one}", &_trace, tNONE) || Set(Cmd, "o{ff}", &_trace, tNONE) || Set(Cmd, "w{arnings}", &_trace, tUNDER) || Set(Cmd, "i{terations}",&_trace, tITERATION) || Set(Cmd, "v{erbose}", &_trace, tVERBOSE) || Cmd.warn(bWARNING, "need none, off, warnings, iterations, verbose") ) ) || outset(Cmd,&_out) ; }while (Cmd.more() && !Cmd.stuck(&here)); } /*--------------------------------------------------------------------------*/ void DCOP::sweep() { head(_start[0], _stop[0], " "); _sim->_bypass_ok = false; _sim->set_inc_mode_bad(); if (_cont) {untested(); _sim->restore_voltages(); CARD_LIST::card_list.tr_restore(); }else{ _sim->clear_limit(); CARD_LIST::card_list.tr_begin(); } sweep_recursive(_n_sweeps); } /*--------------------------------------------------------------------------*/ void DCOP::sweep_recursive(int Nest) { --Nest; assert(Nest >= 0); assert(Nest < DCNEST); OPT::ITL itl = OPT::DCBIAS; first(Nest); do { if (Nest == 0) { if (_sim->command_is_op()) { CARD_LIST::card_list.precalc_last(); }else{ } int converged = solve_with_homotopy(itl,_trace); if (!converged) {untested(); error(bWARNING, "did not converge\n"); }else{ } ::status.accept.start(); _sim->set_limit(); CARD_LIST::card_list.tr_accept(); ::status.accept.stop(); _sim->_has_op = _sim->_mode; outdata(*_sweepval[Nest], ofPRINT | ofSTORE | ofKEEP); itl = OPT::DCXFER; }else{ sweep_recursive(Nest); } } while (next(Nest)); } /*--------------------------------------------------------------------------*/ void DCOP::first(int Nest) { assert(Nest >= 0); assert(Nest < DCNEST); assert(_start); assert(_sweepval); assert(_sweepval[Nest]); if (ELEMENT* c = dynamic_cast(_zap[Nest])) { c->set_constant(false); // because of extra precalc_last could set constant to true // will be obsolete, once pointer hack is fixed }else{ // not needed if not sweeping an element } *_sweepval[Nest] = _start[Nest]; _reverse[Nest] = false; if (_reverse_in[Nest]) {untested(); while (next(Nest)) {untested(); /* nothing */; } _reverse[Nest] = true; next(Nest); }else{ } _sim->_phase = p_INIT_DC; } /*--------------------------------------------------------------------------*/ bool DCOP::next(int Nest) { double sweepval = NOT_VALID; bool ok = false; if (_linswp[Nest]) { double fudge = _step[Nest] / 10.; if (_step[Nest] == 0.) { // not stepping assert(!ok); assert(sweepval == NOT_VALID); }else{ // stepping if (!_reverse[Nest]) { sweepval = *(_sweepval[Nest]) + _step[Nest]; fixzero(&sweepval, _step[Nest]); ok = in_order(_start[Nest]-fudge, sweepval, _stop[Nest]+fudge); if (!ok && _loop[Nest]) { // turn around _reverse[Nest] = true; }else{ // forward } }else{ assert(_reverse[Nest]); assert(!ok); assert(sweepval == NOT_VALID); } if (_reverse[Nest]) { assert(!ok); //assert(sweepval == NOT_VALID); sweepval = *(_sweepval[Nest]) - _step[Nest]; fixzero(&sweepval, _step[Nest]); ok = in_order(_start[Nest]-fudge, sweepval, _stop[Nest]+fudge); }else{ // not sure of status } } }else{ // not linswp double fudge = pow(_step[Nest], .1); if (_step[Nest] == 1.) {untested(); // not stepping assert(!ok); assert(sweepval == NOT_VALID); }else{ if (!_reverse[Nest]) { sweepval = *(_sweepval[Nest]) * _step[Nest]; ok = in_order(_start[Nest]/fudge, sweepval, _stop[Nest]*fudge); if (!ok && _loop[Nest]) {untested(); // turn around _reverse[Nest] = true; }else{ // forward } }else{untested(); assert(_reverse[Nest]); assert(!ok); assert(sweepval == NOT_VALID); } if (_reverse[Nest]) {untested(); assert(!ok); assert(sweepval == NOT_VALID); sweepval = *(_sweepval[Nest]) / _step[Nest]; ok = in_order(_start[Nest]/fudge, sweepval, _stop[Nest]*fudge); }else{ // not sure of status } } } _sim->_phase = p_DC_SWEEP; if (ok) { assert(sweepval != NOT_VALID); *(_sweepval[Nest]) = sweepval; return true; }else{ //assert(sweepval == NOT_VALID); return false; } } /*--------------------------------------------------------------------------*/ static DC p2; static OP p4; static DISPATCHER::INSTALL d2(&command_dispatcher, "dc", &p2); static DISPATCHER::INSTALL d4(&command_dispatcher, "op", &p4); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s_fo.cc000066400000000000000000000251251316501211100132520ustar00rootroot00000000000000/*$Id: s_fo.cc 2016/09/26 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * tran and fourier commands -- top * performs transient analysis, silently, then fft. * outputs results of fft */ //testing=script 2014.07.04 #include "globals.h" #include "u_sim_data.h" #include "u_status.h" #include "m_phase.h" #include "declare.h" /* plclose, plclear, fft */ #include "u_prblst.h" #include "s_tr.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class FOURIER : public TRANSIENT { public: void do_it(CS&, CARD_LIST*); explicit FOURIER(): TRANSIENT(), _fstart(0.), _fstop(0.), _fstep(0.), _timesteps(0), _fdata(NULL) {} ~FOURIER() {} private: explicit FOURIER(const FOURIER&): TRANSIENT() {unreachable(); incomplete();} std::string status()const {untested();return "";} void setup(CS&); /* s_fo_set.cc */ void fftallocate(); void fftunallocate(); void foout(); /* s_fo_out.cc */ void fohead(const PROBE&); void foprint(COMPLEX*); void store_results(double); // override virtual private: PARAMETER _fstart; /* user start frequency */ PARAMETER _fstop; /* user stop frequency */ PARAMETER _fstep; /* fft frequecncy step */ int _timesteps; /* number of time steps in tran analysis, incl 0 */ COMPLEX** _fdata; /* storage to allow postprocessing */ }; /*--------------------------------------------------------------------------*/ static int to_pow_of_2(double); static int stepnum(double,double,double); static COMPLEX find_max(COMPLEX*,int,int); static double db(COMPLEX); /*--------------------------------------------------------------------------*/ void FOURIER::do_it(CS& Cmd, CARD_LIST* Scope) { _scope = Scope; _sim->set_command_fourier(); reset_timers(); ::status.four.reset().start(); try { setup(Cmd); _sim->init(); CARD_LIST::card_list.precalc_last(); _sim->alloc_vectors(); _sim->_aa.reallocate(); _sim->_aa.dezero(OPT::gmin); _sim->_aa.set_min_pivot(OPT::pivtol); _sim->_lu.reallocate(); _sim->_lu.dezero(OPT::gmin); _sim->_lu.set_min_pivot(OPT::pivtol); fftallocate(); ::status.set_up.stop(); switch (ENV::run_mode) { case rPRE_MAIN: unreachable(); break; case rBATCH: untested(); case rINTERACTIVE: itested(); case rSCRIPT: sweep(); foout(); break; case rPRESET: untested(); /*nothing*/ break; } }catch (Exception& e) {untested(); error(bDANGER, e.message() + '\n'); } fftunallocate(); _sim->unalloc_vectors(); _sim->_lu.unallocate(); _sim->_aa.unallocate(); _sim->_has_op = s_FOURIER; _scope = NULL; ::status.four.stop(); ::status.total.stop(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /* store: stash time domain data in preparation for Fourier Transform */ void FOURIER::store_results(double X) { TRANSIENT::store_results(X); if (step_cause() == scUSER) { int ii = 0; for (PROBELIST::const_iterator p=printlist().begin(); p!=printlist().end(); ++p) { assert(_stepno < _timesteps); _fdata[ii][_stepno] = p->value(); ++ii; } }else{ } } /*--------------------------------------------------------------------------*/ /* foout: print out the results of the transform */ void FOURIER::foout() { plclose(); plclear(); int ii = 0; for (PROBELIST::const_iterator p=printlist().begin(); p!=printlist().end(); ++p) { fohead(*p); fft(_fdata[ii], _timesteps-1, 0); foprint(_fdata[ii]); ++ii; } } /*--------------------------------------------------------------------------*/ /* fo_head: print output header * arg is index into probe array, to select probe name */ void FOURIER::fohead(const PROBE& Prob) { _out.form("# %-10s", Prob.label().c_str()) << "--------- actual --------- -------- relative --------\n" << "#freq " << "value dB phase value dB phase\n"; } /*--------------------------------------------------------------------------*/ /* fo_print: print results of fourier analysis * for all points at single probe */ void FOURIER::foprint(COMPLEX *Data) { int startstep = stepnum(0., _fstep, _fstart); assert(startstep >= 0); int stopstep = stepnum(0., _fstep, _fstop ); assert(stopstep < _timesteps); COMPLEX maxvalue = find_max(Data, std::max(1,startstep), stopstep); if (maxvalue == 0.) {untested(); maxvalue = 1.; }else{ } Data[0] /= 2; for (int ii = startstep; ii <= stopstep; ++ii) { double frequency = _fstep * ii; assert(ii >= 0); assert(ii < _timesteps); COMPLEX unscaled = Data[ii]; COMPLEX scaled = unscaled / maxvalue; unscaled *= 2; _out.form("%s%s%7.2f %8.3f %s%7.2f %8.3f\n", ftos(frequency, 11,5,_out.format()), ftos(std::abs(unscaled),11,5,_out.format()), db(unscaled), phase(unscaled*COMPLEX(0.,1)), ftos(std::abs(scaled), 11,5,_out.format()), db(scaled), phase(scaled) ) ; } } /*--------------------------------------------------------------------------*/ /* stepnum: return step number given its frequency or time */ static int stepnum(double Start, double Step, double Here) { return int((Here-Start)/Step + .5); } /*--------------------------------------------------------------------------*/ /* find_max: find the max magnitude in a COMPLEX array */ static COMPLEX find_max(COMPLEX *Data, int Start, int Stop) { COMPLEX maxvalue = 0.; for (int ii = Start; ii <= Stop; ++ii) { if (std::abs(Data[ii]) > std::abs(maxvalue)) { maxvalue = Data[ii]; }else{ } } return maxvalue; } /*--------------------------------------------------------------------------*/ static double db(COMPLEX Value) { return 20. * log10(std::max(std::abs(Value),VOLTMIN)); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /* fo_setup: fourier analysis: parse command string and set options * (options set by call to TRANSIENT::options) */ void FOURIER::setup(CS& Cmd) { _cont = true; if (Cmd.match1("'\"({") || Cmd.is_pfloat()) { PARAMETER arg1, arg2, arg3; Cmd >> arg1; if (Cmd.match1("'\"({") || Cmd.is_float()) { Cmd >> arg2; }else{untested(); } if (Cmd.match1("'\"({") || Cmd.is_float()) { Cmd >> arg3; }else{untested(); } if (arg3.has_hard_value()) { /* 3 args: all */ assert(arg2.has_hard_value()); assert(arg1.has_hard_value()); _fstart = arg1; _fstop = arg2; _fstep = arg3; }else if (arg2.has_hard_value()) {untested(); /* 2 args: start = 0 */ assert(arg1.has_hard_value()); arg1.e_val(0.,_scope); arg2.e_val(0.,_scope); if (arg1 >= arg2) {untested(); /* 2 args: stop, step */ _fstart = "NA"; /* (stop > step) */ _fstop = arg1; _fstep = arg2; }else{untested(); /* arg1 < arg2 */ /* 2 args: step, stop */ _fstart = "NA"; _fstop = arg2; _fstep = arg1; } }else{untested(); assert(arg1.has_hard_value()); arg1.e_val(0.,_scope); if (arg1 == 0.) {untested(); /* 1 arg: start */ _fstart = 0.; /* _fstop unchanged */ /* _fstep unchanged */ }else{untested(); /* 1 arg: step */ _fstart = "NA"; _fstop = "NA"; _fstep = arg1; } } }else{untested(); /* else (no args) : no change */ } options(Cmd); _fstart.e_val(0., _scope); _fstep.e_val(0., _scope); _fstop.e_val(OPT::harmonics * _fstep, _scope); if (_fstep == 0.) {untested(); throw Exception("frequency step = 0"); }else{ } if (_fstop == 0.) {untested(); _fstop = OPT::harmonics * _fstep; }else{ } _timesteps = to_pow_of_2(_fstop*2 / _fstep) + 1; if (_cold || _sim->_last_time <= 0.) { _cont = false; _tstart = 0.; }else{ _cont = true; _tstart = _sim->_last_time; } _tstop = _tstart + 1. / _fstep; _tstrobe = 1. / _fstep / (_timesteps-1); _time1 = _sim->_time0 = _tstart; _sim->_freq = _fstep; _dtmax = std::min(double(_dtmax_in), _tstrobe / double(_skip_in)); if (_dtmin_in.has_hard_value()) {untested(); _sim->_dtmin = _dtmin_in; }else if (_dtratio_in.has_hard_value()) {untested(); _sim->_dtmin = _dtmax / _dtratio_in; }else{ // use smaller of soft values _sim->_dtmin = std::min(double(_dtmin_in), _dtmax/_dtratio_in); } } /*--------------------------------------------------------------------------*/ /* allocate: allocate space for fft */ void FOURIER::fftallocate() { int probes = printlist().size(); _fdata = new COMPLEX*[probes]; for (int ii = 0; ii < probes; ++ii) { _fdata[ii] = new COMPLEX[_timesteps+100]; } } /*--------------------------------------------------------------------------*/ /* unallocate: unallocate space for fft */ void FOURIER::fftunallocate() { if (_fdata) { for (int ii = 0; ii < printlist().size(); ++ii) { delete [] _fdata[ii]; } delete [] _fdata; _fdata = NULL; }else{untested(); } } /*--------------------------------------------------------------------------*/ /* to_pow_of_2: round up to nearest power of 2 * example: z=92 returns 128 */ static int to_pow_of_2(double Z) { int x = static_cast(floor(Z)); int y; for (y = 1; x > 0; x >>= 1) { y <<= 1; } return y; } /*--------------------------------------------------------------------------*/ static FOURIER p3; DISPATCHER::INSTALL d3(&command_dispatcher, "fourier", &p3); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s_tr.cc000066400000000000000000000043221316501211100132670ustar00rootroot00000000000000/*$Id: s_tr.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * tran and fourier commands -- top */ //testing=script,complete 2007.11.22 #include "globals.h" #include "u_sim_data.h" #include "u_status.h" #include "s_tr.h" namespace { TRANSIENT p5; DISPATCHER::INSTALL d5(&command_dispatcher, "transient", &p5); DISPATCHER::INSTALL d6(&status_dispatcher, "transient", &p5); } /*--------------------------------------------------------------------------*/ int TRANSIENT::steps_accepted_; int TRANSIENT::steps_rejected_; int TRANSIENT::steps_total_; /*--------------------------------------------------------------------------*/ void TRANSIENT::do_it(CS& Cmd, CARD_LIST* Scope) { _scope = Scope; _sim->set_command_tran(); ::status.tran.reset().start(); command_base(Cmd); _sim->_has_op = s_TRAN; _scope = NULL; ::status.tran.stop(); } /*--------------------------------------------------------------------------*/ std::string TRANSIENT::status()const { return "transient timesteps: accepted=" + to_string(steps_accepted()) + ", rejected=" + to_string(steps_rejected()) + ", total=" + to_string(steps_total()) + "\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s_tr_set.cc000066400000000000000000000163201316501211100141430ustar00rootroot00000000000000/*$Id: s_tr_set.cc 2016/09/22 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * set up transient and fourier analysis */ //testing=script 2016.08.01 #include "u_sim_data.h" #include "u_prblst.h" #include "ap.h" #include "s_tr.h" /*--------------------------------------------------------------------------*/ // void TRANSIENT::setup(CS&); // void TRANSIENT::options(CS&); /*--------------------------------------------------------------------------*/ /* tr_setup: transient analysis: parse command string and set options * (options set by call to tr_options) */ void TRANSIENT::setup(CS& Cmd) { _tstart.e_val(NOT_INPUT, _scope); _tstop.e_val(NOT_INPUT, _scope); _tstrobe.e_val(NOT_INPUT, _scope); if (_sim->is_first_expand()) { _sim->_last_time = 0; }else{ } if (Cmd.match1("'\"({") || Cmd.is_pfloat()) { PARAMETER arg1, arg2, arg3; Cmd >> arg1; if (Cmd.match1("'\"({") || Cmd.is_pfloat()) { Cmd >> arg2; }else{ } if (Cmd.match1("'\"({") || Cmd.is_pfloat()) { Cmd >> arg3; }else{ } if (arg3.has_hard_value()) { /* 3 args: all */ assert(arg2.has_hard_value()); assert(arg1.has_hard_value()); arg1.e_val(0.,_scope); arg3.e_val(0.,_scope); if (arg3 == 0.) { /* spice (illogical) order */ _tstart = arg3; /* _tstrobe _tstop _tstart */ _tstop = arg2; _tstrobe = arg1; }else if (arg1 == 0.) { /* eca (logical) order: */ _tstart = arg1; /* _tstart _tstop _tstrobe */ _tstop = arg2; _tstrobe = arg3; }else if (arg1 > arg3) {untested(); /* eca (logical) order: */ _tstart = arg1; /* _tstart _tstop _tstrobe */ _tstop = arg2; _tstrobe = arg3; }else{ /* spice (illogical) order */ _tstart = arg3; /* _tstrobe _tstop _tstart */ _tstop = arg2; _tstrobe = arg1; } }else if (arg2.has_hard_value()) { /* 2 args */ assert(arg1.has_hard_value()); arg1.e_val(0.,_scope); arg2.e_val(0.,_scope); if (arg1 == 0.) { /* 2 args: _tstart, _tstop */ _tstart = arg1; _tstop = arg2; /* _tstrobe unchanged */ }else if (arg1 >= arg2) { /* 2 args: _tstop, _tstrobe */ _tstart = _sim->_last_time; _tstop = arg1; _tstrobe = arg2; }else{ /* 2 args: _tstrobe, _tstop */ assert(arg1 < arg2); /* spice order */ _tstart = "NA"; /* 0 */ _tstop = arg2; _tstrobe = arg1; } }else{ /* 1 arg */ assert(arg1.has_hard_value()); arg1.e_val(0.,_scope); if (arg1 > _sim->_last_time) { /* 1 arg: _tstop */ _tstart = _sim->_last_time; _tstop = arg1; /* _tstrobe unchanged */ }else if (arg1 == 0.) {untested(); /* 1 arg: _tstart */ double oldrange = _tstop - _tstart; _tstart = 0.; _tstop = oldrange; /* _tstrobe unchanged */ }else{untested(); /* 1 arg: _tstrobe */ assert(arg1 <= _sim->_last_time); assert(arg1 > 0.); double oldrange = _tstop - _tstart; _tstart = _sim->_last_time; _tstop = _sim->_last_time + oldrange; _tstrobe = arg1; } } }else{ /* no args */ double oldrange = _tstop - _tstart; _tstart = _sim->_last_time; _tstop = _sim->_last_time + oldrange; /* _tstrobe unchanged */ } if (Cmd.match1("'\"({") || Cmd.is_pfloat()) { Cmd >> _dtmax_in; }else{ } options(Cmd); _tstart.e_val(0., _scope); _tstop.e_val(NOT_INPUT, _scope); if (_tstart < 0 || _tstop <= _tstart) {untested(); throw Exception("transient: bad time args"); }else{ } _tstrobe.e_val(NOT_INPUT, _scope); if (_tstrobe <= 0.) { _tstrobe.set_default(NOT_INPUT); }else{ } _tstrobe.e_val(_tstop-_tstart, _scope); if (_cold || _tstart < _sim->_last_time || _sim->_last_time <= 0.) { _cont = false; _time1 = _sim->_time0 = 0.; }else{ _cont = true; _time1 = _sim->_time0 = _sim->_last_time; } _sim->_freq = ((_tstop > _tstart) ? (1 / (_tstop - _tstart)) : (0.)); if (_dtmax_in.has_hard_value()) { _dtmax = _dtmax_in; }else if (_skip_in.has_hard_value()) { _dtmax = _tstrobe / double(_skip_in); }else{ _dtmax = std::min(_dtmax_in, _tstrobe); } if (_dtmin_in.has_hard_value()) {untested(); _sim->_dtmin = _dtmin_in; }else if (_dtratio_in.has_hard_value()) {untested(); _sim->_dtmin = _dtmax / _dtratio_in; }else{ // use larger of soft values _sim->_dtmin = std::max(double(_dtmin_in), _dtmax/_dtratio_in); } } /*--------------------------------------------------------------------------*/ /* tr_options: set options common to transient and fourier analysis */ void TRANSIENT::options(CS& Cmd) { _out = IO::mstdout; _out.reset(); //BUG// don't know why this is needed _sim->_temp_c = OPT::temp_c; bool ploton = IO::plotset && plotlist().size() > 0; _sim->_uic = _cold = false; _trace = tNONE; unsigned here = Cmd.cursor(); do{ ONE_OF || Get(Cmd, "c{old}", &_cold) || Get(Cmd, "dte{mp}", &_sim->_temp_c, mOFFSET, OPT::temp_c) || Get(Cmd, "dtma{x}", &_dtmax_in) || Get(Cmd, "dtmi{n}", &_dtmin_in) || Get(Cmd, "dtr{atio}", &_dtratio_in) || Get(Cmd, "pl{ot}", &ploton) || Get(Cmd, "sk{ip}", &_skip_in) || Get(Cmd, "sta{rt}", &_tstart) || Get(Cmd, "sto{p}", &_tstop) || Get(Cmd, "str{obeperiod}",&_tstrobe) || Get(Cmd, "te{mperature}", &_sim->_temp_c) || Get(Cmd, "uic", &_sim->_uic) || (Cmd.umatch("tr{ace} {=}") && (ONE_OF || Set(Cmd, "n{one}", &_trace, tNONE) || Set(Cmd, "o{ff}", &_trace, tNONE) || Set(Cmd, "w{arnings}", &_trace, tUNDER) || Set(Cmd, "a{lltime}", &_trace, tALLTIME) || Set(Cmd, "r{ejected}", &_trace, tREJECTED) || Set(Cmd, "i{terations}",&_trace, tITERATION) || Set(Cmd, "v{erbose}", &_trace, tVERBOSE) || Cmd.warn(bWARNING, "need none, off, warnings, alltime, " "rejected, iterations, verbose") ) ) || outset(Cmd,&_out) ; }while (Cmd.more() && !Cmd.stuck(&here)); Cmd.check(bWARNING, "what's this?"); IO::plotout = (ploton) ? IO::mstdout : OMSTREAM(); initio(_out); _dtmax_in.e_val(BIGBIG, _scope); _dtmin_in.e_val(OPT::dtmin, _scope); _dtratio_in.e_val(OPT::dtratio, _scope); _skip_in.e_val(1, _scope); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/s_tr_swp.cc000066400000000000000000000430771316501211100141720ustar00rootroot00000000000000/*$Id: s_tr_swp.cc 2016/09/26 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * sweep time and simulate. output results. * manage event queue */ //testing=script 2016.08.01 #include "u_time_pair.h" #include "u_sim_data.h" #include "u_status.h" #include "declare.h" /* gen */ #include "s_tr.h" /*--------------------------------------------------------------------------*/ // void TRANSIENT::sweep(void); // void TRANSIENT::first(void); // bool TRANSIENT::next(void); // void TRANSIENT::accept(void); // void TRANSIENT::reject(void); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ namespace TR { static std::string step_cause[] = { "impossible", "user requested", "event queue", "command line \"skip\"", "convergence failure, reducing (itl4)", "slow convergence, holding (itl3)", "truncation error", "ambiguous event", "limit growth", "initial guess" }; } /*--------------------------------------------------------------------------*/ void TRANSIENT::sweep() { _sim->_phase = p_INIT_DC; head(_tstart, _tstop, "Time"); _sim->_bypass_ok = false; _sim->set_inc_mode_bad(); if (_cont) { // use the data from last time _sim->_phase = p_RESTORE; _sim->restore_voltages(); CARD_LIST::card_list.tr_restore(); }else{ _sim->clear_limit(); CARD_LIST::card_list.tr_begin(); } first(); _sim->_genout = gen(); if (_sim->uic_now()) { advance_time(); _sim->zero_voltages(); CARD_LIST::card_list.do_tr(); //evaluate_models while (!_sim->_late_evalq.empty()) {untested(); //BUG// encapsulation violation _sim->_late_evalq.front()->do_tr_last(); _sim->_late_evalq.pop_front(); } _converged = true; _sim->_loadq.clear(); // fake solve, clear the queue //BUG// UIC needs further analysis. }else{ _converged = solve_with_homotopy(OPT::DCBIAS,_trace); if (!_converged) { error(bWARNING, "did not converge\n"); }else{ } } review(); _accepted = true; accept(); { bool printnow = (_sim->_time0 == _tstart || _trace >= tALLTIME); int outflags = ofNONE; if (printnow) { outflags = ofPRINT | ofSTORE | ofKEEP; }else{ outflags = ofSTORE; } outdata(_sim->_time0, outflags); } while (next()) { _sim->_bypass_ok = false; _sim->_phase = p_TRAN; _sim->_genout = gen(); _converged = solve(OPT::TRHIGH,_trace); _accepted = _converged && review(); if (_accepted) { assert(_converged); assert(_sim->_time0 <= _time_by_user_request); accept(); if (step_cause() == scUSER) { assert(up_order(_sim->_time0-_sim->_dtmin, _time_by_user_request, _sim->_time0+_sim->_dtmin)); ++_stepno; _time_by_user_request += _tstrobe; /* advance user time */ }else{ } assert(_sim->_time0 < _time_by_user_request); }else{ reject(); assert(_time1 < _time_by_user_request); } { bool printnow = (_trace >= tREJECTED) || (_accepted && (_trace >= tALLTIME || step_cause() == scUSER || (!_tstrobe.has_hard_value() && _sim->_time0+_sim->_dtmin > _tstart))); int outflags = ofNONE; if (printnow) { outflags = ofPRINT | ofSTORE | ofKEEP; }else if (_accepted) { outflags = ofSTORE; }else{ } outdata(_sim->_time0, outflags); } if (!_converged && OPT::quitconvfail) {untested(); outdata(_sim->_time0, ofPRINT); throw Exception("convergence failure, giving up"); }else{ } } } /*--------------------------------------------------------------------------*/ void TRANSIENT::set_step_cause(STEP_CAUSE C) { switch (C) { case scITER_A:untested(); case scADT:untested(); case scUSER: case scEVENTQ: case scSKIP: case scITER_R: case scTE: case scAMBEVENT: case scINITIAL: ::status.control = C; break; case scNO_ADVANCE:untested(); case scZERO:untested(); case scSMALL:untested(); case scREJECT: ::status.control += C; break; } } /*--------------------------------------------------------------------------*/ int TRANSIENT::step_cause()const { return ::status.control; } /*--------------------------------------------------------------------------*/ void TRANSIENT::first() { /* usually, _sim->_time0, time1 == 0, from setup */ assert(_sim->_time0 == _time1); assert(_sim->_time0 <= _tstart); ::status.review.start(); //_eq.Clear(); /* empty the queue */ while (!_sim->_eq.empty()) {untested(); _sim->_eq.pop(); } _stepno = 0; //_time_by_user_request = _sim->_time0 + _tstrobe; /* set next user step */ //set_step_cause(scUSER); if (_sim->_time0 < _tstart) { // skip until _tstart set_step_cause(scINITIAL); // suppressed _time_by_user_request = _tstart; // set first strobe }else{ // no skip set_step_cause(scUSER); // strobe here _time_by_user_request = _sim->_time0 + _tstrobe; // set next strobe } ::status.hidden_steps = 0; ::status.review.stop(); } /*--------------------------------------------------------------------------*/ #define check_consistency() { \ trace4("", __LINE__, newtime, almost_fixed_time, fixed_time); \ assert(almost_fixed_time <= fixed_time); \ assert(newtime <= fixed_time); \ /*assert(newtime == fixed_time || newtime <= fixed_time -_sim->_dtmin);*/ \ assert(newtime <= almost_fixed_time); \ /*assert(newtime == almost_fixed_time || newtime <= almost_fixed_time - _sim->_dtmin);*/ \ assert(newtime > _time1); \ assert(newtime > reftime); \ assert(new_dt > 0.); \ assert(new_dt >= _sim->_dtmin); \ assert(newtime <= _time_by_user_request); \ /*assert(newtime == _time_by_user_request*/ \ /* || newtime < _time_by_user_request - _sim->_dtmin); */ \ } #define check_consistency2() { \ assert(newtime > _time1); \ assert(new_dt > 0.); \ assert(new_dt >= _sim->_dtmin); \ assert(newtime <= _time_by_user_request); \ /*assert(newtime == _time_by_user_request */ \ /* || newtime < _time_by_user_request - _sim->_dtmin);*/ \ } /*--------------------------------------------------------------------------*/ /* next: go to next time step * Set _sim->_time0 to the next time step, store the old one in time1. * Try several methods. Take the one that gives the shortest step. */ bool TRANSIENT::next() { ::status.review.start(); double old_dt = _sim->_time0 - _time1; assert(old_dt >= 0); double newtime = NEVER; double new_dt = NEVER; STEP_CAUSE new_control = scNO_ADVANCE; if (_sim->_time0 == _time1) { // initial step -- could be either t==0 or continue // for the first time, just guess // make it 100x smaller than expected new_dt = std::max(_dtmax/100., _sim->_dtmin); newtime = _sim->_time0 + new_dt; new_control = scINITIAL; }else if (!_converged) { new_dt = old_dt / OPT::trstepshrink; newtime = _time_by_iteration_count = _time1 + new_dt; new_control = scITER_R; }else{ } { double reftime; if (_accepted) { reftime = _sim->_time0; trace0("accepted"); }else{ reftime = _time1; trace0("rejected"); } trace2("", step_cause(), old_dt); trace3("", _time1, _sim->_time0, reftime); if (_time_by_user_request < newtime) { newtime = _time_by_user_request; new_dt = newtime - reftime; new_control = scUSER; }else{ } double fixed_time = newtime; double almost_fixed_time = newtime; check_consistency(); // event queue, events that absolutely will happen // exact time. NOT ok to move or omit, even by _sim->_dtmin // some action is associated with it. if (!_sim->_eq.empty() && _sim->_eq.top() < newtime) { newtime = _sim->_eq.top(); new_dt = newtime - reftime; if (new_dt < _sim->_dtmin) {untested(); //new_dt = _sim->_dtmin; //newtime = reftime + new_dt; }else{ } new_control = scEVENTQ; fixed_time = newtime; almost_fixed_time = newtime; check_consistency(); }else{ } // device events that may not happen // not sure of exact time. will be rescheduled if wrong. // ok to move by _sim->_dtmin. time is not that accurate anyway. if (_time_by_ambiguous_event < newtime - _sim->_dtmin) { if (_time_by_ambiguous_event < _time1 + 2*_sim->_dtmin) {untested(); double mintime = _time1 + 2*_sim->_dtmin; if (newtime - _sim->_dtmin < mintime) {untested(); newtime = mintime; new_control = scAMBEVENT; }else{untested(); } }else{ newtime = _time_by_ambiguous_event; new_control = scAMBEVENT; } new_dt = newtime - reftime; almost_fixed_time = newtime; check_consistency(); }else{ } // device error estimates if (_time_by_error_estimate < newtime - _sim->_dtmin) { newtime = _time_by_error_estimate; new_dt = newtime - reftime; new_control = scTE; check_consistency(); }else{ } // skip parameter if (new_dt > _dtmax) { if (new_dt > _dtmax + _sim->_dtmin) { new_control = scSKIP; }else{ } new_dt = _dtmax; newtime = reftime + new_dt; check_consistency(); }else{ } // converged but with more iterations than we like if ((new_dt > (old_dt + _sim->_dtmin) * OPT::trstephold) && _sim->exceeds_iteration_limit(OPT::TRLOW)) {untested(); assert(_accepted); new_dt = old_dt * OPT::trstephold; newtime = reftime + new_dt; new_control = scITER_A; check_consistency(); }else{ } // limit growth if (_sim->analysis_is_tran_dynamic() && new_dt > old_dt * OPT::trstepgrow) {untested(); new_dt = old_dt * OPT::trstepgrow; newtime = reftime + new_dt; new_control = scADT; check_consistency(); }else{ } // quantize if (newtime < almost_fixed_time) { assert(new_dt >= 0); if (newtime < _sim->_time0) { assert(reftime == _time1); assert(reftime < _sim->_time0); // not moving forward // try to pick a step that will end up repeating the rejected step // with an integer number of same size steps double target_dt = _sim->_time0 - reftime; assert(target_dt > new_dt); double steps = 1 + floor((target_dt - _sim->_dtmin) / new_dt); assert(steps > 0); new_dt = target_dt / steps; newtime = reftime + new_dt; check_consistency(); }else if (newtime > reftime + old_dt*.8 && newtime < reftime + old_dt*1.5 && reftime + old_dt <= almost_fixed_time) { // new_dt is close enough to old_dt. // use old_dt, to avoid a step change. assert(reftime == _sim->_time0); // moving forward assert(reftime > _time1); new_dt = old_dt; newtime = reftime + new_dt; if (newtime > almost_fixed_time) {untested(); new_control = scAMBEVENT; newtime = almost_fixed_time; new_dt = newtime - reftime; }else{ } check_consistency(); }else{ // There will be a step change. // Try to choose one that we will keep for a while. // Choose new_dt to be in integer fraction of target_dt. assert(reftime == _sim->_time0); // moving forward //assert(reftime > _time1); // _time1==_time0 on restart, ok double target_dt = fixed_time - reftime; assert(target_dt >= new_dt); double steps = 1 + floor((target_dt - _sim->_dtmin) / new_dt); assert(steps > 0); new_dt = target_dt / steps; newtime = reftime + new_dt; check_consistency(); } }else{ assert(newtime == almost_fixed_time); } // trap time step too small if (!_accepted && new_dt < _sim->_dtmin) {untested(); new_dt = _sim->_dtmin; newtime = reftime + new_dt; new_control = scSMALL; check_consistency(); }else{ } // if all that makes it close to user_requested, make it official if (up_order(newtime-_sim->_dtmin, _time_by_user_request, newtime+_sim->_dtmin)) { //newtime = _time_by_user_request; //new_dt = newtime - reftime; new_control = scUSER; check_consistency(); }else{ } check_consistency(); assert(!_accepted || newtime > _sim->_time0); assert(_accepted || newtime <= _sim->_time0); } set_step_cause(new_control); /* got it, I think */ /* check to be sure */ if (newtime < _time1 + _sim->_dtmin) {untested(); /* It's really bad. */ /* Reject the most recent step, back up as much as possible, */ /* and creep along */ assert(!_accepted); assert(step_cause() < scREJECT); assert(step_cause() >= 0); error(bDANGER,"non-recoverable " + TR::step_cause[step_cause()] + "\n"); error(bDANGER, "newtime=%e rejectedtime=%e oldtime=%e using=%e\n", newtime, _sim->_time0, _time1, _time1 + _sim->_dtmin); newtime = _time1 + _sim->_dtmin; set_step_cause(scSMALL); //check_consistency2(); throw Exception("tried everything, still doesn't work, giving up"); }else if (newtime < _sim->_time0) { /* Reject the most recent step. */ /* We have faith that it will work with a smaller time step. */ assert(!_accepted); assert(newtime >= _time1 + _sim->_dtmin); error(bLOG, "backwards time step\n"); error(bLOG, "newtime=%e rejectedtime=%e oldtime=%e\n", newtime, _sim->_time0, _time1); set_step_cause(scREJECT); _sim->mark_inc_mode_bad(); check_consistency2(); }else if (newtime < _sim->_time0 + _sim->_dtmin) {untested(); /* Another evaluation at the same time. */ /* Keep the most recent step, but creep along. */ assert(newtime > _sim->_time0 - _sim->_dtmin); error(bDANGER, "zero time step\n"); error(bDANGER, "newtime=%e rejectedtime=%e oldtime=%e\n", newtime, _sim->_time0, _time1); if (_accepted) {untested(); _time1 = _sim->_time0; }else{untested(); assert(_converged); } check_consistency2(); newtime = _sim->_time0 + _sim->_dtmin; if (newtime > _time_by_user_request) {untested(); newtime = _time_by_user_request; set_step_cause(scUSER); }else{untested(); } set_step_cause(scZERO); check_consistency2(); }else{ assert(_accepted); assert(newtime >= _sim->_time0 + _sim->_dtmin); /* All is OK. Moving on. */ /* Keep value of newtime */ _time1 = _sim->_time0; check_consistency2(); } _sim->_time0 = newtime; /* advance event queue (maybe) */ /* We already looked at it. Dump what's on top if we took it. */ while (!_sim->_eq.empty() && _sim->_eq.top() <= _sim->_time0) { trace1("eq", _sim->_eq.top()); _sim->_eq.pop(); } while (!_sim->_eq.empty() && _sim->_eq.top() < _sim->_time0 + _sim->_dtmin) {untested(); trace1("eq-extra", _sim->_eq.top()); _sim->_eq.pop(); } //BUG// what if it is later rejected? It's lost! check_consistency2(); ++steps_total_; ::status.review.stop(); trace0("next"); return (_sim->_time0 <= _tstop + _sim->_dtmin); } /*--------------------------------------------------------------------------*/ bool TRANSIENT::review() { ::status.review.start(); _sim->count_iterations(iTOTAL); TIME_PAIR time_by = CARD_LIST::card_list.tr_review(); _time_by_error_estimate = time_by._error_estimate; // limit minimum time step // 2*_sim->_dtmin because _time[1] + _sim->_dtmin might be == _time[0]. if (time_by._event < _time1 + 2*_sim->_dtmin) { _time_by_ambiguous_event = _time1 + 2*_sim->_dtmin; }else{ _time_by_ambiguous_event = time_by._event; } // force advance when time too close to previous if (std::abs(_time_by_ambiguous_event - _sim->_time0) < 2*_sim->_dtmin) { _time_by_ambiguous_event = _sim->_time0 + 2*_sim->_dtmin; }else{ } if (time_by._error_estimate < _time1 + 2*_sim->_dtmin) {itested(); _time_by_error_estimate = _time1 + 2*_sim->_dtmin; }else{ _time_by_error_estimate = time_by._error_estimate; } if (std::abs(_time_by_error_estimate - _sim->_time0) < 1.1*_sim->_dtmin) { _time_by_error_estimate = _sim->_time0 + 1.1*_sim->_dtmin; }else{ } ::status.review.stop(); return (_time_by_error_estimate > _sim->_time0 && _time_by_ambiguous_event > _sim->_time0); } /*--------------------------------------------------------------------------*/ void TRANSIENT::accept() { ::status.accept.start(); _sim->set_limit(); if (OPT::traceload) { while (!_sim->_acceptq.empty()) { _sim->_acceptq.back()->tr_accept(); _sim->_acceptq.pop_back(); } }else{untested(); _sim->_acceptq.clear(); CARD_LIST::card_list.tr_accept(); } ++steps_accepted_; ::status.accept.stop(); } /*--------------------------------------------------------------------------*/ void TRANSIENT::reject() { ::status.accept.start(); _sim->_acceptq.clear(); ++steps_rejected_; ::status.accept.stop(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/signon.cc000066400000000000000000000026421316501211100136200ustar00rootroot00000000000000/*$Id: signon.cc,v 26.138 2013/04/24 02:44:30 al Exp $ -*- C++ -*- * Copyright (C) 2013 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * print a message at sign-on. */ #include "io_.h" #include "patchlev.h" /*--------------------------------------------------------------------------*/ static class SIGN_ON { public: SIGN_ON() { IO::mstdout << "default plugins: " PATCHLEVEL "\n"; } } sign_on; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: apps/test_readline.cc000066400000000000000000000002471316501211100151440ustar00rootroot00000000000000//testing=trivial 2006.07.17 #include #include int main() { char* line_read = readline("xx"); add_history(line_read); } configure000077500000000000000000000017261316501211100127620ustar00rootroot00000000000000#!/bin/sh #--------------------------------------------------- # This stuff introduced by SDB to enable --prefix # at configure time # echo Input flag = $1 if test "x$1" != "x"; then # echo Found input parameter -- $1 # Now see if the parameter is --prefix= if test "x${1#--prefix=}" != "x$1"; then # echo "Found --prefix in input args. Setting prefix directory." prefix=${1#--prefix=} else # echo "Found unrecognized parameter in input args." # Just use the default prefix dir. prefix=/usr/local fi else # echo "No input parameter found." # Just use the default prefix dir prefix=/usr/local fi args="--prefix=$prefix" echo "Configuring gnucap using $args" #--------------------------------------------------- echo include (cd include; ./configure $args) echo lib (cd lib; ./configure $args) echo modelgen (cd modelgen; ./configure $args) echo main (cd main; ./configure $args) echo apps (cd apps; ./configure $args) echo done exit 0 include/000077500000000000000000000000001316501211100124705ustar00rootroot00000000000000include/Make1000066400000000000000000000075261316501211100133630ustar00rootroot00000000000000#$Id: Make1 2016/09/17 $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ TARGET = #------------------------------------------------------------------------ INSTALL_FILES = $(RAW_SRCS) $(RAW_HDRS) #------------------------------------------------------------------------ INSTALL_DIR = $(PREFIX)/include/gnucap #------------------------------------------------------------------------ DELETED = #------------------------------------------------------------------------ RAW_SRCS = \ spice-wrapper.cc #------------------------------------------------------------------------ RAW_HDRS = \ ap.h bm.h c_comand.h constant.h d_coment.h d_dot.h d_logic.h \ declare.h e_aux.h e_base.h e_card.h e_cardlist.h e_ccsrc.h e_compon.h \ e_elemnt.h e_model.h e_node.h e_paramlist.h e_storag.h e_subckt.h \ globals.h io_.h io_error.h io_trace.h l_compar.h l_denoise.h \ l_dispatcher.h l_lib.h l_stlextra.h l_timer.h m_base.h m_cpoly.h \ m_divdiff.h m_expression.h m_interp.h m_matrix.h m_phase.h m_spline.h \ m_wave.h md.h mode.h patchlev.h s__.h s_tr.h trace_off.h trace_on.h \ u_cardst.h u_function.h u_lang.h u_limit.h u_nodemap.h u_opt.h \ u_parameter.h u_prblst.h u_probe.h u_sdp.h u_sim_data.h u_status.h \ u_time_pair.h u_xprobe.h #------------------------------------------------------------------------ RAW_OTHER = \ configure Make1 #------------------------------------------------------------------------ RAW = $(RAW_HDRS) $(RAW_SRCS) $(MODELS) $(RAW_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ IMPORTED_SRCS = IMPORTED_HDRS = IMPORTED_OTHER = IMPORTED = $(IMPORTED_SRCS) $(IMPORTED_HDRS) $(IMPORTED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_SRCS = ${MODELS:.model=.cc} GENERATED_HDRS = ${MODELS:.model=.h} GENERATED_OTHER = Make.aux GENERATED = $(GENERATED_HDRS) $(GENERATED_SRCS) $(GENERATED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_DIST = Make.depend IMPORTED_DIST = $(IMPORTED) DISTFILES = $(RAW) $(GENERATED_DIST) $(IMPORTED_DIST) #------------------------------------------------------------------------ #------------------------------------------------------------------------ SRCS = $(IMPORTED_SRCS) $(GENERATED_SRCS) $(RAW_SRCS) HDRS = $(RAW_HDRS) $(GENERATED_HDRS) $(IMPORTED_HDRS) OBJS = ${SRCS:.cc=.o} TARGET_DEPENDS = $(OBJS) $(RAW) $(MODELS) #------------------------------------------------------------------------ #------------------------------------------------------------------------ MOSTLYCLEANFILES = $(OBJS) $(GENERATED) CLEANFILES = $(MOSTLYCLEANFILES) DISTCLEANFILES = $(CLEANFILES) MAINTAINERCLEANFILES = $(DISTCLEANFILES) #------------------------------------------------------------------------ #------------------------------------------------------------------------ include/ap.h000066400000000000000000000173511316501211100132500ustar00rootroot00000000000000/*$Id: ap.h,v 26.130 2009/11/15 21:51:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * stuff for the "ap" family of parsing functions */ //testing=script,sparse 2006.07.17 #ifndef AP_H #define AP_H #include "md.h" /*--------------------------------------------------------------------------*/ INTERFACE char* getcmd(const char*,char*,int); /*--------------------------------------------------------------------------*/ enum AP_MOD{ mNONE, /* nothing special */ mSCALE, /* scale it after reading */ mOFFSET, /* add an offset */ mINVERT, /* save 1 / the number */ mPOSITIVE, /* store absolute value */ mOCTAL, /* read the number in octal */ mHEX /* read the number in hex */ }; const bool ONE_OF = false; class INTERFACE CS { public: enum STDIN {_STDIN}; enum INC_FILE {_INC_FILE}; enum WHOLE_FILE {_WHOLE_FILE}; enum STRING {_STRING}; private: FILE* _file; std::string _name; std::string _cmd; unsigned _cnt; unsigned _length; unsigned _begin_match; unsigned _end_match; bool _ok; int _line_number; public: // construction, destruction, and re-construction explicit CS(STDIN); explicit CS(INC_FILE, const std::string& name); explicit CS(WHOLE_FILE, const std::string& name); explicit CS(STRING, const std::string& s); explicit CS(const CS& p); CS& operator=(const std::string& s); CS& operator=(const CS& p); CS& get_line(const std::string& prompt); ~CS() {if (is_file()) {fclose(_file);}} // status - non-consuming unsigned cursor()const {return _cnt;} bool stuck(unsigned* last) {bool ok=*last<_cnt; *last=_cnt; return !ok;} bool gotit(unsigned last) {return last<_cnt;} operator bool()const {return _ok;} // get -- non-consuming const std::string fullstring()const {return _cmd;} const std::string substr(unsigned i)const {return ((_cmd.length()>=i) ? _cmd.substr(i) : "");} const std::string substr(unsigned i, unsigned n)const {return _cmd.substr(i,n);} const std::string tail()const {return substr(_cnt);} char peek()const {return _cmd[_cnt];} // status - may consume whitespace only bool ns_more()const {return peek()!='\0';} bool more() {skipbl(); return ns_more();} bool is_end() {return !more();} bool is_file() {return (_file && !isatty(fileno(_file)));} bool is_first_read()const {untested(); return (_line_number == 0);} // control CS& reset(unsigned c=0) {_cnt=c; _ok=true; return *this;} // exception handling (ap_error.cc) non-consuming CS& check(int, const std::string&); CS& warn(int, unsigned, const std::string&); CS& warn(int i, const std::string& s) {return warn(i,cursor(), s);} // string matching (ap_match.cc) possibly consuming, sets _ok CS& umatch(const std::string&); CS& scan(const std::string&); std::string last_match()const; std::string trimmed_last_match(const std::string& = " ,=;")const; // character tests - non-consuming, no _ok bool match1(char c)const{return (peek()==c);} bool match1(const std::string& c)const {return ns_more() && strchr(c.c_str(),peek());} size_t find1(const std::string& c)const {return ((ns_more()) ? c.find_first_of(peek()) : std::string::npos);} bool is_xdigit()const {untested(); return (match1("0123456789abcdefABCDEF"));} bool is_digit()const {return (match1("0123456789"));} bool is_pfloat()const {return (match1(".0123456789"));} bool is_float()const {return (match1("+-.0123456789"));} bool is_argsym()const {return (match1("*?$%_&@"));} bool is_alpha()const {return !!isalpha(toascii(peek()));} bool is_alnum()const {return !!isalnum(toascii(peek()));} bool is_term(const std::string& t = ",=(){};") {char c=peek(); return (c=='\0' || isspace(c) || match1(t));} // conversions (ap_convert.cc) always consuming char ctoc(); void ctostr(char*,int,const std::string&); std::string ctos(const std::string& term=",=(){};", const std::string& b="\"'{", const std::string& e="\"'}", const std::string& trap=""); std::string get_to(const std::string& term); // conversions (ap_convert.cc) consumes if successful, sets _ok double ctof(); bool ctob(); int ctoi(); unsigned ctou(); int ctoo(); int ctox(); double ctopf() {return std::abs(ctof());} CS& operator>>(bool& x) {x=ctob();return *this;} CS& operator>>(char& x) {untested(); x=ctoc();return *this;} CS& operator>>(int& x) {x=ctoi();return *this;} CS& operator>>(unsigned& x) {x=ctou();return *this;} CS& operator>>(double& x) {x=ctof();return *this;} CS& operator>>(std::string& x) {x=ctos();return *this;} // skip (ap_skip.cc) possibly consuming, sets _ok CS& skip(int c=1) {_cnt=static_cast(static_cast(_cnt)+c); _ok=_cnt<=_length; return *this;} CS& skipbl(); CS& skip1b(char); CS& skip1(char); CS& skip1b(const std::string&); CS& skip1(const std::string&); CS& skiparg(); CS& skipto1(const std::string&); CS& skipto1(char); CS& skipcom() {return skip1b(",");} CS& operator>>(const char& x) {return skip1b(x);} CS& operator>>(const char* x) {return umatch(x);} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // these are non-member to provide a consistent interface, // like the templates to follow INTERFACE bool Get(CS& cmd, const std::string&, bool*); INTERFACE bool Get(CS& cmd, const std::string&, int*, AP_MOD=mNONE, int=0); INTERFACE bool Get(CS& cmd, const std::string&, double*, AP_MOD, double=0.); /*--------------------------------------------------------------------------*/ template bool Get(CS& cmd, const std::string& key, T* val) { if (cmd.umatch(key + " {=}")) { cmd >> *val; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ template inline bool scan_get(CS& cmd, const std::string& key, T* val) { if (cmd.scan(key)) { cmd >> '=' >> *val; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ template inline bool Set(CS& cmd, const std::string& key, T* val, T newval) { if (cmd.umatch(key + ' ')) { *val = newval; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ template inline CS& operator>>(CS& cmd, T& val) { val.parse(cmd); return cmd; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/bm.h000066400000000000000000000103121316501211100132340ustar00rootroot00000000000000/*$Id: bm.h 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling base */ //testing=script 2006.07.13 #ifndef E_BM_H #define E_BM_H #include "e_compon.h" /*--------------------------------------------------------------------------*/ class SPLINE; class FPOLY1; /*--------------------------------------------------------------------------*/ class EVAL_BM_BASE : public COMMON_COMPONENT { protected: explicit EVAL_BM_BASE(int c=0) :COMMON_COMPONENT(c) {} explicit EVAL_BM_BASE(const EVAL_BM_BASE& p) :COMMON_COMPONENT(p) {} ~EVAL_BM_BASE() {} protected: // override virtual bool operator==(const COMMON_COMPONENT&)const{/*incomplete();*/return false;} bool has_tr_eval()const {return true;} bool has_ac_eval()const {return true;} bool use_obsolete_callback_parse()const {return true;} bool use_obsolete_callback_print()const {return true;} bool has_parse_params_obsolete_callback()const {return true;} }; /*--------------------------------------------------------------------------*/ class INTERFACE EVAL_BM_ACTION_BASE : public EVAL_BM_BASE { protected: PARAMETER _bandwidth; PARAMETER _delay; PARAMETER _phase; PARAMETER _ooffset; PARAMETER _ioffset; PARAMETER _scale; PARAMETER _tc1; PARAMETER _tc2; PARAMETER _ic; protected: explicit EVAL_BM_ACTION_BASE(int c=0); explicit EVAL_BM_ACTION_BASE(const EVAL_BM_ACTION_BASE& p); ~EVAL_BM_ACTION_BASE() {} double temp_adjust()const; void tr_final_adjust(FPOLY1* y, bool f_is_value)const; void tr_finish_tdv(ELEMENT* d, double val)const; void ac_final_adjust(COMPLEX* y)const; void ac_final_adjust_with_temp(COMPLEX* y)const; double uic(double x)const {return (_sim->uic_now()) ? _ic : x;} double ioffset(double x)const {return uic(x) + _ioffset;} public: // override virtual bool operator==(const COMMON_COMPONENT&)const; //COMPONENT_COMMON* clone()const; //COMPONENT_COMMON=0 void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_last(const CARD_LIST*); void ac_eval(ELEMENT*)const; virtual bool ac_too()const = 0; protected: // override virtual bool parse_params_obsolete_callback(CS&); public: bool has_ext_args()const; static COMMON_COMPONENT* parse_func_type(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class EVAL_BM_VALUE : public EVAL_BM_ACTION_BASE { private: explicit EVAL_BM_VALUE(const EVAL_BM_VALUE& p):EVAL_BM_ACTION_BASE(p) {} public: explicit EVAL_BM_VALUE(int c=0) :EVAL_BM_ACTION_BASE(c) {} ~EVAL_BM_VALUE() {} private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_VALUE(*this);} void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; bool is_trivial()const; void precalc_first(const CARD_LIST*); void tr_eval(ELEMENT*)const; std::string name()const {itested();return "VALUE";} bool ac_too()const {return false;} bool parse_numlist(CS&); bool parse_params_obsolete_callback(CS&); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/c_comand.h000066400000000000000000000032371316501211100144110ustar00rootroot00000000000000/*$Id: c_comand.h 2014.11.25 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * all of the commands */ //testing=trivial 2006.07.17 #ifndef C_COMAND_H #define C_COMAND_H #include "e_card.h" /*--------------------------------------------------------------------------*/ class CS; /*--------------------------------------------------------------------------*/ class INTERFACE CMD : public CKT_BASE { public: std::string value_name()const {return "";} virtual void do_it(CS&, CARD_LIST*) = 0; virtual ~CMD() {} static void cmdproc(CS&, CARD_LIST*); static void command(const std::string&, CARD_LIST*); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/configure000077500000000000000000000017041316501211100144010ustar00rootroot00000000000000#!/bin/sh # configure for stuff that just needs to be installed #------------- Stuff added to enable --prefix -------------- if test "x$1" != "x"; then # echo Found input parameter -- $1 # Now see if the parameter is --prefix= if test "x${1#--prefix=}" != "x$1"; then # echo "Found --prefix in input args. Setting prefix directory." prefix=${1#--prefix=} else # echo "Found unrecognized parameter in input args." # Just use the default prefix dir. prefix=/usr/local fi else # echo "No input parameter found." # Just use the default prefix dir prefix=/usr/local fi #---------------------------------------------------------------- echo \# created by $PWD/$0. do not edit >Make2 echo \#------------------------------------------------------------------------ >>Make2 echo "CCC = c++" >>Make2 echo "PREFIX = " $prefix >>Make2 echo "" >>Make2 cat Make1 Make2 ../Make3 >Makefile exit 0 include/constant.h000066400000000000000000000114221316501211100144720ustar00rootroot00000000000000/*$Id: constant.h,v 2014/05/16 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * defined constants for just about everything */ //testing=trivial 2006.07.17 #ifndef CONSTANT_H #define CONSTANT_H #include "md.h" /*--------------------------------------------------------------------------*/ /* The names are chosen according to Verilog-A spec. */ /* Commented out means they are defined in a standard header, usually */ /* or there is some discrepancy of the correct value */ /* standard mathematical constants */ //double const M_PI = 3.1415926535897932384626433832795028841972; double const M_TWO_PI = M_PI * 2; //double const M_PI_2 = M_PI / 2; //double const M_PI_4 = M_PI / 4; //double const M_1_PI = 1 / M_PI; //double const M_2_PI = 2 / M_PI; //double const M_2_SQRTPI = 2 / sqrt(M_PI); //double const M_E = 2.7182818284590452354; //double const M_LOG2E = 1.4426950408889634074; // log2(M_E) //double const M_LOG10E = 0.43429448190325182765; // log10(M_E) //double const M_LN2 = 0.69314718055994530942; // log(2) //double const M_LN10 = 2.3025809299404568402; // log(10) //double const M_SQRT2 = 1.4142135623730904880; // sqrt(2) //double const M_SQRT1_2 = 1 / M_SQRT_2; /* extra mathematical constants */ //double const DTOR = 0.0174532925199432957692369076848861271344; //double const RTOD = 57.2957795130823208768; double const DTOR = M_PI / 180; double const RTOD = 180 / M_PI; /* standard physical constants ref: http://physics.nist.gov */ double const P_Q = 1.6021918e-19; // charge of an electron, (spice) //double const P_Q = 1.60217653e-19; // charge of an electron, (nist) double const P_C = 2.99792458e8; // speed of light m/s double const P_K = 1.3806226e-23; // Boltzmann's constant J/K (spice) //double const P_K = 1.3806505e-23; // Boltzmann's constant J/K (nist) double const P_H = 6.6260693e-34; // Planck's constant J-s double const P_U0 = M_PI * 4.0e-7; // permeability of vaccuum H/m double const P_EPS0 = 8.854214871e-12; // permittivity of air F/m(spice) //double const P_EPS0 = 8.854187817e-12; // permittivity of vaccuum F/m(nist) //double const P_EPS0 = 1/(P_U0*P_C*P_C);// permittivity of vaccuum F/m(nist) double const P_CELSIUS0 = 273.15; // 0 Celsius /* extra physical constants */ double const P_EPS_SI = 11.7*P_EPS0; // permittivity of silicon (1.0359e-10) double const P_EPS_OX = 3.9*P_EPS0; // permittivity of oxide (3.45e-11) double const P_K_Q = P_K/P_Q; /* dimension conversions. * Hopefully, all internal distances are in meters. * (except for some Berkeley models) * In some cases the user data is in other units */ double const CM2M = 1e-2; /* centimeters to meters */ double const CM2M2 = 1e-4; /* ........... squared */ double const ICM2M = 1e2; /* inverse ........... */ double const ICM2M2 = 1e4; /* inverse ........... squared */ double const ICM2M3 = 1e6; /* inverse ........... cubed */ double const MICRON2METER = 1e-6; /* microns to meters */ //#ifdef HAS_NUMERIC_LIMITS //double const MAXDBL = std::numeric_limits::max(); //#else //double const MAXDBL = DBL_MAX; //#endif //BUG// construction order bug? .. use #define #define MAXDBL (DBL_MAX) double const BIGBIG = (MAXDBL)*(.9247958); /* unlikely number */ //double const OVERDUE = -(MAXDBL)*(.9347958);/* unlikely number */ double const NEVER = (MAXDBL)*(.9447958); /* unlikely number */ double const NOT_INPUT = -(MAXDBL)*(.9547658); /* unlikely number */ double const NOT_VALID = -(MAXDBL)*(.9647958); /* unlikely number */ double const LINEAR = -(MAXDBL)*(.9747958); /* unlikely number */ double const LOGBIGBIG = log(BIGBIG); double const VOLTMIN = 1.0e-50; double const PWRMIN = 1.0e-100; const char TOKENTERM[] = ",=()[]"; enum {FILE_OK=0, FILE_BAD=-1}; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/d_coment.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000004021�13165012111�0014426�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: d_coment.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * processing for COMMENT netlist item (pseudo-device) */ //testing=script 2006.07.17 #include "e_card.h" /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class DEV_COMMENT : public CARD { private: std::string _s; explicit DEV_COMMENT(const DEV_COMMENT& p) :CARD(p) {set_constant(true);} public: explicit DEV_COMMENT() :CARD() {set_constant(true);} private: // override virtual char id_letter()const {untested(); return '\0';} std::string dev_type()const {untested(); return "comment";} CARD* clone()const {return new DEV_COMMENT(*this);} std::string value_name()const {return "";} public: void set(const std::string& s) {_s = s;} std::string comment()const {return _s;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/d_dot.h�������������������������������������������������������������������������������������0000664�0000000�0000000�00000003525�13165012111�0013737�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: d_dot.h 2014/11/23$ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script,sparse 2014.11.21 #ifndef D_DOT_H #define D_DOT_H #include "e_card.h" /*--------------------------------------------------------------------------*/ class DEV_DOT : public CARD { private: std::string _s; explicit DEV_DOT(const DEV_DOT& p) :CARD(p), _s(p._s) {set_constant(true);} public: explicit DEV_DOT() :CARD() {set_constant(true);} private: // override virtual std::string value_name()const {untested();return "";} char id_letter()const {untested();return '\0';} std::string dev_type()const {untested();return "dotcard";} CARD* clone()const {return new DEV_DOT(*this);} public: void set(const std::string& S) {_s = S;} const std::string& s()const {untested();return _s;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/d_logic.h�����������������������������������������������������������������������������������0000664�0000000�0000000�00000025310�13165012111�0014242�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: d_logic.h,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * data structures and defaults for logic model. */ //testing=script,sparse 2006.07.17 #ifndef D_LOGIC_H #define D_LOGIC_H #include "e_model.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ enum {PORTS_PER_GATE = 10}; /*--------------------------------------------------------------------------*/ class DEV_LOGIC : public ELEMENT { public: enum {OUTNODE=0,GND_NODE=1,PWR_NODE=2,ENABLE=3,BEGIN_IN=4}; //node labels private: int _lastchangenode; int _quality; std::string _failuremode; smode_t _oldgatemode; smode_t _gatemode; static int _count; node_t nodes[PORTS_PER_GATE]; /* PORTS_PER_GATE <= PORTSPERSUBCKT */ public: explicit DEV_LOGIC(); explicit DEV_LOGIC(const DEV_LOGIC& p); ~DEV_LOGIC() {--_count;} private: // override virtuals char id_letter()const {return 'U';} std::string value_name()const {return "#";} bool print_type_in_spice()const {return true;} std::string dev_type()const {assert(has_common()); return (common()->modelname() + " " + common()->name()).c_str();} int tail_size()const {return 2;} int max_nodes()const {return PORTS_PER_GATE;} int min_nodes()const {return BEGIN_IN+1;} int matrix_nodes()const {return 2;} int net_nodes()const {return _net_nodes;} CARD* clone()const {return new DEV_LOGIC(*this);} void precalc_first() {ELEMENT::precalc_first(); if (subckt()) {subckt()->precalc_first();}} void expand(); void precalc_last() {ELEMENT::precalc_last(); if (subckt()) {subckt()->precalc_last();}} //void map_nodes(); void tr_iwant_matrix(); void tr_begin(); void tr_restore(); void dc_advance(); void tr_advance(); void tr_regress(); bool tr_needs_eval()const; void tr_queue_eval(); bool do_tr(); void tr_load(); TIME_PAIR tr_review(); void tr_accept(); void tr_unload(); double tr_involts()const {unreachable(); return 0;} //double tr_input()const //ELEMENT double tr_involts_limited()const {unreachable(); return 0;} //double tr_input_limited()const //ELEMENT //double tr_amps()const //ELEMENT double tr_probe_num(const std::string&)const; void ac_iwant_matrix(); void ac_begin(); void do_ac() {untested(); assert(subckt()); subckt()->do_ac();} void ac_load() {untested(); assert(subckt()); subckt()->ac_load();} COMPLEX ac_involts()const {unreachable(); return 0.;} COMPLEX ac_amps()const {unreachable(); return 0.;} XPROBE ac_probe_ext(const std::string&)const; std::string port_name(int)const {untested(); incomplete(); return ""; } public: static int count() {return _count;} private: bool tr_eval_digital(); bool want_analog()const; bool want_digital()const; }; /*--------------------------------------------------------------------------*/ class MODEL_LOGIC : public MODEL_CARD { private: explicit MODEL_LOGIC(const MODEL_LOGIC& p); public: explicit MODEL_LOGIC(const DEV_LOGIC*); ~MODEL_LOGIC() {--_count;} private: // override virtuals std::string dev_type()const {return "logic";} CARD* clone()const {return new MODEL_LOGIC(*this);} void precalc_first(); void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (13 + MODEL_CARD::param_count());} public: static int count() {return _count;} public: /* ----- digital mode ----- */ PARAMETER delay; /* propagation delay */ /* -- conversion parameters both ways -- */ PARAMETER vmax; /* nominal volts for logic 1 */ PARAMETER vmin; /* nominal volts for logic 0 */ PARAMETER unknown; /* nominal volts for unknown (bogus) */ /* ---- D to A conversion ---- */ PARAMETER rise; /* rise time (time in slope) */ PARAMETER fall; /* fall time (time in slope) */ PARAMETER rs; /* series resistance -- strong */ PARAMETER rw; /* series resistance -- weak */ /* ---- A to D conversion ---- */ PARAMETER th1; /* threshold for 1 as fraction of range */ PARAMETER th0; /* threshold for 0 as fraction of range */ /* ---- quality judgement parameters ---- */ PARAMETER mr; /* margin rise - how much worse rise can be */ PARAMETER mf; /* margin fall - how much worse fall can be */ PARAMETER over; /* overshoot limit - as fraction of range */ public: // calculated parameters double range; /* vmax - vmin */ private: static int _count; }; /*--------------------------------------------------------------------------*/ class INTERFACE COMMON_LOGIC : public COMMON_COMPONENT { protected: explicit COMMON_LOGIC(int c=0) :COMMON_COMPONENT(c), incount(0) {++_count;} explicit COMMON_LOGIC(const COMMON_LOGIC& p) :COMMON_COMPONENT(p), incount(p.incount) {++_count;} public: ~COMMON_LOGIC() {--_count;} bool operator==(const COMMON_COMPONENT&)const; static int count() {return _count;} virtual LOGICVAL logic_eval(const node_t*)const = 0; public: int incount; protected: static int _count; }; /*--------------------------------------------------------------------------*/ class LOGIC_AND : public COMMON_LOGIC { private: explicit LOGIC_AND(const LOGIC_AND& p) :COMMON_LOGIC(p){untested();++_count;} COMMON_COMPONENT* clone()const {untested(); return new LOGIC_AND(*this);} public: explicit LOGIC_AND(int c=0) :COMMON_LOGIC(c) {untested();} LOGICVAL logic_eval(const node_t* n)const {untested(); LOGICVAL out(n[0]->lv()); for (int ii=1; iilv(); } return out; } virtual std::string name()const {itested();return "and";} }; /*--------------------------------------------------------------------------*/ class LOGIC_NAND : public COMMON_LOGIC { private: explicit LOGIC_NAND(const LOGIC_NAND&p):COMMON_LOGIC(p){++_count;} COMMON_COMPONENT* clone()const {return new LOGIC_NAND(*this);} public: explicit LOGIC_NAND(int c=0) :COMMON_LOGIC(c) {} LOGICVAL logic_eval(const node_t* n)const {untested(); LOGICVAL out(n[0]->lv()); for (int ii=1; iilv(); } return ~out; } virtual std::string name()const {itested();return "nand";} }; /*--------------------------------------------------------------------------*/ class LOGIC_OR : public COMMON_LOGIC { private: explicit LOGIC_OR(const LOGIC_OR& p) :COMMON_LOGIC(p){untested();++_count;} COMMON_COMPONENT* clone()const {untested(); return new LOGIC_OR(*this);} public: explicit LOGIC_OR(int c=0) :COMMON_LOGIC(c) {untested();} LOGICVAL logic_eval(const node_t* n)const {untested(); LOGICVAL out(n[0]->lv()); for (int ii=1; iilv(); } return out; } virtual std::string name()const {itested();return "or";} }; /*--------------------------------------------------------------------------*/ class LOGIC_NOR : public COMMON_LOGIC { private: explicit LOGIC_NOR(const LOGIC_NOR& p) :COMMON_LOGIC(p) {++_count;} COMMON_COMPONENT* clone()const {return new LOGIC_NOR(*this);} public: explicit LOGIC_NOR(int c=0) :COMMON_LOGIC(c) {} LOGICVAL logic_eval(const node_t* n)const { LOGICVAL out(n[0]->lv()); for (int ii=1; iilv(); } return ~out; } virtual std::string name()const {return "nor";} }; /*--------------------------------------------------------------------------*/ class LOGIC_XOR : public COMMON_LOGIC { private: explicit LOGIC_XOR(const LOGIC_XOR& p) :COMMON_LOGIC(p){untested();++_count;} COMMON_COMPONENT* clone()const {untested(); return new LOGIC_XOR(*this);} public: explicit LOGIC_XOR(int c=0) :COMMON_LOGIC(c) {untested();} LOGICVAL logic_eval(const node_t* n)const {untested(); LOGICVAL out(n[0]->lv()); for (int ii=1; iilv(); } return out; } virtual std::string name()const {itested();return "xor";} }; /*--------------------------------------------------------------------------*/ class LOGIC_XNOR : public COMMON_LOGIC { private: explicit LOGIC_XNOR(const LOGIC_XNOR&p):COMMON_LOGIC(p){untested();++_count;} COMMON_COMPONENT* clone()const {untested(); return new LOGIC_XNOR(*this);} public: explicit LOGIC_XNOR(int c=0) :COMMON_LOGIC(c) {untested();} LOGICVAL logic_eval(const node_t* n)const {untested(); LOGICVAL out(n[0]->lv()); for (int ii=1; iilv(); } return ~out; } virtual std::string name()const {itested();return "xnor";} }; /*--------------------------------------------------------------------------*/ class LOGIC_INV : public COMMON_LOGIC { private: explicit LOGIC_INV(const LOGIC_INV& p) :COMMON_LOGIC(p){++_count;} COMMON_COMPONENT* clone()const {return new LOGIC_INV(*this);} public: explicit LOGIC_INV(int c=0) :COMMON_LOGIC(c) {} LOGICVAL logic_eval(const node_t* n)const { return ~n[0]->lv(); } virtual std::string name()const {return "inv";} }; /*--------------------------------------------------------------------------*/ class LOGIC_NONE : public COMMON_LOGIC { private: explicit LOGIC_NONE(const LOGIC_NONE&p):COMMON_LOGIC(p){itested();++_count;} COMMON_COMPONENT* clone()const {itested(); return new LOGIC_NONE(*this);} public: explicit LOGIC_NONE(int c=0) :COMMON_LOGIC(c) {} LOGICVAL logic_eval(const node_t*)const {untested(); return lvUNKNOWN; } virtual std::string name()const {untested();return "error";} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/declare.h�����������������������������������������������������������������������������������0000664�0000000�0000000�00000003232�13165012111�0014240�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: declare.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * global functions * A remnant of the old C code */ //testing=trivial 2006.07.17 #ifndef DECLARE_H #define DECLARE_H #include "md.h" class PROBELIST; /*--------------------------------------------------------------------------*/ /* fft */ INTERFACE void fft(COMPLEX*,int,int); /* generat */ INTERFACE double gen(); /* plot */ INTERFACE void plottr(double,const PROBELIST&); INTERFACE int plopen(double,double,const PROBELIST&); INTERFACE void plclose(); INTERFACE void plclear(); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_aux.h�������������������������������������������������������������������������������������0000664�0000000�0000000�00000003614�13165012111�0013746�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_aux.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * helper functions, etc., that sort of belong to circuit elements */ //testing=script 2007.07.13 #ifndef E_AUX_H #define E_AUX_H #include "e_node.h" /*--------------------------------------------------------------------------*/ template T port_impedance(const node_t& n1, const node_t& n2, BSMATRIX& mat, const T& parallel) { T* zapit = new T[mat.size()+2]; for (int ii = 0; ii < mat.size()+2; ++ii) { zapit[ii] = 0.; } if (n1.m_() != 0) { zapit[n1.m_()] = 1.; }else{untested(); } if (n2.m_() != 0) {untested(); zapit[n2.m_()] = -1.; }else{ } mat.fbsub(zapit); T raw_z = zapit[n1.m_()] - zapit[n2.m_()]; delete [] zapit; return (parallel != 0.) ? 1. / ((1./raw_z)-parallel) : raw_z; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ��������������������������������������������������������������������������������������������������������������������include/e_base.h������������������������������������������������������������������������������������0000664�0000000�0000000�00000006255�13165012111�0014067�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_base.h 2014/07/04 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * real base for anything to do with a circuit */ //testing=script 2014.07.04 #ifndef E_BASE_H #define E_BASE_H #include "md.h" /*--------------------------------------------------------------------------*/ // external class XPROBE; class WAVE; class OMSTREAM; class SIM_DATA; class PROBE_LISTS; /*--------------------------------------------------------------------------*/ class INTERFACE CKT_BASE { private: mutable int _probes; /* number of probes set */ std::string _label; public: static SIM_DATA* _sim; static PROBE_LISTS* _probe_lists; //-------------------------------------------------------------------- protected: // create and destroy explicit CKT_BASE() :_probes(0), _label() {} explicit CKT_BASE(const std::string& s) :_probes(0), _label(s) {} explicit CKT_BASE(const CKT_BASE& p) :_probes(0), _label(p._label) {} virtual ~CKT_BASE(); //-------------------------------------------------------------------- public: // user stuff virtual std::string help_text()const {return "";} virtual bool help(CS&, OMSTREAM&)const; virtual std::string status()const {untested();return "";} //-------------------------------------------------------------------- public: // probes double probe_num(const std::string&)const; double ac_probe_num(const std::string&)const; virtual double tr_probe_num(const std::string&)const; virtual XPROBE ac_probe_ext(const std::string&)const; void inc_probes()const {++_probes;} void dec_probes()const {assert(_probes>0); --_probes;} bool has_probes()const {return _probes > 0;} static double probe(const CKT_BASE*,const std::string&); static WAVE* find_wave(const std::string& probe_name); //-------------------------------------------------------------------- public: // label bool operator!=(const std::string& n)const {return strcasecmp(_label.c_str(),n.c_str())!=0;} virtual const std::string long_label()const; const std::string& short_label()const {return _label;} void set_label(const std::string& s) {_label = s;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_card.h������������������������������������������������������������������������������������0000664�0000000�0000000�00000015270�13165012111�0014063�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_card.h 2014.11.25 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for anything in a netlist or circuit file */ //testing=script 2007.07.13 #ifndef E_CARD_H #define E_CARD_H #include "e_base.h" /*--------------------------------------------------------------------------*/ // this file class CARD; /*--------------------------------------------------------------------------*/ // external class node_t; class CARD_LIST; class PARAM_LIST; class LANGUAGE; class TIME_PAIR; /*--------------------------------------------------------------------------*/ class INTERFACE CARD : public CKT_BASE { private: mutable int _evaliter; // model eval iteration number CARD_LIST* _subckt; CARD* _owner; bool _constant; // eval stays the same every iteration protected: node_t* _n; public: int _net_nodes; // actual number of "nodes" in the netlist //-------------------------------------------------------------------- public: // traversal functions CARD* find_in_my_scope(const std::string& name); const CARD* find_in_my_scope(const std::string& name)const; const CARD* find_in_parent_scope(const std::string& name)const; const CARD* find_looking_out(const std::string& name)const; //-------------------------------------------------------------------- protected: // create and destroy. explicit CARD(); explicit CARD(const CARD&); public: virtual ~CARD(); virtual CARD* clone()const = 0; virtual CARD* clone_instance()const {return clone();} //-------------------------------------------------------------------- public: // "elaborate" virtual void precalc_first() {} virtual void expand_first() {} virtual void expand() {} virtual void expand_last() {} virtual void precalc_last() {} virtual void map_nodes() {} //-------------------------------------------------------------------- public: // dc-tran virtual void tr_iwant_matrix() {} virtual void tr_begin() {} virtual void tr_restore() {} virtual void dc_advance() {} virtual void tr_advance() {} virtual void tr_regress() {} virtual bool tr_needs_eval()const {return false;} virtual void tr_queue_eval() {} virtual bool do_tr() {return true;} virtual bool do_tr_last() {return true;} virtual void tr_load() {} virtual TIME_PAIR tr_review(); //{return TIME_PAIR(NEVER,NEVER);} virtual void tr_accept() {} virtual void tr_unload() {untested();} //-------------------------------------------------------------------- public: // ac virtual void ac_iwant_matrix() {} virtual void ac_begin() {} virtual void do_ac() {} virtual void ac_load() {} //-------------------------------------------------------------------- public: // state, aux data virtual char id_letter()const {unreachable(); return '\0';} virtual int net_nodes()const {untested();return 0;} virtual bool is_device()const {return false;} virtual void set_slave() {untested(); assert(!subckt());} bool evaluated()const; void set_constant(bool c) {_constant = c;} bool is_constant()const {return _constant;} //-------------------------------------------------------------------- public: // owner, scope virtual CARD_LIST* scope(); virtual const CARD_LIST* scope()const; virtual bool makes_own_scope()const {return false;} CARD* owner() {return _owner;} const CARD* owner()const {return _owner;} void set_owner(CARD* o) {assert(!_owner||_owner==o); _owner=o;} //-------------------------------------------------------------------- public: // subckt CARD_LIST* subckt() {return _subckt;} const CARD_LIST* subckt()const {return _subckt;} void new_subckt(); void new_subckt(const CARD* model, PARAM_LIST* p); void renew_subckt(const CARD* model, PARAM_LIST* p); //void new_subckt(const CARD* model, CARD* owner, const CARD_LIST* scope, PARAM_LIST* p); //void renew_subckt(const CARD* model, CARD* owner, const CARD_LIST* scope, PARAM_LIST* p); //-------------------------------------------------------------------- public: // type virtual std::string dev_type()const {unreachable(); return "";} virtual void set_dev_type(const std::string&); //-------------------------------------------------------------------- public: // label -- in CKT_BASE // non-virtual void set_label(const std::string& s) //BASE // non-virtual const std::string& short_label()const //BASE /*virtual*/ const std::string long_label()const; // no further override //-------------------------------------------------------------------- public: // ports -- mostly defer to COMPONENT node_t& n_(int i)const; int connects_to(const node_t& node)const; //-------------------------------------------------------------------- public: // parameters virtual void set_param_by_name(std::string, std::string); virtual void set_param_by_index(int i, std::string&, int offset) {untested(); throw Exception_Too_Many(i, 0, offset);} virtual int param_count_dont_print()const {return 0;} virtual int param_count()const {return 0;} virtual bool param_is_printable(int)const {untested(); return false;} virtual std::string param_name(int)const {return "";} virtual std::string param_name(int i,int j)const {return (j==0) ? param_name(i) : "";} virtual std::string param_value(int)const {untested(); return "";} virtual std::string value_name()const = 0; //-------------------------------------------------------------------- public: // obsolete -- do not use in new code virtual bool use_obsolete_callback_parse()const {return false;} virtual bool use_obsolete_callback_print()const {return false;} virtual void print_args_obsolete_callback(OMSTREAM&,LANGUAGE*)const {unreachable();} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_cardlist.h��������������������������������������������������������������������������������0000664�0000000�0000000�00000013075�13165012111�0014760�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_cardlist.h,v 26.138 2013/04/24 02:32:27 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * "card" container -- list of circuit elements */ //testing=script,complete 2006.07.11 #ifndef E_CARDLIST_H #define E_CARDLIST_H #include "md.h" /*--------------------------------------------------------------------------*/ // defined here class CARD_LIST; /*--------------------------------------------------------------------------*/ // external class CARD; class PARAM_LIST; class NODE_MAP; class LANGUAGE; class TIME_PAIR; /*--------------------------------------------------------------------------*/ class INTERFACE CARD_LIST { private: const CARD_LIST* _parent; mutable NODE_MAP* _nm; mutable PARAM_LIST* _params; std::list _cl; public: // internal types typedef std::list::iterator iterator; typedef std::list::const_iterator const_iterator; class fat_iterator { private: CARD_LIST* _list; iterator _iter; private: explicit fat_iterator() {unreachable();} public: fat_iterator(const fat_iterator& p) : _list(p._list), _iter(p._iter) {} explicit fat_iterator(CARD_LIST* l, iterator i) : _list(l), _iter(i) {} bool is_end()const {return _iter == _list->end();} CARD* operator*() {return (is_end()) ? NULL : *_iter;} fat_iterator& operator++() {assert(!is_end()); ++_iter; return *this;} fat_iterator operator++(int) {assert(!is_end()); fat_iterator t(*this); ++_iter; return t;} bool operator==(const fat_iterator& x)const {unreachable(); assert(_list==x._list); return (_iter==x._iter);} bool operator!=(const fat_iterator& x)const {assert(_list==x._list); return (_iter!=x._iter);} iterator iter()const {return _iter;} CARD_LIST* list()const {return _list;} fat_iterator end()const {return fat_iterator(_list, _list->end());} void insert(CARD* c) {list()->insert(iter(),c);} }; // status queries bool is_empty()const {return _cl.empty();} const CARD_LIST* parent()const {return _parent;} // return an iterator iterator begin() {return _cl.begin();} iterator end() {return _cl.end();} iterator find_again(const std::string& short_name, iterator); iterator find_(const std::string& short_name) {return find_again(short_name, begin());} // return a const_iterator const_iterator begin()const {return _cl.begin();} const_iterator end()const {return _cl.end();} const_iterator find_again(const std::string& short_name, const_iterator)const; const_iterator find_(const std::string& short_name)const {return find_again(short_name, begin());} // add to it CARD_LIST& push_front(CARD* c) {_cl.push_front(c); return *this;} CARD_LIST& push_back(CARD* c) {_cl.push_back(c); return *this;} CARD_LIST& insert(CARD_LIST::iterator i, CARD* c) {_cl.insert(i, c); return *this;} // take things out CARD_LIST& erase(iterator i); CARD_LIST& erase(CARD* c); CARD_LIST& erase_all(); // operations on the whole list CARD_LIST& set_owner(CARD* owner); CARD_LIST& set_slave(); CARD_LIST& precalc_first(); CARD_LIST& expand(); CARD_LIST& precalc_last(); CARD_LIST& map_nodes(); CARD_LIST& tr_iwant_matrix(); CARD_LIST& tr_begin(); CARD_LIST& tr_restore(); CARD_LIST& dc_advance(); CARD_LIST& tr_advance(); CARD_LIST& tr_regress(); bool tr_needs_eval()const; CARD_LIST& tr_queue_eval(); bool do_tr(); CARD_LIST& tr_load(); TIME_PAIR tr_review(); CARD_LIST& tr_accept(); CARD_LIST& tr_unload(); CARD_LIST& ac_iwant_matrix(); CARD_LIST& ac_begin(); CARD_LIST& do_ac(); CARD_LIST& ac_load(); NODE_MAP* nodes()const {assert(_nm); return _nm;} PARAM_LIST* params(); PARAM_LIST* params()const; // more complex stuff void attach_params(PARAM_LIST* p, const CARD_LIST* scope); void shallow_copy(const CARD_LIST*); void map_subckt_nodes(const CARD* model, const CARD* owner); explicit CARD_LIST(); CARD_LIST(const CARD* model, CARD* owner, const CARD_LIST* scope, PARAM_LIST* p); ~CARD_LIST(); private: explicit CARD_LIST(const CARD_LIST&) {unreachable(); incomplete();} public: static CARD_LIST card_list; // in globals.cc }; /*--------------------------------------------------------------------------*/ INTERFACE CARD_LIST::fat_iterator findbranch(CS&,CARD_LIST::fat_iterator); /*--------------------------------------------------------------------------*/ inline CARD_LIST::fat_iterator findbranch(CS& cmd, CARD_LIST* cl) { assert(cl); return findbranch(cmd, CARD_LIST::fat_iterator(cl, cl->begin())); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_ccsrc.h�����������������������������������������������������������������������������������0000664�0000000�0000000�00000005631�13165012111�0014247�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_ccsrc.h 2014/11/23 al$ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * current controlled source base */ //testing=script 2007.07.13 #ifndef E_CCSRC_H #define E_CCSRC_H #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ class INTERFACE CCSRC_BASE : public ELEMENT { private: protected: explicit CCSRC_BASE() :ELEMENT(), _input_label(), _input(0) {} explicit CCSRC_BASE(const CCSRC_BASE& p) :ELEMENT(p), _input_label(p._input_label), _input(p._input) {} ~CCSRC_BASE() {} protected: // override virtual int max_nodes()const {return 3;} int ext_nodes()const {return 4;} int min_nodes()const {return 3;} int matrix_nodes()const {return 4;} int net_nodes()const {return 2;} int num_current_ports()const {return 1;} const std::string current_port_value(int)const {return _input_label;}; //void precalc_first(); //ELEMENT void expand_last(); //void precalc_last(); //ELEMENT bool tr_needs_eval()const {assert(!is_q_for_eval()); return true;} //void tr_queue_eval() //ELEMENT void tr_unload() {untested(); tr_unload_active();} double tr_involts()const {untested();return dn_diff(_n[IN1].v0(), _n[IN2].v0());} double tr_input()const {untested(); return _input->tr_amps();} double tr_involts_limited()const {return volts_limited(_n[IN1],_n[IN2]);} double tr_input_limited()const {return _input->tr_amps();} COMPLEX ac_involts()const {untested();return _n[IN1]->vac()-_n[IN2]->vac();} void set_port_by_index(int index, std::string& value); bool node_is_connected(int i)const; public: void set_parameters_cc(const std::string& Label, CARD* Parent, COMMON_COMPONENT* Common, double Value, const node_t& N0, const node_t& N1, ELEMENT* Input); protected: std::string _input_label; const ELEMENT* _input; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: �������������������������������������������������������������������������������������������������������include/e_compon.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000027707�13165012111�0014455�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_compon.h 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for all components */ //testing=script 2007.07.13 #ifndef E_COMPON_H #define E_COMPON_H #include "u_sim_data.h" #include "u_time_pair.h" #include "u_parameter.h" #include "e_card.h" /*--------------------------------------------------------------------------*/ // this file class COMMON_COMPONENT; class COMPONENT; /*--------------------------------------------------------------------------*/ // external class MODEL_CARD; class CS; class ELEMENT; class CARD_LIST; /*--------------------------------------------------------------------------*/ inline bool conchk(double o, double n, double a=OPT::abstol, double r=OPT::reltol) { return (std::abs(n-o) <= (r * std::abs(n) + a)); } /*--------------------------------------------------------------------------*/ struct Exception_Precalc :public Exception{ Exception_Precalc(const std::string& Message) :Exception(Message) { } }; /*--------------------------------------------------------------------------*/ enum {CC_STATIC=27342}; // mid-sized arbitrary positive int // pass this as an argument to a common constructor to mark it as static, // so it won't be deleted /*--------------------------------------------------------------------------*/ class INTERFACE COMMON_COMPONENT : public CKT_BASE { protected: PARAMETER _tnom_c; // specification temperature PARAMETER _dtemp; // rise over enclosing temperature PARAMETER _temp_c; // actual temperature of device PARAMETER _mfactor; // number of devices in parallel PARAMETER _value; private: std::string _modelname; mutable const MODEL_CARD* _model; int _attach_count; public: static void attach_common(COMMON_COMPONENT* c, COMMON_COMPONENT** to); static void detach_common(COMMON_COMPONENT** from); private: COMMON_COMPONENT& operator=(const COMMON_COMPONENT&) {unreachable(); return *this;} explicit COMMON_COMPONENT() : CKT_BASE() {unreachable();incomplete();} protected: explicit COMMON_COMPONENT(const COMMON_COMPONENT& p); explicit COMMON_COMPONENT(int c); public: virtual ~COMMON_COMPONENT(); void attach_model(const COMPONENT*)const; COMMON_COMPONENT& attach(const MODEL_CARD* m) {_model = m; return *this;} void set_modelname(const std::string& n) {_modelname = n;} void parse_modelname(CS&); virtual COMMON_COMPONENT* clone()const = 0; virtual bool use_obsolete_callback_parse()const {return false;} virtual bool use_obsolete_callback_print()const {return false;} virtual void parse_common_obsolete_callback(CS&); virtual void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; virtual bool has_parse_params_obsolete_callback()const {return false;} virtual bool is_trivial()const {return false;} virtual bool param_is_printable(int)const; virtual std::string param_name(int)const; virtual std::string param_name(int,int)const; virtual std::string param_value(int)const; virtual void set_param_by_name(std::string, std::string); void Set_param_by_name(std::string, std::string); //BUG// see implementation virtual void set_param_by_index(int, std::string&, int); virtual int param_count()const {return 4;} public: virtual void precalc_first(const CARD_LIST*) {} virtual void expand(const COMPONENT*) {} virtual COMMON_COMPONENT* deflate() {return this;} virtual void precalc_last(const CARD_LIST*); virtual void tr_eval(ELEMENT*)const; virtual void ac_eval(ELEMENT*)const; virtual TIME_PAIR tr_review(COMPONENT*)const {return TIME_PAIR(NEVER,NEVER);} virtual void tr_accept(COMPONENT*)const {} virtual bool has_tr_eval()const {untested(); return false;} virtual bool has_ac_eval()const {untested(); return false;} virtual bool parse_numlist(CS&); virtual bool parse_params_obsolete_callback(CS&); virtual void skip_type_tail(CS&)const {} virtual std::string name()const = 0; virtual bool operator==(const COMMON_COMPONENT&x)const; bool operator!=(const COMMON_COMPONENT& x)const {return !(*this == x);} std::string modelname()const {return _modelname;} const MODEL_CARD* model()const {assert(_model); return _model;} bool has_model()const {return _model;} const PARAMETER& mfactor()const {return _mfactor;} const PARAMETER& value()const {return _value;} private: bool parse_param_list(CS&); }; /*--------------------------------------------------------------------------*/ /* note on _attach_count ... * The int argument is the initial _attach_count (default = 0) * Set it to CC_STATIC for static default versions that will never be deleted. * Set it to 0 (default) for auto versions, so they can be deleted. * A common will not be deleted on a detach if its _attach_count != 0 * A failed assertion from the common destructor probably means * the common is being deleted before a device it is attached to is, * without being first detached. * This is why ~COMPONENT destroys the subckt explicitly. * * Static commons (CC_STATIC) must be in file scope, not in function scope, * because local statics are deleted first, before any globals. * //BUG// possible portability problem. What is deletion order? */ /*--------------------------------------------------------------------------*/ class INTERFACE COMPONENT : public CARD { private: COMMON_COMPONENT* _common; protected: PARAMETER _value; // value, for simple parts PARAMETER _mfactor; // number of devices in parallel private: double _mfactor_fixed; // composite, including subckt mfactor bool _converged; int _q_for_eval; public: TIME_PAIR _time_by; //-------------------------------------------------------------------- protected: // create and destroy. explicit COMPONENT(); explicit COMPONENT(const COMPONENT& p); ~COMPONENT(); //-------------------------------------------------------------------- public: // "elaborate" void precalc_first(); void expand(); void precalc_last(); //-------------------------------------------------------------------- public: // dc-tran void tr_iwant_matrix(); void tr_queue_eval(); TIME_PAIR tr_review(); void tr_accept(); double tr_probe_num(const std::string&)const; //-------------------------------------------------------------------- public: // ac void ac_iwant_matrix(); //-------------------------------------------------------------------- public: // state, aux data bool is_device()const {return true;} void set_slave(); void map_nodes(); virtual const std::string current_probe_name()const {untested(); return "";} static double volts_limited(const node_t& n1, const node_t& n2); bool converged()const {return _converged;} void set_converged(bool s=true) {_converged = s;} void set_not_converged() {_converged = false;} double mfactor()const { assert(_mfactor_fixed != NOT_VALID); #ifndef NDEBUG if (const COMPONENT* o = prechecked_cast(owner())) { assert(_mfactor_fixed == o->mfactor() * _mfactor); }else{ assert(_mfactor_fixed == _mfactor); } #endif return _mfactor_fixed; } //-------------------------------------------------------------------- // list and queue management bool is_q_for_eval()const {return (_q_for_eval >= _sim->iteration_tag());} void mark_q_for_eval() {_q_for_eval = _sim->iteration_tag();} void mark_always_q_for_eval() {_q_for_eval = INT_MAX;} void q_eval(); void q_load() {_sim->_loadq.push_back(this);} void q_accept() {_sim->_acceptq.push_back(this);} //-------------------------------------------------------------------- // model const MODEL_CARD* find_model(const std::string& name)const; void attach_model()const {assert(has_common()); _common->attach_model(this);} //-------------------------------------------------------------------- // common COMMON_COMPONENT* mutable_common() {return _common;} const COMMON_COMPONENT* common()const {return _common;} bool has_common()const {return _common;} void attach_common(COMMON_COMPONENT*c) {COMMON_COMPONENT::attach_common(c,&_common);} void detach_common() {COMMON_COMPONENT::detach_common(&_common);} void deflate_common(); //-------------------------------------------------------------------- public: // type void set_dev_type(const std::string& new_type); //-------------------------------------------------------------------- public: // ports virtual std::string port_name(int)const = 0; virtual void set_port_by_name(std::string& name, std::string& value); virtual void set_port_by_index(int index, std::string& value); bool port_exists(int i)const {return i < net_nodes();} const std::string port_value(int i)const; void set_port_to_ground(int index); virtual std::string current_port_name(int)const {return "";} virtual const std::string current_port_value(int)const; virtual void set_current_port_by_index(int, const std::string&) {unreachable();} bool current_port_exists(int i)const {return i < num_current_ports();} virtual int max_nodes()const {unreachable(); return 0;} virtual int min_nodes()const {unreachable(); return 0;} virtual int num_current_ports()const {return 0;} virtual int tail_size()const {return 0;} virtual int net_nodes()const {untested();return 0;} //override virtual int ext_nodes()const {return max_nodes();} virtual int int_nodes()const {return 0;} virtual int matrix_nodes()const {return 0;} virtual bool has_inode()const {return false;} virtual bool has_iv_probe()const {return false;} virtual bool is_source()const {return false;} virtual bool f_is_value()const {return false;} bool node_is_grounded(int i)const; virtual bool node_is_connected(int i)const; //-------------------------------------------------------------------- public: // parameters void set_param_by_name(std::string, std::string); void set_param_by_index(int, std::string&, int); int param_count()const {return ((has_common()) ? (common()->param_count()) : (2 + CARD::param_count()));} bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; virtual void set_parameters(const std::string& Label, CARD* Parent, COMMON_COMPONENT* Common, double Value, int state_count, double state[], int node_count, const node_t nodes[]); void set_value(const PARAMETER& v) {_value = v;} void set_value(double v) {_value = v;} void set_value(const std::string& v) {untested(); _value = v;} void set_value(double v, COMMON_COMPONENT* c); const PARAMETER& value()const {return _value;} //-------------------------------------------------------------------- public: // obsolete -- do not use in new code virtual bool print_type_in_spice()const = 0; bool use_obsolete_callback_parse()const; bool use_obsolete_callback_print()const; void print_args_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void obsolete_move_parameters_from_common(const COMMON_COMPONENT*); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ���������������������������������������������������������include/e_elemnt.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000035110�13165012111�0014431�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_elemnt.h 2016/09/11 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for simple elements */ //testing=script 2006.07.12 #ifndef E_ELEMNT_H #define E_ELEMNT_H #include "e_node.h" #include "m_cpoly.h" #include "l_denoise.h" #include "e_compon.h" /*--------------------------------------------------------------------------*/ class INTERFACE ELEMENT : public COMPONENT { protected: explicit ELEMENT(); explicit ELEMENT(const ELEMENT& p); ~ELEMENT() {} void store_values() {assert(_y[0]==_y[0]); _y1=_y[0];} //void reject_values() { _y0 = _y1;} public: double* set__value() {return _value.pointer_hack();} bool skip_dev_type(CS&); public: // override virtual bool print_type_in_spice()const {return false;} void precalc_last(); void tr_begin(); void tr_restore(); void dc_advance(); void tr_advance(); void tr_regress(); bool tr_needs_eval()const {/*assert(!is_q_for_eval());*/ return !is_constant();} #if 0 void tr_queue_eval() { if(tr_needs_eval()) { q_eval(); }else{ } } #endif TIME_PAIR tr_review(); //void map_nodes(); void tr_iwant_matrix() = 0; void ac_iwant_matrix() = 0; double tr_probe_num(const std::string&)const; XPROBE ac_probe_ext(const std::string&)const; protected: // inline, below double dampdiff(double*, const double&); void tr_load_inode(); void tr_unload_inode(); void ac_load_inode(); void tr_load_shunt(); void tr_unload_shunt(); void ac_load_shunt(); void tr_load_source(); void tr_unload_source(); void ac_load_source(); void tr_load_couple(); void tr_unload_couple(); void ac_load_couple(); void tr_load_passive(); void tr_unload_passive(); void ac_load_passive(); void tr_load_active(); void tr_unload_active(); void ac_load_active(); void tr_load_extended(const node_t& no1, const node_t& no2, const node_t& ni1, const node_t& ni2, double* value, double* old_value); void ac_load_extended(const node_t& no1, const node_t& no2, const node_t& ni1, const node_t& ni2, COMPLEX value); void tr_load_source_point(node_t& no1, double* value, double* old_value); void ac_load_source_point(node_t& no1, COMPLEX new_value); void tr_load_diagonal_point(const node_t& no1, double* value, double* old_value); void ac_load_diagonal_point(const node_t& no1, COMPLEX value); void tr_load_point(const node_t& no1, const node_t& no2, double* value, double* old_value); void ac_load_point(const node_t& no1, const node_t& no2, COMPLEX value); bool conv_check()const; bool has_tr_eval()const; bool has_ac_eval()const; bool using_tr_eval()const; bool using_ac_eval()const; void tr_eval(); void ac_eval(); protected: // in .cc void tr_iwant_matrix_passive(); void tr_iwant_matrix_active(); void tr_iwant_matrix_extended(); void ac_iwant_matrix_passive(); void ac_iwant_matrix_active(); void ac_iwant_matrix_extended(); public: double tr_review_trunc_error(const FPOLY1* q); double tr_review_check_and_convert(double timestep); double tr_outvolts()const {return dn_diff(_n[OUT1].v0(), _n[OUT2].v0());} double tr_outvolts_limited()const{return volts_limited(_n[OUT1],_n[OUT2]);} COMPLEX ac_outvolts()const {return _n[OUT1]->vac() - _n[OUT2]->vac();} virtual double tr_involts()const = 0; virtual double tr_input()const {return tr_involts();} virtual double tr_involts_limited()const = 0; virtual double tr_input_limited()const {return tr_involts_limited();} virtual double tr_amps()const; virtual COMPLEX ac_involts()const = 0; virtual COMPLEX ac_amps()const; virtual int order()const {return OPT::trsteporder;} virtual double error_factor()const {return OPT::trstepcoef[OPT::trsteporder];} int param_count()const {return (0 + COMPONENT::param_count());} protected: int _loaditer; // load iteration number private: node_t _nodes[NODES_PER_BRANCH]; // nodes (0,1:out, 2,3:in) public: CPOLY1 _m0; // matrix parameters, new CPOLY1 _m1; // matrix parameters, 1 fill ago double _loss0; // shunt conductance double _loss1; COMPLEX _acg; // ac admittance matrix values public: // commons COMPLEX _ev; // ac effective value (usually real) double _dt; double _time[OPT::_keep_time_steps]; FPOLY1 _y1; // iteration parameters, 1 iter ago FPOLY1 _y[OPT::_keep_time_steps]; /* charge or flux, and deriv. */ }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ inline double ELEMENT::dampdiff(double* v0, const double& v1) { //double diff = v0 - v1; assert(v0); assert(*v0 == *v0); assert(v1 == v1); double diff = dn_diff(*v0, v1); assert(diff == diff); if (!_sim->is_advance_or_first_iteration()) { diff *= _sim->_damp; *v0 = v1 + diff; }else{ } return mfactor() * ((_sim->is_inc_mode()) ? diff : *v0); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_inode() { double d = dampdiff(&_loss0, _loss1); if (d != 0.) { _sim->_aa.load_couple(_n[OUT1].m_(), _n[IN1].m_(), -d); _sim->_aa.load_couple(_n[OUT2].m_(), _n[IN1].m_(), d); }else{ } _loss1 = _loss0; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_unload_inode() {untested(); _loss0 = 0.; _sim->mark_inc_mode_bad(); tr_load_inode(); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_inode() { _sim->_acx.load_couple(_n[OUT1].m_(), _n[IN1].m_(), -mfactor() * _loss0); _sim->_acx.load_couple(_n[OUT2].m_(), _n[IN1].m_(), mfactor() * _loss0); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_shunt() { double d = dampdiff(&_loss0, _loss1); if (d != 0.) { _sim->_aa.load_symmetric(_n[OUT1].m_(), _n[OUT2].m_(), d); }else{ } _loss1 = _loss0; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_unload_shunt() {untested(); _loss0 = 0.; _sim->mark_inc_mode_bad(); tr_load_shunt(); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_shunt() { _sim->_acx.load_symmetric(_n[OUT1].m_(), _n[OUT2].m_(), mfactor() * _loss0); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_source() { #if !defined(NDEBUG) assert(_loaditer != _sim->iteration_tag()); // double load _loaditer = _sim->iteration_tag(); #endif double d = dampdiff(&_m0.c0, _m1.c0); if (d != 0.) { if (_n[OUT2].m_() != 0) { _n[OUT2].i() += d; }else{ } if (_n[OUT1].m_() != 0) { _n[OUT1].i() -= d; }else{ } }else{ } _m1 = _m0; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_unload_source() {untested(); _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load_source(); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_source() { if (_n[OUT2].m_() != 0) { _n[OUT2]->iac() += mfactor() * _acg; }else{ } if (_n[OUT1].m_() != 0) { _n[OUT1]->iac() -= mfactor() * _acg; }else{ } } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_couple() { double d = dampdiff(&_m0.c1, _m1.c1); if (d != 0.) { _sim->_aa.load_couple(_n[OUT1].m_(), _n[OUT2].m_(), d); }else{ } _m1.c1 = _m0.c1; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_unload_couple() {untested(); _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load_couple(); // includes _m1 = _m0 } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_couple() { _sim->_acx.load_couple(_n[OUT1].m_(), _n[OUT2].m_(), mfactor() * _acg); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_passive() { double d = dampdiff(&_m0.c1, _m1.c1); if (d != 0.) { _sim->_aa.load_symmetric(_n[OUT1].m_(), _n[OUT2].m_(), d); }else{ } tr_load_source(); // includes _m1 = _m0 } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_unload_passive() { _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load_passive(); // includes _m1 = _m0 } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_passive() { _sim->_acx.load_symmetric(_n[OUT1].m_(), _n[OUT2].m_(), mfactor() * _acg); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_active() { double d = dampdiff(&_m0.c1, _m1.c1); if (d != 0.) { _sim->_aa.load_asymmetric(_n[OUT1].m_(), _n[OUT2].m_(), _n[IN1].m_(), _n[IN2].m_(), d); }else{ } tr_load_source(); // includes _m1 = _m0 } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_unload_active() {untested(); _m0.c0 = _m0.c1 = 0.; _sim->mark_inc_mode_bad(); tr_load_active(); // includes _m1 = _m0 } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_active() { _sim->_acx.load_asymmetric(_n[OUT1].m_(), _n[OUT2].m_(), _n[IN1].m_(), _n[IN2].m_(), mfactor() * _acg); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_extended(const node_t& no1, const node_t& no2, const node_t& ni1, const node_t& ni2, double* new_value, double* old_value) { double d = dampdiff(new_value, *old_value); if (d != 0.) { _sim->_aa.load_asymmetric(no1.m_(), no2.m_(), ni1.m_(), ni2.m_(), d); }else{ } *old_value = *new_value; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_extended(const node_t& no1, const node_t& no2, const node_t& ni1, const node_t& ni2, COMPLEX new_value) { _sim->_acx.load_asymmetric(no1.m_(), no2.m_(), ni1.m_(), ni2.m_(), mfactor() * new_value); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_source_point(node_t& no1, double* new_value, double* old_value) { double d = dampdiff(new_value, *old_value); if (d != 0.) { if (no1.m_() != 0) { no1.i() += d; }else{ } }else{ } *old_value = *new_value; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_source_point(node_t& no1, COMPLEX new_value) {itested(); if (no1.m_() != 0) {itested(); no1->iac() += mfactor() * new_value; }else{itested(); } } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_diagonal_point(const node_t& no1, double* new_value, double* old_value) { double d = dampdiff(new_value, *old_value); if (d != 0.) { _sim->_aa.load_diagonal_point(no1.m_(), d); }else{ } *old_value = *new_value; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_diagonal_point(const node_t& no1, COMPLEX new_value) { _sim->_acx.load_diagonal_point(no1.m_(), mfactor() * new_value); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_load_point(const node_t& no1, const node_t& no2, double* new_value, double* old_value) { double d = dampdiff(new_value, *old_value); if (d != 0.) { _sim->_aa.load_point(no1.m_(), no2.m_(), d); }else{ } *old_value = *new_value; } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_load_point(const node_t& no1, const node_t& no2, COMPLEX new_value) {itested(); _sim->_acx.load_point(no1.m_(), no2.m_(), mfactor() * new_value); } /*--------------------------------------------------------------------------*/ inline bool ELEMENT::conv_check()const { return conchk(_y1.f1, _y[0].f1) && conchk(_y1.f0, _y[0].f0) && conchk(_y1.x, _y[0].x, OPT::vntol); } /*--------------------------------------------------------------------------*/ inline bool ELEMENT::has_tr_eval()const { return (has_common() && common()->has_tr_eval()); } /*--------------------------------------------------------------------------*/ inline bool ELEMENT::has_ac_eval()const { return (has_common() && common()->has_ac_eval()); } /*--------------------------------------------------------------------------*/ inline bool ELEMENT::using_tr_eval()const { return (has_probes() || has_tr_eval()); } /*--------------------------------------------------------------------------*/ inline bool ELEMENT::using_ac_eval()const { return (has_probes() || has_ac_eval()); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::tr_eval() { if (has_tr_eval()) { common()->tr_eval(this); }else{ // can get here if a simple device has probes _y[0].f1 = value(); _y[0].f0 = _y[0].x * _y[0].f1; } set_converged(conv_check()); } /*--------------------------------------------------------------------------*/ inline void ELEMENT::ac_eval() { if (has_ac_eval()) { common()->ac_eval(this); }else{ // can get here if a simple device has probes _ev = _y[0].f1; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_model.h�����������������������������������������������������������������������������������0000664�0000000�0000000�00000006102�13165012111�0014244�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_model.h 2015/01/27 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for all models */ //testing=script 2014.07.04 #ifndef E_MODEL_H #define E_MODEL_H #include "u_parameter.h" #include "e_card.h" /*--------------------------------------------------------------------------*/ // external class COMPONENT; class COMMON_COMPONENT; /*--------------------------------------------------------------------------*/ class SDP_CARD { private: explicit SDP_CARD() {unreachable();} explicit SDP_CARD(const SDP_CARD&) {unreachable();} public: explicit SDP_CARD(const COMMON_COMPONENT*) {} virtual ~SDP_CARD() {} virtual void init(const COMMON_COMPONENT*) {} }; /*--------------------------------------------------------------------------*/ class INTERFACE MODEL_CARD : public CARD{ private: explicit MODEL_CARD() {unreachable();} protected: explicit MODEL_CARD(const MODEL_CARD& p); public: explicit MODEL_CARD(const COMPONENT* p); ~MODEL_CARD(); public: // override virtuals char id_letter()const {untested();return '\0';} CARD* clone_instance()const {assert(_component_proto); return _component_proto->clone();} void precalc_first(); void set_param_by_index(int, std::string&, int); bool param_is_printable(int)const; std::string value_name()const {untested();return "";} std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (1 + CARD::param_count());} public: virtual void tr_eval(COMPONENT*)const{unreachable();} virtual void ac_eval(COMPONENT*)const{unreachable();} virtual COMMON_COMPONENT* new_common()const {return 0;} virtual SDP_CARD* new_sdp(COMMON_COMPONENT*)const {unreachable();return 0;}; virtual bool parse_params_obsolete_callback(CS&) {unreachable(); return false;} virtual bool is_valid(const COMPONENT*)const {return true;} const CARD* component_proto()const {untested(); return _component_proto;} protected: const CARD* _component_proto; public: PARAMETER _tnom_c; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_node.h������������������������������������������������������������������������������������0000664�0000000�0000000�00000026371�13165012111�0014103�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_node.h 2014/11/23 al$ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * circuit node class */ //testing=script,sparse 2006.07.11 #ifndef E_NODE_H #define E_NODE_H #include "u_sim_data.h" #include "e_base.h" /*--------------------------------------------------------------------------*/ class MODEL_LOGIC; /*--------------------------------------------------------------------------*/ enum { OUT1 = 0, OUT2 = 1, IN1 = 2, IN2 = 3, NODES_PER_BRANCH = 4, INVALID_NODE = -1 }; #define qBAD (0) #define qGOOD (OPT::transits) /*--------------------------------------------------------------------------*/ enum _LOGICVAL {lvSTABLE0,lvRISING,lvFALLING,lvSTABLE1,lvUNKNOWN}; enum {lvNUM_STATES = lvUNKNOWN+1}; /*--------------------------------------------------------------------------*/ class INTERFACE LOGICVAL { private: _LOGICVAL _lv; static const _LOGICVAL or_truth[lvNUM_STATES][lvNUM_STATES]; static const _LOGICVAL xor_truth[lvNUM_STATES][lvNUM_STATES]; static const _LOGICVAL and_truth[lvNUM_STATES][lvNUM_STATES]; static const _LOGICVAL not_truth[lvNUM_STATES]; public: LOGICVAL() :_lv(lvUNKNOWN) {} LOGICVAL(const LOGICVAL& p) :_lv(p._lv) {} LOGICVAL(_LOGICVAL p) :_lv(p) {} ~LOGICVAL() {} operator _LOGICVAL()const {return static_cast<_LOGICVAL>(_lv);} LOGICVAL& operator=(_LOGICVAL p) {_lv=p; return *this;} LOGICVAL& operator=(const LOGICVAL& p) {_lv=p._lv; return *this;} LOGICVAL& operator&=(LOGICVAL p) {untested(); _lv = and_truth[_lv][p._lv]; return *this;} LOGICVAL& operator|=(LOGICVAL p) {_lv = or_truth[_lv][p._lv]; return *this;} LOGICVAL operator^=(LOGICVAL p) {untested(); _lv = xor_truth[_lv][p._lv]; return *this;} LOGICVAL operator~()const {return not_truth[_lv];} bool is_unknown()const {return _lv == lvUNKNOWN;} bool lv_future()const {assert(_lv!=lvUNKNOWN); return _lv & 1;} bool lv_old()const {assert(_lv!=lvUNKNOWN); return _lv & 2;} bool is_rising() const {return _lv == lvRISING;} bool is_falling()const {return _lv == lvFALLING;} LOGICVAL& set_in_transition(LOGICVAL newval); }; /*--------------------------------------------------------------------------*/ class NODE : public CKT_BASE { private: int _user_number; //int _flat_number; //int _matrix_number; protected: explicit NODE(); private: // inhibited explicit NODE(const NODE& p); public: explicit NODE(const NODE* p); // u_nodemap.cc:49 (deep copy) explicit NODE(const std::string& s, int n); ~NODE() {} public: // raw data access (rvalues) int user_number()const {return _user_number;} //int flat_number()const {itested();return _flat_number;} public: // simple calculated data access (rvalues) int matrix_number()const {return _sim->_nm[_user_number];} int m_()const {return matrix_number();} public: // maniputation NODE& set_user_number(int n) {_user_number = n; return *this;} //NODE& set_flat_number(int n) {itested();_flat_number = n; return *this;} //NODE& set_matrix_number(int n){untested();_matrix_number = n;return *this;} public: // virtuals double tr_probe_num(const std::string&)const; XPROBE ac_probe_ext(const std::string&)const; double v0()const { assert(m_() >= 0); assert(m_() <= _sim->_total_nodes); return _sim->_v0[m_()]; } double vt1()const { assert(m_() >= 0); assert(m_() <= _sim->_total_nodes); return _sim->_vt1[m_()]; } COMPLEX vac()const { assert(m_() >= 0); assert(m_() <= _sim->_total_nodes); return _sim->_ac[m_()]; } //double vdc()const {untested();return _vdc[m_()];} //double& i() {untested();return _i[m_()];} /* lvalues */ COMPLEX& iac() { assert(m_() >= 0); assert(m_() <= _sim->_total_nodes); return _sim->_ac[m_()]; } }; extern NODE ground_node; /*--------------------------------------------------------------------------*/ class INTERFACE LOGIC_NODE : public NODE { private: const MODEL_LOGIC *_family; /* logic family */ int _d_iter; /* iteration of last update - digital */ int _a_iter; /* iteration of last update - analog */ double _final_time; /* time logic transition attains final state */ double _lastchange; /* time of last change */ double _old_lastchange; /* in case it rejects a step */ smode_t _mode; /* simulation mode (analog or digital)*/ LOGICVAL _lv; /* "logic value" (real type is LOGICVAL) */ LOGICVAL _old_lv; /* in case it rejects a step */ int _quality; /* quality of digital mode */ std::string _failure_mode; // so it is not pure virtual //const std::string long_label()const; public: // virtuals double tr_probe_num(const std::string&)const; //XPROBE ac_probe_ext(const std::string&)const; public: // raw data access (rvalues) LOGICVAL lv()const {return _lv;} int quality()const {return _quality;} const std::string& failure_mode()const {return _failure_mode;} int d_iter()const {return _d_iter;} int a_iter()const {return _a_iter;} double final_time()const {return _final_time;} double last_change_time()const {return _lastchange;} const MODEL_LOGIC* process()const {return _family;} double old_last_change_time()const {untested(); return _old_lastchange;} const LOGICVAL old_lv()const {return _old_lv;} public: // simple calculated data access (rvalues) bool lv_future()const {return lv().lv_future();} bool is_unknown()const {return lv().is_unknown();} bool in_transit()const {return final_time() < NEVER;} bool is_digital()const {return _mode == moDIGITAL;} bool is_analog()const {return _mode == moANALOG;} double annotated_logic_value()const; public: // calculated data access (rvalues) bool just_reached_stable()const; public: // raw data access (lvalues) void set_quality(int q) {_quality = q;} void set_failure_mode(const std::string& f) {_failure_mode = f;} void set_final_time(double t) {_final_time = t;} void set_d_iter() {_d_iter = _sim->iteration_tag();} void set_last_change_time() {_lastchange = _sim->_time0;} void set_last_change_time(double t) {_lastchange = t;} void set_lv(LOGICVAL v) {_lv = v;} void set_process(const MODEL_LOGIC* f) {_family = f;} void store_old_last_change_time() {_old_lastchange = last_change_time();} void store_old_lv() {_old_lv = lv();} void restore_lv() {untested(); set_lv(old_lv());} void set_mode(smode_t m) {_mode = m;} public: // other internal void set_bad_quality(const std::string& f) { set_quality(qBAD); set_failure_mode(f); } void set_good_quality(const std::string& f = "ok") { set_quality(qGOOD); set_failure_mode(f); } void dont_set_quality(const std::string& f = "don't know") { set_failure_mode(f); } void improve_quality() { if (quality() < qGOOD) { ++_quality; } } public: // action, used by logic void set_event(double delay, LOGICVAL v); void force_initial_value(LOGICVAL v); void propagate(); double to_analog(const MODEL_LOGIC*f); void to_logic(const MODEL_LOGIC*f); private: // inhibited explicit LOGIC_NODE(const LOGIC_NODE&):NODE(){incomplete();unreachable();} public: // general use explicit LOGIC_NODE(); ~LOGIC_NODE() {} public: // matrix LOGIC_NODE& set_a_iter() {_a_iter = _sim->iteration_tag(); return *this;} }; /*--------------------------------------------------------------------------*/ class INTERFACE node_t { private: static bool node_is_valid(int i) { if (i == INVALID_NODE) { }else if (i < 0) { unreachable(); }else if (i > NODE::_sim->_total_nodes) { unreachable(); }else{ } return i>=0 && i<=NODE::_sim->_total_nodes; } static int to_internal(int n) { assert(node_is_valid(n)); assert(NODE::_sim->_nm); return NODE::_sim->_nm[n]; } private: NODE* _nnn; int _ttt; // m == nm[t] if properly set up int _m; // mapped, after reordering public: int m_()const {return _m;} int t_()const { //assert(_nnn); //assert(_ttt == _nnn->flat_number()); return _ttt; } // e_cardlist.cc:CARD_LIST::map_subckt_nodes:436 and // e_node.h:node_t::map:263,265 only int e_()const { assert(_nnn); return ((_nnn) ? _nnn->user_number() : INVALID_NODE); } const NODE* n_()const {return _nnn;} NODE* n_() {return _nnn;} const std::string short_label()const {return ((n_()) ? (n_()->short_label()) : "?????");} void set_to_ground(CARD*); void new_node(const std::string&, const CARD*); void new_model_node(const std::string& n, CARD* d); void map_subckt_node(int* map_array, const CARD* d); bool is_grounded()const {return (e_() == 0);} bool is_connected()const {return (e_() != INVALID_NODE);} node_t& map() { if (t_() != INVALID_NODE) { assert(_nnn); _m=to_internal(t_()); }else{ assert(_m == INVALID_NODE); } return *this; } // e_compon.cc:COMPONENT::map_nodes:522 explicit node_t(); node_t(const node_t&); explicit node_t(NODE*); ~node_t() {} private: // raw data access (lvalues) LOGIC_NODE& data()const; public: //LOGIC_NODE& operator*()const {untested();return data();} const LOGIC_NODE* operator->()const {return &data();} LOGIC_NODE* operator->() {return &data();} node_t& operator=(const node_t& p); bool operator==(const node_t& p) {return _nnn==p._nnn && _ttt==p._ttt && _m==p._m;} public: double v0()const { assert(m_() >= 0); assert(m_() <= NODE::_sim->_total_nodes); assert(n_()); //assert(n_()->m_() == m_()); //assert(n_()->v0() == NODE::_sim->_v0[m_()]); return NODE::_sim->_v0[m_()]; } COMPLEX vac()const { assert(m_() >= 0); assert(m_() <= NODE::_sim->_total_nodes); assert(n_()); //assert(n_()->m_() == m_()); //assert(n_()->vac() == NODE::_ac[m_()]); return NODE::_sim->_ac[m_()]; } double& i() { assert(m_() >= 0); assert(m_() <= NODE::_sim->_total_nodes); return NODE::_sim->_i[m_()]; } #if 0 COMPLEX& iac() {untested(); assert(n_()); assert(n_()->m_() == m_()); assert(n_()->iac() == NODE::_ac[m_()]); //return n_()->iac(); return NODE::_sim->_ac[m_()]; } #endif }; /*--------------------------------------------------------------------------*/ INTERFACE double volts_limited(const node_t& n1, const node_t& n2); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/e_paramlist.h�������������������������������������������������������������������������������0000664�0000000�0000000�00000004625�13165012111�0015150�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: d_subckt.h 2016/09/17 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * data structures for subcircuits */ //testing=script 2016.09.16 #ifndef D_SUBCKT_H #define D_SUBCKT_H #include "e_compon.h" /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class INTERFACE COMMON_PARAMLIST : public COMMON_COMPONENT { private: explicit COMMON_PARAMLIST(const COMMON_PARAMLIST& p) :COMMON_COMPONENT(p), _params(p._params) {++_count;} public: explicit COMMON_PARAMLIST(int c=0) :COMMON_COMPONENT(c) {++_count;} ~COMMON_PARAMLIST() {--_count;} bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new COMMON_PARAMLIST(*this);} std::string name()const {untested();return "";} static int count() {untested();return _count;} void set_param_by_name(std::string Name, std::string Value) {_params.set(Name, Value);} bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int,int)const; std::string param_value(int)const; int param_count()const {return (static_cast(_params.size()) + COMMON_COMPONENT::param_count());} void precalc_first(const CARD_LIST*); void precalc_last(const CARD_LIST*); private: static int _count; public: PARAM_LIST _params; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: �����������������������������������������������������������������������������������������������������������include/e_storag.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000005735�13165012111�0014456�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_storag.h,v 26.127 2009/11/09 16:06:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * "base" class for energy storage elements (L & C) */ //testing=script,complete 2007.07.13 #ifndef E_STORAGE_H #define E_STORAGE_H #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ enum METHOD {mTRAPGEAR, mEULER, mTRAP, mGEAR, mTRAPEULER}; /*--------------------------------------------------------------------------*/ INTERFACE FPOLY1 differentiate(const FPOLY1* q, const FPOLY1* i, double* time, METHOD method); /*--------------------------------------------------------------------------*/ class INTERFACE STORAGE : public ELEMENT { private: protected: explicit STORAGE() :ELEMENT(), _method_u(meUNKNOWN), _method_a(mTRAPGEAR) {} explicit STORAGE(const STORAGE& p) :ELEMENT(p), _method_u(p._method_u), _method_a(p._method_a) {} ~STORAGE() {} public: // override virtual //void precalc_first(); //ELEMENT //void expand(); //COMPONENT void precalc_last(); void tr_begin(); void tr_restore(); void dc_advance(); void tr_advance(); //void tr_regress(); //ELEMENT bool tr_needs_eval()const; //void tr_queue_eval() //ELEMENT TIME_PAIR tr_review(); double tr_probe_num(const std::string&)const; public: double tr_c_to_g(double c, double g)const; private: int order()const { const int o[] = {1, 1, 2, 1, 1}; int ord = o[_method_a]; assert(ord < OPT::_keep_time_steps); return ord; } double error_factor()const { const double f[]={1./2., 1./2., 1./12., 1./6., 1./2.}; return f[_method_a]; } public: // used by commons method_t _method_u; /* method to use for this part per user */ METHOD _method_a; /* actual integration method (auto) */ protected: FPOLY1 _i[OPT::_keep_time_steps]; /* deriv of _q */ protected: static METHOD method_select[meNUM_METHODS][meNUM_METHODS]; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: �����������������������������������include/e_subckt.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000006261�13165012111�0014445�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: e_subckt.h,v 26.126 2009/10/16 05:29:28 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for elements made of subcircuits */ //testing=script 2006.07.12 #ifndef E_SUBCKT_H #define E_SUBCKT_H #include "e_compon.h" /*--------------------------------------------------------------------------*/ class BASE_SUBCKT : public COMPONENT { protected: explicit BASE_SUBCKT() :COMPONENT() {} explicit BASE_SUBCKT(const BASE_SUBCKT& p) :COMPONENT(p) {} ~BASE_SUBCKT() {} protected: // override virtual //char id_letter()const //CARD/null std::string dev_type()const {assert(common()); return common()->modelname();} int tail_size()const {return 1;} //int max_nodes()const //COMPONENT/null //int num_nodes()const //COMPONENT/null //int min_nodes()const //COMPONENT/null int matrix_nodes()const {return 0;} int net_nodes()const {return _net_nodes;} //CARD* clone()const //CARD/null //void precalc_first() {assert(subckt()); subckt()->precalc();} //void expand() //COMPONENT //void precalc_last() {assert(subckt()); subckt()->precalc();} //void map_nodes(); void tr_begin() {assert(subckt()); subckt()->tr_begin();} void tr_restore() {assert(subckt()); subckt()->tr_restore();} void dc_advance() {assert(subckt()); subckt()->dc_advance();} void tr_advance() {assert(subckt()); subckt()->tr_advance();} void tr_regress() {assert(subckt()); subckt()->tr_regress();} bool tr_needs_eval()const {assert(subckt()); return subckt()->tr_needs_eval();} void tr_queue_eval() {assert(subckt()); subckt()->tr_queue_eval();} bool do_tr() {assert(subckt());set_converged(subckt()->do_tr());return converged();} void tr_load() {assert(subckt()); subckt()->tr_load();} TIME_PAIR tr_review() {assert(subckt()); return _time_by = subckt()->tr_review();} void tr_accept() {assert(subckt()); subckt()->tr_accept();} void tr_unload() {assert(subckt()); subckt()->tr_unload();} void ac_begin() {assert(subckt()); subckt()->ac_begin();} void do_ac() {assert(subckt()); subckt()->do_ac();} void ac_load() {assert(subckt()); subckt()->ac_load();} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/globals.h�����������������������������������������������������������������������������������0000664�0000000�0000000�00000003506�13165012111�0014270�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: globals.h 2016/05/15 al $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * declarations of globals that are exported to plugins */ #include "l_dispatcher.h" extern INTERFACE const char* lib_version(); class CMD; class COMMON_COMPONENT; class MODEL_CARD; class CARD; class LANGUAGE; class FUNCTION; class CKT_BASE; class PROBELIST; extern INTERFACE DISPATCHER command_dispatcher; extern INTERFACE DISPATCHER bm_dispatcher; extern INTERFACE DISPATCHER model_dispatcher; extern INTERFACE DISPATCHER device_dispatcher; extern INTERFACE DISPATCHER language_dispatcher; extern INTERFACE DISPATCHER function_dispatcher; extern INTERFACE DISPATCHER measure_dispatcher; extern INTERFACE DISPATCHER status_dispatcher; extern INTERFACE DISPATCHER help_dispatcher; extern INTERFACE DISPATCHER probe_dispatcher; extern INTERFACE std::string head; // vim:ts=8:sw=2:noet: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/io_.h���������������������������������������������������������������������������������������0000664�0000000�0000000�00000011662�13165012111�0013415�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: io_.h 2016/05/15 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * shared data for all io functions * other io related stuff, like files and formatting */ //testing=script 2006.07.17 #ifndef IO_H #define IO_H #include "l_lib.h" /*--------------------------------------------------------------------------*/ class CS; const int MAXHANDLE = CHAR_BIT*sizeof(int)-1; /*--------------------------------------------------------------------------*/ class INTERFACE OMSTREAM { private: static FILE* _stream[MAXHANDLE+1]; static unsigned _cpos[MAXHANDLE+1];/* character counter */ int _mask; int _fltdig; /* max precision for float/double numbers */ int _fltwid; /* fixed(min)width for float/double numbers */ int _format; /* how to format io. Basic option. */ bool _cipher; /* flag: encrypt output file */ bool _pack; /* flag: convert whitespace to tabs on out */ OMSTREAM(int m) :_mask(m),_fltdig(7),_fltwid(0),_format(0),_cipher(false),_pack(false) {} public: explicit OMSTREAM(FILE* f = 0) :_mask(0),_fltdig(7),_fltwid(0),_format(0),_cipher(false), _pack(false) { if (f) { for (int ii=1; ; ++ii) { if (_stream[ii] == 0) { _stream[ii] = f; _mask = 1 << ii; break; }else if (_stream[ii] == f) { _mask = 1 << ii; break; }else if (ii >= MAXHANDLE) {unreachable(); break; }else{ // keep looking } } }else{ } } OMSTREAM& operator=(const OMSTREAM& x) {_mask = x._mask; return *this;} OMSTREAM& attach(const OMSTREAM& x) {itested();_mask |= x._mask; return *this;} OMSTREAM& attach(FILE* f) {itested();return attach(OMSTREAM(f));} OMSTREAM& detach(const OMSTREAM& x) {_mask &= ~(x._mask); return *this;} OMSTREAM& detach(FILE* f) {itested();return detach(OMSTREAM(f));} OMSTREAM operator-(const OMSTREAM& y) {OMSTREAM x = *this; return x.detach(y);} OMSTREAM operator+(const OMSTREAM& y) {OMSTREAM x = *this; return x.attach(y);} //OMSTREAM& operator<<=(const OMSTREAM& x) {untested();_mask <<= x._mask; return *this;} bool any()const {return _mask != 0;} bool cipher()const {return _cipher;} bool pack()const {return _pack;} int format()const {return _format;} OMSTREAM& setcipher(bool x=true) {untested(); _cipher=x; return *this;} OMSTREAM& setpack(bool x=true) {itested(); _pack=x; return *this;} OMSTREAM& setfloatwidth(int d,int w=0) {_fltdig=d; _fltwid=w; return *this;} OMSTREAM& setformat(int f) {_format=f; return *this;} OMSTREAM& reset() {_fltdig=7;_fltwid=0;_format=0; _cipher=_pack=false; return *this;} /* out */ OMSTREAM& tab(unsigned); OMSTREAM& tab(int p) {return tab(static_cast(p));} OMSTREAM& form(const char*,...); OMSTREAM& operator<<(char c); OMSTREAM& operator<<(const char* s); OMSTREAM& operator<<(double x) {return (*this)< * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=trivial 2006.07.17 #ifndef IO_ERROR_H_INCLUDED #define IO_ERROR_H_INCLUDED #ifndef MD_H_INCLUDED #include "md.h" #endif /*--------------------------------------------------------------------------*/ /* arg to error() (badness) to decide severity of exception */ #define bNOERROR 0 #define bTRACE 1 #define bLOG 2 #define bDEBUG 3 #define bPICKY 4 #define bWARNING 5 #define bDANGER 6 INTERFACE void error(int,const char*,...); INTERFACE void error(int,const std::string&); INTERFACE std::string to_string(int); /*--------------------------------------------------------------------------*/ struct Exception { std::string _message; virtual const std::string message()const {return _message;} Exception(const std::string& Message) :_message(Message) { } virtual ~Exception() {} }; class CS; struct INTERFACE Exception_CS :public Exception { std::string _cmd; unsigned _cursor; const std::string message()const; //Exception_CS(const std::string& Message, const CS& cmd, unsigned cursor); Exception_CS(const std::string& Message, const CS& cmd); }; struct Exception_No_Match :public Exception{ std::string _key; Exception_No_Match(const std::string& key) :Exception("no match: " + key), _key(key) { } }; struct Exception_Cant_Find :public Exception{ std::string _device, _key, _scope; Exception_Cant_Find(const std::string& dev, const std::string& key, const std::string& scope) :Exception(dev + ": can't find: " + key + " in " + scope), _device(dev), _key(key), _scope(scope) { } Exception_Cant_Find(const std::string& dev, const std::string& key) :Exception(dev + ": can't find: " + key), _device(dev), _key(key), _scope("") { } }; struct Exception_Too_Many :public Exception{ int _requested, _max, _offset; Exception_Too_Many(int requested, int max, int offset) :Exception("too many: requested=" + to_string(requested+offset) + " max=" + to_string(max+offset)), _requested(requested), _max(max), _offset(offset) { } }; struct Exception_Type_Mismatch :public Exception{ std::string _device, _name, _need_type; Exception_Type_Mismatch(const std::string& dev, const std::string& name, const std::string& type) :Exception(dev + ": " + name + " is not a " + type), _device(dev), _name(name), _need_type(type) { } }; struct Exception_Model_Type_Mismatch :public Exception{ std::string _device, _modelname, _need_type; Exception_Model_Type_Mismatch(const std::string& d, const std::string& m, const std::string& n) :Exception(d + ": model " + m + " is not a " + n), _device(d), _modelname(m), _need_type(n) { } }; struct Exception_End_Of_Input :public Exception{ Exception_End_Of_Input(const std::string& Message) :Exception(Message) { } }; struct Exception_Quit :public Exception{ Exception_Quit(const std::string& Message) :Exception(Message) { } }; struct Exception_File_Open :public Exception{ Exception_File_Open(const std::string& Message) :Exception(Message) { } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/io_trace.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000016365�13165012111�0014441�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: io_trace.h 2016.08.11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis, * 2015,16 Felix Salfelder * Author: Albert Davis , Felix Salfelder * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * trace macros for model debugging */ //testing=trivial 2006.07.17 #include /* allow multiple inclusions with different DO_TRACE */ #undef trace_line #undef trace #undef trace0 #undef trace1 #undef trace2 #undef trace3 #undef trace4 #undef trace5 #undef trace6 #undef trace7 #undef trace8 #undef untested #undef itested #undef unreachable #undef incomplete /*--------------------------------------------------------------------------*/ #ifdef DO_TRACE #ifdef __cplusplus #define trace_line() (std::cerr << "@@#\n@#@:" \ << __FILE__ << ":" << __LINE__ << ":" << __func__ << "\n" ) #define trace0(s) ( std::cerr << "@#@" << (s) << "\n") #define trace1(s,x) ( \ std::cerr << "@#@" << (s) << " " << #x << "=" << (x) \ << "\n" ) #define trace2(s,x,y) ( \ std::cerr << "@#@" << (s) << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << "\n" ) #define trace3(s,x,y,z) ( \ std::cerr << "@#@" << (s) << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << " " << #z << "=" << (z) \ << "\n" ) #define trace4(s,w,x,y,z) ( \ std::cerr << "@#@" << (s) << " " << #w << "=" << (w) \ << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << " " << #z << "=" << (z) \ << "\n" ) #define trace5(s,v,w,x,y,z) ( \ std::cerr << "@#@" << (s) << " " << #v << "=" << (v) \ << " " << #w << "=" << (w) \ << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << " " << #z << "=" << (z) \ << "\n" ) #define trace6(s,u,v,w,x,y,z) ( \ std::cerr << "@#@" << (s) \ << " " << #u << "=" << (u) \ << " " << #v << "=" << (v) \ << " " << #w << "=" << (w) \ << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << " " << #z << "=" << (z) \ << "\n" ) #define trace7(s,t,u,v,w,x,y,z) ( \ std::cerr << "@#@" << (s) \ << " " << #t << "=" << (t) \ << " " << #u << "=" << (u) \ << " " << #v << "=" << (v) \ << " " << #w << "=" << (w) \ << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << " " << #z << "=" << (z) \ << "\n" ) #define trace8(s,r,t,u,v,w,x,y,z) ( \ std::cerr << "@#@" << (s) \ << " " << #r << "=" << (r) \ << " " << #t << "=" << (t) \ << " " << #u << "=" << (u) \ << " " << #v << "=" << (v) \ << " " << #w << "=" << (w) \ << " " << #x << "=" << (x) \ << " " << #y << "=" << (y) \ << " " << #z << "=" << (z) \ << "\n" ) #else // no __cplusplus #define trace_line() (printf("@@#\n@#@:%s:%u:%s\n", \ __FILE__, __LINE__, __func__)) #define trace0(s) (printf("@#@%s\n", s)) #define trace1(s,x) (printf("@#@%s %s=%g\n", s, #x, (double)(x))) #define trace2(s,x,y) (printf("@#@%s %s=%g %s=%g\n",\ s, #x, (double)(x), #y, (double)(y))) #define trace3(s,x,y,z) (printf("@#@%s %s=%g %s=%g %s=%g\n",\ s, #x, (double)(x), #y, (double)(y), #z, (double)(z))) #define trace4(s,w,x,y,z)(printf("@#@%s %s=%g %s=%g %s=%g %s=%g\n",\ s, #w, (double)(w), #x, (double)(x), #y, (double)(y), #z, (double)(z))) #define trace5(s,v,w,x,y,z)\ (printf("@#@%s %s=%g %s=%g %s=%g %s=%g %s=%g\n",\ s, #v, (double)(v), #w, (double)(w), #x, (double)(x),\ #y, (double)(y), #z, (double)(z))) #endif // __cplusplus #else #define USE(x) (1)?(void)(0):(void)(x) #define trace_line() #define trace0(s) USE(s) #define trace1(s,x) (USE(s),USE(x)) #define trace2(s,x,y) USE(s);USE(x);USE(y) #define trace3(s,x,y,z) USE(s);USE(x);USE(y);USE(z) #define trace4(s,w,x,y,z) USE(s);USE(w);USE(x);USE(y);USE(z) #define trace5(s,v,w,x,y,z) USE(s);USE(v);USE(w);USE(x);USE(y);USE(z) #define trace6(s,u,v,w,x,y,z) USE(s);USE(u);USE(v);USE(w);USE(x);USE(y);USE(z) #define trace7(s,t,u,v,w,x,y,z) USE(s);USE(t);USE(u);USE(v);USE(w);USE(x);USE(y);USE(z) #define trace8(r,s,t,u,v,w,x,y,z) USE(r);USE(s);USE(t);USE(u);USE(v);USE(w);USE(x);USE(y);USE(z) #endif #ifdef __cplusplus #define unreachable() ( \ std::cerr << "@@#\n@@@\nunreachable:" \ << __FILE__ << ":" << __LINE__ << ":" << __func__ << "\n" ) #define incomplete() ( \ std::cerr << "@@#\n@@@\nincomplete:" \ << __FILE__ << ":" << __LINE__ << ":" << __func__ << "\n" ) #else // no __cplusplus #define unreachable() (fprintf(stderr,"@@#\n@@@unreachable:%s:%u:%s\n", \ __FILE__, __LINE__, __func__)) #define incomplete() (fprintf(stderr,"@@#\n@@@incomplete:%s:%u:%s\n", \ __FILE__, __LINE__, __func__)) #endif // __cplusplus #ifdef TRACE_UNTESTED #ifdef __cplusplus #define untested() ( std::cerr << "@@#\n@@@:"<< __FILE__ << ":"<< __LINE__ \ <<":" << __func__ << "\n" ) #define untested1(s,x) ( std::cerr << "@@#\n@@@:"<< __FILE__ << ":"<< __LINE__ \ <<":" << __func__ << ": " << s << " " << #x << "=" << (x) << "\n" ) #define untested2(s,x,y) ( std::cerr << "@@#\n@@@:"<< __FILE__ << ":"<< __LINE__ \ <<":" << __func__ << ": " << s << " " << #x << "=" << (x) << ", "\ << #y << "=" << (y) << "\n" ) #define untested3(s,x,y,z) ( std::cerr << "@@#\n@@@:"<< __FILE__ << ":"<< __LINE__ \ <<":" << __func__ << ": " << s << " " << #x << "=" << (x) << ", "\ << #y << "=" << (y) << ", " \ << #z << "=" << (z) << "\n" ) #else // no __cplusplus #define untested() (fprintf(stderr,"@@#\n@@@:%s:%u:%s\n", \ __FILE__, __LINE__, __func__)) #endif // __cplusplus #else #define untested() #define untested1(s,x) #define untested2(s,x,y) #define untested3(s,x,y,z) #endif #ifdef TRACE_ITESTED #ifdef __cplusplus #define itested() ( std::cerr << "@@#\n@@@:" \ << __FILE__ << ":" << __LINE__ << ":" << __func__ << "\n" ) #else // no __cplusplus #define itested() (fprintf(stderr,"@@#\n@@@:%s:%u:%s\n", \ __FILE__, __LINE__, __func__)) #endif // __cplusplus #else #define itested() #endif /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/l_compar.h����������������������������������������������������������������������������������0000664�0000000�0000000�00000003306�13165012111�0014437�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: l_compar.h,v 26.98 2008/10/24 06:10:07 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script,complete 2006.07.13 #ifndef L_COMPAR_H #define L_COMPAR_H #include "md.h" /*--------------------------------------------------------------------------*/ /* uporder: returns true if a,b,c are in non-decreasing order */ template inline bool up_order(T a, T b, T c) { return (a<=b) && (b<=c); } /* inorder: returns true if b is between a and c */ template inline bool in_order(T a, T b, T c) { return up_order(a,b,c) || up_order(c,b,a); } /* torange: returns b, clipped to range a..c */ template inline T to_range(T a, T b, T c) { return std::min(std::max(a,b),c); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������include/l_denoise.h���������������������������������������������������������������������������������0000664�0000000�0000000�00000004577�13165012111�0014617�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: l_denoise.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * functions to "de-noise" arithmetic * attempt to get rid of noise due to roundoff */ //testing=script,complete 2006.07.13 #ifndef L_DENOISE_H #define L_DENOISE_H #include "u_opt.h" /*--------------------------------------------------------------------------*/ /* fixzero: force numbers near zero to zero - changes thru pointer */ inline void fixzero(double *z, double r) { assert(z); assert(*z == *z); assert(r == r); if (std::abs(*z) < std::abs(r*OPT::roundofftol)) { *z=0.; } } /*--------------------------------------------------------------------------*/ /* fixzero: force numbers near zero to zero - returns value */ inline double fixzero(double z, double r) { assert(z == z); assert(r == r); return (std::abs(z) < std::abs(r*OPT::roundofftol)) ? 0. : z; } /*--------------------------------------------------------------------------*/ /* dn_diff: de-noised difference */ inline double dn_diff(double a, double b) { assert(a == a); assert(b == b); return fixzero(a-b, a); } /*--------------------------------------------------------------------------*/ #if 0 /* dn_sum: de-noised sum */ inline double dn_sum(double a, double b) { untested(); assert(a == a); assert(b == b); return fixzero(a+b, a); } #endif /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: ���������������������������������������������������������������������������������������������������������������������������������include/l_dispatcher.h������������������������������������������������������������������������������0000664�0000000�0000000�00000014733�13165012111�0015312�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/*$Id: l_dispatcher.h 2016/03/29 al -*- C++ -*- * Copyright (C) 2006 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * dispatcher -- for dynamically loaded modules */ //testing=script 2015.01.21 #ifndef L_DISPATCHER_H #define L_DISPATCHER_H #include "e_base.h" #include "l_stlextra.h" #include "u_opt.h" #include "ap.h" /*--------------------------------------------------------------------------*/ class DISPATCHER_BASE { protected: std::map * _map; private: explicit DISPATCHER_BASE(DISPATCHER_BASE*) {unreachable();incomplete();} public: DISPATCHER_BASE() /*: _map(new std::map)*/ { if (!_map) { _map = new std::map; }else{unreachable(); puts("build error: link order: constructing dispatcher that already has contents\n"); } } ~DISPATCHER_BASE() { #if !defined(NDEBUG) for (typename std::map::iterator ii = _map->begin(); ii != _map->end(); ++ii) { assert(!(ii->second)); } #endif delete _map; _map = NULL; } typedef std::map::const_iterator const_iterator; //class const_iterator : public std::map::const_iterator {}; const_iterator begin()const {assert(_map); return _map->begin();} const_iterator end()const {assert(_map); return _map->end();} CKT_BASE* operator[](std::string s) { assert(_map); CKT_BASE* rv = (*_map)[s]; if (!rv && OPT::case_insensitive) { notstd::to_lower(&s); rv = (*_map)[s]; }else{ } return rv; } }; /*--------------------------------------------------------------------------*/ template class INTERFACE DISPATCHER : public DISPATCHER_BASE { public: void install(const std::string& s, TT* p) { assert(s.find(',', 0) == std::string::npos); if (!_map) {unreachable(); puts("build error: link order: dispatcher not yet constructed\n"); _map = new std::map; }else{ } trace0(s.c_str()); // loop over all keys, separated by '|' for (std::string::size_type // bss: begin sub-string bss = 0, ess = s.find('|', bss); // ess: end sub-string bss != std::string::npos; bss = (ess != std::string::npos) ? ess+1 : std::string::npos, ess = s.find('|', bss)) { std::string name = s.substr(bss, (ess != std::string::npos) ? ess-bss : std::string::npos); trace2(name.c_str(), bss, ess); if (name == "") {untested(); // quietly ignore empty string }else if ((*_map)[name]) { // duplicate .. stash the old one so we can get it back error(bWARNING, name + ": already installed, replacing\n"); std::string save_name = name + ":0"; for (int ii = 0; (*_map)[save_name]; ++ii) {untested(); save_name = name + ":" + to_string(ii); } (*_map)[save_name] = (*_map)[name]; error(bWARNING, "stashing as " + save_name + "\n"); }else{ // it's new, just put it in } (*_map)[name] = p; } } void uninstall(TT* p) { assert(_map); for (typename std::map::iterator ii = _map->begin(); ii != _map->end(); ++ii) { if (ii->second == p) { ii->second = NULL; }else{ } } #if !defined(NDEBUG) for (typename std::map::iterator ii = _map->begin(); ii != _map->end(); ++ii) { assert(ii->second != p); } #endif } void uninstall(const std::string& s) {untested(); assert(_map); // loop over all keys, separated by '|' for (std::string::size_type // bss: begin sub-string bss = 0, ess = s.find('|', bss); // ess: end sub-string bss != std::string::npos; bss = (ess != std::string::npos) ? ess+1 : std::string::npos, ess = s.find('|', bss)) {untested(); std::string name = s.substr(bss, (ess != std::string::npos) ? ess-bss : std::string::npos); if (name == "") {untested(); // quietly ignore empty string }else if ((*_map)[name]) {untested(); // delete, try to get back the old one int ii = 0; std::string save_name = name + ":0"; for (ii = 0; (*_map)[save_name]; ++ii) {untested(); save_name = name + ":" + to_string(ii); } if (ii > 1) {untested(); save_name = name + ":" + to_string(ii-2); (*_map)[name] = (*_map)[save_name]; (*_map)[save_name] = NULL; error(bWARNING, "restoring " + save_name + " as " + name + "\n"); }else{untested(); (*_map)[name] = NULL; } }else{untested(); error(bWARNING, name + ": not installed, doing nothing\n"); } } } TT* operator[](std::string s) { assert(_map); CKT_BASE* rv = (*_map)[s]; if (!rv && OPT::case_insensitive) { notstd::to_lower(&s); rv = (*_map)[s]; }else{ } return prechecked_cast(rv); } TT* operator[](CS& cmd) { unsigned here = cmd.cursor(); std::string s; cmd >> s; //------------------------ TT* p = (*this)[s]; //------------------------ if (!p) { cmd.reset(here); }else{ } return p; } TT* clone(std::string s) { TT* proto = (*this)[s]; if (proto) { return proto->clone(); }else{untested(); return NULL; } } class INSTALL { private: const std::string _name; DISPATCHER* _d; TT* _p; public: INSTALL(DISPATCHER* d, const std::string& name, TT* p) : _name(name), _d(d), _p(p) { assert(_d); assert(p); _d->install(_name, p); } ~INSTALL() { //_d->uninstall(_name); _d->uninstall(_p); } }; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/l_lib.h000066400000000000000000000065161316501211100137320ustar00rootroot00000000000000/*$Id: l_lib.h 2014/11/23$ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.07.13 #ifndef L_LIB_H #define L_LIB_H #include "md.h" /*--------------------------------------------------------------------------*/ char* trim(char*); INTERFACE bool Umatch(const std::string&, const std::string&); INTERFACE bool wmatch(const std::string& s1,const std::string& s2); INTERFACE std::string to_string(unsigned); INTERFACE std::string to_string(int); INTERFACE std::string to_string(double); INTERFACE char* ftos(double,int,int,int); /*--------------------------------------------------------------------------*/ //ftos stuff enum { /* formatting bit-fields */ ftos_DEFAULT = 0, /* default formatting, with letters */ ftos_EXP = 1, /* use 'e' notation, almost like printf */ ftos_SIGN = 2, /* always include sign */ ftos_FILL = 4 /* fill in trailing zeros */ }; /*--------------------------------------------------------------------------*/ // wrappers for old standard C lpbrary namespace OS { inline void system(const std::string& s) {itested(); ::system(s.c_str()); } inline void chdir(const std::string& s) {itested(); ::chdir(s.c_str()); } inline void remove(const std::string& s) {itested(); ::remove(s.c_str()); } inline bool access_ok(const std::string& file, int mode) { return (::access(file.c_str(), mode) == 0/*file_ok*/); } inline std::string getcwd() {itested(); char buf[BUFLEN+1]; char* cwd = ::getcwd(buf,BUFLEN); if (cwd) {itested(); return cwd; }else{untested(); return ""; } } inline std::string getenv(const std::string& s) { char* ev = ::getenv(s.c_str()); if (ev) { return ev; }else{itested(); return ""; } } inline void setenv(const std::string& Name, const std::string& Value, bool Overwrite=true) { if (Name == "") {untested(); throw Exception("setenv: bad name " + Name); }else if (Value == "") {untested(); throw Exception("setenv: bad value " + Value); }else if (!Overwrite && getenv(Name) != "") {untested(); error(bDEBUG, "setenv: " + Name + " overwrite prohibited"); }else{ std::string ev = Name + "=" + Value; char *es = ::strdup(ev.c_str()); //BUG// memory leak assert(es); if (::putenv(es) != 0) {untested(); throw Exception(""); }else{ } } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/l_stlextra.h000066400000000000000000000052151316501211100150250ustar00rootroot00000000000000/*$Id: l_stlextra.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * extra functions in the STL style * Things that ought to be there, but are not */ //testing=script,complete 2006.07.13 #ifndef L_STLEXTRA_H #define L_STLEXTRA_H #include "md.h" /*--------------------------------------------------------------------------*/ namespace notstd { /*--------------------------------------------------------------------------*/ template void copy_n(InputIter first, Size count, OutputIter result) { for ( ; count > 0; --count) { *result++ = *first++; } } /*--------------------------------------------------------------------------*/ /* find_ptr: like the stl find, except that the list contains pointers Dereference the pointer in the list, then compare */ template InputIterator find_ptr(InputIterator first,InputIterator last,const T& value) { while (first != last && **first != value) { ++first; } return first; } /*--------------------------------------------------------------------------*/ inline void to_lower(std::string* s) { assert(s); for (std::string::iterator i = s->begin(); i != s->end(); ++i) { *i = static_cast(tolower(*i)); } } /*--------------------------------------------------------------------------*/ inline void to_upper(std::string* s) { assert(s); for (std::string::iterator i = s->begin(); i != s->end(); ++i) { *i = static_cast(toupper(*i)); } } /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/l_timer.h000066400000000000000000000041551316501211100143010ustar00rootroot00000000000000/*$Id: l_timer.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * CPU time accounting */ //testing=script 2006.07.13 #ifndef L_TIMER_H #define L_TIMER_H #include "io_.h" /*--------------------------------------------------------------------------*/ class OMSTREAM; /*--------------------------------------------------------------------------*/ class INTERFACE TIMER { private: double _ref; // time the clock was started double _last; // time of timed operation double _total; // time since program start bool _running; std::string _name; public: explicit TIMER(); explicit TIMER(const std::string&); ~TIMER() {} TIMER& fullreset(); TIMER& reset(); TIMER& start(); TIMER& stop(); TIMER& check(); double elapsed()const {itested();return _last;} bool is_running()const {return _running;} TIMER& print(OMSTREAM& s = IO::mstdout); TIMER& operator=(const TIMER&); friend INTERFACE TIMER operator-(const TIMER&,const TIMER&); }; template T& operator<<(T & s, TIMER & t) {t.print(s); return s;} /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_base.h000066400000000000000000000373361316501211100141030ustar00rootroot00000000000000/*$Id: m_base.h,v 26.138 2013/04/24 02:32:27 al Exp $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script,sparse 2009.08.13 #ifndef BASE_H_INCLUDED #define BASE_H_INCLUDED #include "l_lib.h" #include "ap.h" #include "constant.h" /*--------------------------------------------------------------------------*/ class Float; class String; /*--------------------------------------------------------------------------*/ class Base { private: explicit Base(const Base&) {unreachable();} // This private base copy constructor inhibits generation of // copy constructors for its derived classes. protected: explicit Base() {} public: virtual void parse(CS&) = 0; virtual void dump(std::ostream& o)const = 0; virtual ~Base() {} virtual std::string val_string()const {untested(); return "error";} virtual bool to_bool()const {unreachable(); return false;} virtual Base* minus()const {untested(); return NULL;} virtual Base* plus()const {untested(); return NULL;} virtual Base* less(const Base*)const {untested(); return NULL;} virtual Base* less(const Float*)const {untested(); return NULL;} virtual Base* less(const String*)const {untested(); return NULL;} virtual Base* greater(const Base*)const {untested(); return NULL;} virtual Base* greater(const Float*)const {untested(); return NULL;} virtual Base* greater(const String*)const {untested(); return NULL;} virtual Base* leq(const Base*)const {untested(); return NULL;} virtual Base* leq(const Float*)const {untested(); return NULL;} virtual Base* leq(const String*)const {untested(); return NULL;} virtual Base* geq(const Base*)const {untested(); return NULL;} virtual Base* geq(const Float*)const {untested(); return NULL;} virtual Base* geq(const String*)const {untested(); return NULL;} virtual Base* not_equal(const Base*)const {untested(); return NULL;} virtual Base* not_equal(const Float*)const {untested(); return NULL;} virtual Base* not_equal(const String*)const {untested(); return NULL;} virtual Base* equal(const Base*)const {untested(); return NULL;} virtual Base* equal(const Float*)const {untested(); return NULL;} virtual Base* equal(const String*)const {untested(); return NULL;} virtual Base* add(const Base*)const {untested(); return NULL;} virtual Base* add(const Float*)const {untested(); return NULL;} virtual Base* add(const String*)const {untested(); return NULL;} virtual Base* multiply(const Base*)const {untested(); return NULL;} virtual Base* multiply(const Float*)const {untested(); return NULL;} virtual Base* multiply(const String*)const {untested(); return NULL;} virtual Base* subtract(const Base*)const {untested(); return NULL;} virtual Base* subtract(const Float*)const {untested(); return NULL;} virtual Base* subtract(const String*)const {untested(); return NULL;} virtual Base* r_subtract(const Base*)const {untested(); return NULL;} virtual Base* r_subtract(const Float*)const {untested(); return NULL;} virtual Base* r_subtract(const String*)const {untested(); return NULL;} virtual Base* divide(const Base*)const {untested(); return NULL;} virtual Base* divide(const Float*)const {untested(); return NULL;} virtual Base* divide(const String*)const {untested(); return NULL;} virtual Base* r_divide(const Base*)const {untested(); return NULL;} virtual Base* r_divide(const Float*)const {untested(); return NULL;} virtual Base* r_divide(const String*)const {untested(); return NULL;} Base* logic_not()const; Base* logic_or(const Base* X)const; Base* logic_and(const Base* X)const; }; inline CS& operator>>(CS& f, Base& b) {untested();b.parse(f); return f;} inline std::ostream& operator<<(std::ostream& out, const Base& d) {d.dump(out); return out;} /*--------------------------------------------------------------------------*/ template class List_Base :public Base { private: std::list _list; public: virtual void parse(CS& f) = 0; protected: virtual void dump(std::ostream& o)const; virtual ~List_Base(); explicit List_Base() {} explicit List_Base(const List_Base& p) : Base(), _list(p._list) {untested();} public: typedef typename std::list::const_iterator const_iterator; bool is_empty()const {return _list.empty();} size_t size()const {return _list.size();} const_iterator begin()const {return _list.begin();} const_iterator end()const {return _list.end();} const T* front()const {untested();assert(!is_empty()); return _list.front();} const T* back()const {assert(!is_empty()); return _list.back();} T* back() {assert(!is_empty()); return _list.back();} void push_back(T* x) {assert(x); _list.push_back(x);} void pop_back() {assert(!is_empty()); _list.pop_back();} }; /*--------------------------------------------------------------------------*/ template class List :public List_Base { protected: explicit List() {untested();} public: void parse(CS& f); }; /*--------------------------------------------------------------------------*/ #if 0 template class Collection :public List_Base { protected: explicit Collection() {untested();} public: void parse(CS& f); }; #endif /*--------------------------------------------------------------------------*/ class Float :public Base { private: double _data; void dump(std::ostream& o)const {itested(); if (_data==NOT_INPUT) {untested(); o<<"NA"; }else{itested(); o<<_data; } } public: /*implicit*/ Float(const Float& p) :Base(), _data(p._data) {untested();} explicit Float(CS& file) {untested();parse(file);} explicit Float(const std::string& s) {CS cs(CS::_STRING, s); parse(cs);} Float(double x=NOT_INPUT) :_data(x) {} void parse(CS&); double value()const {return _data;} operator double()const {untested();return _data;} std::string val_string()const {return ftos(_data, 0, 15, ftos_EXP);} bool to_bool()const {return (_data != 0);} Base* minus()const {return new Float(-_data);} Base* plus()const {return new Float(_data);} Base* less(const Float* X)const {assert(X); return new Float((_data < X->_data)?1.:0.);} Base* greater(const Float* X)const {assert(X); return new Float((_data > X->_data)?1.:0.);} Base* leq(const Float* X)const {assert(X); return new Float((_data <= X->_data)?1.:0.);} Base* geq(const Float* X)const {assert(X); return new Float((_data >= X->_data)?1.:0.);} Base* not_equal(const Float* X)const {assert(X); return new Float((_data != X->_data)?1.:0.);} Base* equal(const Float* X)const {assert(X); return new Float((_data == X->_data)?1.:0.);} Base* add(const Float* X)const {assert(X); return new Float(_data + X->_data);} Base* multiply(const Float* X)const {assert(X); return new Float(_data * X->_data);} Base* subtract(const Float* X)const {untested();assert(X); return new Float(_data - X->_data);} Base* r_subtract(const Float* X)const {assert(X); return new Float(X->_data - _data);} Base* divide(const Float* X)const {untested();assert(X); return new Float(_data / X->_data);} Base* r_divide(const Float* X)const {assert(X); return new Float(X->_data / _data);} Base* less(const Base* X)const {return ((X) ? (X->greater(this)) : (NULL));} Base* greater(const Base* X)const {return ((X) ? (X->less(this)) : (NULL));} Base* leq(const Base* X)const {return ((X) ? (X->geq(this)) : (NULL));} Base* geq(const Base* X)const {return ((X) ? (X->leq(this)) : (NULL));} Base* not_equal(const Base* X)const {return ((X) ? (X->not_equal(this)) : (NULL));} Base* equal(const Base* X)const {return ((X) ? (X->equal(this)) : (NULL));} Base* add(const Base* X)const {return ((X) ? (X->add(this)) : (NULL));} Base* multiply(const Base* X)const {return ((X) ? (X->multiply(this)) : (NULL));} Base* subtract(const Base* X)const {return ((X) ? (X->r_subtract(this)): (NULL));} Base* r_subtract(const Base* X)const {untested();return ((X) ? (X->subtract(this)) : (NULL));} Base* divide(const Base* X)const {return ((X) ? (X->r_divide(this)) : (NULL));} Base* r_divide(const Base* X)const {untested();return ((X) ? (X->divide(this)) : (NULL));} Base* less(const String*)const {untested();return NULL;} Base* greater(const String*)const {untested();return NULL;} Base* leq(const String*)const {untested();return NULL;} Base* geq(const String*)const {untested();return NULL;} Base* not_equal(const String*)const {untested();return NULL;} Base* equal(const String*)const {untested();return NULL;} Base* add(const String*)const { return NULL;} Base* multiply(const String*)const {untested();return NULL;} Base* subtract(const String*)const {untested();return NULL;} Base* r_subtract(const String*)const {untested();return NULL;} Base* divide(const String*)const {untested();return NULL;} Base* r_divide(const String*)const { return NULL;} bool is_NA()const {untested();return _data == NOT_INPUT;} }; /*--------------------------------------------------------------------------*/ class String :public Base { protected: std::string _data; public: void parse(CS&) {unreachable(); incomplete();} private: void dump(std::ostream& o)const {untested();o << _data;} public: explicit String(CS& file) {untested();parse(file);} explicit String() {} explicit String(const std::string& s) :_data(s) {} operator const std::string&()const {return _data;} std::string val_string()const {untested();return _data;} bool to_bool()const {untested();return (_data != "");} Base* minus()const {untested(); return NULL;} Base* plus()const {untested(); return NULL;} Base* less(const String* X)const {untested();assert(X); return new Float((_data < X->_data)?1.:0.);} Base* greater(const String* X)const {untested();assert(X); return new Float((_data > X->_data)?1.:0.);} Base* leq(const String* X)const {untested();assert(X); return new Float((_data <= X->_data)?1.:0.);} Base* geq(const String* X)const {untested();assert(X); return new Float((_data >= X->_data)?1.:0.);} Base* not_equal(const String* X)const {untested();assert(X); return new Float((_data != X->_data)?1.:0.);} Base* equal(const String* X)const {untested();assert(X); return new Float((_data == X->_data)?1.:0.);} Base* add(const String*)const { return NULL;} Base* multiply(const String*)const {untested(); return NULL;} Base* subtract(const String*)const {untested(); return NULL;} Base* r_subtract(const String*)const {untested(); return NULL;} Base* divide(const String*)const {untested(); return NULL;} Base* r_divide(const String*)const {untested(); return NULL;} Base* less(const Base* X)const {untested();return ((X) ? (X->greater(this)) : (NULL));} Base* greater(const Base* X)const {untested();return ((X) ? (X->less(this)) : (NULL));} Base* leq(const Base* X)const {untested();return ((X) ? (X->geq(this)) : (NULL));} Base* geq(const Base* X)const {untested();return ((X) ? (X->leq(this)) : (NULL));} Base* not_equal(const Base* X)const {untested();return ((X) ? (X->not_equal(this)) : (NULL));} Base* equal(const Base* X)const {untested();return ((X) ? (X->equal(this)) : (NULL));} Base* add(const Base* X)const { return ((X) ? (X->add(this)) : (NULL));} Base* multiply(const Base* X)const {untested();return ((X) ? (X->multiply(this)) : (NULL));} Base* subtract(const Base* X)const {untested();return ((X) ? (X->r_subtract(this)): (NULL));} Base* r_subtract(const Base* X)const {untested();return ((X) ? (X->subtract(this)) : (NULL));} Base* divide(const Base* X)const { return ((X) ? (X->r_divide(this)) : (NULL));} Base* r_divide(const Base* X)const {untested();return ((X) ? (X->divide(this)) : (NULL));} Base* less(const Float*)const {untested();return NULL;} Base* greater(const Float*)const {untested();return NULL;} Base* leq(const Float*)const {untested();return NULL;} Base* geq(const Float*)const {untested();return NULL;} Base* not_equal(const Float*)const {untested();return NULL;} Base* equal(const Float*)const {untested();return NULL;} Base* add(const Float*)const { return NULL;} Base* multiply(const Float*)const {untested();return NULL;} Base* subtract(const Float*)const {untested();return NULL;} Base* r_subtract(const Float*)const {untested();return NULL;} Base* divide(const Float*)const {untested();return NULL;} Base* r_divide(const Float*)const {untested();return NULL;} }; /*--------------------------------------------------------------------------*/ class Name_String // a string that contains only alnum and _[] :public String { public: void parse(CS&); public: explicit Name_String(CS& file) {parse(file);} explicit Name_String() {untested();} }; /*--------------------------------------------------------------------------*/ class Quoted_String // the first non-blank character is a quote :public String // a repeat of the same character terminates it { public: void parse(CS&); public: explicit Quoted_String(CS& file) {untested();parse(file);} explicit Quoted_String() {untested();} }; /*--------------------------------------------------------------------------*/ class Tail_String // a string that is parsed to the end of a line :public String { public: void parse(CS&); explicit Tail_String(CS& file) {untested();parse(file);} explicit Tail_String() {untested();} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ template List_Base::~List_Base() { for (typename std::list::iterator i = _list.begin(); i != _list.end(); ++i) { assert(*i); delete *i; } } /*--------------------------------------------------------------------------*/ template void List_Base::dump(std::ostream& Out)const {untested(); for (const_iterator i = begin(); i != end(); ++i) {untested(); assert(*i); Out << **i; } } /*--------------------------------------------------------------------------*/ template void List::parse(CS& File) {untested(); //skip_comment(File); unsigned here = File.cursor(); for (;;) {untested(); if (File.match1('[')) {untested(); break; }else{untested(); T* x = new T(File); if (!File.stuck(&here)) {untested(); push(x); }else{untested(); delete x; File.warn(0, "what's this? (List)"); break; } //skip_comment(File); } } } /*--------------------------------------------------------------------------*/ #if 0 template void Collection::parse(CS& File) {untested(); unsigned here = File.cursor(); T* m = new T(File); if (!File.stuck(&here)) {untested(); push(m); }else{untested(); delete m; File.warn(0, "what's this? (Collection)"); } } #endif /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_cpoly.h000066400000000000000000000116511316501211100143070ustar00rootroot00000000000000/*$Id: m_cpoly.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * structs for fixed order polynomials, in 2 different forms * FPOLY is by function -- f0 = eval of function * f1 = 1st derivative * f2 = 2nd derivative * etc. * f(x) = f0 * f(t) = f0 + f1*(t-x) + f2*(t-x)^2 + ... * CPOLY is by series -- c0 = coeff of x^0 term (constant) * c1 = coeff of x^1 term (1st derivative) * c2 = coeff of x^2 term * etc. * f(x) = c0 + f1*x + f2*x^2 + ... * f(t) = c0 + f1*t + f2*t^2 + ... */ //testing=script,sparse 2006.07.13 #ifndef M_CPOLY_H #define M_CPOLY_H #include "constant.h" /*--------------------------------------------------------------------------*/ struct FPOLY1; struct CPOLY1; /*--------------------------------------------------------------------------*/ struct FPOLY1{ /* first order polynomial */ double x; /* the argument */ double f0; /* the function (c0 + x*f1) */ double f1; /* the first derivative */ explicit FPOLY1() : x(0), f0(0), f1(0) {} FPOLY1(const FPOLY1& p) : x(p.x), f0(p.f0), f1(p.f1) {} explicit FPOLY1(double X,double F0,double F1) : x(X), f0(F0), f1(F1) {} explicit FPOLY1(const CPOLY1& p); ~FPOLY1() {} bool operator==(const FPOLY1& p)const {return (f1==p.f1 && f0==p.f0 && x==p.x);} FPOLY1& operator*=(double s) {f0*=s; f1*=s; return *this;} FPOLY1& operator*=(const FPOLY1& s); FPOLY1& operator+=(double f) {untested(); f0+=f; return *this;} FPOLY1& operator+=(const FPOLY1& s) {untested(); assert(x==s.x); f0+=s.f0; f1+=s.f1; return *this;} FPOLY1 operator-()const {untested(); return FPOLY1(x, -f0, -f1);} double c1()const {assert(f1 == f1); return f1;} double c0()const {assert(f0==f0); assert(f1==f1); assert(x==x); assert(f0!=LINEAR); return (f0 - x * f1);} }; /*--------------------------------------------------------------------------*/ struct CPOLY1{ /* first order polynomial */ double x; /* the argument */ double c0; /* f(x) - x*f'(x), or f0 - x*f1 */ double c1; /* the first derivative */ explicit CPOLY1() : x(0), c0(0), c1(0) {} CPOLY1(const CPOLY1& p) : x(p.x), c0(p.c0), c1(p.c1) {untested();} explicit CPOLY1(double X,double C0,double C1) : x(X), c0(C0), c1(C1) {} explicit CPOLY1(const FPOLY1& p); ~CPOLY1() {} bool operator==(const CPOLY1& p)const {return (c1==p.c1 && c0==p.c0 && x==p.x);} CPOLY1& operator*=(double s) {c0*=s; c1*=s; return *this;} double f1()const {return c1;} double f0()const {return (c0 + x * c1);} }; /*--------------------------------------------------------------------------*/ inline FPOLY1::FPOLY1(const CPOLY1& p) :x(p.x), f0(p.f0()), f1(p.f1()) { assert(p == p); assert(*this == *this); } /*--------------------------------------------------------------------------*/ inline CPOLY1::CPOLY1(const FPOLY1& p) :x(p.x), c0(p.c0()), c1(p.c1()) { assert(p == p); assert(x == x); assert(c1 == c1); assert(c0 == c0); assert(*this == *this); } /*--------------------------------------------------------------------------*/ inline FPOLY1& FPOLY1::operator*=(const FPOLY1& s) { untested(); assert(x == s.x); *this *= s.f0; f1 += f0 * s.f1; return *this; } /*--------------------------------------------------------------------------*/ inline FPOLY1 operator*(FPOLY1 a, const FPOLY1& b) { untested(); a *= b; return a; } /*--------------------------------------------------------------------------*/ inline FPOLY1 operator+(FPOLY1 a, const FPOLY1& b) { untested(); a += b; return a; } /*--------------------------------------------------------------------------*/ inline FPOLY1 operator+(FPOLY1 a, double b) { untested(); a += b; return a; } /*--------------------------------------------------------------------------*/ inline FPOLY1 operator-(double a, const FPOLY1& b) { untested(); return -b + a; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_divdiff.h000066400000000000000000000040441316501211100145720ustar00rootroot00000000000000/*$Id: m_divdiff.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * divided differences * in: * c = numerator (data points) (lost) * t = denominator (time) * n = size of array * # of divided differences == n-1 * out: * c = "divided differences" (mult by n! to get derivative) */ //testing=script,complete 2006.07.13 /*--------------------------------------------------------------------------*/ #if 0 template inline void divided_differences(T1 c[], int n, const T2 t[]) { untested(); for (int d=1; d=d; --i) { untested(); c[i] = (c[i-1] - c[i]) / (t[i-d] - t[i]); } } } #endif /*--------------------------------------------------------------------------*/ template inline void derivatives(T1 c[], int n, const T2 t[]) { for (int d=1; d=d; --i) { c[i] = d * (c[i-1] - c[i]) / (t[i-d] - t[i]); } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: include/m_expression.h000066400000000000000000000134221316501211100153560ustar00rootroot00000000000000/*$Id: m_expression.h 2014/07/04 al $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script 2014.07.04 #include "m_base.h" /*--------------------------------------------------------------------------*/ //class Symbol_Table; class CARD_LIST; class Expression; /*--------------------------------------------------------------------------*/ class Token :public Base { private: std::string _name; const Base* _data; std::string _aRgs; public: void parse(CS&) {unreachable();} public: void dump(std::ostream&)const; protected: explicit Token(const std::string Name, const Base* Data, const std::string Args) : _name(Name), _data(Data), _aRgs(Args) {} explicit Token(const Token& P) : Base(), _name(P._name), _data(P._data), _aRgs(P._aRgs) {assert(!_data);} public: virtual ~Token() {if (_data) { delete _data;}else{ }} virtual Token* clone()const = 0; const std::string& name()const {return _name;} const Base* data()const {return _data;} const std::string& aRgs()const {return _aRgs;} const std::string full_name()const {return name() + aRgs();} virtual void stack_op(Expression*)const {unreachable();} bool operator==(const Token& P) {return (typeid(*this)==typeid(P)) && (data()==P.data()) && (name()==P.name()) && (aRgs()==P.aRgs());} }; /*--------------------------------------------------------------------------*/ class Token_SYMBOL : public Token { public: explicit Token_SYMBOL(const std::string Name, const std::string Args) : Token(Name, NULL, Args) {} explicit Token_SYMBOL(const Token_SYMBOL& P) : Token(P) {untested();} Token* clone()const {untested();return new Token_SYMBOL(*this);} void stack_op(Expression*)const; }; /*--------------------------------------------------------------------------*/ class Token_BINOP : public Token { public: explicit Token_BINOP(const std::string Name) : Token(Name, NULL, "") {} explicit Token_BINOP(const Token_BINOP& P) : Token(P) {} Token* clone()const {return new Token_BINOP(*this);} Token* op(const Token* t1, const Token* t2)const; void stack_op(Expression*)const; }; /*--------------------------------------------------------------------------*/ class Token_STOP : public Token { public: explicit Token_STOP(const std::string Name) : Token(Name, NULL, "") {} explicit Token_STOP(const Token_STOP& P) : Token(P) {} Token* clone()const {return new Token_STOP(*this);} void stack_op(Expression*)const; }; /*--------------------------------------------------------------------------*/ class Token_PARLIST : public Token { public: explicit Token_PARLIST(const std::string Name) : Token(Name, NULL, "") {} explicit Token_PARLIST(const Token_PARLIST& P) : Token(P) {untested();} Token* clone()const {untested();return new Token_PARLIST(*this);} void stack_op(Expression*)const; }; /*--------------------------------------------------------------------------*/ class Token_UNARY : public Token { public: explicit Token_UNARY(const std::string Name) : Token(Name, NULL, "") {} explicit Token_UNARY(const Token_UNARY& P) : Token(P) {untested();} Token* clone()const {untested();return new Token_UNARY(*this);} Token* op(const Token* t1)const; void stack_op(Expression*)const; }; /*--------------------------------------------------------------------------*/ class Token_CONSTANT : public Token { public: explicit Token_CONSTANT(const std::string Name, const Base* Data, const std::string Args) : Token(Name, Data, Args) {} explicit Token_CONSTANT(const Token_CONSTANT& P) : Token(P) {untested();} Token* clone()const {untested();return new Token_CONSTANT(*this);} void stack_op(Expression*)const; }; /*--------------------------------------------------------------------------*/ class INTERFACE Expression :public List_Base { public: const CARD_LIST* _scope; public: void parse(CS&); void dump(std::ostream&)const; private: // expression-in.cc void arglisttail(CS& File); void arglist(CS& File); void leaf(CS& File); void factor(CS& File); void termtail(CS& File); void term(CS& File); void addexptail(CS& File); void addexp(CS& File); void logicaltail(CS& File); void logical(CS& File); void andtail(CS& File); void andarg(CS& File); void exptail(CS& File); void expression(CS& File); public: explicit Expression() : _scope(NULL) {untested();} explicit Expression(CS& File) : _scope(NULL) {parse(File);} private: // expression-reduce.cc void reduce_copy(const Expression&); public: explicit Expression(const Expression&, const CARD_LIST*); public: // other bool as_bool()const {untested();return (!is_empty() && back()->data());} double eval()const { const Float* f = dynamic_cast(back()->data()); return ((f && size()==1) ? (f->value()) : (NOT_INPUT)); } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: include/m_interp.h000066400000000000000000000063401316501211100144610ustar00rootroot00000000000000/*$Id: m_interp.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * interpolation on a sorted array * * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script,sparse 2006.07.13 #ifndef M_INTERP_H #define M_INTERP_H #include "m_cpoly.h" /*--------------------------------------------------------------------------*/ /* interpolate: linear interpolation on a table. * Keys must be sorted in increasing order. */ template FPOLY1 interpolate(Iterator begin, Iterator end, double x, double below, double above) { double f1 = NOT_VALID; double f0 = NOT_VALID; if (begin == end) { untested(); throw Exception("interpolate table is empty"); } --end; if (begin == end) { // only 1 entry -- constant f1 = (x < (*begin).first) ? ((below != NOT_INPUT) ? below : 0.) : ((above != NOT_INPUT) ? above : 0.); f0 = (*begin).second + (x - (*begin).first) * f1; }else{ ++begin; // x is the search key // xx is the search key converted to a "pair" as required by upper_bound // upper might point to a match for the key, exact match // if not, it points just above it, no exact match // lower points just below where a match would go // so the real match is between upper and lower DPAIR xx(x,BIGBIG); Iterator upper = upper_bound(begin, end, xx); Iterator lower = upper-1; // set f1 (derivative) if ((upper == end) && (x > (*upper).first) && (above != NOT_INPUT)) { // x is out of bounds, above lower = upper; if (above != 0.) { untested(); } f1 = above; }else if ((upper == begin) && (x < (*lower).first) && (below!=NOT_INPUT)) { // x is out of bounds, below untested(); if (below != 0.) { untested(); }else{ untested(); } f1 = below; }else if ((*upper).first <= (*lower).first) {untested(); throw Exception("interpolate table is not sorted or has duplicate keys"); f1 = 0.; }else{ // ordinary interpolation assert((*upper).first != (*lower).first); f1 = ((*upper).second-(*lower).second) / ((*upper).first-(*lower).first); } f0 = (*lower).second + (x - (*lower).first) * f1; } assert(f1 != NOT_VALID); assert(f0 != NOT_VALID); return FPOLY1(x, f0, f1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_matrix.h000066400000000000000000000556311316501211100144730ustar00rootroot00000000000000/*$Id: m_matrix.h 2017/06/07 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Sparse matrix package * Bump and spike - bordered block diagonal pattern * ------------------------------------------------- * To use it (simple method) ..... * 1. Declare it ... * BSMATRIX a; * 2. Then tell it what slots to allocate, in a loop ... * for (all pairs i,j that might exist) * a.iwant(i,j); * 3. Then do the actual allocation ... * a.allocate(); * 4. If you want, you can add an offset to the diagonal ... * a.dezero(gmin); * 5. You probably should set a minimum pivot value ... * a.setminpivot(gmin); * 6. Fill in the matrix ... * for (all pairs i,j you want to fill in) * a.m(i,j) += data; * 7. Then do the LU decomposition ... * a.lu_decomp(); * 8. Then get the solution by applying the right side vector (v) * and doing the fwd and back substitution. * a.fbsub(v); * The solution is now in v. * ------------------------------------------------- * To reuse it ..... * Get rid of the old data ... * a.zero(). * Restore the offset, if you want ... * a.dezero(gmin); * Then fill and solve as before. (steps 6-8) * ------------------------------------------------- * In the above case, LU replaced the matrix and the solution replaced * the right side, losing the data. * To keep the matrix, and keep the right side ... * 1. Declare two matrices ... * BSMATRIX a; * BSMATRIX lu; * 2. as before * 2a. Say the lu has the same structure as a. * lu.clone(a); * 3-5. Allocate both. * 6. Fill in "a" only. * 7. Do the LU decomposition, keeping a, with result in lu ... * lu.lu_decomp(a, false); * 8. Do the f&B sub, keeping b (the right side), with result in x ... * lu.fbsub(x, b); * ------------------------------------------------- * To make a change to the matrix and re-solve ... * Apply the change to a ... * for (all changes you want to make) * a.m(i,j) += delta; a.set_changed(i).set_changed(j) * Then solve again .. step 7 above for a full solution, * or for an update ... * lu.lu_decomp(a, true); * Then do the same step 8 as above. * ------------------------------------------------- * some other functions that might be useful .... * reinit(newsize) -- change the size (and lose the contents and structure) * size()const -- return the size (# of rows & cols) * density()const -- return the matrix density, as a number between 0 and 1 * sparsity()const -- 1-density * ------------------------------------------------- * individual element access ... * 5 access functions are provided. * All return lvalues (references to the actual entry). * All take 2 args, row and column. They differ in speed and generality. * Since they are used in equations, they all have 1 letter names. * s(r,c) -- "safe" -- most general case, with bounds checking * if completely out of bounds, returns trash * if in the matrix but out of band, returns a reference to zero * Changing it will corrupt the matrix. * All others have no bounds checking. * m(r,c) -- "matrix" -- known to be within the allocated band * u(r,c) -- "upper" -- known to be in the upper triangle. (c>=r) * l(r,c) -- "lower" -- known to be in the lower triangle. (r>=c) * d(r,c) -- "diagonal" -- known to be on the diagonal. (r==c) * Using s() will always work, but will be slower than the other methods. * You should use the most restricted function that you know is correct. * ------------------------------------------------- * Other notes ... * The numbering starts at 1 (Fortran style). * When using "s" access, it is ok to load row and column 0, then ignore it. * This may simplify load functions, at the expense of run speed. * "s" will let you change the value of zero, * but you will find out about it later. */ //testing=script 2016.09.14 #ifndef M_MATRIX_H #define M_MATRIX_H /*--------------------------------------------------------------------------*/ #include "l_stlextra.h" /*--------------------------------------------------------------------------*/ template class BSMATRIX { private: mutable bool* _changed;// flag: this node changed value int* _lownode; // lowest node connecting to this one T* _space; // ptr to actual memory space used T** _rowptr; // ptrs to col 0 of every row T** _colptr; // ptrs to row 0 of every col T** _diaptr; // ptrs to diagonal int _nzcount; // count of non-zero elements int _size; // # of rows and columns T _zero; // always 0 but not const T _trash; // depository for row and col 0, write only T _min_pivot; // minimum pivot value private: explicit BSMATRIX(const BSMATRIX&) {incomplete();unreachable();} void uninit(); void init(int s=0); T& subtract_dot_product(int r, int c, int d); T& subtract_dot_product(int r, int c, int d, const T& in); int lownode(int i)const {return _lownode[i];} bool is_changed(int n)const {return _changed[n];} void set_changed(int n, bool x = true)const {_changed[n] = x;} public: explicit BSMATRIX(int ss=0); ~BSMATRIX() {uninit();} void reinit(int ss=0) {uninit(); init(ss);} //void clone(const BSMATRIX&); void iwant(int, int); void unallocate(); void allocate(); void reallocate() {unallocate(); allocate();} void set_min_pivot(double x) {_min_pivot = x;} void zero(); void dezero(T& o); int size()const {return _size;} double density(); T d(int r, int )const; T s(int r, int c)const; private: T u(int r, int c)const; T l(int r, int c)const; T& d(int r, int ); T& u(int r, int c); T& l(int r, int c); T& m(int r, int c); public: void load_diagonal_point(int i, T value); void load_point(int i, int j, T value); void load_couple(int i, int j, T value); void load_symmetric(int i, int j, T value); void load_asymmetric(int r1, int r2, int c1, int c2, T value); void lu_decomp(const BSMATRIX&, bool do_partial); void lu_decomp(); void fbsub(T* v) const; void fbsub(T* x, const T* b, T* c = NULL) const; void fbsubt(T* v) const; }; /*--------------------------------------------------------------------------*/ // private implementations /*--------------------------------------------------------------------------*/ template void BSMATRIX::uninit() { unallocate(); delete [] _lownode; _lownode = NULL; delete [] _changed; _changed = NULL; } /*--------------------------------------------------------------------------*/ template void BSMATRIX::init(int ss) { assert(!_lownode); assert(!_colptr); assert(!_rowptr); assert(!_diaptr); assert(!_space); assert(_zero == 0.); _min_pivot = _trash = 0.; _nzcount = 0; _size = ss; _lownode = new int[size()+1]; assert(_lownode); for (int ii = 0; ii <= size(); ++ii) { _lownode[ii] = ii; } _changed = new bool[size()+1]; assert(_changed); for (int ii = 0; ii <= size(); ++ii) { set_changed(ii, false); } } /*--------------------------------------------------------------------------*/ template T& BSMATRIX::subtract_dot_product(int rr, int cc, int dd) { assert(_lownode); int kk = std::max(_lownode[rr], _lownode[cc]); int len = dd - kk; T& dot = m(rr, cc); if (len > 0) { T* row = &(l(rr,kk)); T* col = &(u(kk,cc)); /* for (ii = kk; ii < dd; ++ii) */ for (int ii = 0; ii < len; ++ii) { dot -= row[-ii] * col[ii]; } }else{ } return dot; } /*--------------------------------------------------------------------------*/ template T& BSMATRIX::subtract_dot_product(int rr, int cc, int dd, const T& in) { assert(_lownode); int kk = std::max(_lownode[rr], _lownode[cc]); int len = dd - kk; T& dot = m(rr, cc); dot = in; if (len > 0) { T* row = &(l(rr,kk)); T* col = &(u(kk,cc)); /* for (ii = kk; ii < dd; ++ii) */ for (int ii = 0; ii < len; ++ii) { dot -= row[-ii] * col[ii]; } }else{ } return dot; } /*--------------------------------------------------------------------------*/ // public implementations /*--------------------------------------------------------------------------*/ template BSMATRIX::BSMATRIX(int ss) :_changed(NULL), _lownode(NULL), _space(NULL), _rowptr(NULL), _colptr(NULL), _diaptr(NULL), _nzcount(0), _size(ss), _zero(0.), _trash(0.), _min_pivot(0.) { init(ss); } /*--------------------------------------------------------------------------*/ #if 0 /* clone: copy to self the structure of another BSMATRIX * this does not copy the values stored in the matrix */ template void BSMATRIX::clone(const BSMATRIX & aa) {untested(); reinit(aa.size()); for (int ii = 0; ii <= size(); ++ii) {untested(); _lownode[ii] = aa.lownode(ii); } } #endif /*--------------------------------------------------------------------------*/ /* iwant: indicate that "iwant" to allocate this spot in the matrix */ template void BSMATRIX::iwant(int node1, int node2) { assert(_lownode); assert(node1 <= size()); assert(node2 <= size()); if (node1 <= 0 || node2 <= 0) { // node 0 is ground, and doesn't count as a connection // negative is invalid, not used but still may be in a node list }else if (node1 < _lownode[node2]) { _lownode[node2]=node1; }else if (node2 < _lownode[node1]) { _lownode[node1]=node2; }else{ } } /*--------------------------------------------------------------------------*/ template void BSMATRIX::unallocate() { assert (_zero == 0.); delete [] _rowptr; delete [] _colptr; delete [] _diaptr; delete [] _space; _rowptr = _colptr = _diaptr = NULL; _space = NULL; } /*--------------------------------------------------------------------------*/ /* allocate: really get the space to work */ template void BSMATRIX::allocate() { assert(_lownode); assert(!_colptr); assert(!_rowptr); assert(!_diaptr); assert(!_space); _nzcount = 0; for (int ii = 0; ii <= size(); ++ii) { _nzcount += 2 * (ii - _lownode[ii]) + 1; } _colptr = new T*[size()+1]; _rowptr = new T*[size()+1]; _diaptr = new T*[size()+1]; _space = new T[_nzcount]; assert(_colptr); assert(_rowptr); assert(_diaptr); zero(); { T* point = _space; for (int ii = 0; ii <= size(); ++ii) { _colptr[ii] = point - _lownode[ii]; _rowptr[ii] = _colptr[ii] + 2*ii; _diaptr[ii] = _colptr[ii] + ii; point += 2 * (ii - _lownode[ii]) + 1; } } } /*--------------------------------------------------------------------------*/ /* zero: wipe the whole array */ template void BSMATRIX::zero() { assert(_space); assert(_zero == 0.); _trash = 0.; std::fill_n(_space, _nzcount, 0.); } /*--------------------------------------------------------------------------*/ /* dezero: make sure(?) the diagonal is non-zero */ template void BSMATRIX::dezero(T& offset) { for (int ii = 1; ii <= size(); ++ii) { d(ii,ii) += offset; } } /*--------------------------------------------------------------------------*/ template double BSMATRIX::density() { if (size() > 0) { assert(_lownode); _nzcount = 0; for (int ii = 0; ii <= size(); ++ii) { _nzcount += 2 * (ii - _lownode[ii]) + 1; } return static_cast(_nzcount-1)/(static_cast(size())*size()); }else{ return 0; } } /*--------------------------------------------------------------------------*/ /* d: fast matrix entry access * It is known that the entry is valid and on the diagonal */ template T BSMATRIX::d(int r, int c) const { (void)c; assert(_diaptr); assert(r == c); assert(0 <= r); assert(r <= _size); return *(_diaptr[r]); } /*--------------------------------------------------------------------------*/ /* d: as above, but lvalue */ template T& BSMATRIX::d(int r, int c) { (void)c; assert(_diaptr); assert(r == c); assert(0 <= r); assert(r <= _size); return *(_diaptr[r]); } /*--------------------------------------------------------------------------*/ /* u: fast matrix entry access * It is known that the entry is valid and in the upper triangle */ template T BSMATRIX::u(int r, int c) const { assert(_colptr); assert(_lownode); assert(0 < r); assert(r <= c); assert(c <= _size); assert(1 <= _lownode[c]); assert(_lownode[c] <= r); return _colptr[c][r]; } /*--------------------------------------------------------------------------*/ /* u: as above, but lvalue */ template T& BSMATRIX::u(int r, int c) { assert(_colptr); assert(_lownode); assert(0 < r); assert(r <= c); assert(c <= _size); assert(1 <= _lownode[c]); assert(_lownode[c] <= r); return _colptr[c][r]; } /*--------------------------------------------------------------------------*/ /* l: fast matrix entry access * It is known that the entry is valid and in the lower triangle */ template T BSMATRIX::l(int r, int c) const { assert(_rowptr); assert(_lownode); assert(0 < c); assert(c <= r); assert(r <= _size); assert(1 <= _lownode[r]); assert(_lownode[r] <= c); return _rowptr[r][-c]; } /*--------------------------------------------------------------------------*/ /* l: as above, but lvalue */ template T& BSMATRIX::l(int r, int c) { assert(_rowptr); assert(_lownode); assert(0 < c); assert(c <= r); assert(r <= _size); assert(1 <= _lownode[r]); assert(_lownode[r] <= c); return _rowptr[r][-c]; } /*--------------------------------------------------------------------------*/ /* m: semi-fast matrix entry access * It is known that the entry refers to a valid location * but it is not known whether lower, upper, or diagonal */ template T& BSMATRIX::m(int r, int c) { return (c>=r) ? u(r,c) : l(r,c); } /*--------------------------------------------------------------------------*/ /* s: general matrix entry access (read-only) * It is known that the location is strictly in bounds, * but it is not known whether the location actually exists. * If access is attempted to a non-allocated location, * it returns a reference to a shared zero variable. * Writing to this zero is not prohibited, * but will corrupt the matrix in a known and testable way. * If access is attempted to row 0 or column 0, * it returns a reference to a shared trash variable. * Writing to trash is allowed and encouraged, * but reading it gives a number not useful for anything. */ template T BSMATRIX::s(int row, int col)const {untested(); assert(_lownode); assert(0 <= col); assert(col <= size()); assert(0 <= row); assert(row <= size()); assert(_zero == 0.); if (col == row) {untested(); return d(row, col); }else if (col > row) {untested(); /* above the diagonal */ if (row == 0) {untested(); return _trash; }else if (row < _lownode[col]) {untested(); return _zero; }else{untested(); return u(row, col); } }else{untested(); /* below the diagonal */ assert(col < row); if (col == 0) {untested(); return _trash; }else if (col < _lownode[row]) {untested(); return _zero; }else{untested(); return l(row, col); } } unreachable(); } /*--------------------------------------------------------------------------*/ template void BSMATRIX::load_point(int i, int j, T value) { if (i > 0 && j > 0) { set_changed(j); set_changed(i); m(i,j) += value; }else{ } } /*--------------------------------------------------------------------------*/ // load_point(i, i, value); template void BSMATRIX::load_diagonal_point(int i, T value) { if (i > 0) { set_changed(i); d(i,i) += value; }else{untested(); } } /*--------------------------------------------------------------------------*/ // load_point(i, j, -value); // load_point(j, i, -value); template void BSMATRIX::load_couple(int i, int j, T value) { if (j > 0) { set_changed(j); if (i > 0) { set_changed(i); m(i,j) -= value; m(j,i) -= value; }else{ } }else{untested(); } } /*--------------------------------------------------------------------------*/ // load_point(i, i, value); or load_diagonal_point(i, value); // load_point(j, j, value); or load_diagonal_point(j, value); // load_point(i, j, -value); // load_point(j, i, -value); template void BSMATRIX::load_symmetric(int i, int j, T value) { if (j > 0) { set_changed(j); d(j,j) += value; if (i > 0) { set_changed(i); d(i,i) += value; m(i,j) -= value; m(j,i) -= value; }else{ } }else if (i > 0) { set_changed(i); d(i,i) += value; }else{ } } /*--------------------------------------------------------------------------*/ // load_point(r1, c1, value); // load_point(r2, c2, value); // load_point(r1, c2, -value); // load_point(r2, c1, -value); template void BSMATRIX::load_asymmetric(int r1,int r2,int c1,int c2,T value) { set_changed(c1); set_changed(c2); if (r1 > 0) { set_changed(r1); if (c1 > 0) { m(r1,c1) += value; }else{ } if (c2 > 0) { m(r1,c2) -= value; }else{ } }else{ } if (r2 > 0) { set_changed(r2); if (c1 > 0) { m(r2,c1) -= value; }else{ } if (c2 > 0) { m(r2,c2) += value; }else{ } }else{ } } /*--------------------------------------------------------------------------*/ template void BSMATRIX::lu_decomp(const BSMATRIX& aa, bool do_partial) { int prop = 0; /* change propagation indicator */ assert(_lownode); assert(aa._lownode); assert(aa.size() == size()); for (int mm = 1; mm <= size(); ++mm) { assert(aa.lownode(mm) == _lownode[mm]); int bn = _lownode[mm]; if (!do_partial || aa.is_changed(mm) || bn <= prop) { aa.set_changed(mm, false); prop = mm; if (bn < mm) { prop = mm; u(bn,mm) = aa.u(bn,mm) / d(bn,bn); for (int ii = bn+1; ii void BSMATRIX::lu_decomp() { assert(_lownode); for (int mm = 1; mm <= size(); ++mm) { int bn = _lownode[mm]; if (bn < mm) { u(bn,mm) /= d(bn,bn); for (int ii =bn+1; ii void BSMATRIX::fbsub(T* v) const { assert(_lownode); assert(v); for (int ii = 1; ii <= size(); ++ii) { /* forward substitution */ for (int jj = _lownode[ii]; jj < ii; ++jj) { v[ii] -= l(ii,jj) * v[jj]; } v[ii] /= d(ii,ii); } for (int jj = size(); jj > 1; --jj) { /* back substitution */ for (int ii = _lownode[jj]; ii < jj; ++ii) { v[ii] -= u(ii,jj) * v[jj]; } } } /*--------------------------------------------------------------------------*/ /* fbsub: forward and back sub, separate storage * b = right side vector * c = intermediate vector after fwd sub * x = solution vector */ template void BSMATRIX::fbsub(T* x, const T* b, T* c) const { assert(_lownode); assert(x); assert(b); assert(c); { int ii = 1; for ( ; ii <= size(); ++ii) { if (b[ii] != 0.) { break; }else{ } c[ii] = 0.; } int first_nz = ii; for ( ; ii <= size(); ++ii) { /* forward substitution */ int low_node = std::max(_lownode[ii], first_nz); c[ii] = b[ii]; for (int jj = low_node; jj < ii; ++jj) { c[ii] -= l(ii,jj) * c[jj]; } c[ii] /= d(ii,ii); } } notstd::copy_n(c, size()+1, x); for (int jj = size(); jj > 1; --jj) { /* back substitution */ for (int ii = _lownode[jj]; ii < jj; ++ii) { x[ii] -= u(ii,jj) * x[jj]; } } x[0] = 0.; // index starts at 1, but node 0 is ground // x[0]==0 eliminates a lot of "if" statements } /*--------------------------------------------------------------------------*/ /* fbsubt: forward and back substitution with implicitly transposed matrix Ut Lt x = v * v = right side vector, changed in place to solution vector * GS: * this method s used to solve system A_t X = B (_t - transposed) * which corresponds to adjoint system * (LU)_t then transforms to U_t L_t * added: Gennadiy Serdyuk */ template void BSMATRIX::fbsubt(T* v) const {untested(); assert(_lownode); assert(v); // forward substitution for (int ii = 1; ii <= size(); ++ii) {untested(); for (int jj = _lownode[ii]; jj < ii; ++jj) {untested(); v[ii] -= u(jj,ii) * v [jj]; } } // back substitution for (int jj = size(); jj > 1; --jj) {untested(); v[jj] /= d(jj,jj); for (int ii = _lownode[jj]; ii < jj; ++ii) {untested(); v[ii] -= l(jj,ii) * v[jj]; } } v[1]/=d(1,1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_phase.h000066400000000000000000000035311316501211100142570ustar00rootroot00000000000000/*$Id: m_phase.h,v 26.118 2009/08/22 21:08:57 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2008.06.06 #ifndef M_PHASE_H #define M_PHASE_H #include "constant.h" #include "u_opt.h" /*--------------------------------------------------------------------------*/ /* phase: extract phase (degrees) from COMPLEX number * rotates 90 degrees! (ref to sine instead of cosine) */ inline double phase(COMPLEX x) { double rv = NOT_VALID; switch (OPT::phase) { case pDEGREES: rv = arg(x)*RTOD; break; case pP_DEGREES:untested(); rv = arg(x)*RTOD; if (rv < 0) {untested(); rv += 360; }else{untested(); } break; case pN_DEGREES:itested(); rv = arg(x)*RTOD; if (rv > 0) {itested(); rv -= 360; }else{itested(); } break; case pRADIANS: rv = arg(x); break; }; return rv; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_spline.h000066400000000000000000000050071316501211100144510ustar00rootroot00000000000000/*$Id: m_spline.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * piecewise polynomial interpolation * Constructor args: * table : a vector of xy pairs, all of the data points. * d0, dn: boundary conditions -- value of the first derivative at boundaries. * order : order of interpolating polynomial, must be in {0, 1, 2, 3}. * * Outside the range, the result is linearly extrapolated with slope d0, dn. * ("clamped" splines) * * If d0 or dn is set to NOT_INPUT, it is a "natural" spline, with the * derivative being determined by the data. * See any numerical analysis text for explanation. */ //testing=trivial 2006.07.17 #ifndef M_SPLINE_H #define M_SPLINE_H #include "u_parameter.h" /*--------------------------------------------------------------------------*/ class FPOLY1; /*--------------------------------------------------------------------------*/ class INTERFACE SPLINE { private: int _n; double* _x; double* _f0; double* _f1; double* _f2; double* _f3; int _order; double _d0; void construct_order_3(double* h, double d0, double dn); void construct_order_2(double* h, double d0, double dn); void construct_order_1(double* h, double d0, double dn); public: SPLINE(const std::vector& table, double d0, double dn, int order); SPLINE(const std::vector,PARAMETER > >& table, double d0, double dn, int order); ~SPLINE(); FPOLY1 at(double x)const; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/m_wave.h000066400000000000000000000114511316501211100141210ustar00rootroot00000000000000/*$Id: m_wave.h 2014/11/23$ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * "wave" class, for transmission lines and delays */ //testing=script 2006.07.13 #include "l_denoise.h" #include "m_interp.h" /*--------------------------------------------------------------------------*/ class WAVE { private: std::deque _w; double _delay; public: typedef std::deque::iterator iterator; typedef std::deque::const_iterator const_iterator; explicit WAVE(double d=0); explicit WAVE(const WAVE&); ~WAVE() {} WAVE& set_delay(double d); WAVE& initialize(); WAVE& push(double t, double v); FPOLY1 v_out(double t)const; double v_reflect(double t, double v_total)const; WAVE& operator+=(const WAVE& x); WAVE& operator+=(double x); WAVE& operator*=(const WAVE& x); WAVE& operator*=(double x); const_iterator begin()const {return _w.begin();} const_iterator end()const {return _w.end();} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // push: insert a signal on the "input" end. // args: t = the time now // v = the value to push // inline WAVE& WAVE::push(double t, double v) { _w.push_back(DPAIR(t+_delay, v)); return *this; } /*--------------------------------------------------------------------------*/ // initialize: remove all info, fill it with all 0. // inline WAVE& WAVE::initialize() { _w.clear(); return *this; } /*--------------------------------------------------------------------------*/ inline WAVE::WAVE(const WAVE& w) :_w(w._w), _delay(w._delay) { untested(); } /*--------------------------------------------------------------------------*/ // constructor -- argument is the delay // inline WAVE::WAVE(double d) :_w(), _delay(d) { initialize(); } /*--------------------------------------------------------------------------*/ inline WAVE& WAVE::set_delay(double d) { _delay = d; return *this; } /*--------------------------------------------------------------------------*/ // v_out: return the value at the "output" end // args: t = the time now // inline FPOLY1 WAVE::v_out(double t)const { return interpolate(_w.begin(), _w.end(), t, 0., 0.); } /*--------------------------------------------------------------------------*/ // reflect: calculate a reflection // args: t = the time now // v_total = actual voltage across the termination // returns: the value (voltage) to send back as the reflection // inline double WAVE::v_reflect(double t, double v_total)const { // return (v_total*2 - v_out(t)); // de-noised return dn_diff(v_total*2, v_out(t).f0); } /*--------------------------------------------------------------------------*/ inline WAVE& WAVE::operator+=(const WAVE& x) { untested(); for (std::deque::iterator i = _w.begin(); i != _w.end(); ++i) { untested(); (*i).second += x.v_out((*i).first).f0; } return *this; } /*--------------------------------------------------------------------------*/ inline WAVE& WAVE::operator+=(double x) { untested(); for (std::deque::iterator i = _w.begin(); i != _w.end(); ++i) { untested(); (*i).second += x; } return *this; } /*--------------------------------------------------------------------------*/ inline WAVE& WAVE::operator*=(const WAVE& x) { untested(); for (std::deque::iterator i = _w.begin(); i != _w.end(); ++i) { untested(); (*i).second *= x.v_out((*i).first).f0; } return *this; } /*--------------------------------------------------------------------------*/ inline WAVE& WAVE::operator*=(double x) { untested(); for (std::deque::iterator i = _w.begin(); i != _w.end(); ++i) { untested(); (*i).second *= x; } return *this; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: include/md.h000066400000000000000000000141131316501211100132410ustar00rootroot00000000000000/*$Id: md.h 2016/05/15 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Machine dependent, configuration, and standard includes */ //testing=trivial 2006.07.17 #ifndef MD_H_INCLUDED #define MD_H_INCLUDED /*--------------------------------------------------------------------------*/ /* autoconf stuff */ #ifdef HAVE_CONFIG_H #include "config.h" #endif /*--------------------------------------------------------------------------*/ /* std collection of includes */ // system #include #include #include #include #include #include #include #include #include #include #include #include #include #include // types #include #include // containers #include #include #include #include #include // algorithms #include #include /* usual but non-standard (POSIX??) collection of includes */ #include /* chdir, access, getcwd */ #include /* old style unix files */ /*--------------------------------------------------------------------------*/ /* constants related to memory size, word size, etc */ enum { BUFLEN = 256, BIGBUFLEN = 4096 }; /*--------------------------------------------------------------------------*/ /* user interface preferences */ #define I_PROMPT "gnucap> " #define CKT_PROMPT ">" #define ANTI_COMMENT "*>" /*--------------------------------------------------------------------------*/ #if defined(__WIN32__) #define ENDDIR "/\\" #define PATHSEP ';' #define STEPFILE "/tmp/SXXXXXX" #define SHELL OS::getenv("COMSPEC") #else #define ENDDIR "/" #define PATHSEP ':' #define STEPFILE "/tmp/SXXXXXX" #define SHELL OS::getenv("SHELL") #endif /*--------------------------------------------------------------------------*/ /* machine and compiler patches */ #if defined(__MINGW32__) #define SIGSETJMP_IS_BROKEN #define MS_DLL #endif /*--------------------------------------------------------------------------*/ /* some convenient names */ typedef std::complex COMPLEX; typedef std::pair DPAIR; /*--------------------------------------------------------------------------*/ // dynamic cast kluge. // Strictly, this should always be dynamic_cast, but if it has already // been checked, don't bother checking again, hence static_cast. // It works and is faster. #if defined(NDEBUG) #define prechecked_cast static_cast #else #define prechecked_cast dynamic_cast #endif /*--------------------------------------------------------------------------*/ /* portability hacks */ #if !defined(MS_DLL) // The usual way for POSIX compliant systems #include #define INTERFACE #else // Microsoft DLL hacks -- thanks to Holger Vogt and Cesar Strauss for the info // Make the MS DLL functions look like the posix ones. #include #undef min #undef max #undef INTERFACE #ifdef MAKE_DLL #define INTERFACE __declspec(dllexport) #else #define INTERFACE #endif inline void* dlopen(const char* f, int) { return LoadLibrary(const_cast(f)); } inline void dlclose(void* h) { FreeLibrary((HINSTANCE)h); } inline char* dlerror() { static LPVOID lpMsgBuf = NULL; // free the error message buffer if (lpMsgBuf) { LocalFree(lpMsgBuf); } // get the error code DWORD dw = GetLastError(); // get the corresponding error message FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); return (char*)lpMsgBuf; } #define RTLD_LAZY 0x00001 /* Lazy function call binding. */ #define RTLD_NOW 0x00002 /* Immediate function call binding. */ #define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */ #define RTLD_NOLOAD 0x00004 /* Do not load the object. */ #define RTLD_DEEPBIND 0x00008 /* Use deep binding. */ #define RTLD_GLOBAL 0x00100 #define RTLD_LOCAL 0 #define RTLD_NODELETE 0x01000 #endif #if defined(SIGSETJMP_IS_BROKEN) #undef sigjmp_buf #undef siglongjmp #undef sigsetjmp #define sigjmp_buf jmp_buf #define siglongjmp(a,b) longjmp(a,b) #define sigsetjmp(a,b) setjmp(a) #endif #if !defined(SIGNALARGS) #define SIGNALARGS int #endif /*--------------------------------------------------------------------------*/ /* temporary hacks */ enum RUN_MODE { rPRE_MAIN, /* it hasn't got to main yet */ rPRESET, /* do set up commands now, but not simulation */ /* store parameters, so bare invocation of a */ /* simulation command will do it this way. */ rINTERACTIVE, /* run the commands, interactively */ rSCRIPT, /* execute now, as a command, then restore mode */ rBATCH /* execute now, as a command, then exit */ }; class INTERFACE ENV { public: static RUN_MODE run_mode; // variations on handling of dot commands }; /*--------------------------------------------------------------------------*/ /* my standard collection of includes */ #include "io_trace.h" #include "io_error.h" /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/mode.h000066400000000000000000000056771316501211100136040ustar00rootroot00000000000000/*$Id: mode.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * several enumerated types to identify various modes */ //testing=script,complete 2006.07.14 #ifndef MODE_H #define MODE_H #include "io_.h" /*--------------------------------------------------------------------------*/ enum smode_t {moUNKNOWN=0, moANALOG=1, moDIGITAL, moMIXED}; inline OMSTREAM& operator<<(OMSTREAM& o, smode_t t) { const std::string s[] = {"unknown", "analog", "digital", "mixed"}; assert(t >= int(moUNKNOWN)); assert(t <= int(moMIXED)); return (o << s[t]); } enum SIM_MODE { // simulation types s_NONE, /* not doing anything, reset by cmd interpreter */ s_AC, /* AC analysis */ s_OP, /* op command */ s_DC, /* dc sweep command */ s_TRAN, /* transient command */ s_FOURIER /* fourier command */ }; const int sSTART = s_NONE; const int sCOUNT = s_FOURIER + 1; inline OMSTREAM& operator<<(OMSTREAM& o, SIM_MODE t) { const std::string s[] = {"ALL", "AC", "OP", "DC", "TRAN", "FOURIER"}; assert(t >= int(s_NONE)); assert(t <= int(s_FOURIER)); return (o << s[t]); } enum SIM_PHASE { // which of the many steps... p_NONE, /* not doing anything, reset by cmd interpreter */ p_INIT_DC, /* initial DC analysis */ p_DC_SWEEP, /* DC analysis sweep, in progress */ p_TRAN, /* transient, in progress */ p_RESTORE /* transient restore after stop */ }; enum PROBE_INDEX { // iter probes (continue after SIM_MODE) iPRINTSTEP = sCOUNT, /* iterations for this printed step */ iSTEP, /* iterations this internal step */ iTOTAL /* total iterations since startup */ }; const int iCOUNT = iTOTAL + 1; /* number of iteration counters */ /* control probes */ #define cSTEPCAUSE (0) /* what caused this time step */ #define cSTEPS (1) /* count of hidden steps (+ this unhidden) */ #define cCOUNT (2) /* number of control probes */ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/patchlev.h000066400000000000000000000000471316501211100144500ustar00rootroot00000000000000#define PATCHLEVEL "master 2017.10.03" include/s__.h000066400000000000000000000073101316501211100134020ustar00rootroot00000000000000/*$Id: s__.h 2016/09/22 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for simulation methods */ //testing=script,complete 2006.07.14 #ifndef S___H #define S___H #include "u_opt.h" #include "c_comand.h" /*--------------------------------------------------------------------------*/ class CARD; class CARD_LIST; class CS; class PROBELIST; class COMPONENT; class WAVE; /*--------------------------------------------------------------------------*/ class SIM : public CMD { /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: enum TRACE { // how much diagnostics to show tNONE = 0, /* no extended diagnostics */ tUNDER = 1, /* show underlying analysis, important pts only */ tALLTIME = 2, /* show every time step, including hidden */ tREJECTED = 3, /* show rejected time steps */ tITERATION = 4, /* show every iteration, including nonconverged */ tVERBOSE = 5 /* show extended diagnostics */ }; enum OUTFLAGS { // bit fields ofNONE = 0, ofPRINT = 1, ofSTORE = 2, ofKEEP = 4 }; /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ CARD_LIST* _scope; OMSTREAM _out; /* places to send the results */ public: /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ private: const std::string long_label()const {unreachable(); return "";} private: virtual void setup(CS&) = 0; virtual void sweep() = 0; virtual void finish() {} virtual bool is_step_rejected()const {return false;} explicit SIM(const SIM&):CMD(),_scope(NULL) {unreachable(); incomplete();} protected: explicit SIM(): CMD(),_scope(NULL) {} public: ~SIM(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: void command_base(CS&); /* s__init.cc */ void reset_timers(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: const PROBELIST& alarmlist()const; /* s__out.cc */ const PROBELIST& plotlist()const; const PROBELIST& printlist()const; const PROBELIST& storelist()const; virtual void outdata(double, int); virtual void head(double,double,const std::string&); virtual void print_results(double); virtual void alarm(); virtual void store_results(double); public: /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: /* s__solve.cc */ bool solve(OPT::ITL,TRACE); bool solve_with_homotopy(OPT::ITL,TRACE); void advance_time(); private: void finish_building_evalq(); void set_flags(); void clear_arrays(); void evaluate_models(); void set_damp(); void load_matrix(); void solve_equations(); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/s_tr.h000066400000000000000000000113441316501211100136130ustar00rootroot00000000000000/*$Id: s_tr.h 2016/09/22 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Transient analysis */ //testing=script,complete 2006.07.14 #ifndef S_TR_H #define S_TR_H #include "u_parameter.h" #include "s__.h" /*--------------------------------------------------------------------------*/ class TRANSIENT : public SIM { /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: enum STEP_CAUSE { scUSER = 1, /* user requested */ scEVENTQ = 2, /* an "event" from the queue */ scSKIP = 3, /* effect of "skip" parameter */ scITER_R = 4, /* iter count exceeds itl4 (reducing) */ scITER_A = 5, /* iter count exceeds itl3 (holding) */ scTE = 6, /* truncation error, or device stuff */ scAMBEVENT = 7, /* ambiguous event */ scADT = 8, /* by iter count limited by max(rdt, 2*adt) */ scINITIAL = 9, /* initial guess */ scREJECT = 10, /* rejected previous time step */ scZERO = 20, /* fixed zero time step */ scSMALL = 30, /* time step too small */ scNO_ADVANCE= 100 /* after all that it still didn't advance */ }; /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ public: explicit TRANSIENT(): SIM(), _skip_in(1), _dtmax(0.), _cold(false), _cont(false), _trace(tNONE), _time_by_iteration_count(0.), _time_by_user_request(0.), _time_by_error_estimate(0.), _time_by_ambiguous_event(0.), _converged(false), _accepted(false) { } ~TRANSIENT() {} public: void do_it(CS&, CARD_LIST* scope); std::string status()const; /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ private: // s_tr_rev.cc bool review(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ private: // s_tr_set.cc void setup(CS&); protected: void options(CS&); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: // s_tr_swp.cc void sweep(); private: void set_step_cause(STEP_CAUSE); public: int step_cause()const; void first(); bool next(); void accept(); void reject(); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ private: bool is_step_rejected()const {return (step_cause() > scREJECT);} explicit TRANSIENT(const TRANSIENT&): SIM(),_skip_in(1) {unreachable(); incomplete();} /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ protected: PARAMETER _tstart; // sweep start time PARAMETER _tstop; // sweep stop time PARAMETER _tstrobe; // printed step size PARAMETER _dtratio_in;// ratio of max/min dt PARAMETER _dtmin_in; // min internal step size PARAMETER _dtmax_in; // max internal step size (user) PARAMETER _skip_in; // fixed step size: internal steps per external double _time1; /* time at previous time step */ double _dtmax; // max internal step size (step / _skip) bool _cold; // flag: start time=0, all voltages=0 bool _cont; // flag: continue from previous run int _stepno; // count of visible (saved) steps private: TRACE _trace; // enum: show extended diagnostics double _time_by_iteration_count; double _time_by_user_request; double _time_by_error_estimate; double _time_by_ambiguous_event; bool _converged; bool _accepted; /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ private: static int steps_accepted_; static int steps_rejected_; static int steps_total_; public: static int steps_accepted() {return steps_accepted_;} static int steps_rejected() {return steps_rejected_;} static int steps_total() {return steps_total_;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/spice-wrapper.cc000066400000000000000000001731211316501211100155650ustar00rootroot00000000000000/* $Id: spice-wrapper.cc 2017/06/07 $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This file is distributed as is, completely without warranty or * service support. The author and its employees are not liable for * the condition or performance of the software. * * The author owns the copyright but shall not be liable for any * infringement of copyright or other proprietary rights brought by * third parties against the users of the software. * * The author hereby disclaims all implied warranties. * * This author grants the users the right to modify, copy, and * redistribute this file, for any purpose, both within the user's * organization and externally. */ //testing=script 2008.11.28 // code style comment: Use of "reinterpret_cast" is always bad style. /*--------------------------------------------------------------------------*/ // spice includes extern "C" { #define _complex CompleX #define NODE NodE #define public PubliC #define bool BooL #define main MaiN #define setenv SetenV #include "capabil.h" #include "const.h" #include "iferrmsg.h" #include "devdefs.h" #include "ftedefs.h" #include "optdefs.h" #ifdef JSPICE3 #include "uflags.h" #include "inpdefs.h" #include "tskdefs.h" #endif #undef setenv #undef main #undef bool #undef public #undef NODE #undef _complex #undef eq #undef OPT #undef LINEAR #undef STRING #undef BOOLEAN #undef VT_BOOL #undef VT_NUM #undef VT_REAL #undef VT_STRING #undef VT_LIST } /*--------------------------------------------------------------------------*/ // gnucap includes #include "globals.h" #include "u_xprobe.h" #include "e_paramlist.h" #include "e_storag.h" #include "e_model.h" /*--------------------------------------------------------------------------*/ // customization -- must be last #include "wrapper.h" #if !defined(UNCONNECTED_NODES) #define UNCONNECTED_NODES uDISALLOW #if (MIN_NET_NODES != MAX_NET_NODES) #error "What should I do with the unconnected nodes?" #endif #endif #if !defined(VALUE_NAME) #define VALUE_NAME "#" #endif #if !defined(TAIL_SIZE) #define TAIL_SIZE 1 #endif #if !defined(IS_VALID) #define IS_VALID {return MODEL_CARD::is_valid(d);} #endif /*--------------------------------------------------------------------------*/ extern SPICEdev info; const int SPICE_INVALID_NODE = 0; const int SPICE_UNCONNECTED_NODE = -1; const int OFFSET = 1; enum {uGROUND=1, uFLOAT=2, uDISALLOW=3}; const int MATRIX_NODES = (MAX_NET_NODES + INTERNAL_NODES); class DEV_SPICE; class MODEL_SPICE; static COMMON_PARAMLIST Default_Params(CC_STATIC); /*--------------------------------------------------------------------------*/ /* function mapping: see devdefs.h * DEVparam DEV_SPICE::parse_spice * DEVmodParam MODEL_SPICE::parse_params * DEVload DEV_SPICE::do_tr * DEVsetup MODEL_SPICE::precalc, DEV_SPICE::expand * DEVunsetup not used -- spice baggage -- just zeros some nodes * DEVpzSetup not used -- pole-zero * DEVtemperature DEV_SPICE::internal_precalc * DEVtrunc DEV_SPICE::tr_review * DEVfindBranch not used -- current probes for current controlled source * DEVacLoad DEV_SPICE::do_ac * DEVaccept not used -- sets break points //BUG// need for: isrc, ltra, tra, vsrc, cpl, txl * DEVdestroy not used -- spice baggage -- deletes a list * DEVmodDelete not used -- spice baggage -- delete one model * DEVdelete not used -- spice baggage -- delete one instance * DEVsetic not used -- "getic" -- initial conditions //BUG// need this * DEVask DEV_SPICE::print_args, DEV_SPICE::tr_probe_num * DEVmodAsk MODEL_SPICE::print_params, MODEL_SPICE::print_calculated * DEVpzLoad not used -- pole zero -- should use for AC * DEVconvTest DEV_SPICE::do_tr * DEVsenSetup not used -- sensitivity * DEVsenLoad not used -- sensitivity * DEVsenUpdate not used -- sensitivity * DEVsenAcLoad not used -- sensitivity * DEVsenPrint not used -- sensitivity * DEVsenTrunc not used -- sensitivity * DEVdisto not used -- distortion * DEVnoise not used -- noise */ /*--------------------------------------------------------------------------*/ union SPICE_MODEL_DATA { mutable GENmodel _gen;// generic -- use this one MODEL _full; // determines size char _space; // char pointer for fill_n SPICE_MODEL_DATA() { std::fill_n(&_space, sizeof(MODEL), '\0'); } SPICE_MODEL_DATA(const SPICE_MODEL_DATA& p) : _full(p._full) { } }; /*--------------------------------------------------------------------------*/ class MODEL_SPICE : public MODEL_CARD{ private: static int _count; static CKTcircuit _ckt; public: SPICE_MODEL_DATA _spice_model; std::string _key; std::string _level; PARAM_LIST _params; protected: explicit MODEL_SPICE(const MODEL_SPICE& p); // for clone public: explicit MODEL_SPICE(const DEV_SPICE* p); // for dispatcher ~MODEL_SPICE(); public: // override virtual MODEL_CARD* clone()const {return new MODEL_SPICE(*this);} bool is_valid(const COMPONENT* d)const IS_VALID //void expand(); void precalc_first(); public: // type void set_dev_type(const std::string& nt); std::string dev_type()const { return _key;} public: // parameters bool param_is_printable(int)const; std::string param_name(int)const; std::string param_name(int i, int j)const; std::string param_value(int)const; void set_param_by_name(std::string Name, std::string Value); void set_param_by_index(int, std::string&, int); int param_count_dont_print()const {return MODEL_CARD::param_count();} int param_count()const { return (static_cast(_params.size()) + MODEL_CARD::param_count());} void Set_param_by_name(std::string Name, std::string Value); public: // not virtual static int count() {untested(); return _count;} static CKTcircuit* ckt() {return &_ckt;} static void init_ckt(); }; /*--------------------------------------------------------------------------*/ class DEV_SPICE : public STORAGE { private: static int _count; public: private: union { mutable GENinstance _spice_instance; INSTANCE _inst; char _inst_space; }; std::string _modelname; const MODEL_SPICE* _model; const SPICE_MODEL_DATA* _spice_model; node_t _nodes[MATRIX_NODES]; DPAIR* _matrix[MATRIX_NODES+OFFSET]; // For tran, real is now, imag is saved. DPAIR _matrix_core[MATRIX_NODES+OFFSET][MATRIX_NODES+OFFSET]; public: double _i0[MATRIX_NODES+OFFSET]; // right side - current offsets or ac real part double _i1[MATRIX_NODES+OFFSET]; // right side - saved ......... or ac imag part double _v1[MATRIX_NODES+OFFSET]; // input voltages double* (_states[8]); // array of 8 pointers double* _states_1; int _num_states; int _maxEqNum; private: explicit DEV_SPICE(const DEV_SPICE& p); public: explicit DEV_SPICE(); ~DEV_SPICE(); protected: // override virtual char id_letter()const {untested();return SPICE_LETTER[0];} bool print_type_in_spice()const {return true;} std::string value_name()const {return VALUE_NAME;} int max_nodes()const {return MAX_NET_NODES;} int min_nodes()const {return MIN_NET_NODES;} int matrix_nodes()const {return MATRIX_NODES;} int net_nodes()const {return _net_nodes;} int int_nodes()const {return INTERNAL_NODES;} CARD* clone()const {return new DEV_SPICE(*this);} //void precalc_first(); //ELEMENT void expand(); void precalc_last(); //void map_nodes(); //ELEMENT void internal_precalc(); void tr_iwant_matrix() {tr_iwant_matrix_extended();} void tr_begin() {STORAGE::tr_begin(); internal_precalc();} void tr_restore() {STORAGE::tr_restore(); internal_precalc();} void dc_advance() {STORAGE::dc_advance(); internal_precalc();} void tr_advance(); void tr_regress(); bool tr_needs_eval()const; //void tr_queue_eval(); //ELEMENT bool do_tr(); void tr_load(); TIME_PAIR tr_review(); void tr_accept(); void tr_unload(); double tr_involts()const {unreachable();return NOT_VALID;} //double tr_input()const //ELEMENT double tr_involts_limited()const {unreachable();return NOT_VALID;} //double tr_input_limited()const //ELEMENT double tr_amps()const {itested();return NOT_VALID;} double tr_probe_num(const std::string&)const; void ac_iwant_matrix() {ac_iwant_matrix_extended();} void ac_begin(); void do_ac(); void ac_load(); COMPLEX ac_involts()const {unreachable();return NOT_VALID;} COMPLEX ac_amps()const {unreachable();return NOT_VALID;} XPROBE ac_probe_ext(const std::string&)const {itested(); return XPROBE(NOT_VALID, mtNONE);} int tail_size()const {return TAIL_SIZE;} public: // type void set_dev_type(const std::string& nt); std::string dev_type()const {return _modelname;} public: // ports // bool port_exists(int i)const //COMPONENT std::string port_name(int i)const {itested(); assert(i >= 0); assert(i < MAX_NET_NODES); return port_names[i]; } // const std::string& port_value(int i)const; //COMPONENT //void set_port_by_name(std::string& name, std::string& value); //void set_port_by_index(int index, std::string& value); private: // parameters //bool Param_exists(int i)const; // {return Param_name(i) != "";} //bool Param_is_printable(int)const; //std::string Param_name(int)const; //std::string Param_name(int i, int j)const {return STORAGE::Param_name(i, j);} //std::string Param_value(int)const; void set_param_by_name(std::string Name, std::string Value); void Set_param_by_name(std::string Name, std::string Value); void Set_param_by_index(int, std::string&, int); int param_count_dont_print()const {return common()->COMMON_COMPONENT::param_count();} private: CKTcircuit* ckt()const {return MODEL_SPICE::ckt();} void init_ckt() {MODEL_SPICE::init_ckt();} void update_ckt()const; void localize_ckt()const; int* spice_nodes()const {return &(_spice_instance.GENnode1);} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ CKTcircuit MODEL_SPICE::_ckt; /* * used as intended, copy-out, matters: CKTnoncon, CKTtroubleElt * * used as intended, func specific: CKTmode, CKTcurrentAnalysis * * used as intended, localized, matters: CKTstates, CKTdelta, CKTdeltaOld, * CKTag(broken), CKTorder(broken), CKTrhs, CKTrhsOld, CKTirhs, * CKTtimePoints(broken,ltra?) * * used as intended, updated, matters: CKTtime, CKTtemp, CKTomega * * used as intended, constant, matters: CKTnomTemp, CKTabstol, * CKTreltol, CKTvoltTol, CKTgmin, CKTsrcFact(broken), * CKTdefaultMosL, CKTdefaultMosW, CKTdefaultMosAD, CKTdefaultMosAS, * * used almost as intended, matters, probably ok: * CKTbypass: false to disable * CKTintegrateMethod: used only by Jspice -- set to 0 to disable * CKTsenInfo: used by sens, NULL to disable * CKTfixLimit(mos1236): 1 for Spice-2 mode * CKTbadMos3(mos3): false for Spice-3 mode * * misused: (not used by spice devs, use to pass gnucap stuff through) * CKTstat: the device (type DEV_SPICE) * CKTmaxEqNum: use as counter for internal nodes, pass to CKTmkVolt * * need to handle (ind): CKThead(ind,load) * need to handle (cpl,txl): CKTnodes(cpl,txl), * * need to handle ([iv]src): * CKTbreak([iv]src,accept), CKTfinalTime([iv]src,load), CKTstep([iv]src,load), * * need to handle (ltra): * CKTminBreak(ltra,tra,accept), CKTtrtol(ltra,trunc), * CKTmaxStep(ltra,temp), CKTtimeListSize(ltra,Jspice,accept), * CKTtimeIndex(ltra), CKTsizeIncr(ltra), CKTtryToCompact(ltra) * * used by "predictor": CKTagp, CKTpred, CKTsols * used by "sens": CKTirhsOld, CKTrhsOp * used by noise&distortion: CKTcurJob * * not used: CKTvt, CKTmaxOrder, CKTmatrix, CKTniState, CKTrhsSpare, * CKTirhsSpare, CKTsenRhs, CKTseniRhs, CKTlastNode, CKTnumStates, * CKTdcMaxIter, CKTdcTrcvMaxIter, CKTtranMaxIter, CKTbreakSize, CKTsaveDelta, * CKTbreaks, CKTpivotAbsTol, CKTpivotRelTol, CKTchgtol, CKTlteReltol, CKTlteAbstol, * CKTdelmin, CKTinitTime, CKTdiagGmin, CKTnumSrcSteps, CKTnumGminSteps, CKThadNodeset, * CKTnoOpIter, CKTisSetup, CKTdeltaList, CKTkeepOpInfo, CKTtroubleNode */ #define assert_ckt_initialized(ckt) { \ assert(ckt); \ assert((ckt)->CKTnomTemp == OPT::tnom_c + CONSTCtoK); \ assert(((ckt)->CKTcurrentAnalysis == DOING_DCOP) == CKT_BASE::_sim->command_is_op()); \ assert(((ckt)->CKTcurrentAnalysis == DOING_TRCV) == CKT_BASE::_sim->command_is_dc()); \ assert(((ckt)->CKTcurrentAnalysis == DOING_AC ) == CKT_BASE::_sim->analysis_is_ac()); \ assert(((ckt)->CKTcurrentAnalysis == DOING_TRAN) == CKT_BASE::_sim->analysis_is_tran()); \ assert((ckt)->CKTbypass == false); \ assert((ckt)->CKTabstol == OPT::abstol); \ assert((ckt)->CKTreltol == OPT::reltol); \ assert((ckt)->CKTvoltTol == OPT::vntol); \ assert((ckt)->CKTsrcFact == 1.); \ assert((ckt)->CKTdefaultMosL == OPT::defl); \ assert((ckt)->CKTdefaultMosW == OPT::defw); \ assert((ckt)->CKTdefaultMosAD == OPT::defad); \ assert((ckt)->CKTdefaultMosAS == OPT::defas); \ } void MODEL_SPICE::init_ckt() { assert(ckt()); ckt()->CKTtime = _sim->_time0; ckt()->CKTtemp = _sim->_temp_c + CONSTCtoK; //manage by update ckt()->CKTnomTemp = OPT::tnom_c + CONSTCtoK; ckt()->CKTintegrateMethod = 0; // disable if (_sim->command_is_op()) { ckt()->CKTcurrentAnalysis = DOING_DCOP; }else if (_sim->command_is_dc()) { ckt()->CKTcurrentAnalysis = DOING_TRCV; }else if (_sim->command_is_ac()) { ckt()->CKTcurrentAnalysis = DOING_AC; }else if (_sim->analysis_is_tran()) { ckt()->CKTcurrentAnalysis = DOING_TRAN; }else{ // probably probe ckt()->CKTcurrentAnalysis = 0; } ckt()->CKTmode = 0; // wrong but safe ckt()->CKTbypass = false; // manage this elsewhere ckt()->CKTabstol = OPT::abstol; ckt()->CKTreltol = OPT::reltol; ckt()->CKTvoltTol = OPT::vntol; ckt()->CKTgmin = OPT::gmin; ckt()->CKTsrcFact = 1.; // source stepping kluge ckt()->CKTdefaultMosL = OPT::defl; ckt()->CKTdefaultMosW = OPT::defw; ckt()->CKTdefaultMosAD = OPT::defad; ckt()->CKTdefaultMosAS = OPT::defas; ckt()->CKTfixLimit = false; // limiting kluge 1 == spice2 #ifndef JSPICE3 ckt()->CKTbadMos3 = false; // 1 = spice2 compat ckt()->CKTsenInfo = NULL; // used as flag to print sens info #endif #ifdef NGSPICE_17 ckt()->CKTdefaultMosM = 1.; ckt()->CKTcopyNodesets = false; #endif assert_ckt_initialized(ckt()); } #define assert_ckt_up_to_date(ckt) { \ assert_ckt_initialized(ckt); \ assert((ckt)->CKTtime == CKT_BASE::_sim->_time0); \ assert((ckt)->CKTtemp == CKT_BASE::_sim->_temp_c + CONSTCtoK); \ } void DEV_SPICE::update_ckt()const { assert_ckt_initialized(ckt()); ckt()->CKTgmin = OPT::gmin; ckt()->CKTstat = NULL; // mark as not localized ckt()->CKTtime = _sim->_time0; ckt()->CKTdelta = NOT_VALID; // localized ckt()->CKTtemp = _sim->_temp_c + CONSTCtoK; ckt()->CKTmode = 0; ckt()->CKTomega = _sim->_jomega.imag(); assert_ckt_up_to_date(ckt()); } #define assert_ckt_localized(ckt) { \ assert_ckt_up_to_date(ckt); \ assert((ckt)->CKTstat); \ DEV_SPICE* d = reinterpret_cast((ckt)->CKTstat);\ assert(d); \ assert(dynamic_cast(d)); \ assert((ckt)->CKTdelta == d->_dt); \ if (d->_dt == 0) {untested(); \ assert((ckt)->CKTag[0] == 0); \ assert((ckt)->CKTorder == 1); \ }else if (d->_time[1] != 0 && d->_method_a == mTRAP) { \ assert(conchk((ckt)->CKTag[0], 2 / d->_dt)); \ assert((ckt)->CKTorder == 2); \ }else{ \ assert(conchk((ckt)->CKTag[0], 1 / d->_dt)); \ assert((ckt)->CKTorder == 1); \ } \ assert((ckt)->CKTag[0] == (ckt)->CKTag[0]); \ assert((ckt)->CKTrhs == d->_i0); \ assert((ckt)->CKTrhsOld == d->_v1); \ assert((ckt)->CKTirhs == d->_i1); \ assert((ckt)->CKTtimePoints == d->_time); \ } void DEV_SPICE::localize_ckt()const { assert_ckt_up_to_date(ckt()); ckt()->CKTstat = reinterpret_cast(const_cast(this)); assert(OPT::_keep_time_steps <= 8); for (int ii=0; ii<8; ++ii) { ckt()->CKTstates[ii] = _states[ii]; } //assert(ckt()->CKTtime == _time[0]); //BUG// can fail in ac ckt()->CKTdelta = _dt; for (int ii=0; iiCKTdeltaOld[ii] = _time[ii] - _time[ii+1]; } assert(_dt == NOT_VALID || conchk(ckt()->CKTdelta, ckt()->CKTdeltaOld[0])); //ckt()->CKTag[0] = tr_c_to_g(1, ckt()->CKTag[0]); // defer fixing this -- GEAR not here if (_dt == 0) {untested(); ckt()->CKTag[1] = ckt()->CKTag[0] = 0; ckt()->CKTorder = 1; }else if (_time[1] != 0 && _method_a == mTRAP) { ckt()->CKTag[0] = 2 / _dt; ckt()->CKTag[1] = 1; ckt()->CKTorder = 2; }else{ ckt()->CKTag[0] = 1 / _dt; ckt()->CKTag[1] = -1 / _dt; ckt()->CKTorder = 1; } ckt()->CKTrhs = const_cast(_i0); ckt()->CKTrhsOld = const_cast(_v1); ckt()->CKTirhs = const_cast(_i1); ckt()->CKTmode = 0; ckt()->CKTtimePoints = const_cast(_time); assert_ckt_localized(ckt()); } #define assert_model_raw() { \ assert(_spice_model._gen.GENmodType == 0); \ assert(_spice_model._gen.GENnextModel == NULL); \ assert(_spice_model._gen.GENinstances == NULL); \ } #define assert_model_unlocalized() { \ assert(_model->_spice_model._gen.GENinstances == NULL);\ assert(_spice_model); \ assert(_spice_model->_gen.GENmodType == 0); \ assert(_spice_model->_gen.GENnextModel == NULL); \ assert(_spice_model->_gen.GENinstances == NULL); \ assert(_spice_model->_gen.GENmodName); \ } #define assert_model_localized() { \ assert(_spice_model); \ assert(_spice_model->_gen.GENmodType == 0); \ assert(_spice_model->_gen.GENnextModel == NULL); \ assert(_spice_model->_gen.GENinstances); \ assert(_spice_model->_gen.GENmodName); \ } #define assert_instance() { \ assert(_spice_instance.GENnextInstance == NULL); \ assert(_spice_instance.GENname == NULL); \ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ struct IFVA { IFvalue* _v; int _type; IFVA(IFvalue* v, int t) :_v(v), _type(t) {assert(v);} void operator=(const std::string& s) { CS cmd(CS::_STRING, s); assert(_v); int datatype = _type; if (datatype & IF_SET) { if (datatype & IF_VECTOR) {untested(); incomplete(); }else{ } switch (datatype & 0xff) { case IF_FLAG: _v->iValue = true; break; case IF_INTEGER: cmd >> _v->iValue; break; case IF_REAL: cmd >> _v->rValue; break; case IF_COMPLEX:untested(); //cmd >> _v->cValue; incomplete(); break; case IF_NODE:untested(); incomplete(); break; case IF_STRING: { //assert(!(_v->sValue)); //BUG//memory leak -- this is never deleted _v->sValue = new char[s.length()+1]; strcpy(_v->sValue, s.c_str()); break; } case IF_INSTANCE: untested(); incomplete(); break; case IF_PARSETREE:untested(); incomplete(); break; default: unreachable(); break; } }else{untested(); } } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ MODEL_SPICE::MODEL_SPICE(const DEV_SPICE* p) :MODEL_CARD(p), _spice_model(), _key(), _level(), _params() { assert_model_raw(); } /*--------------------------------------------------------------------------*/ MODEL_SPICE::MODEL_SPICE(const MODEL_SPICE& p) :MODEL_CARD(p), _spice_model(p._spice_model), _key(p._key), _level(p._level), _params(p._params) { assert_model_raw(); } /*--------------------------------------------------------------------------*/ MODEL_SPICE::~MODEL_SPICE() { --_count; } /*--------------------------------------------------------------------------*/ void MODEL_SPICE::Set_param_by_name(std::string Name, std::string new_value) { assert_model_raw(); assert(info.DEVpublic.numModelParms); assert(info.DEVpublic.modelParms); assert(info.DEVmodParam); int num_params = *(info.DEVpublic.numModelParms); for (int i = 0; i < num_params; ++i) { IFparm Parms = info.DEVpublic.modelParms[i]; if (Name == Parms.keyword) { IFvalue Value; IFVA v(&Value, Parms.dataType); v = new_value; int ok = info.DEVmodParam(Parms.id, &Value, &_spice_model._gen); assert(ok == OK); return; }else{ } } if (Name != "level") {untested(); throw Exception_No_Match(Name); }else{ } } /*--------------------------------------------------------------------------*/ void MODEL_SPICE::set_param_by_name(std::string Name, std::string Value) { if (OPT::case_insensitive) { notstd::to_lower(&Name); }else{ } _params.set(Name, Value); Set_param_by_name(Name, to_string(_params[Name].e_val(1,scope()))); } /*--------------------------------------------------------------------------*/ void MODEL_SPICE::precalc_first() { MODEL_CARD::precalc_first(); Set_param_by_name(_key, "1"); // push down parameters into raw spice data for (PARAM_LIST::iterator i = _params.begin(); i != _params.end(); ++i) { if (i->second.has_hard_value()) { try { Set_param_by_name(i->first, to_string(i->second.e_val(1,scope()))); }catch (Exception_No_Match&) { error(bTRACE, long_label() + ": bad parameter: " + i->first + ", ignoring\n"); } }else{ } } init_ckt(); if (info.DEVsetup) { assert_model_raw(); int ok = info.DEVsetup(NULL, &_spice_model._gen, ckt(), NULL); assert(ok == OK); }else{untested(); } } /*--------------------------------------------------------------------------*/ void MODEL_SPICE::set_dev_type(const std::string& new_type) { assert_model_raw(); //_spice_model._gen.set_mod_name(short_label()); std::string s = short_label(); char* p = new char[s.length()+1]; //BUG//memory leak s.copy(p, std::string::npos); p[s.length()] = '\0'; _spice_model._gen.GENmodName = p; _key = new_type; if (OPT::case_insensitive) { notstd::to_lower(&_key); }else{ } } /*--------------------------------------------------------------------------*/ bool MODEL_SPICE::param_is_printable(int i)const { assert(i < MODEL_SPICE::param_count()); if (i >= MODEL_CARD::param_count()) { return _params.is_printable(MODEL_SPICE::param_count() - 1 - i); }else{ return MODEL_CARD::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SPICE::param_name(int i)const { assert(i < MODEL_SPICE::param_count()); if (i >= MODEL_CARD::param_count()) { return _params.name(MODEL_SPICE::param_count() - 1 - i); }else{ return MODEL_CARD::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SPICE::param_name(int i, int j)const {untested(); assert(i < MODEL_SPICE::param_count()); if (j == 0) {untested(); return param_name(i); }else if (i >= MODEL_CARD::param_count()) {untested(); return ""; }else{untested(); return MODEL_CARD::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_SPICE::param_value(int i)const { assert(i < MODEL_SPICE::param_count()); if (i >= MODEL_CARD::param_count()) { return _params.value(MODEL_SPICE::param_count() - 1 - i); }else{ return MODEL_CARD::param_value(i); } } /*--------------------------------------------------------------------------*/ void MODEL_SPICE::set_param_by_index(int, std::string&, int) {untested(); unreachable(); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ DEV_SPICE::DEV_SPICE() :STORAGE(), _inst(), _modelname(""), _model(NULL), _spice_model(NULL), _nodes(), _matrix(), _matrix_core(), _i0(), _i1(), _v1(), _states_1(NULL), _num_states(0), _maxEqNum(0) { attach_common(&Default_Params); std::fill_n(&_inst_space, sizeof(INSTANCE), '\0'); assert_instance(); { int* node = spice_nodes(); for (int ii = 0; ii < matrix_nodes(); ++ii) { node[ii] = SPICE_INVALID_NODE; } } _n = _nodes; for (int ii = 0; ii < matrix_nodes(); ++ii) { assert(!(_n[ii].n_())); } for (int ii = 0; ii < matrix_nodes()+OFFSET; ++ii) { _matrix[ii] = _matrix_core[ii]; assert(_matrix[ii]); } assert(OPT::_keep_time_steps <= 8); for (int ii=0; ii<8; ++ii) { _states[ii] = NULL; } ++_count; assert_instance(); } /*--------------------------------------------------------------------------*/ DEV_SPICE::DEV_SPICE(const DEV_SPICE& p) :STORAGE(p), _inst(p._inst), _modelname(p._modelname), _model(p._model), _spice_model(p._spice_model), _nodes(), _matrix(), _matrix_core(), _i0(), _i1(), _v1(), _states_1(NULL), _num_states(p._num_states), _maxEqNum(p._maxEqNum) { assert_instance(); { int* node = spice_nodes(); for (int ii = 0; ii < matrix_nodes(); ++ii) { assert(node[ii] == SPICE_INVALID_NODE); } } _n = _nodes; for (int ii = 0; ii < matrix_nodes(); ++ii) { _n[ii] = p._n[ii]; } for (int ii = 0; ii < matrix_nodes()+OFFSET; ++ii) { _matrix[ii] = _matrix_core[ii]; assert(_matrix[ii]); } assert(OPT::_keep_time_steps <= 8); for (int ii=0; ii<8; ++ii) { _states[ii] = NULL; } ++_count; assert_instance(); } /*--------------------------------------------------------------------------*/ DEV_SPICE::~DEV_SPICE() { assert_instance(); --_count; if (_states[0]) { // regular instances for (int ii=0; iiCOMMON_COMPONENT::Set_param_by_name(Name, new_value); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::set_param_by_name(std::string Name, std::string Value) { if (OPT::case_insensitive) { notstd::to_lower(&Name); }else{ } COMPONENT::set_param_by_name(Name, Value); COMMON_PARAMLIST* c = dynamic_cast(mutable_common()); assert(c); Set_param_by_name(Name, to_string(c->_params[Name].e_val(1,scope()))); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::Set_param_by_index(int i, std::string& new_value, int offset) { assert_instance(); assert(info.DEVpublic.numInstanceParms); assert(info.DEVpublic.instanceParms); assert(info.DEVparam); int num_params = *(info.DEVpublic.numInstanceParms); if (i < num_params) { IFparm Parms = info.DEVpublic.instanceParms[i]; IFvalue Value; IFVA v(&Value, Parms.dataType); v = new_value; #ifdef JSPICE3 int ok = info.DEVparam(ckt(), Parms.id, &Value, &_spice_instance, NULL); #else int ok = info.DEVparam(Parms.id, &Value, &_spice_instance, NULL); #endif assert(ok == OK); }else{untested(); STORAGE::set_param_by_index(i-num_params, new_value, offset+num_params); } assert_instance(); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::expand() { assert_instance(); assert(info.DEVsetup); STORAGE::expand(); init_ckt(); { //-------- fix up external nodes int* node = spice_nodes(); for (int ii = 0; ii < net_nodes(); ++ii) { node[ii] = ii+OFFSET; } if (UNCONNECTED_NODES == uGROUND) { for (int ii = net_nodes(); ii < max_nodes(); ++ii) {itested(); node[ii] = ii+OFFSET; } }else if (UNCONNECTED_NODES == uFLOAT) { for (int ii = net_nodes(); ii < max_nodes(); ++ii) {untested(); node[ii] = SPICE_UNCONNECTED_NODE; } }else{ assert(UNCONNECTED_NODES == uDISALLOW); assert(min_nodes() == max_nodes()); assert(net_nodes() == max_nodes()); } ckt()->CKTmaxEqNum = max_nodes(); for (int ii = max_nodes(); ii < matrix_nodes(); ++ii) { node[ii] = 0; } } { //------- attach model, set up matrix pointers _model = dynamic_cast(find_model(_modelname)); if (!_model) { throw Exception_Model_Type_Mismatch(long_label(), _modelname, DEVICE_TYPE); }else{ SMPmatrix* matrix = reinterpret_cast(_matrix); _num_states = 0; _spice_instance.GENmodPtr = &(_model->_spice_model._gen); _spice_model = &(_model->_spice_model); SPICE_MODEL_DATA spice_model_copy(*_spice_model); spice_model_copy._gen.GENinstances = &_spice_instance; //------------- int ok = info.DEVsetup(matrix, &(spice_model_copy._gen), ckt(), &_num_states); // memory pointer setup, and sets _num_states // undesired side effects: sets values, messes up model //------------- assert(ok == OK); _maxEqNum = ckt()->CKTmaxEqNum; trace1("expand", ckt()->CKTmaxEqNum); assert_model_unlocalized(); } } //-------- allocate state vectors if (!_states[0]) { for (int ii=0; iiis_first_expand()) { int start_internal = 0; if (UNCONNECTED_NODES == uGROUND) { for (int ii = net_nodes(); ii < max_nodes(); ++ii) {itested(); _n[ii].set_to_ground(this); } start_internal = max_nodes(); }else{ assert(UNCONNECTED_NODES == uDISALLOW || UNCONNECTED_NODES == uFLOAT); start_internal = net_nodes(); } assert(start_internal != 0); int* node = spice_nodes(); // treat as array char fake_name[] = "a"; for (int ii = start_internal; ii < matrix_nodes(); ++ii) { if (node[ii] >= start_internal+OFFSET) { // real internal node _n[ii].new_model_node('.' + long_label() + '.' + fake_name, this); trace1("new int", node[ii]); assert(_n[ii].n_()); }else if (node[ii] >= 0+OFFSET) { // collapsed to an external node _n[ii] = _n[node[ii]-OFFSET]; trace1("collapse", node[ii]); assert(_n[ii].n_()); }else{ // not assigned trace1("not used", node[ii]); assert(!_n[ii].n_()); } ++(*fake_name); } for (int ii = 0; ii < matrix_nodes(); ++ii) { trace2((_n[ii].n_()) ? (_n[ii].n_()->short_label().c_str()) : ("NULL"), ii, node[ii]); } // This could be one loop, but doing it this way gives more info. for (int ii = 0; ii < min_nodes(); ++ii) { assert(_n[ii].n_()); } for (int ii = min_nodes(); ii < net_nodes(); ++ii) { assert(_n[ii].n_()); } for (int ii = net_nodes(); ii < max_nodes(); ++ii) {itested(); //assert(_n[ii].n_()); } for (int ii = max_nodes(); ii < matrix_nodes(); ++ii) { assert(_n[ii].n_() || !node[ii]); } }else{untested(); } assert_model_unlocalized(); assert_instance(); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::precalc_last() { assert(_model); assert_instance(); assert(info.DEVsetup); STORAGE::precalc_last(); init_ckt(); // push down parameters into spice data COMMON_PARAMLIST* c = dynamic_cast(mutable_common()); assert(c); for (PARAM_LIST::iterator i = c->_params.begin(); i != c->_params.end(); ++i) { if (i->second.has_hard_value()) { try { Set_param_by_name(i->first, to_string(i->second.e_val(1,scope()))); }catch (Exception_No_Match&) { error(bTRACE, long_label() + ": bad parameter: " + i->first + ", ignoring\n"); } }else{ } } int* node = spice_nodes(); // treat as array // int node_stash[MATRIX_NODES]; // notstd::copy_n(node, matrix_nodes(), node_stash); // save the real nodes { //-------- fix up external nodes, again ........ // put the originals back, so DEVsetup can mess them up the same as last time int* node = spice_nodes(); for (int ii = 0; ii < net_nodes(); ++ii) { node[ii] = ii+OFFSET; } if (UNCONNECTED_NODES == uGROUND) { for (int ii = net_nodes(); ii < max_nodes(); ++ii) {itested(); node[ii] = ii+OFFSET; } }else if (UNCONNECTED_NODES == uFLOAT) { for (int ii = net_nodes(); ii < max_nodes(); ++ii) {untested(); node[ii] = SPICE_UNCONNECTED_NODE; } }else{ assert(UNCONNECTED_NODES == uDISALLOW); assert(min_nodes() == max_nodes()); assert(net_nodes() == max_nodes()); } ckt()->CKTmaxEqNum = max_nodes(); for (int ii = max_nodes(); ii < matrix_nodes(); ++ii) { node[ii] = 0; } } { SMPmatrix* matrix = reinterpret_cast(_matrix); int num_states_garbage = 0; assert(_spice_model == &(_model->_spice_model)); SPICE_MODEL_DATA spice_model_copy(*_spice_model); spice_model_copy._gen.GENinstances = &_spice_instance; int ok = info.DEVsetup(matrix, &(spice_model_copy._gen), ckt(), &num_states_garbage); assert(ok == OK); assert(num_states_garbage == _num_states); trace3("precalc", _maxEqNum, ckt()->CKTmaxEqNum, (_maxEqNum == ckt()->CKTmaxEqNum)); assert(_maxEqNum == ckt()->CKTmaxEqNum); notstd::copy_n(node_stash, matrix_nodes(), node); // put back real nodes // hopefully, the matrix pointers are the same as last time! } assert(!is_constant()); assert_model_unlocalized(); assert_instance(); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::internal_precalc() { update_ckt(); if (info.DEVtemperature) { assert_instance(); assert_model_unlocalized(); _spice_model->_gen.GENinstances = &_spice_instance; assert_model_localized(); // ELEMENT::precalc(); .. don't call .. more analysis needed //----- int ok = info.DEVtemperature(&(_spice_model->_gen), ckt()); assert(ok == OK); //----- set_converged(); _spice_model->_gen.GENinstances = NULL; assert(!is_constant()); assert_instance(); }else{ } assert_model_unlocalized(); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::tr_advance() { STORAGE::tr_advance(); update_ckt(); double* t = _states[OPT::_keep_time_steps-1]; for (int ii = OPT::_keep_time_steps-1; ii > 0; --ii) { _states[ii] = _states[ii-1]; } _states[0] = t; notstd::copy_n(_states[1], _num_states, _states[0]); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::tr_regress() { ELEMENT::tr_regress(); update_ckt(); } /*--------------------------------------------------------------------------*/ bool DEV_SPICE::tr_needs_eval()const { if (is_q_for_eval()) { return false; }else if (!converged()) { return true; }else if (_sim->is_advance_iteration()) { return true; }else if (_time[1] == 0) { //BUG// needed for ngspice jfet, but not for spice3f5 jfet return true; }else{ int* node = spice_nodes(); // check the node voltages, reference to ground for (int ii=0; ii= 0); localize_ckt(); assert_model_unlocalized(); _spice_model->_gen.GENinstances = &_spice_instance; assert_model_localized(); if (_sim->analysis_is_tran_dynamic()) { if ((_time[1] == 0) && _sim->is_first_iteration()) { ckt()->CKTmode = MODETRAN | MODEINITTRAN; }else{ ckt()->CKTmode = MODETRAN | MODEINITFLOAT; } }else{ if (_sim->analysis_is_tran_static()) { ckt()->CKTmode = MODETRANOP; }else if (_sim->analysis_is_tran_restore()) { ckt()->CKTmode = MODETRAN; }else if (_sim->command_is_dc()) { ckt()->CKTmode = MODEDCTRANCURVE; }else if (_sim->command_is_op()) { ckt()->CKTmode = MODEDCOP; }else{unreachable(); ckt()->CKTmode = 0; } if (_sim->uic_now()) { ckt()->CKTmode |= MODEINITFIX; ckt()->CKTmode |= MODEUIC; }else if (_sim->is_initial_step()) { ckt()->CKTmode |= MODEINITJCT; }else{ ckt()->CKTmode |= MODEINITFLOAT; } } { // copy in int* node = spice_nodes(); assert(ckt()->CKTrhsOld == _v1); std::fill_n(_v1, matrix_nodes()+OFFSET, 0); for (int ii = 0; ii < matrix_nodes(); ++ii) { if (node[ii] != SPICE_INVALID_NODE) { _v1[node[ii]] = _n[ii].v0(); }else{ } } } { // clear for copy out ckt()->CKTtroubleElt = NULL; ckt()->CKTnoncon = 0; assert(ckt()->CKTrhs == _i0); std::fill_n(_i0, matrix_nodes()+OFFSET, 0); for (int ii = 0; ii < matrix_nodes()+OFFSET; ++ii) { for (int jj = 0; jj < matrix_nodes()+OFFSET; ++jj) { _matrix[ii][jj].first = 0.; } } } // do the work -- it might also do convergence checking, might not //----- info.DEVload(&(_spice_model->_gen), ckt()); //----- // convergence check -- gnucap method set_converged(ckt()->CKTnoncon == 0); for (int ii = 0; ii < _num_states; ++ii) { set_converged(converged() && conchk(_states[0][ii], _states_1[ii])); trace3("", ii, _states_1[ii], _states[0][ii]); _states_1[ii] = _states[0][ii]; } for (int ii = 0; converged() && ii < matrix_nodes()+OFFSET; ++ii) { set_converged(conchk(_i0[ii], _i1[ii])); } for (int ii = 0; converged() && ii < matrix_nodes()+OFFSET; ++ii) { for (int jj = 0; converged() && jj < matrix_nodes()+OFFSET; ++jj) { set_converged(conchk(_matrix[ii][jj].first, _matrix[ii][jj].second)); } } // convergence check -- Spice method // not sure if it is worth the effort if (converged() && info.DEVconvTest) { ckt()->CKTnoncon = 0; ckt()->CKTrhs = _v1; // Spice overlaps _i0 with _v1 as CKTrhs info.DEVconvTest(&(_spice_model->_gen), ckt()); set_converged(ckt()->CKTnoncon == 0); }else{ // either no separate test or already failed } bool needs_load = !converged(); for (int ii = 0; !needs_load && ii < matrix_nodes()+OFFSET; ++ii) { needs_load = !conchk(_i0[ii], _i1[ii], 0, OPT::reltol*OPT::loadtol); } for (int ii = 0; !needs_load && ii < matrix_nodes()+OFFSET; ++ii) { for (int jj = 0; !needs_load && jj < matrix_nodes()+OFFSET; ++jj) { needs_load = !conchk(_matrix[ii][jj].first, _matrix[ii][jj].second, 0, OPT::reltol*OPT::loadtol); } } if (needs_load) { q_load(); }else{ } assert_model_localized(); _spice_model->_gen.GENinstances = NULL; assert_model_unlocalized(); return converged(); } /*--------------------------------------------------------------------------*/ void DEV_SPICE::tr_load() { #ifndef NDEBUG if (_loaditer == _sim->iteration_tag()) {untested(); error(bDANGER, long_label() + " internal error: double load\n"); } _loaditer = _sim->iteration_tag(); #endif int ihit[MATRIX_NODES+OFFSET]; int jhit[MATRIX_NODES+OFFSET]; std::fill_n(ihit, matrix_nodes()+OFFSET, 0); std::fill_n(jhit, matrix_nodes()+OFFSET, 0); int* node = spice_nodes(); for (int ii = 0; ii < matrix_nodes(); ++ii) { int ni = node[ii]; if (ni && !ihit[ni]) { ihit[ni] = 1; int nii = ni-OFFSET; trace4("", ii, ni, _i0[ni], _i1[ni]); tr_load_source_point(_n[ii], &(_i0[ni]), &(_i1[ni])); for (int jj = 0; jj < matrix_nodes(); ++jj) { int nj = node[jj]; if (nj && jhit[nj] != ni) { jhit[nj] = ni; int njj = nj-OFFSET; trace2("", jj, nj); trace2("", _matrix[nii][njj].first, _matrix[nii][njj].second); tr_load_point(_n[ii], _n[jj], &(_matrix[nii][njj].first), &(_matrix[nii][njj].second)); }else{ trace2("skip", jj, nj); } } }else{ trace2("=========skip", ii, ni); } } } /*--------------------------------------------------------------------------*/ void DEV_SPICE::tr_unload() {untested();incomplete(); for (int ii = 0; ii < matrix_nodes(); ++ii) {untested(); for (int jj = 0; jj < matrix_nodes(); ++jj) {untested(); _matrix[ii][jj].first = 0.; } } _sim->mark_inc_mode_bad(); tr_load(); } /*--------------------------------------------------------------------------*/ TIME_PAIR DEV_SPICE::tr_review() { // not calling STORAGE::tr_review(); if (info.DEVtrunc) { localize_ckt(); assert_instance(); //q_accept(); assert_model_unlocalized(); _spice_model->_gen.GENinstances = &_spice_instance; assert_model_localized(); ckt()->CKTtroubleElt = NULL; double timestep = NEVER; //----- info.DEVtrunc(&(_spice_model->_gen), ckt(), ×tep); //----- _time_by._error_estimate = tr_review_check_and_convert(timestep); _time_by._event = NEVER; _spice_model->_gen.GENinstances = NULL; assert_model_unlocalized(); return _time_by; }else{ return TIME_PAIR(NEVER,NEVER); } } /*--------------------------------------------------------------------------*/ void DEV_SPICE::tr_accept() { assert_model_unlocalized(); _spice_model->_gen.GENinstances = &_spice_instance; assert_model_localized(); //STORAGE::tr_accept(); // doesn't do anything if (_sim->analysis_is_dcop() || _sim->analysis_is_ac()) { localize_ckt(); // don't copy in assert(ckt()->CKTrhsOld == _v1); // _v1 already has correct values // _n[ii].v0() is not correct -- may have been cleared ckt()->CKTmode = MODEINITSMSIG; info.DEVload(&(_spice_model->_gen), ckt()); }else{itested(); } assert_model_localized(); _spice_model->_gen.GENinstances = NULL; assert_model_unlocalized(); } /*--------------------------------------------------------------------------*/ double DEV_SPICE::tr_probe_num(const std::string& x)const { localize_ckt(); assert_ckt_up_to_date(ckt()); assert_instance(); // all of the "states" in state array int num_probe_states = std::min(_num_states, int(sizeof(state_names)/sizeof(std::string))); for (int ii=0; ii= 0); assert_model_unlocalized(); _spice_model->_gen.GENinstances = &_spice_instance; assert_model_localized(); localize_ckt(); ckt()->CKTmode = MODEAC; ckt()->CKTomega = _sim->_jomega.imag(); // clear for copy out ckt()->CKTtroubleElt = NULL; std::fill_n(_i0, matrix_nodes()+OFFSET, 0); std::fill_n(_i1, matrix_nodes()+OFFSET, 0); for (int ii = 0; ii < matrix_nodes()+OFFSET; ++ii) { for (int jj = 0; jj < matrix_nodes()+OFFSET; ++jj) { _matrix[ii][jj] = DPAIR(0.,0.); } } if (info.DEVpzLoad) { info.DEVpzLoad(&(_spice_model->_gen), ckt(), reinterpret_cast(&_sim->_jomega)); }else if (info.DEVacLoad) { info.DEVacLoad(&(_spice_model->_gen), ckt()); }else{unreachable(); // nothing } assert_model_localized(); _spice_model->_gen.GENinstances = NULL; assert_model_unlocalized(); }else{untested(); // there is no acLoad function } } /*--------------------------------------------------------------------------*/ void DEV_SPICE::ac_load() { if (info.DEVacLoad) { assert_ckt_up_to_date(ckt()); int ihit[MATRIX_NODES+OFFSET]; int jhit[MATRIX_NODES+OFFSET]; std::fill_n(ihit, matrix_nodes()+OFFSET, 0); std::fill_n(jhit, matrix_nodes()+OFFSET, 0); int* node = spice_nodes(); for (int ii = 0; ii < matrix_nodes(); ++ii) { int ni = node[ii]; if (ni && !ihit[ni]) { ihit[ni] = 1; int nii = ni-OFFSET; trace3("", ii, ni, nii); ac_load_source_point(_n[ii], COMPLEX(_i0[ni], _i1[ni])); for (int jj = 0; jj < matrix_nodes(); ++jj) { int nj = node[jj]; if (nj && jhit[nj] != ni) { jhit[nj] = ni; int njj = nj-OFFSET; trace3("", jj, nj, njj); trace2("", _matrix[nii][njj].first, _matrix[nii][njj].second); //ac_load_point(_n[ii], _n[jj], _matrix[nii][njj]); DPAIR& dp = _matrix[nii][njj]; ac_load_point(_n[ii], _n[jj], COMPLEX(dp.first, dp.second)); }else{ trace2("skip", jj, nj); } } }else{ trace2("=========skip", ii, ni); } } }else{ // there is no acLoad function } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ extern "C" { // needed to satisfy references. Supposedly unreachable. Stubs. char *errMsg = NULL; char *errRtn = NULL; char* tmalloc(int size) {itested(); return static_cast(calloc(size,1));} char* trealloc(char*, int) {untested();incomplete(); return NULL;} //DEVnoise void txfree(char *ptr) { if (ptr) {itested(); free(ptr); }else{untested(); } } static class FT_CURCKT : public circ { TSKtask junk; public: FT_CURCKT() { junk.jobs = NULL; ci_curTask = reinterpret_cast(&junk); //::ft_curckt = this; } } stupid_ft_circ_pointer_to_pointer_hack; circ *ft_curckt = &stupid_ft_circ_pointer_to_pointer_hack; IFuid CKTnodName(CKTcircuit*,int) {incomplete();return IFuid();} //DEVsenPrint double D1i2F1(double, double, double) {incomplete(); return NOT_VALID;} //DEVdisto double D1i3F1(double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double D1iF12(double, double, double, double, double) {incomplete(); return NOT_VALID;} double D1i2F12(double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double D1n2F1(double, double, double) {incomplete(); return NOT_VALID;} double D1n3F1(double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double D1nF12(double, double, double, double, double) {incomplete(); return NOT_VALID;} double D1n2F12(double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double DFn2F1(double, double, double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double DFi2F1(double, double, double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double DFi3F1(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double DFn3F1(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double DFnF12(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} double DFiF12(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double) {incomplete(); return NOT_VALID;} struct DpassStr; //DEVdisto double DFn2F12(DpassStr*) {incomplete(); return NOT_VALID;} double DFi2F12(DpassStr*) {incomplete(); return NOT_VALID;} struct Dderivs; void AtanDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void CosDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void CubeDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void DivDeriv(Dderivs*, Dderivs*, Dderivs*) {incomplete();} //DEVdisto void EqualDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void ExpDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void InvDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void MultDeriv(Dderivs*, Dderivs*, Dderivs*) {incomplete();} //DEVdisto void PlusDeriv(Dderivs*, Dderivs*, Dderivs*) {incomplete();} //DEVdisto void PowDeriv(Dderivs*, Dderivs*, double) {incomplete();} //DEVdisto void SqrtDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void TanDeriv(Dderivs*, Dderivs*) {incomplete();} //DEVdisto void TimesDeriv(Dderivs*, Dderivs*, double) {incomplete();} //DEVdisto #ifdef JSPICE3 double Nintegrate(double, double, double, GENERIC*) {incomplete(); return NOT_VALID;} //DEVnoise #else double Nintegrate(double, double, double, Ndata*) {incomplete(); return NOT_VALID;} //DEVnoise #endif void NevalSrc(double*, double*, CKTcircuit*, int, int, int, double) {incomplete();} //DEVnoise void NevalSrc2(double*, double*, CKTcircuit*, int, int, int, double, double) {incomplete();} //------------------------------------------------ // should be constants, but spice wants them to be variables. double CONSTroot2(sqrt(2.)); double CONSTvt0(P_CELSIUS0*P_K_Q); double CONSTKoverQ(P_K_Q); double CONSTe(M_E); //------------------------------------------------ // ngspice baggage int ARCHme = 0; // jspice baggage IFsimulator *ft_sim; //------------------------------------------------ //------------------------------------------------ int IFerror(int flags, char* format, IFuid* names) /* output an error or warning message */ {itested(); static struct mesg { const char *string; long flag; } msgs[] = { { "Warning", ERR_WARNING } , { "Fatal error", ERR_FATAL } , { "Panic", ERR_PANIC } , { "Note", ERR_INFO } , { NULL, 0 } } ; struct mesg *m; char buf[10000], *s, *bptr; int nindex = 0; for (m = msgs; m->flag; m++) { if (flags & m->flag) { error(bDANGER, "%s: ", m->string); }else{ } } for (s = format, bptr = buf; *s; s++) { if (*s == '%' && (s == format || *(s-1) != '%') && *(s+1) == 's') { if (names[nindex]) { strcpy(bptr, reinterpret_cast(names[nindex])); }else{ strcpy(bptr, "(null)"); } bptr += strlen(bptr); s++; nindex++; } else { *bptr++ = *s; } } *bptr = '\0'; switch (flags) { case ERR_WARNING:error(bWARNING,buf); break; case ERR_FATAL: error(bDANGER, buf); throw Exception(""); case ERR_PANIC: error(bDANGER, buf); throw Exception(""); case ERR_INFO: error(bTRACE, buf); break; default: error(bDANGER, buf); break; } return 0; } void internalerror(char *message) {untested(); error(bDANGER, "internal error: %s\n", message); } #ifdef NGSPICE_17 int CKTinst2Node(void*, void*, int, CKTnode**, IFuid*) {untested();incomplete(); return 10; } #endif #ifdef JSPICE3 static IFfrontEnd fe = { NULL, //int ((*IFnewUid)()); /* create a new UID in the circuit */ noise, urcsetup NULL, //int ((*IFpauseTest)()); /* should we stop now? */ noisean.c only NULL, //double ((*IFseconds)()); /* what time is it? */ bjtdisto unused ifdef only (unused) IFerror, //int ((*IFerror)()); /* output an error or warning message */ temp, setup NULL, NULL, NULL, NULL, NULL }; #else static IFfrontEnd fe = { NULL, //int ((*IFnewUid)()); /* create a new UID in the circuit */ noise, urcsetup NULL, //int ((*IFdelUid)()); /* create a new UID in the circuit */ not used NULL, //int ((*IFpauseTest)()); /* should we stop now? */ noisean.c only NULL, //double ((*IFseconds)()); /* what time is it? */ bjtdisto unused ifdef only (unused) IFerror, //int ((*IFerror)()); /* output an error or warning message */ temp, setup NULL, //int ((*OUTpBeginPlot)()); /* start pointwise output plot */ noisean.c only NULL, //int ((*OUTpData)()); /* data for pointwise plot */ noisean.c only NULL, //int ((*OUTwBeginPlot)()); /* start windowed output plot */ not used NULL, //int ((*OUTwReference)()); /* independent vector for windowed plot */ not used NULL, //int ((*OUTwData)()); /* data for windowed plot */ not used NULL, //int ((*OUTwEnd)()); /* signal end of windows */ not used NULL, //int ((*OUTendPlot)()); /* end of plot */ not used NULL, //int ((*OUTbeginDomain)()); /* start nested domain */ not used NULL, //int ((*OUTendDomain)()); /* end nested domain */ not used NULL //int ((*OUTattributes)()); /* specify output attributes of node */ noisean.c only }; #endif IFfrontEnd* SPfrontEnd = &fe; //------------------------------------------------ //------------------------------------------------ int CKTsetBreak(CKTcircuit* ckt, double time) {untested(); if (time < ckt->CKTminBreak) {untested(); ckt->CKTminBreak = time; }else{untested(); } return OK; } //------------------------------------------------ void CKTterr(int qcap, CKTcircuit* ckt,double *time_step) { assert_ckt_localized(ckt); std::valarray q(OPT::_keep_time_steps); for (int ii = 0; ii < OPT::_keep_time_steps; ++ii) { assert(ckt->CKTstates[ii]); q[ii].x = NOT_VALID; q[ii].f0 = ckt->CKTstates[ii][qcap]; q[ii].f1 = NOT_VALID; } DEV_SPICE* d = reinterpret_cast(ckt->CKTstat); assert(d); assert(dynamic_cast(d)); *time_step = std::min(d->tr_review_trunc_error(&q[0]), *time_step); } //------------------------------------------------ int NIintegrate(CKTcircuit* ckt,double* geq,double* ceq,double cap,int qcap) { //-- used by DEVload (not DC) assert_ckt_localized(ckt); METHOD method; if (ckt->CKTorder == 1) { method = mEULER; }else{ assert(ckt->CKTtimePoints[1] != 0.); assert(ckt->CKTorder == 2); method = mTRAP; } std::valarray q(OPT::_keep_time_steps); std::valarray i(OPT::_keep_time_steps); for (int ii = 0; ii < OPT::_keep_time_steps; ++ii) { assert(ckt->CKTstates[ii]); q[ii].x = NOT_VALID; q[ii].f0 = ckt->CKTstates[ii][qcap]; q[ii].f1 = cap; trace3("", ii, q[ii].f0, q[ii].f1); i[ii].x = NOT_VALID; i[ii].f0 = ckt->CKTstates[ii][qcap+1]; i[ii].f1 = q[ii].f1 * ckt->CKTag[0]; trace3("", ii, i[ii].f0, i[ii].f1); assert(q[ii].f0 == q[ii].f0); assert(q[ii].f1 == q[ii].f1); assert(i[ii].f0 == i[ii].f0); assert(i[ii].f1 == i[ii].f1); } i[0] = differentiate(&q[0], &i[0], ckt->CKTtimePoints, method); assert(i[0].f0 == i[0].f0); assert(i[0].f1 == i[0].f1); trace2("", i[0].f0, i[0].f1); ckt->CKTstates[0][qcap+1] = i[0].f0; assert(ckt->CKTdelta != 0. || (ckt->CKTag[0] == 0. && i[0].f0 == 0.)); *ceq = i[0].f0 - q[0].f0 * ckt->CKTag[0]; *geq = i[0].f1; assert(*ceq == *ceq); assert(*geq == *geq); trace2("", *ceq, *geq); return OK; } //------------------------------------------------ //------------------------------------------------ int CKTmkVolt(CKTcircuit* ckt, CKTnode** n, IFuid, char*) { // get a new node number. -- used by DEVsetup assert_ckt_initialized(ckt); assert(n); static CKTnode n_static; // always used only on next line *n = &n_static; // so reuse static structure (*n)->number = ((ckt->CKTmaxEqNum)++)+OFFSET; trace1(__FUNCTION__, (*n)->number); // local number (- == internal) only number is used return OK; } int CKTmkCur(CKTcircuit* ckt, CKTnode** n, IFuid i, char* c) {untested(); return CKTmkVolt(ckt, n, i, c); } //------------------------------------------------ int CKTdltNNum(void*,int) {untested(); // complement to CKTmkVolt. -- used by DEVunsetup // deletes what was new in CKTmkVolt // Nothing, because of no alloc there. return OK; } //------------------------------------------------ //------------------------------------------------ double* SMPmakeElt(SMPmatrix* mm, int r, int c) { // returns a pointer m[r][c] -- used by DEVsetup //trace2("", r, c); assert(mm); if (r == 0 || c == 0) { static double trash; trash = 0; return &trash; }else{ assert(r >= 0+OFFSET); assert(r < MATRIX_NODES+OFFSET); assert(c >= 0+OFFSET); assert(c < MATRIX_NODES+OFFSET); DPAIR** m = reinterpret_cast(mm); assert(m); assert(m[r-OFFSET]); return reinterpret_cast(&(m[r-OFFSET][c-OFFSET])); } } //------------------------------------------------ #ifdef JSPICE3 int IFnewUid(GENERIC*,IFuid*,IFuid,char*,int,GENERIC**) {incomplete(); return 0;} int INPpName(char*,IFvalue*,GENERIC*,int,GENERIC*) {incomplete(); return 0;} char *INPdevErr(char *) {incomplete(); return NULL;} char *INPerror(int) {incomplete(); return NULL;} spREAL *spGetElement(char* s, int r, int c) {return SMPmakeElt(s,r,c);} char *INPerrCat(char *, char *) {incomplete(); return NULL;} int INPgndInsert(GENERIC*,char**,INPtables*,GENERIC**) {incomplete(); return 0;} char * INPdevParse(char**,GENERIC*,int,GENERIC*,double*,int*,INPtables*) {incomplete(); return NULL;} char *INPgetMod(GENERIC*,char*,INPmodel**,INPtables*) {incomplete(); return NULL;} int INPgetTok(char**,char**,int) {incomplete(); return 0;} int INPlookMod(char*) {incomplete(); return 0;} int INPtermInsert(GENERIC*,char**,INPtables*,GENERIC**) {incomplete(); return 0;} int INPinsert(char**,INPtables*) {incomplete(); return 0;} char *copy(char*) {incomplete(); return NULL;} int NIsum(CKTcircuit*,double*,int) {incomplete(); return 0;} double INPevaluate(char**,int*,int) {incomplete(); return NOT_VALID;} IFvalue *INPgetValue(GENERIC*,char**,int,INPtables*) {incomplete(); return NULL;} #endif } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // Verify that the layout of complex is as Spice assumes. // This is not guaranteed by the standard, but is believed to always be true. static struct COMPLEX_TEST { COMPLEX_TEST() { DPAIR x; DPAIR* px = &x; double* prx = &x.first; double* pix = &x.second; assert(reinterpret_cast(prx) == reinterpret_cast(px)); assert(reinterpret_cast(pix-1) == reinterpret_cast(px)); } ~COMPLEX_TEST() { } } complex_test; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ int MODEL_SPICE::_count = -1; int DEV_SPICE::_count = -1; static DEV_SPICE p0; static DISPATCHER::INSTALL d0(&device_dispatcher, std::string(SPICE_LETTER) + "|" + DEVICE_TYPE, &p0); static MODEL_SPICE p1(&p0); static DISPATCHER::INSTALL d1(&model_dispatcher, MODEL_TYPE, &p1); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: include/trace_off.h000066400000000000000000000000461316501211100145710ustar00rootroot00000000000000#undef DO_TRACE #include "io_trace.h" include/trace_on.h000066400000000000000000000000471316501211100144340ustar00rootroot00000000000000#define DO_TRACE #include "io_trace.h" include/u_cardst.h000066400000000000000000000056051316501211100144530ustar00rootroot00000000000000/*$Id: u_cardst.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * a structure to stash a "card" for fault. sweep, etc. */ //testing=script,complete 2006.07.14 #ifndef U_CARDST_H #define U_CARDST_H #include "e_compon.h" /*--------------------------------------------------------------------------*/ class CARDSTASH { private: COMPONENT* _brh; double _value; COMMON_COMPONENT* _c; public: explicit CARDSTASH() :_brh(0), _value(0.), _c(0) {} explicit CARDSTASH(CARD* b); CARDSTASH(const CARDSTASH& p); ~CARDSTASH() {COMMON_COMPONENT::detach_common(&_c);} void operator=(CARD* b); void restore() {assert(_brh); _brh->set_value(_value, _c);} #if 0 bool operator==(const CARDSTASH&)const {incomplete();unreachable();return false;} bool operator!=(const CARDSTASH&)const {incomplete();unreachable();return false;} bool operator<(const CARDSTASH&)const {incomplete();unreachable();return false;} bool operator>(const CARDSTASH&)const {incomplete();unreachable();return false;} // comparisons here because MS list requires them, even though not used here. #endif }; /*--------------------------------------------------------------------------*/ inline void CARDSTASH::operator=(CARD* b) { assert(b); _brh = prechecked_cast(b); assert(_brh); _value = _brh->value(); COMMON_COMPONENT::detach_common(&_c); COMMON_COMPONENT::attach_common(_brh->mutable_common(), &_c); } /*--------------------------------------------------------------------------*/ inline CARDSTASH::CARDSTASH(CARD* b) :_brh(0), _value(NOT_VALID), _c(0) { *this = b; } /*--------------------------------------------------------------------------*/ inline CARDSTASH::CARDSTASH(const CARDSTASH& p) :_brh(p._brh), _value(p._value), _c(0) { COMMON_COMPONENT::attach_common(p._c, &_c); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_function.h000066400000000000000000000027721316501211100150220ustar00rootroot00000000000000/*$Id: u_function.h 2015/01/21 al $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=none #include "e_base.h" /*--------------------------------------------------------------------------*/ class CARD_LIST; /*--------------------------------------------------------------------------*/ class FUNCTION : public CKT_BASE { //BUG//needs constructors //BUG//need label support public: virtual std::string eval(CS&, const CARD_LIST*)const = 0; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: include/u_lang.h000066400000000000000000000067541316501211100141220ustar00rootroot00000000000000/*$Id: u_lang.h 2016/09/17 $ -*- C++ -*- * Copyright (C) 2006 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #ifndef U_LANG_H #define U_LANG_H #include "e_base.h" #include "u_opt.h" /*--------------------------------------------------------------------------*/ class COMPONENT; class BASE_SUBCKT; class MODEL_CARD; class CARD; class DEV_COMMENT; class DEV_DOT; class CARD_LIST; /*--------------------------------------------------------------------------*/ class INTERFACE LANGUAGE : public CKT_BASE { public: const CARD* find_proto(const std::string&, const CARD*); public: void new__instance(CS& cmd, BASE_SUBCKT* owner, CARD_LIST* Scope); public: //BUG//need constructors virtual ~LANGUAGE(); virtual std::string name()const = 0; virtual bool case_insensitive()const = 0; virtual UNITS units()const = 0; public: // used by obsolete_callback virtual std::string arg_front()const = 0; virtual std::string arg_mid()const = 0; virtual std::string arg_back()const = 0; // in public: // real public interface virtual void parse_top_item(CS&, CARD_LIST*); virtual CARD* parse_item(CS&, CARD*); public: // called by commands and parse_item virtual DEV_COMMENT* parse_comment(CS&, DEV_COMMENT*) = 0; virtual DEV_DOT* parse_command(CS&, DEV_DOT*) = 0; virtual MODEL_CARD* parse_paramset(CS&, MODEL_CARD*) = 0; virtual BASE_SUBCKT* parse_module(CS&, BASE_SUBCKT*) = 0; virtual COMPONENT* parse_instance(CS&, COMPONENT*) = 0; virtual std::string find_type_in_string(CS&) = 0; // out public: // real public interface virtual void print_item(OMSTREAM&, const CARD*); private: // called by print_item virtual void print_paramset(OMSTREAM&, const MODEL_CARD*) = 0; virtual void print_module(OMSTREAM&, const BASE_SUBCKT*) = 0; virtual void print_instance(OMSTREAM&, const COMPONENT*) = 0; virtual void print_comment(OMSTREAM&, const DEV_COMMENT*) = 0; virtual void print_command(OMSTREAM&, const DEV_DOT*) = 0; }; OMSTREAM& operator<<(OMSTREAM& o, LANGUAGE* x); bool Get(CS&, const std::string& key, LANGUAGE** val); /*--------------------------------------------------------------------------*/ // This is for backward compatibility only. // It will be removed in the future. // Do not use in new code. template void print_pair(OMSTREAM& o, LANGUAGE* lang, const std::string& name, T value, bool test=true) { if (test) { if (lang) { std::string front = lang->arg_front() + name + lang->arg_mid(); o << front << value << lang->arg_back(); }else{ o << ' ' + name + '=' << value; } }else{ } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_limit.h000066400000000000000000000072651316501211100143150ustar00rootroot00000000000000/* $Id: u_limit.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2006 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * device limiting library */ //testing=script 2006.07.14 #ifndef U_LIMIT_H #define U_LIMIT_H #include "md.h" /*--------------------------------------------------------------------------*/ /* Spice style PN junction limiting */ inline double pnj_limit(double vnew, double vold, double vt, double vcrit) { trace4("limit-in", vnew, vold, vt, vcrit); if ((vnew > vcrit) && (std::abs(vnew - vold) > (2 * vt))) { if (vold > 0) { double arg = 1 + (vnew - vold) / vt; double vlim = (arg > 0) ? (vold + vt * log(arg)) : vcrit; trace3("limit-1", vlim, vt*log(arg), arg); return vlim; }else{ double vlim = vt * log(vnew/vt); trace3("limit-2", vlim, vt*log(vnew/vt), vnew/vt); return vlim; } }else{ trace1("limit-3", vnew); return vnew; } } /*--------------------------------------------------------------------------*/ inline double fet_limit_vds(double vnew, double vold) { if (vold >= 3.5) { if (vnew > (3*vold + 2)) {itested(); return 3 * vold + 2; }else if (vnew < 2) { return 2; }else{ return vnew; } }else{ if (vnew > 4) { return 4; }else if (vnew < -.5) { return -.5; }else{ return vnew; } } } /*--------------------------------------------------------------------------*/ inline double fet_limit_vgs(double vnew, double vold, double vto) { assert(vnew == vnew); assert(vold == vold); double vgst_old = vold - vto; double vgst_new = vnew - vto; double v_limited; if (vgst_old >= 3.5) { /* was strong on */ if (vgst_new < 2) { v_limited = 2; }else if (vgst_new > (3 * vgst_old + 2)) {itested(); v_limited = 3*vgst_old + 2; }else{ v_limited = vgst_new; } }else if (vgst_old >= 0) { /* middle region, on */ assert(vgst_old < 3.5); if (vgst_new < -.5) { v_limited = -.5; }else if (vgst_new > 4) { v_limited = 4; }else{ v_limited = vgst_new; } }else if (vgst_old <= 0) { /* was off, vgst_old < 0 */ assert(vgst_old < 0); if (vgst_new < (3 * vgst_old - 2)) { v_limited = 3*vgst_old - 2; }else if (vgst_new > .5) { v_limited = .5; }else{ v_limited = vgst_new; } }else{ /* overflow or other numeric error */ // not sure what to do in this case. // It could actually happen with overflow or divide by zero. // but supposedly this is trapped elsewhere. unreachable(); v_limited = 0.; trace3("huh?", vnew, vold, vto); trace3(" ", vgst_new, vgst_old, v_limited); } return v_limited + vto; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_nodemap.h000066400000000000000000000040211316501211100146050ustar00rootroot00000000000000/*$Id: u_nodemap.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2002 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * node name to number mapping -- for named nodes */ //testing=script,complete 2006.07.14 #ifndef U_NODEMAP_H #define U_NODEMAP_H #include "md.h" /*--------------------------------------------------------------------------*/ class NODE; /*--------------------------------------------------------------------------*/ class NODE_MAP { private: std::map _node_map; explicit NODE_MAP(const NODE_MAP&); public: explicit NODE_MAP(); ~NODE_MAP(); NODE* operator[](std::string); NODE* new_node(std::string); typedef std::map::iterator iterator; typedef std::map::const_iterator const_iterator; const_iterator begin()const {return _node_map.begin();} const_iterator end()const {return _node_map.end();} int how_many()const {return static_cast(_node_map.size()-1);} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_opt.h000066400000000000000000000220461316501211100137730ustar00rootroot00000000000000/*$Id: u_opt.h,v 26.127 2009/11/09 16:06:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * all the options set by the .options card. */ //testing=script,complete 2006.07.14 #ifndef U_OPT_H #define U_OPT_H #include "mode.h" /*--------------------------------------------------------------------------*/ class CS; class LANGUAGE; /*--------------------------------------------------------------------------*/ /* integration method selector -- not all methods are implemented */ enum method_t {meUNKNOWN=0, // no method set meEULER, // backware Euler, unless forced to other meEULERONLY, // backward Euler only meTRAP, // usually trap, but euler where better meTRAPONLY, // always trapezoid meGEAR2, // usually gear2, but euler where better meGEAR2ONLY, // always gear2 (except breakpoints) meTRAPGEAR, // alt trap & gear2 meTRAPEULER, // alt trap & euler meNUM_METHODS}; // number of methods (array dimension) inline OMSTREAM& operator<<(OMSTREAM& o, method_t t) { const std::string s[] = {"unknown", "euler", "euleronly", "trap", "traponly", "gear2", "gear2only", "trapgear", "trapeuler"}; return (o << s[t]); } /*--------------------------------------------------------------------------*/ enum order_t {oREVERSE=1, oFORWARD, oAUTO}; inline OMSTREAM& operator<<(OMSTREAM& o, order_t t) { const std::string s[] = {"", "reverse", "forward", "auto"}; return (o << s[t]); } /*--------------------------------------------------------------------------*/ enum phase_t {pDEGREES, pRADIANS, pP_DEGREES, pN_DEGREES}; inline OMSTREAM& operator<<(OMSTREAM& o, phase_t t) { const std::string s[] = {"degrees", "radians", "+degrees", "-degrees"}; return (o << s[t]); } /*--------------------------------------------------------------------------*/ enum UNITS {uSI, uSPICE}; inline OMSTREAM& operator<<(OMSTREAM& o, UNITS t) { const std::string s[] = {"si", "spice"}; return (o << s[t]); } /*--------------------------------------------------------------------------*/ enum {dsINIT=001, dsRANGE=002, dsDEVLIMIT=004, dsDEVREGION=010, dsREVERSE=020}; /*--------------------------------------------------------------------------*/ class INTERFACE OPT { private: explicit OPT(const OPT&) {unreachable(); incomplete();} public: explicit OPT() {} ~OPT() {} void command(CS& cmd); private: bool set_values(CS& cmd); void print(OMSTREAM& where); public: enum ITL {DCBIAS=1, DCXFER=2, TRLOW=3, TRHIGH=4, TRTOTAL=5, SSTEP=6, WCASE=7, TRACE=8, ITL_COUNT=9}; enum {_keep_time_steps = 5}; public: static bool acct; // flag: print accounting info static bool listing; // flag: print listing static bool mod; // flag: print models static bool page; // flag: do page ejects static bool node; // flag: print node table static bool opts; // flag: print options static double gmin; // minimum conductance allowed static double bypasstol; // bypass tolerance multiplier static double loadtol; // trace load tolerance multiplier static double reltol; // relative error tolerance static double abstol; // absolute current error tolerance static double vntol; // absolute voltage error tolerance static double trtol; // transient error overestimation factor static double chgtol; // charge tolerance static double pivtol; // minimum acceptable pivot static double pivrel; // max to min ratio in a column? static int numdgt; // number of digits to display static double tnom_c; // nominal temperature static int cptime; // max allowed cpu time (seconds) static int limtim; // amt of time to reserve for plots static int limpts; // max points to print static int lvlcod; // enum: if == 2, solve fast static int lvltim; // enum: how to control time step static method_t method; // enum: integration method static int maxord; // max order of integration static double defl; // MOS default channel length static double defw; // MOS default channel width static double defad; // MOS default drain diffusion area static double defas; // MOS default source diffusion area static bool clobber; // allow to overwrite files without question static bool keys_between_nodes; // allow keywords between nodes static double floor; // display as zero if less than this static double vfloor; // display voltages as zero if less than this static double dampmax; // Newton-Raphson damping coefficient max static double dampmin; // Newton-Raphson damping coefficient min static int dampstrategy; // bit flags, damping strategy options static double roundofftol;// rel tolerance for zeroing after subtraction static double temp_c; // ambient temperature static double shortckt; // short resistance static int picky; // error picky-ness static unsigned outwidth; // width of output devices static double ydivisions; // plot divisions, y axis static phase_t phase; // how to print phase (degrees or radians) static order_t order; // ordering method static smode_t mode; // mixed-mode mode preference static int transits; // number of good transitions for digital static bool dupcheck; // check for duplicates on read static bool bypass; // bypass model evaluation, if appropriate static bool incmode; // make incremental changes to the matrix static bool lcbypass; // bypass L and C evaluation when appropriate static bool lubypass; // bypass parts of LU decomposition, if appropriate static bool fbbypass; // bypass fwd & back sub when last iter converged static bool traceload; // load only elements that need it, using queue static int itermin; // forced min iteration count. static double vmax; // + voltage limit for nonlinear calculations static double vmin; // - voltage limit for nonlinear calculations static double dtmin; // smallest internal step in transient analysis static double dtratio; // ratio of max / min dt in transient analysis static bool rstray; // include stray resistors in models static bool cstray; // include stray capacitors in models static int harmonics; // number of harmonics in fourier analysis static double trstepgrow; // limit of step size growth in transient analysis static double trstephold; // hold step size growth, converges slowly static double trstepshrink;// amt to shrink step size on convergence failure static double trreject; // how bad trunc error has to be to reject a step static int trsteporder; // interpolation order for step size control static double trstepcoef[_keep_time_steps]; // coefficient for step size control static bool showall; // flag: show development flags static int foooo; // a reusable value to aid development static int diodeflags; // convergence heuristic flags for diode static int mosflags; // convergence heuristic flags for mosfet static bool quitconvfail; // quit on convergence failure static bool edit; // use readline - command editing static int recursion; // max recursion depth static LANGUAGE* language; // simulation language static bool case_insensitive; static UNITS units; static double lowlim; // 1 - reltol static double uplim; // 1 + reltol static int itl[ITL_COUNT];// 1=dc (bias) iteration limit // 2=dc transfer iteration limit // 3=lower transient iteration limit // 4=upper transient iteration limit // 5=transient total iterations allowed // 6=source stepping iteration limit // 7=worst case iteration limit // 8=trace nonconvergence start iteration }; /*--------------------------------------------------------------------------*/ class SET_RUN_MODE { private: RUN_MODE _old_run_mode; explicit SET_RUN_MODE() :_old_run_mode(ENV::run_mode) {unreachable();} public: explicit SET_RUN_MODE(RUN_MODE rm) :_old_run_mode(ENV::run_mode) { ENV::run_mode = rm; } ~SET_RUN_MODE() { ENV::run_mode = _old_run_mode; } }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_parameter.h000066400000000000000000000243571316501211100151600ustar00rootroot00000000000000/*$Id: u_parameter.h 2016.09.11 $ -*- C++ -*- * Copyright (C) 2005 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * A class for parameterized values * Used for spice compatible .param statements * and passing arguments to models and subcircuits */ //testing=script 2014.11.25 #ifndef U_PARAMETER_H #define U_PARAMETER_H #include "u_opt.h" #include "io_.h" #include "m_expression.h" #include "e_cardlist.h" /*--------------------------------------------------------------------------*/ class LANGUAGE; /*--------------------------------------------------------------------------*/ class PARA_BASE { protected: std::string _s; public: PARA_BASE( ): _s(){} PARA_BASE(const PARA_BASE& p): _s(p._s) {} PARA_BASE(const std::string s): _s(s){untested();} virtual ~PARA_BASE(){} bool has_hard_value()const {return (_s != "");} virtual bool has_good_value()const = 0; virtual void parse(CS& cmd) = 0; virtual void operator=(const std::string& s) = 0; }; /*--------------------------------------------------------------------------*/ template class PARAMETER : public PARA_BASE { private: mutable T _v; public: explicit PARAMETER() : PARA_BASE(), _v(NOT_INPUT) {} PARAMETER(const PARAMETER& p): PARA_BASE(p), _v(p._v) {} explicit PARAMETER(T v) :PARA_BASE(), _v(v) {} //explicit PARAMETER(T v, const std::string& s) :_v(v), _s(s) {untested();} ~PARAMETER() {} bool has_good_value()const {return (_v != NOT_INPUT);} //bool has_soft_value()const {untested(); return (has_good_value() && !has_hard_value());} operator T()const {return _v;} T e_val(const T& def, const CARD_LIST* scope)const; void parse(CS& cmd); std::string string()const { if (_s == "#") { return to_string(_v); }else if (_s == "") { return "NA(" + to_string(_v) + ")"; }else{ return _s; } } void print(OMSTREAM& o)const {o << string();} void set_default(const T& v) {_v = v; _s = "";} void operator=(const PARAMETER& p) {_v = p._v; _s = p._s;} void operator=(const T& v) {_v = v; _s = "#";} //void operator=(const std::string& s) {untested();_s = s;} void operator=(const std::string& s) { if (strchr("'\"{", s[0])) { CS cmd(CS::_STRING, s); _s = cmd.ctos("", "'\"{", "'\"}"); }else if (s == "NA") { _s = ""; }else{ _s = s; } } bool operator==(const PARAMETER& p)const { return (_v == p._v && _s == p._s); } bool operator==(const T& v)const { if (v != NOT_INPUT) { return _v == v; }else{ return (_v == NOT_INPUT || !has_hard_value()); } } //bool operator!=(const PARAMETER& p)const {untested(); // return !(*this == p); //} //bool operator!=(const T& v)const {untested(); // return !(*this == v); //} T* pointer_hack() {return &_v;} private: T lookup_solve(const T& def, const CARD_LIST* scope)const; }; /*--------------------------------------------------------------------------*/ /* non-class interface, so non-paramaters can have same syntax */ /* It is needed by the model compiler */ #if 0 inline bool operator==(const PARAMETER& p, double v) {untested(); if (v != NOT_INPUT) {untested(); return p.operator==(static_cast(v)); }else{untested(); return (!(p.has_value())); } } #endif inline bool has_hard_value(const PARA_BASE& p) { return p.has_hard_value(); } inline bool has_good_value(const PARA_BASE& p) { return p.has_good_value(); } #if 0 template bool has_soft_value(const PARA_BASE& p) {untested(); return p.has_soft_value(); } #endif template bool has_nz_value(const T& p) { return (has_good_value(p) && p != 0); } template void set_default(PARAMETER* p, const T& v) { assert(p); p->set_default(v); } template void set_default(T* p, const T& v) { assert(p); *p = v; } template void e_val(PARAMETER* p, const PARAMETER& def, const CARD_LIST* scope) { assert(p); p->e_val(def, scope); } template void e_val(PARAMETER* p, const T& def, const CARD_LIST* scope) { assert(p); p->e_val(def, scope); } #if 0 template void e_val(T* p, const T& def, const CARD_LIST*) {untested(); assert(p); if (*p == NOT_INPUT) {untested(); *p = def; }else{untested(); } } #endif /*--------------------------------------------------------------------------*/ class INTERFACE PARAM_LIST { private: mutable std::map > _pl; PARAM_LIST* _try_again; // if you don't find it, also look here public: typedef std::map >::const_iterator const_iterator; typedef std::map >::iterator iterator; explicit PARAM_LIST() :_try_again(NULL) {} explicit PARAM_LIST(const PARAM_LIST& p) :_pl(p._pl), _try_again(p._try_again) {} //explicit PARAM_LIST(PARAM_LIST* ta) :_try_again(ta) {untested();} ~PARAM_LIST() {} void parse(CS& cmd); void print(OMSTREAM&, LANGUAGE*)const; size_t size()const {return _pl.size();} //bool is_empty()const {untested();return _pl.empty();} bool is_printable(int)const; std::string name(int)const; std::string value(int)const; void eval_copy(PARAM_LIST&, const CARD_LIST*); bool operator==(const PARAM_LIST& p)const {return _pl == p._pl;} const PARAMETER& deep_lookup(std::string)const; const PARAMETER& operator[](std::string i)const {return deep_lookup(i);} void set(std::string, const std::string&); void set_try_again(PARAM_LIST* t) {_try_again = t;} iterator begin() {return _pl.begin();} iterator end() {return _pl.end();} private: mutable int _index; mutable const_iterator _previous; }; /*--------------------------------------------------------------------------*/ template <> inline bool PARAMETER::lookup_solve(const bool&, const CARD_LIST*)const { CS cmd(CS::_STRING, _s); return cmd.ctob(); } /*--------------------------------------------------------------------------*/ template inline T PARAMETER::lookup_solve(const T& def, const CARD_LIST* scope)const { CS cmd(CS::_STRING, _s); Expression e(cmd); Expression reduced(e, scope); T v = T(reduced.eval()); if (v != NOT_INPUT) { return v; }else{ const PARAM_LIST* pl = scope->params(); return T(pl->deep_lookup(_s).e_val(def, scope)); } } /*--------------------------------------------------------------------------*/ #if 0 template inline T PARAMETER::lookup_solve(const T& def, const CARD_LIST* scope)const {untested(); const PARAM_LIST* pl = scope->params(); return T(pl->deep_lookup(_s).e_val(def, scope)); } #endif /*--------------------------------------------------------------------------*/ template T PARAMETER::e_val(const T& def, const CARD_LIST* scope)const { assert(scope); static int recursion=0; static const std::string* first_name = NULL; if (recursion == 0) { first_name = &_s; }else{ } assert(first_name); ++recursion; if (_s == "") { // blank string means to use default value _v = def; if (recursion > 1) { error(bWARNING, "parameter " + *first_name + " not specified, using default\n"); //BUG// needs to show scope }else{ } }else if (_s != "#") { // anything else means look up the value if (recursion <= OPT::recursion) { _v = lookup_solve(def, scope); if (_v == NOT_INPUT) { error(bDANGER, "parameter " + *first_name + " value is \"NOT_INPUT\"\n"); //BUG// needs to show scope //BUG// it is likely to have a numeric overflow resulting from the bad value }else{ } }else{untested(); _v = def; error(bDANGER, "parameter " + *first_name + " recursion too deep\n"); } }else{ // start with # means we have a final value } --recursion; return _v; } /*--------------------------------------------------------------------------*/ template <> inline void PARAMETER::parse(CS& cmd) { bool new_val; cmd >> new_val; if (cmd) { _v = new_val; _s = "#"; }else{untested(); std::string name; //cmd >> name; name = cmd.ctos(",=();", "'{\"", "'}\""); if (cmd) {untested(); if (name == "NA") {untested(); _s = ""; }else{untested(); _s = name; } }else{untested(); } } if (!cmd) {untested(); _v = true; _s = "#"; }else{ } } /*--------------------------------------------------------------------------*/ template inline void PARAMETER::parse(CS& cmd) { T new_val; cmd >> new_val; if (cmd) { _v = new_val; _s = "#"; }else{ std::string name; //cmd >> name; name = cmd.ctos(",=();", "'{\"", "'}\""); if (cmd) { if (cmd.match1('(')) { _s = name + '(' + cmd.ctos("", "(", ")") + ')'; }else{ _s = name; } if (name == "NA") {untested(); _s = ""; }else{ } }else{ } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ INTERFACE bool Get(CS& cmd, const std::string& key, PARAMETER* val); INTERFACE bool Get(CS& cmd, const std::string& key, PARAMETER* val); /*--------------------------------------------------------------------------*/ template inline OMSTREAM& operator<<(OMSTREAM& o, const PARAMETER p) { p.print(o); return o; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_prblst.h000066400000000000000000000054251316501211100145010ustar00rootroot00000000000000/*$Id: u_prblst.h,v 26.138 2013/04/24 02:32:27 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * list of probes */ //testing=script,complete 2006.09.28 #ifndef U_PRBLST_H #define U_PRBLST_H #include "mode.h" #include "u_probe.h" /*--------------------------------------------------------------------------*/ class CARD_LIST; /*--------------------------------------------------------------------------*/ class INTERFACE PROBELIST { private: typedef std::vector _container; _container bag; explicit PROBELIST(const PROBELIST&) {unreachable();incomplete();} public: explicit PROBELIST() {} ~PROBELIST() {} typedef _container::iterator iterator; typedef _container::const_iterator const_iterator; void listing(const std::string&)const; void clear(); void remove_list(CS&); void remove_one(CKT_BASE*); void add_list(CS&); int size()const {return static_cast(bag.size());} const_iterator begin()const {return bag.begin();} const_iterator end()const {return bag.end();} iterator begin() {return bag.begin();} iterator end() {return bag.end();} private: void erase(iterator b, iterator e) {bag.erase(b,e);} void push_new_probe(const std::string& param, const CKT_BASE* object); bool add_branches(const std::string&,const std::string&,const CARD_LIST*); void add_all_nodes(const std::string&); }; /*--------------------------------------------------------------------------*/ class INTERFACE PROBE_LISTS { public: PROBELIST alarm[sCOUNT]; // list of alarm probes PROBELIST plot[sCOUNT]; // list of plot probes PROBELIST print[sCOUNT]; // list of print probes PROBELIST store[sCOUNT]; // list of probes to store for postproc void purge(CKT_BASE*); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_probe.h000066400000000000000000000041361316501211100143000ustar00rootroot00000000000000/*$Id: u_probe.h 2015/01/21 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * single probe item */ //testing=script,complete 2006.07.14 #ifndef U_PROBE_H #define U_PROBE_H #include "e_base.h" #include "l_compar.h" // inorder /*--------------------------------------------------------------------------*/ class INTERFACE PROBE : public CKT_BASE { private: std::string _what; const CKT_BASE* _brh; double _lo,_hi; explicit PROBE() {unreachable(); incomplete();} public: explicit PROBE(const std::string& what, const CKT_BASE *brh); PROBE(const PROBE& p); ~PROBE() {detach();} void set_limit(double Lo,double Hi) {_lo = Lo; _hi = Hi;} void detach(); PROBE& operator=(const PROBE& p); const std::string label()const; double value()const; const CKT_BASE* object()const {return _brh;} double lo()const {return _lo;} double hi()const {return _hi;} double range()const {return hi()-lo();} bool in_range()const{return in_order(lo(),value(),hi());} private: double probe_node()const; }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_sdp.h000066400000000000000000000065701316501211100137630ustar00rootroot00000000000000/*$Id: u_sdp.h,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * A class for Size Dependent Parameters, like those used in Spice BSIM models * A single read gets the nominal, and length and width dependencies. * A single print prints them all. * operator() returns the value to use, adjusted for L and W. */ //testing=script 2006.07.14 #ifndef U_SDP_H #define U_SDP_H #include "u_parameter.h" /*--------------------------------------------------------------------------*/ class OMSTREAM; class CARD_LIST; /*--------------------------------------------------------------------------*/ class SDP { //friend bool get(CS& cmd, const std::string& key, SDP* value); private: PARAMETER _nom; // nominal value PARAMETER _ld; // length dependency PARAMETER _wd; // width dependency PARAMETER _pd; // cross-term dependency (p is for product) explicit SDP() {unreachable();} public: explicit SDP(const SDP& p) :_nom(p._nom),_ld(p._ld),_wd(p._wd),_pd(p._pd) {} ~SDP() {} explicit SDP(double Nom) :_nom(Nom), _ld(0.), _wd(0.), _pd(0.) {} //void print(OMSTREAM& o, LANGUAGE*, const std::string& name)const; double operator()(double L,double W,double def,const CARD_LIST* scope)const { return _nom.e_val(def,scope) + _ld.e_val(0.,scope)/L + _wd.e_val(0.,scope)/W + _pd.e_val(0.,scope)/(W*L); } double nom()const {return _nom;} void set_nom(double n) {untested();_nom = n;} void set_w(double n) {untested();_wd = n;} void set_l(double n) {untested();_ld = n;} void set_p(double n) {untested();_pd = n;} void set_nom(const std::string& n) {_nom = n;} void set_w(const std::string& n) {_wd = n;} void set_l(const std::string& n) {_ld = n;} void set_p(const std::string& n) {itested();_pd = n;} bool has_hard_value()const {return _nom.has_hard_value();} bool has_good_value()const {return _nom.has_good_value();} bool has_value()const {return _nom.has_hard_value();} bool w_has_value()const {return _wd.has_hard_value();} bool l_has_value()const {return _ld.has_hard_value();} bool p_has_value()const {return _pd.has_hard_value();} std::string string()const {return _nom.string();} std::string w_string()const {return _wd.string();} std::string l_string()const {return _ld.string();} std::string p_string()const {return _pd.string();} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_sim_data.h000066400000000000000000000162401316501211100147510ustar00rootroot00000000000000/*$Id: u_sim_data.h 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2009 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * real base for anything to do with a circuit */ //testing=obsolete #ifndef U_SIM_DATA_H #define U_SIM_DATA_H #include "constant.h" #include "l_compar.h" #include "u_opt.h" #include "m_matrix.h" /*--------------------------------------------------------------------------*/ // external class WAVE; class CARD; class LOGIC_NODE; /*--------------------------------------------------------------------------*/ enum TRI_STATE {tsNO=0, tsYES=1, tsBAD=-1}; /*--------------------------------------------------------------------------*/ struct INTERFACE SIM_DATA { double _time0; /* time now */ double _freq; /* AC frequency to analyze at (Hertz) */ double _temp_c; /* ambient temperature, actual */ double _damp; /* Newton-Raphson damping coefficient actual */ double _dtmin; /* min internal step size */ double _genout; /* tr dc input to circuit (generator) */ bool _bypass_ok; /* flag: ok to bypass model evaluation */ bool _fulldamp; /* flag: big iter. jump. use full (min) damp */ double _last_time; /* time at which "volts" is valid */ bool _freezetime; /* flag: don't advance stored time */ int _iter[iCOUNT]; int _user_nodes; int _subckt_nodes; int _model_nodes; int _total_nodes; COMPLEX _jomega; /* AC frequency to analyze at (radians) */ bool _limiting; /* flag: node limiting */ double _vmax; double _vmin; bool _uic; /* flag: use initial conditions (spice-like) */ TRI_STATE _inc_mode; /* flag: make incremental changes (3 state) */ SIM_MODE _mode; /* simulation type (AC, DC, ...) */ SIM_PHASE _phase; /* phase of simulation (iter, init-dc,) */ int *_nm; /* node map (external to internal) */ double *_i; /* dc-tran current (i) vector */ double *_v0; /* dc-tran voltage, new */ double *_vt1; /* dc-tran voltage, 1 time ago */ /* used to restore after rejected step */ COMPLEX *_ac; /* ac right side */ LOGIC_NODE* _nstat; /* digital data */ double *_vdc; /* saved dc voltages */ BSMATRIX _aa; /* raw matrix for DC & tran */ BSMATRIX _lu; /* decomposed matrix for DC & tran */ BSMATRIX _acx;/* raw & decomposed matrix for AC */ std::priority_queue > _eq; /*event queue*/ std::vector _loadq; std::vector _acceptq; std::deque _evalq1; /* evaluate queues -- alternate between */ std::deque _evalq2; /* build one while other is processed */ std::deque _late_evalq; /* eval after everything else */ std::deque* _evalq; /* pointer to evalq to process */ std::deque* _evalq_uc;/* pointer to evalq under construction */ WAVE *_waves; /* storage for waveforms "store" command*/ SIM_MODE _has_op; SIM_DATA(); ~SIM_DATA(); bool is_first_expand() {return !_nstat;} void alloc_hold_vectors(); /* s__init.cc */ void alloc_vectors(); void unalloc_vectors(); void init(); void uninit(); void set_limit(); /* s__aux.cc */ void set_limit(double v); void clear_limit(); void keep_voltages(); void restore_voltages(); void zero_voltages(); void map__nodes(); /* s__map.cc */ void order_reverse(); void order_forward(); void order_auto(); int init_node_count(int user, int sub, int mod) { _user_nodes=user; _subckt_nodes=sub; _model_nodes=mod; return (_total_nodes=user+sub+mod); } int newnode_subckt() {++_subckt_nodes; return ++_total_nodes;} int newnode_model() {++_model_nodes; return ++_total_nodes;} bool is_inc_mode() {return _inc_mode;} bool inc_mode_is_no() {return _inc_mode == tsNO;} bool inc_mode_is_bad() {return _inc_mode == tsBAD;} void set_inc_mode_bad() {_inc_mode = tsBAD;} void set_inc_mode_yes() {_inc_mode = tsYES;} void set_inc_mode_no() {_inc_mode = tsNO;} void mark_inc_mode_bad() { switch (_inc_mode) { case tsYES: _inc_mode = tsBAD; break; case tsBAD: break; case tsNO: break; } } void new_event(double etime) { if (etime <= BIGBIG) { _eq.push(etime); }else{ } } void set_command_none() {_mode = s_NONE;} void set_command_ac() {_mode = s_AC;} void set_command_dc() {_mode = s_DC;} void set_command_op() {_mode = s_OP;} void set_command_tran() {_mode = s_TRAN;} void set_command_fourier() {_mode = s_FOURIER;} SIM_MODE sim_mode() {return _mode;} bool command_is_ac() {return _mode == s_AC;} bool command_is_dc() {return _mode == s_DC;} bool command_is_op() {return _mode == s_OP;} //bool command_is_tran() {return _mode == s_TRAN;} //bool command_is_fourier() {return _mode == s_FOURIER;} bool analysis_is_ac() {return _mode == s_AC;} bool analysis_is_dcop() {return _mode == s_DC || _mode == s_OP;} bool analysis_is_static() {return _phase == p_INIT_DC || _phase == p_DC_SWEEP;} bool analysis_is_restore() {return _phase == p_RESTORE;} bool analysis_is_tran() {return _mode == s_TRAN || _mode == s_FOURIER;} bool analysis_is_tran_static() {return analysis_is_tran() && _phase == p_INIT_DC;} bool analysis_is_tran_restore() {return analysis_is_tran() && _phase == p_RESTORE;} bool analysis_is_tran_dynamic() {return analysis_is_tran() && _phase == p_TRAN;} void reset_iteration_counter(int i) {assert(up_order(0,i,iCOUNT-1)); _iter[i] = 0;} void count_iterations(int i) {assert(up_order(0,i,iCOUNT-1)); ++_iter[i];} int iteration_tag()const {return _iter[iTOTAL];} int iteration_number()const {return _iter[iSTEP];} bool is_initial_step() {return (_iter[_mode] <= 1 && analysis_is_static());} bool is_advance_iteration()const {return (_iter[iSTEP] == 0);} bool is_advance_or_first_iteration()const {assert(_iter[iSTEP]>=0); return (_iter[iSTEP]<=1);} bool is_first_iteration()const {assert(_iter[iSTEP] > 0); return (_iter[iSTEP] == 1);} bool is_second_iteration()const {assert(_iter[iSTEP] > 0); return (_iter[iSTEP] == 2);} bool is_iteration_number(int n)const {return (_iter[iSTEP] == n);} bool exceeds_iteration_limit(OPT::ITL itlnum)const {return(_iter[iSTEP] > OPT::itl[itlnum]);} bool uic_now() {return _uic && analysis_is_static() && _time0==0.;} SIM_MODE has_op()const {return _has_op;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_status.h000066400000000000000000000053041316501211100145120ustar00rootroot00000000000000/*$Id: u_status.h,v 26.131 2009/11/20 08:22:10 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * place to store all kinds of statistics */ //testing=script 2006.07.14 #ifndef STATUS_H #define STATUS_H #include "mode.h" #include "l_timer.h" /*--------------------------------------------------------------------------*/ class CS; /*--------------------------------------------------------------------------*/ class STATUS { public: void command(CS& cmd); public: TIMER get; TIMER op; TIMER dc; TIMER tran; TIMER four; TIMER ac; TIMER set_up; TIMER order; TIMER advance; TIMER queue; TIMER evaluate; TIMER load; TIMER lud; TIMER back; TIMER review; TIMER accept; TIMER output; mutable TIMER overhead; TIMER aux1; TIMER aux2; TIMER aux3; TIMER total; int control; int hidden_steps; void compute_overhead()const { overhead = total - advance - queue - evaluate - load - lud - back - output - review - accept; } explicit STATUS() : get("get"), op("op"), dc("dc"), tran("tran"), four("fourier"), ac("ac"), set_up("setup"), order("order"), advance("advance"), queue("queue"), evaluate("evaluate"), load("load"), lud("lu"), back("back"), review("review"), accept("accept"), output("output"), overhead("overhead"), aux1("aux1"), aux2("aux2"), aux3("aux3"), total("total"), control(0), hidden_steps(0) { } ~STATUS() {} private: explicit STATUS(const STATUS&) {unreachable(); incomplete();} }; /*--------------------------------------------------------------------------*/ extern INTERFACE STATUS status; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_time_pair.h000066400000000000000000000045771316501211100151530ustar00rootroot00000000000000/*$Id: u_time_pair.h,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2008 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script 2008.05.09 #ifndef U_TIME_PAIR_H_INCLUDED #define U_TIME_PAIR_H_INCLUDED #include "constant.h" /*--------------------------------------------------------------------------*/ struct TIME_PAIR { double _error_estimate; double _event; TIME_PAIR() : _error_estimate(NEVER), _event(NEVER) {} TIME_PAIR(double Error, double Event) : _error_estimate(Error), _event(Event) {} TIME_PAIR(const TIME_PAIR& P) : _error_estimate(P._error_estimate), _event(P._event) {} TIME_PAIR& reset() { _error_estimate = NEVER; _event = NEVER; return *this; } TIME_PAIR& min_error_estimate(double E) { if (E < _error_estimate) { _error_estimate = E; }else{ } return *this; } TIME_PAIR& min_event(double E) { if (E < _event) { _event = E; }else{ } return *this; } TIME_PAIR& min(const TIME_PAIR& P) { return min_error_estimate(P._error_estimate).min_event(P._event); } TIME_PAIR& min(double Error_Estimate, double Event) {untested(); return min_error_estimate(Error_Estimate).min_event(Event); } }; /*--------------------------------------------------------------------------*/ inline TIME_PAIR min(TIME_PAIR A, const TIME_PAIR& B) { return A.min(B); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: include/u_xprobe.h000066400000000000000000000051341316501211100144670ustar00rootroot00000000000000/*$Id: u_xprobe.h,v 26.106 2008/12/13 00:48:28 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * extended probe data * used for AC analysis */ //testing=script 2006.07.14 #ifndef U_XPROBE_H #define U_XPROBE_H #include "constant.h" /*--------------------------------------------------------------------------*/ enum mod_t {mtNONE, mtMAG, mtPHASE, mtREAL, mtIMAG}; /*--------------------------------------------------------------------------*/ class XPROBE{ private: COMPLEX _value; mod_t _modifier; // default double _dbscale; // 20 for voltage, 10 for power, etc. explicit XPROBE(): _value(COMPLEX(NOT_VALID, NOT_VALID)), _modifier(mtNONE), _dbscale(20.) {untested();} public: XPROBE(const XPROBE& p): _value(p._value), _modifier(p._modifier), _dbscale(p._dbscale) {untested();} explicit XPROBE(COMPLEX v): _value(v), _modifier(mtMAG), _dbscale(20.) {} explicit XPROBE(COMPLEX v, mod_t m): _value(v), _modifier(m), _dbscale(20.) {} explicit XPROBE(COMPLEX v, mod_t m, double d): _value(v), _modifier(m), _dbscale(d) {} explicit XPROBE(double v): _value(v), _modifier(mtREAL), _dbscale(20.) {} //explicit XPROBE(double v, mod_t m): // _value(v), // _modifier(m), // _dbscale(20.) {} //explicit XPROBE(double v, mod_t m, double d): // _value(v), // _modifier(m), // _dbscale(d) {} ~XPROBE() {} bool exists()const {return _modifier != mtNONE;} double operator()(mod_t m=mtNONE, bool db = false)const; XPROBE& operator=(const XPROBE& p); }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ #endif // vim:ts=8:sw=2:noet: lib/000077500000000000000000000000001316501211100116135ustar00rootroot00000000000000lib/Make.depend000066400000000000000000000451421316501211100136570ustar00rootroot00000000000000globals.o: globals.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_prblst.h ../include/u_probe.h ../include/l_compar.h \ ../include/e_cardlist.h ../include/u_status.h ../include/l_timer.h \ ../include/patchlev.h m_expression_dump.o: m_expression_dump.cc ../include/m_expression.h \ ../include/m_base.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/ap.h \ ../include/constant.h m_expression_in.o: m_expression_in.cc ../include/m_expression.h \ ../include/m_base.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/ap.h \ ../include/constant.h m_expression_reduce.o: m_expression_reduce.cc ../include/globals.h \ ../include/l_dispatcher.h ../include/e_base.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_stlextra.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/ap.h ../include/u_function.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/constant.h \ ../include/e_cardlist.h m_base_in.o: m_base_in.cc ../include/m_base.h ../include/l_lib.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/ap.h ../include/constant.h m_base_math.o: m_base_math.cc ../include/m_base.h ../include/l_lib.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/ap.h ../include/constant.h m_fft.o: m_fft.cc ../include/constant.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/declare.h m_spline.o: m_spline.cc ../include/m_cpoly.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_denoise.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_spline.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ap_construct.o: ap_construct.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/ap.h ap_convert.o: ap_convert.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/ap.h ap_error.o: ap_error.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/ap.h ap_get.o: ap_get.cc ../include/ap.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ap_match.o: ap_match.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/ap.h ap_skip.o: ap_skip.cc ../include/ap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h l_ftos.o: l_ftos.cc ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/constant.h l_pmatch.o: l_pmatch.cc ../include/ap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_lib.h l_timer.o: l_timer.cc ../include/l_timer.h ../include/io_.h \ ../include/l_lib.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h l_trim.o: l_trim.cc l_wmatch.o: l_wmatch.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_lib.h io.o: io.cc ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h io_contr.o: io_contr.cc ../include/io_.h ../include/l_lib.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/ap.h io_error.o: io_error.cc ../include/ap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h io_findf.o: io_findf.cc ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h io_out.o: io_out.cc ../include/u_opt.h ../include/mode.h ../include/io_.h \ ../include/l_lib.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h io_xopen.o: io_xopen.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/constant.h \ ../include/ap.h u_lang.o: u_lang.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/c_comand.h ../include/e_card.h ../include/d_dot.h \ ../include/d_coment.h ../include/e_subckt.h ../include/e_compon.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_model.h ../include/u_lang.h u_nodemap.o: u_nodemap.cc ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_compar.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/u_nodemap.h u_opt1.o: u_opt1.cc ../include/u_opt.h ../include/mode.h ../include/io_.h \ ../include/l_lib.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h u_opt2.o: u_opt2.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/c_comand.h ../include/e_card.h ../include/u_lang.h \ ../include/l_compar.h ../include/ap.h u_parameter.o: u_parameter.cc ../include/l_stlextra.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/u_parameter.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_expression.h ../include/m_base.h ../include/ap.h \ ../include/constant.h ../include/e_cardlist.h ../include/u_lang.h \ ../include/e_base.h u_prblst.o: u_prblst.cc ../include/e_cardlist.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/e_card.h ../include/u_nodemap.h ../include/ap.h \ ../include/u_prblst.h ../include/u_probe.h u_probe.o: u_probe.cc ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/u_status.h ../include/l_timer.h \ ../include/e_base.h ../include/u_probe.h ../include/e_base.h u_sim_data.o: u_sim_data.cc ../include/m_wave.h ../include/l_denoise.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/m_interp.h ../include/m_cpoly.h ../include/constant.h \ ../include/e_node.h ../include/u_sim_data.h ../include/l_compar.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/u_nodemap.h ../include/e_cardlist.h ../include/u_status.h \ ../include/l_timer.h u_xprobe.o: u_xprobe.cc ../include/m_phase.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/u_xprobe.h d_subckt.o: d_subckt.cc ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_compar.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/globals.h ../include/l_dispatcher.h ../include/ap.h \ ../include/e_paramlist.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/e_cardlist.h ../include/e_card.h ../include/e_subckt.h d_logic.o: d_logic.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_subckt.h ../include/e_compon.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/u_xprobe.h ../include/d_logic.h \ ../include/e_model.h ../include/e_elemnt.h ../include/e_node.h \ ../include/m_cpoly.h ../include/l_denoise.h d_logicmod.o: d_logicmod.cc ../include/d_logic.h ../include/e_model.h \ ../include/u_parameter.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/m_expression.h \ ../include/m_base.h ../include/ap.h ../include/constant.h \ ../include/e_cardlist.h ../include/e_card.h ../include/e_base.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/l_compar.h ../include/m_matrix.h ../include/l_stlextra.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h e_base.o: e_base.cc ../include/ap.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/u_sim_data.h ../include/constant.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/m_wave.h ../include/l_denoise.h \ ../include/m_interp.h ../include/m_cpoly.h ../include/u_prblst.h \ ../include/u_probe.h ../include/e_base.h ../include/u_xprobe.h \ ../include/e_base.h e_card.o: e_card.cc ../include/u_time_pair.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/e_cardlist.h ../include/e_node.h ../include/u_sim_data.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/e_base.h ../include/e_card.h e_node.o: e_node.cc ../include/u_nodemap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/d_logic.h \ ../include/e_model.h ../include/u_parameter.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_expression.h ../include/m_base.h ../include/ap.h \ ../include/constant.h ../include/e_cardlist.h ../include/e_card.h \ ../include/e_base.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/l_compar.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/e_aux.h \ ../include/u_xprobe.h e_model.o: e_model.cc ../include/e_compon.h ../include/u_sim_data.h \ ../include/constant.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_compar.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/e_card.h \ ../include/e_base.h ../include/e_model.h e_compon.o: e_compon.cc ../include/u_lang.h ../include/e_base.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/e_model.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/ap.h ../include/constant.h \ ../include/e_cardlist.h ../include/e_card.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/l_compar.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h e_elemnt.o: e_elemnt.cc ../include/m_divdiff.h ../include/u_xprobe.h \ ../include/constant.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/e_aux.h ../include/e_node.h \ ../include/u_sim_data.h ../include/l_compar.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/m_matrix.h ../include/l_stlextra.h ../include/e_base.h \ ../include/e_elemnt.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/ap.h \ ../include/e_cardlist.h ../include/e_card.h e_ccsrc.o: e_ccsrc.cc ../include/e_ccsrc.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/e_base.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/e_card.h e_storag.o: e_storag.cc ../include/e_storag.h ../include/e_elemnt.h \ ../include/e_node.h ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/e_base.h ../include/m_cpoly.h \ ../include/l_denoise.h ../include/e_compon.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/e_card.h e_paramlist.o: e_paramlist.cc ../include/e_paramlist.h \ ../include/e_compon.h ../include/u_sim_data.h ../include/constant.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/u_time_pair.h \ ../include/u_parameter.h ../include/m_expression.h ../include/m_base.h \ ../include/ap.h ../include/e_cardlist.h ../include/e_card.h \ ../include/e_base.h e_cardlist.o: e_cardlist.cc ../include/u_time_pair.h \ ../include/constant.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/e_node.h ../include/u_sim_data.h \ ../include/l_compar.h ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/m_matrix.h \ ../include/l_stlextra.h ../include/e_base.h ../include/u_nodemap.h \ ../include/e_model.h ../include/u_parameter.h ../include/m_expression.h \ ../include/m_base.h ../include/ap.h ../include/e_cardlist.h \ ../include/e_card.h bm_cond.o: bm_cond.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/e_elemnt.h ../include/e_node.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/m_cpoly.h ../include/l_denoise.h ../include/e_compon.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h bm_value.o: bm_value.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/bm.h ../include/e_compon.h ../include/u_sim_data.h \ ../include/constant.h ../include/l_compar.h ../include/m_matrix.h \ ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h bm.o: bm.cc ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_lang.h ../include/e_elemnt.h ../include/e_node.h \ ../include/u_sim_data.h ../include/constant.h ../include/l_compar.h \ ../include/m_matrix.h ../include/m_cpoly.h ../include/l_denoise.h \ ../include/e_compon.h ../include/u_time_pair.h ../include/u_parameter.h \ ../include/m_expression.h ../include/m_base.h ../include/e_cardlist.h \ ../include/e_card.h ../include/bm.h c__cmd.o: c__cmd.cc ../include/u_status.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/l_timer.h \ ../include/declare.h ../include/c_comand.h ../include/e_card.h \ ../include/e_base.h ../include/globals.h ../include/l_dispatcher.h \ ../include/l_stlextra.h ../include/u_opt.h ../include/ap.h c_attach.o: c_attach.cc ../include/e_cardlist.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/c_comand.h \ ../include/e_card.h ../include/e_base.h ../include/globals.h \ ../include/l_dispatcher.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h c_file.o: c_file.cc ../include/u_lang.h ../include/e_base.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/c_comand.h ../include/e_card.h ../include/globals.h \ ../include/l_dispatcher.h ../include/l_stlextra.h ../include/ap.h findbr.o: findbr.cc ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/constant.h \ ../include/e_cardlist.h ../include/ap.h ../include/e_card.h \ ../include/e_base.h plot.o: plot.cc ../include/declare.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h ../include/constant.h \ ../include/u_opt.h ../include/mode.h ../include/io_.h ../include/l_lib.h \ ../include/u_prblst.h ../include/u_probe.h ../include/e_base.h \ ../include/l_compar.h lib/Make1000066400000000000000000000074331316501211100125030ustar00rootroot00000000000000#$Id: Make1 2016/09/17 $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ TARGET = libgnucap #------------------------------------------------------------------------ INSTALL_FILES = $(TARGET)$(TARGET_EXT) #------------------------------------------------------------------------ INSTALL_DIR = $(PREFIX)/lib #------------------------------------------------------------------------ DELETED = #------------------------------------------------------------------------ RAW_SRCS = \ globals.cc \ m_expression_dump.cc m_expression_in.cc m_expression_reduce.cc \ m_base_in.cc m_base_math.cc m_fft.cc m_spline.cc \ ap_construct.cc ap_convert.cc ap_error.cc ap_get.cc ap_match.cc ap_skip.cc \ l_ftos.cc l_pmatch.cc l_timer.cc l_trim.cc l_wmatch.cc \ io.cc io_contr.cc io_error.cc io_findf.cc io_out.cc io_xopen.cc \ u_lang.cc u_nodemap.cc u_opt1.cc u_opt2.cc \ u_parameter.cc u_prblst.cc u_probe.cc u_sim_data.cc u_xprobe.cc \ d_subckt.cc d_logic.cc d_logicmod.cc \ e_base.cc e_card.cc e_node.cc e_model.cc e_compon.cc \ e_elemnt.cc e_ccsrc.cc e_storag.cc e_paramlist.cc e_cardlist.cc \ bm_cond.cc bm_value.cc bm.cc \ c__cmd.cc c_attach.cc c_file.cc \ findbr.cc plot.cc #------------------------------------------------------------------------ RAW_OTHER = Make1 Make2.g++ Make2.Debug Make2.mingw32 configure test_readline.cc #------------------------------------------------------------------------ RAW = $(RAW_HDRS) $(RAW_SRCS) $(RAW_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ IMPORTED_SRCS = IMPORTED_HDRS = IMPORTED_OTHER = IMPORTED = $(IMPORTED_SRCS) $(IMPORTED_HDRS) $(IMPORTED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_SRCS = GENERATED_HDRS = GENERATED_OTHER = Make.aux GENERATED = $(GENERATED_HDRS) $(GENERATED_SRCS) $(GENERATED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_DIST = Make.depend IMPORTED_DIST = $(IMPORTED) DISTFILES = $(RAW) $(GENERATED_DIST) $(IMPORTED_DIST) #------------------------------------------------------------------------ #------------------------------------------------------------------------ SRCS = $(IMPORTED_SRCS) $(GENERATED_SRCS) $(RAW_SRCS) HDRS = $(RAW_HDRS) $(GENERATED_HDRS) $(IMPORTED_HDRS) OBJS = ${SRCS:.cc=.o} TARGET_DEPENDS = $(OBJS) $(RAW) #------------------------------------------------------------------------ #------------------------------------------------------------------------ MOSTLYCLEANFILES = $(OBJS) $(GENERATED) CLEANFILES = $(MOSTLYCLEANFILES) DISTCLEANFILES = $(CLEANFILES) MAINTAINERCLEANFILES = $(DISTCLEANFILES) #------------------------------------------------------------------------ #----------------------------------------------------------------------------- lib/Make2.Debug000066400000000000000000000072611316501211100135300ustar00rootroot00000000000000#$Id: Make2.Debug 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++, debugging, a little optimization # Running the program will give a spew of line markers for debugging. CCC = g++ TARGET_EXT = .so CCFLAGS = \ -fPIC \ -DHAVE_LIBREADLINE \ -DUNIX -g -O0 -I. -I../../include -DTRACE_UNTESTED \ -Wall -Wextra \ -Wswitch-enum -Wundef -Wpointer-arith -Woverloaded-virtual \ -Wcast-qual -Wcast-align -Wpacked -Wshadow -Wconversion \ -Winit-self -Wmissing-include-dirs -Winvalid-pch \ -Wvolatile-register-var -Wstack-protector \ -Wlogical-op -Wvla -Woverlength-strings -Wsign-conversion #last line not in 4.1 LIBS = \ -lreadline -ltermcap \ -ldl LDFLAGS = -shared %.SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # warnings turned off, because they warn of nothing wrong # 4.3 #-Wswitch-default -- lack of default is correct with enum #-Wfloat-equal -- warns on NA, div by zero trap #-Wpadded -- a bool in a class is enough #-Wredundant-decls -- in both header and func is an error check #-Wmissing-declarations -- pascal style #-Wmissing-noreturn -- warns when always throws exception #-Wunreachable-code -- warns even if reachable .. compiler bug?? #-Waggregate-return -- warns even if passed by reference #-Wunsafe-loop-optimizations -- if can't unroll a loop #-Winline #-Wdisabled-optimization -- -O0 disables optimization, so it warns # 4.2 #-Wpadded -- a bool in a class is enough #-Winline #-Waggregate-return -- warns even if passed by reference #-Wfloat-equal -- warns on NA, div by zero trap #-Wredundant-decls -- in both header and func is an error check #-Wunsafe-loop-optimizations -- warns on any loop with variable count # warnings turned off, because of the public headers #-Wunreachable-code -- didn't use nonportable syntax to hide #-Wmissing-noreturn -- didn't use nonportable syntax to hide # warnings that should be on, but ... #-Wshadow -- lambda functions #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "debug" version, with extra warnings and run-time tracing. # If you get errors or warnings, make a copy of it and modify that. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ lib/Make2.g++000066400000000000000000000043001316501211100130450ustar00rootroot00000000000000#$Id: Make2.g++ 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++. CCC = g++ TARGET_EXT = .so CCFLAGS = \ -fPIC \ -DHAVE_LIBREADLINE \ -DUNIX -O3 -DNDEBUG -I. -I../include -I../../include -W LIBS = \ -lreadline -ltermcap \ -ldl LDFLAGS = -shared .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "release" version, optimized with run-time tracing removed. # If you get errors or warnings, make a copy of it and modify that. # For the first cut, use "Make2.Debug" as the start for more tracing, # or "Make2.Trace" for an extreme amount of tracing. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ lib/Make2.mingw32000066400000000000000000000034431316501211100137660ustar00rootroot00000000000000#$Id: Make2.mingw32 2016/05/15 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. CCC = i586-mingw32msvc-g++ DLLTOOL = i586-mingw32msvc-dlltool TARGET_EXT = .dll CCFLAGS = \ -DMAKE_DLL \ -O2 -DNDEBUG -I. -I../../include LIBS = LDFLAGS = -shared .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET)$(TARGET_EXT) $(TARGET).a #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------------------ $(TARGET).a: $(TARGET_DEPENDS) $(TARGET)$(TARGET_EXT) rm -f $@ $(DLLTOOL) -l $@ -D $(TARGET)$(TARGET_EXT) $(OBJS) $(LIBS) #------------------------------------------------------------ #------------------------------------------------------------ lib/ap_construct.cc000066400000000000000000000157221316501211100146350ustar00rootroot00000000000000/*$Id: ap_construct.cc 2016/09/11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * construction, copy, etc. */ //testing=script,sparse 2006.07.17 #include "u_opt.h" #include "ap.h" #if defined(HAVE_LIBREADLINE) #include #include #endif /*--------------------------------------------------------------------------*/ static std::string getlines(FILE*); OMSTREAM mout; // > file bitmap //BUG//encapsulation OMSTREAM mlog; // log file bitmap /*--------------------------------------------------------------------------*/ CS::CS(CS::STDIN) :_file(stdin), _name(), _cmd(), _cnt(0), _length(0), _begin_match(0), _end_match(0), _ok(true), _line_number(0) { } /*--------------------------------------------------------------------------*/ CS::CS(CS::INC_FILE, const std::string& name) :_file(fopen(name.c_str(), "r")), _name(name), _cmd(), _cnt(0), _length(0), _begin_match(0), _end_match(0), _ok(true), _line_number(0) { if (!_file) {itested(); throw Exception_File_Open(name + ':' + strerror(errno)); }else{ } } /*--------------------------------------------------------------------------*/ CS::CS(CS::WHOLE_FILE, const std::string& name) :_file(NULL), _name(name), _cmd(), _cnt(0), _length(0), _begin_match(0), _end_match(0), _ok(true), _line_number(0) { int f = open(name.c_str(), O_RDONLY); if (f == EOF) {itested(); throw Exception_File_Open(name + ':' + strerror(errno)); }else{ } _length = static_cast(lseek(f, off_t(0), SEEK_END)); lseek(f, off_t(0), SEEK_SET); char* cmd = new char[_length+2]; read(f, cmd, _length); cmd[_length++] = '\0'; _cmd = cmd; close(f); } /*--------------------------------------------------------------------------*/ CS::CS(CS::STRING, const std::string& s) :_file(NULL), _name(), _cmd(s), _cnt(0), _length(static_cast(s.length())), _begin_match(0), _end_match(0), _ok(true), _line_number(0) { } /*--------------------------------------------------------------------------*/ #if 0 CS::CS(const CS& p) :_file(NULL), _name(p._name), _cmd(p._cmd), _cnt(p._cnt), _length(p._length), _begin_match(0), _end_match(0), _ms(p._ms), _ok(p._ok), _line_number(0) {untested(); } #endif /*--------------------------------------------------------------------------*/ CS& CS::operator=(const std::string& s) {untested(); assert(!_file); _cmd = s; _cnt = 0; _ok = true; _length = static_cast(s.length()); return *this; } /*--------------------------------------------------------------------------*/ #if 0 CS& CS::operator=(const CS& p) {untested(); assert(&p != this); _name = p._name; _file = p._file; _cmd = p._cmd; _cnt = p._cnt; _ok = p._ok; _length = p._length; return *this; } #endif /*--------------------------------------------------------------------------*/ CS& CS::get_line(const std::string& prompt) { ++_line_number; if (is_file()) { _cmd = getlines(_file); _cnt = 0; _length = static_cast(_cmd.length()); _ok = true; }else{itested(); assert(_file == stdin); char cmdbuf[BUFLEN]; getcmd(prompt.c_str(), cmdbuf, BUFLEN); _cmd = cmdbuf; _cnt = 0; _length = static_cast(_cmd.length()); _ok = true; } if (OPT::listing) { IO::mstdout << "\"" << fullstring() << "\"\n"; }else{ } return *this; } /*--------------------------------------------------------------------------*/ /* getcmd: get a command. * if "fin" is stdin, display a prompt first. * Also, actually do logging, echo, etc. */ char *getcmd(const char *prompt, char *buffer, int buflen) { assert(prompt); assert(buffer); if (isatty(fileno(stdin))) { // stdin is keyboard #if defined(HAVE_LIBREADLINE) if (OPT::edit) { char* line_read = readline(prompt); if (!line_read) {itested(); throw Exception_End_Of_Input("EOF on stdin"); }else{ } // readline gets a new buffer every time, so copy it to where we want it char* end_of_line = (char*)memccpy(buffer, line_read, 0, static_cast(buflen-1)); if (!end_of_line) { buffer[buflen-1] = '\0'; }else{ *end_of_line = '\0'; } free(line_read); if (*buffer) { add_history(buffer); }else{ } }else #endif { IO::mstdout << prompt; /* prompt & flush buffer */ if (!fgets(buffer, buflen, stdin)) {untested(); /* read line */ throw Exception_End_Of_Input("EOF on stdin"); }else{ } } (IO::mstdout - mout) << '\r'; /* reset col counter */ trim(buffer); (mlog + mout) << buffer << '\n'; return buffer; }else{ // stdin is file if (!fgets(buffer, buflen, stdin)) {itested(); /* read line */ throw Exception_End_Of_Input("EOF on stdin"); }else{ } trim(buffer); (mlog + mout) << buffer << '\n'; return buffer; } } /*--------------------------------------------------------------------------*/ static std::string getlines(FILE *fileptr) { assert(fileptr); const int buffer_size = BIGBUFLEN; std::string s; bool need_to_get_more = true; // get another line (extend) while (need_to_get_more) { char buffer[buffer_size+1]; char* got_something = fgets(buffer, buffer_size, fileptr); if (!got_something) { // probably end of file need_to_get_more = false; if (s == "") { throw Exception_End_Of_Input(""); }else{untested(); } }else{ trim(buffer); size_t count = strlen(buffer); if (buffer[count-1] == '\\') { buffer[count-1] = '\0'; }else{ // look ahead at next line //int c = fgetc(fileptr); int c; while (isspace(c = fgetc(fileptr))) { // skip } if (c == '+') { need_to_get_more = true; }else if (c == '\n') {unreachable(); need_to_get_more = true; ungetc(c,fileptr); }else{ need_to_get_more = false; ungetc(c,fileptr); } } s += buffer; s += ' '; } } return s; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/ap_convert.cc000066400000000000000000000221011316501211100142560ustar00rootroot00000000000000/*$Id: ap_convert.cc,v 26.138 2013/04/24 03:03:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.07.17 #include "u_opt.h" #include "ap.h" /*--------------------------------------------------------------------------*/ // char CS::ctoc(); // void CS::ctostr(char* d, int l, const string& t); // string CS::ctos(const string& term); // int CS::ctoi(); // unsigned CS::ctou(); // int CS::ctoo(); // int CS::ctox(); // double CS::ctof(); /*--------------------------------------------------------------------------*/ /* ctoc: character input to character */ char CS::ctoc() { char c=_cmd[_cnt]; if(_cnt<=_length) { ++_cnt; }else{untested(); } return c; } /*--------------------------------------------------------------------------*/ /* ctostr: character input to string * scan (and eat) an input string (cmd) using index (cnt). * result in (des) (null terminated). * max length (actual char count) is (len). * (des) must be at least (len)+1 characters long. * (cmd) unchanged. (*cnt) updated to point to next argument. * skips leading whitespace. skips trailing whitespace and comma * skips parts of input word too big for destination */ void CS::ctostr(char* des, int len, const std::string& term) { skipbl(); int ii; for (ii = 0; ii < len && !is_term(term); ++ii) { des[ii] = ctoc(); } des[ii] = '\0'; while (!is_term(term)) {untested(); skip(); } skipcom(); } /*--------------------------------------------------------------------------*/ std::string CS::ctos(const std::string& term, const std::string& begin_quote, const std::string& end_quote, const std::string& trap) { assert(begin_quote.length() == end_quote.length()); skipbl(); unsigned begin_string = cursor(); unsigned end_string = cursor(); std::string s; std::string::size_type which_quote = find1(begin_quote); if (which_quote != std::string::npos) { int quotes = 1; skip(); // the quote begin_string = cursor(); char the_begin_quote = begin_quote[which_quote]; char the_end_quote = end_quote[which_quote]; for (;;) { if (!ns_more()) {itested(); end_string = cursor(); warn(bDANGER, std::string("need ") + the_end_quote); break; }else if (skip1(the_end_quote)) { if (--quotes <= 0) { end_string = cursor() - 1; break; }else{ } }else if (skip1(the_begin_quote)) { ++quotes; skip(); }else if (skip1('\\')) { end_string = cursor() - 1; s += _cmd.substr(begin_string, end_string-begin_string); begin_string = cursor(); skip1(the_end_quote); }else{ skip(); } } s += _cmd.substr(begin_string, end_string-begin_string); }else{ while(ns_more() && !is_term(term)) { skip(); } if (match1(trap)) {untested(); warn(bDANGER, "ap_convert trap-exit"); }else{ } end_string = cursor(); s = _cmd.substr(begin_string, end_string-begin_string); } skipcom(); _ok = end_string > begin_string; return s; } /*--------------------------------------------------------------------------*/ std::string CS::get_to(const std::string& term) { std::string des; while(ns_more() && !match1(term)) { des += ctoc(); } return des; } /*--------------------------------------------------------------------------*/ /* ctob: character input to bool * no match makes it true; * Mismatch belongs to next token */ bool CS::ctob() { skipbl(); unsigned here = cursor(); bool val = true; ONE_OF || Set(*this, "1", &val, true) || Set(*this, "0", &val, false) || Set(*this, "t{rue}", &val, true) || Set(*this, "f{alse}", &val, false) || Set(*this, "y{es}", &val, true) || Set(*this, "n{o}", &val, false) || Set(*this, "#t{rue}", &val, true) || Set(*this, "#f{alse}",&val, false) ; skipcom(); _ok = cursor() > here; return val; } /*--------------------------------------------------------------------------*/ /* ctoi: character input to integer * Returns signed integer, or 0 if the string is not a number. * Input must be integer: no multipliers, no decimal point. * Dot or letter belongs to the next token. */ int CS::ctoi() { int val = 0; int sign = 1; skipbl(); unsigned here = cursor(); if (skip1("-")) { sign = -1; }else{ skip1("+"); } while (is_digit()) { val = 10 * val + (ctoc()-'0'); } skipcom(); _ok = cursor() > here; return val * sign; } /*--------------------------------------------------------------------------*/ /* ctou: character input to unsigned integer * Returns unsigned integer, or 0 if the string is not a number. * Input must be integer: no multipliers, no decimal point. * Dot or letter belongs to the next token. */ unsigned CS::ctou() { unsigned val = 0; skipbl(); unsigned here = cursor(); while (is_digit()) { val = 10 * val + static_cast(ctoc()-'0'); } skipcom(); _ok = cursor() > here; return val; } /*--------------------------------------------------------------------------*/ /* ctoo: character octal input to integer * Returns integer, or 0 if the string is not a number. * Input must be integer: no multipliers, no decimal point. * Dot or letter belongs to the next token. * There is no check against '8' and '9'. */ int CS::ctoo() { int val = 0; skipbl(); unsigned here = cursor(); while (is_digit()) { val = 8 * val + (ctoc()-'0'); } skipcom(); _ok = cursor() > here; return val; } /*--------------------------------------------------------------------------*/ /* ctox: character hex input to unsigned integer * Returns integer, or 0 if the string is not a number. * Input must be hex integer: no multipliers, no decimal point. * Dot or letter belongs to the next token. */ int CS::ctox() {untested(); int val = 0; skipbl(); unsigned here = cursor(); while (is_xdigit()) {untested(); if (is_digit()) {untested(); val = 16 * val + (ctoc()-'0'); }else{untested(); val = 16 * val + (tolower(ctoc())-'a'+10); } } skipcom(); _ok = cursor() > here; return val; } /*--------------------------------------------------------------------------*/ /* ctof: floating point input * return double number if got, else 0 * supports letter multipliers (spice style) * skips trailing letters (10uhenries == 10u) * skips trailing spaces and one comma * pointer points to char following comma * or first non-space following number just got * or first non-space (if non-number) */ double CS::ctof() { double val = 0.0; double power = 1.0; int sign = 1; skipbl(); if (!is_float()) { skipcom(); _ok = false; return 0.; }else{ } if (skip1("-")) { // sign sign = -1; }else{ skip1("+"); } while (is_digit()) { // up to dec pt val = 10.0 * val + (ctoc()-'0'); } skip1("."); // dec pt while (is_digit()) { // after dec pt val = 10.0 * val + (ctoc()-'0'); power *= .1; } if (skip1("eE")) { // exponent: E form int expo = 0; int es = 1; if (skip1("-")) { es = -1; }else{ skip1("+"); } while (is_digit()) expo = 10 * expo + (ctoc()-'0'); expo *= es; power *= pow(10., expo); }else if ((OPT::units == uSPICE) && skip1("mM")) { // M is special if (skip1("eE")) { // meg power *= 1e6; }else if (skip1("iI")) { // mil power *= 25.4e-6; }else{ // plain m (milli) power *= 1e-3; } }else if (skip1("M")) { assert(OPT::units == uSI); power *= 1e6; }else if (skip1("m")) { assert(OPT::units == uSI); power *= 1e-3; }else if (skip1("uU")) { // other letters power *= 1e-6; }else if (skip1("nN")) { power *= 1e-9; }else if (skip1("p")) { power *= 1e-12; }else if (skip1("P")) { power *= ((OPT::units == uSI) ? (1e15) : 1e-12); }else if (skip1("fF")) { power *= 1e-15; }else if (skip1("aA")) { power *= 1e-18; }else if (skip1("kK")) { power *= 1e3; }else if (skip1("gG")) { power *= 1e9; }else if (skip1("tT")) { power *= 1e12; }else if (skip1("%")) {untested(); power *= 1e-2; }else{ } while (is_alpha()) { // skip letters skip(); } skipcom(); _ok = true; return (sign*val*power); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/ap_error.cc000066400000000000000000000051741316501211100137420ustar00rootroot00000000000000/*$Id: ap_error.cc 2016/09/11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Error handler. */ //testing=script 2006.07.17 #include "u_opt.h" #include "ap.h" /*--------------------------------------------------------------------------*/ // CS & CS::check(int i, const string& s); // CS & CS::warn(int i, int c, const string& s); /*--------------------------------------------------------------------------*/ /* syntax_check: handle syntax errors * called on parsing an input string when nothing else matches. * if the rest of the line is nothing, just return * if comment, increment *cnt, so what is left is a valid comment string * otherwise, it is an error (the arrow pointing at the offending word) */ CS & CS::check(int badness, const std::string& message) { skipbl(); switch (peek()) { case '/': _ok = umatch("//"); skip(); break; case ';': case '\'': _ok = true; skip(); break; case '\0': _ok = true; break; default: _ok = false; warn(badness, message); break; } return *this; } /*--------------------------------------------------------------------------*/ /* syntax_msg: print syntax error message * echo a portion of the input with an arrow pointing to the current place */ CS & CS::warn(int badness, unsigned spot, const std::string& message) { if (badness >= OPT::picky) { if (spot < 40) { IO::error << _cmd.substr(0,70) << '\n'; IO::error.tab(spot); }else{ IO::error << _cmd.substr(0,15) << " ... " << _cmd.substr(spot-20, 56) << '\n'; IO::error.tab(40); } IO::error << "^ ? " + message + '\n'; }else{ } return *this; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/ap_get.cc000066400000000000000000000057771316501211100134010ustar00rootroot00000000000000/*$Id: ap_get.cc 2016/09/11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * get value for matching keyword */ //testing=script 2006.07.17 #include "ap.h" /*--------------------------------------------------------------------------*/ /* special version of "get" for "bool" * so "nofoo" works as an equivalent to foo=false */ bool Get(CS& cmd, const std::string& key, bool* val) { if (cmd.umatch(key + ' ')) { if (cmd.skip1b('=')) { cmd >> *val; }else{ *val = true; } return true; }else if (cmd.umatch("no" + key)) { *val = false; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ bool Get(CS& cmd, const std::string& key, int* val, AP_MOD mod, int scale) { if (cmd.umatch(key + " {=}")) { switch(mod) { case mNONE: *val = int(cmd.ctof()); break; case mSCALE: untested(); *val = int(cmd.ctof())*scale; break; case mOFFSET: untested(); *val = int(cmd.ctof())+scale; break; case mINVERT: untested(); *val = 1 / int(cmd.ctof()); break; case mPOSITIVE: untested(); *val = std::abs(int(cmd.ctof())); break; case mOCTAL: *val = cmd.ctoo(); break; case mHEX: untested(); *val = cmd.ctox(); break; } return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ bool Get(CS& cmd, const std::string& key, double* val, AP_MOD mod, double scale) { if (cmd.umatch(key + " {=}")) { switch(mod) { case mNONE: untested(); *val = cmd.ctof(); break; case mSCALE: untested(); *val = cmd.ctof()*scale; break; case mOFFSET: *val = cmd.ctof()+scale; break; case mINVERT: untested(); *val = 1 / cmd.ctof(); break; case mPOSITIVE: *val = std::abs(cmd.ctof()); break; case mOCTAL: untested(); *val = cmd.ctoo(); break; case mHEX: untested(); *val = cmd.ctox(); break; } return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/ap_match.cc000066400000000000000000000066641316501211100137120ustar00rootroot00000000000000/*$Id: ap_match.cc,v 26.131 2009/11/20 08:22:10 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * string compare */ //testing=script 2006.07.17 #include "u_opt.h" #include "ap.h" /*--------------------------------------------------------------------------*/ /* umatch = universal match */ CS& CS::umatch(const std::string& s) { unsigned start = cursor(); skipbl(); unsigned begin_match = cursor(); const char* str2 = s.c_str(); bool optional = 0; for (;;) { if ((!*str2) || (*str2 == '|')) { _ok = true; break; }else if ((str2[0] == '\\') && (peek() == str2[1])) { skip(); str2 += 2; }else if ((!optional) && (*str2 == '{')) { ++str2; optional = true; }else if ((optional) && (*str2 == '}')) { ++str2; optional = false; }else if ((*str2 == ' ') && is_term()) { // blank in ref string matches anything that delimits tokens skipbl(); ++str2; }else if (peek() == *str2) { skip(); ++str2; }else if ((OPT::case_insensitive) && (tolower(peek()) == tolower(*str2))) { skip(); ++str2; }else if (optional) { while (*str2 != '}') { ++str2; } }else{ // mismatch const char* bar = strchr(str2, '|'); if (bar && (bar[-1] != '\\')) { str2 = bar+1; reset(start); }else{ _ok = false; break; } } } if (_ok) { _begin_match = begin_match; _end_match = cursor(); skipcom(); _ok = true; }else{ reset(start); _ok = false; } return *this; } /*--------------------------------------------------------------------------*/ CS& CS::scan(const std::string& s) { unsigned start = cursor(); for (;;) { if (umatch(s)) { // found it _ok = true; break; }else if (!more()) { // ran out reset(start); _ok = false; break; }else{ // skip and try again skiparg(); } } return *this; } /*--------------------------------------------------------------------------*/ std::string CS::last_match()const { return _cmd.substr(_begin_match, _end_match-_begin_match); } /*--------------------------------------------------------------------------*/ std::string CS::trimmed_last_match(const std::string& suf)const { unsigned real_end = _end_match; while (strchr(suf.c_str(), _cmd[real_end-1])) { --real_end; } return _cmd.substr(_begin_match, real_end-_begin_match); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/ap_skip.cc000066400000000000000000000076051316501211100135600ustar00rootroot00000000000000/*$Id: ap_skip.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * collection of functions to skip input * all except skip1 skip leading whitespace, skip whatever is being skipped, * then skip trailing whitespace. */ //testing=script 2006.07.17 #include "ap.h" /*--------------------------------------------------------------------------*/ /* skipbl: skip whitespace. (any non-graphic character is ws) * =,(,) are also ws * update string pointer * pointer points to first non-space * does NOT update _ok flag */ CS& CS::skipbl() { while (peek() && (!isgraph(peek()))) { skip(); } return *this; } /*--------------------------------------------------------------------------*/ /* skip1b: skip 1 matching character and surrounding blanks * _ok = did it */ CS& CS::skip1b(char t) { skipbl(); skip1(t); skipbl(); return *this; } /*--------------------------------------------------------------------------*/ /* skip1: skip 1 character matching any in t * _ok = did it */ CS& CS::skip1(char t) { if (match1(t)) { skip(); assert(_ok); }else{ _ok = false; } return *this; } /*--------------------------------------------------------------------------*/ /* skip1b: skip 1 matching character and surrounding blanks * _ok = did it */ CS& CS::skip1b(const std::string& t) { skipbl(); skip1(t); skipbl(); return *this; } /*--------------------------------------------------------------------------*/ /* skip1: skip 1 character matching any in t * _ok = did it */ CS& CS::skip1(const std::string& t) { if (match1(t)) { skip(); assert(_ok); }else{ _ok = false; } return *this; } /*--------------------------------------------------------------------------*/ /* skiparg: skip an argument (maybe just a comma) * _ok = skipped something */ CS& CS::skiparg() { unsigned here = cursor(); if (!skipcom()) { if (peek()) { skip(); }else{ } while (is_alpha() || is_float() || is_argsym()) { skip(); } skipcom(); }else{untested(); // empty field, just a comma } _ok = cursor() > here; return *this; } /*--------------------------------------------------------------------------*/ /* skipto: skip to a character (one of ...) * _ok = skipped something */ CS& CS::skipto1(const std::string& t) {untested(); unsigned here = cursor(); while (ns_more() && !match1(t)) {untested(); skip(); } _ok = ns_more(); if (!_ok) {untested(); reset(here); }else{untested(); } return *this; } /*--------------------------------------------------------------------------*/ /* skipto: skip to a character (explicit) * _ok = skipped something */ CS& CS::skipto1(char c) { unsigned here = cursor(); while (ns_more() && !match1(c)) { skip(); } _ok = ns_more(); if (!_ok) {untested(); reset(here); }else{ } return *this; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/bm.cc000066400000000000000000000171441316501211100125270ustar00rootroot00000000000000/*$Id: bm.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling action base */ //testing=script 2006.07.13 #include "globals.h" #include "u_lang.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ const double _default_bandwidth (NOT_INPUT); const double _default_delay (0.); const double _default_phase (0.); const double _default_ooffset (0.); const double _default_ioffset (0.); const double _default_scale (1.); const double _default_tc1 (0.); const double _default_tc2 (0.); const double _default_ic (0.); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_ACTION_BASE::EVAL_BM_ACTION_BASE(int c) :EVAL_BM_BASE(c), _bandwidth(_default_bandwidth), _delay(_default_delay), _phase(_default_phase), _ooffset(_default_ooffset), _ioffset(_default_ioffset), _scale(_default_scale), _tc1(_default_tc1), _tc2(_default_tc2), _ic(_default_ic) { } /*--------------------------------------------------------------------------*/ EVAL_BM_ACTION_BASE::EVAL_BM_ACTION_BASE(const EVAL_BM_ACTION_BASE& p) :EVAL_BM_BASE(p), _bandwidth(p._bandwidth), _delay(p._delay), _phase(p._phase), _ooffset(p._ooffset), _ioffset(p._ioffset), _scale(p._scale), _tc1(p._tc1), _tc2(p._tc2), _ic(p._ic) { } /*--------------------------------------------------------------------------*/ double EVAL_BM_ACTION_BASE::temp_adjust()const { double tempdiff = _temp_c - _tnom_c; return (_scale * (1 + _tc1*tempdiff + _tc2*tempdiff*tempdiff)); } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::tr_final_adjust(FPOLY1* y, bool f_is_value)const { if (f_is_value) { y->f1 = y->f0; y->f0 = 0.; }else{ } *y *= temp_adjust(); y->f0 += _ooffset; } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::tr_finish_tdv(ELEMENT* d, double val)const { d->_y[0] = FPOLY1(CPOLY1(ioffset(d->_y[0].x), 0., val)); tr_final_adjust(&(d->_y[0]), false); } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::ac_final_adjust(COMPLEX* y)const { if (_bandwidth != NOT_INPUT && _bandwidth != 0.) {untested(); assert(y->imag() == 0); double ratio = _sim->_freq / _bandwidth; double coeff = y->real() / (1.+(ratio*ratio)); *y = COMPLEX(coeff, -coeff * ratio); }else{ } if (_phase != 0.) {itested(); *y *= std::polar(1., _phase*DTOR); }else{ } if (_delay != 0.) {untested(); double ratio = _sim->_freq * _delay; if (ratio > 100000.) {untested(); error(bPICKY, "delay too long\n"); ratio = 0.; }else{untested(); } *y *= std::polar(1., -360.0 * DTOR * ratio); }else{ } } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::ac_final_adjust_with_temp(COMPLEX* y)const { *y *= temp_adjust(); ac_final_adjust(y); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_ACTION_BASE::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_ACTION_BASE* p = dynamic_cast(&x); bool rv = p && _bandwidth == p->_bandwidth && _delay == p->_delay && _phase == p->_phase && _ooffset == p->_ooffset && _ioffset == p->_ioffset && _scale == p->_scale && _tc1 == p->_tc1 && _tc2 == p->_tc2 && _ic == p->_ic && EVAL_BM_BASE::operator==(x); if (rv) {untested(); }else{ } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { print_pair(o, lang, "bandwidth",_bandwidth,_bandwidth.has_hard_value()); print_pair(o, lang, "delay", _delay, _delay.has_hard_value()); print_pair(o, lang, "phase", _phase, _phase.has_hard_value()); print_pair(o, lang, "ioffset", _ioffset, _ioffset.has_hard_value()); print_pair(o, lang, "ooffset", _ooffset, _ooffset.has_hard_value()); print_pair(o, lang, "scale", _scale, _scale.has_hard_value()); print_pair(o, lang, "tc1", _tc1, _tc1.has_hard_value()); print_pair(o, lang, "tc2", _tc2, _tc2.has_hard_value()); print_pair(o, lang, "ic", _ic, _ic.has_hard_value()); COMMON_COMPONENT::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::precalc_last(const CARD_LIST* Scope) { assert(Scope); COMMON_COMPONENT::precalc_last(Scope); _bandwidth.e_val(_default_bandwidth, Scope); _delay.e_val(_default_delay, Scope); _phase.e_val(_default_phase, Scope); _ooffset.e_val(_default_ooffset, Scope); _ioffset.e_val(_default_ioffset, Scope); _scale.e_val(_default_scale, Scope); _tc1.e_val(_default_tc1, Scope); _tc2.e_val(_default_tc2, Scope); _ic.e_val(_default_ic, Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_ACTION_BASE::ac_eval(ELEMENT* d)const { tr_eval(d); d->_ev = d->_y[0].f1; ac_final_adjust(&(d->_ev)); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "bandwidth",&_bandwidth) || Get(cmd, "delay", &_delay) || Get(cmd, "phase", &_phase) || Get(cmd, "ioffset", &_ioffset) || Get(cmd, "ooffset", &_ooffset) || Get(cmd, "scale", &_scale) || Get(cmd, "tc1", &_tc1) || Get(cmd, "tc2", &_tc2) || Get(cmd, "ic", &_ic) || COMMON_COMPONENT::parse_params_obsolete_callback(cmd); ; } /*--------------------------------------------------------------------------*/ bool EVAL_BM_ACTION_BASE::has_ext_args()const { return (_bandwidth.has_hard_value() || _delay.has_hard_value() || _phase.has_hard_value() || _ooffset.has_hard_value() || _ioffset.has_hard_value() || _scale.has_hard_value() || _tc1.has_hard_value() || _tc2.has_hard_value() || _ic.has_hard_value()); } /*--------------------------------------------------------------------------*/ COMMON_COMPONENT* EVAL_BM_ACTION_BASE::parse_func_type(CS& cmd) { const COMMON_COMPONENT* p = (cmd.is_float() || cmd.match1('_') || cmd.skip1b('=')) ? bm_dispatcher["eval_bm_value"] : bm_dispatcher[cmd]; if (p) { p->skip_type_tail(cmd); return p->clone(); }else{ return NULL; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/bm_cond.cc000066400000000000000000000240031316501211100135220ustar00rootroot00000000000000/*$Id: bm_cond.cc,v 26.138 2013/04/24 03:03:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling conditionals * The conditions refer to types of analysis, type SIM_MODE in mode.h. * An array "_func" stores handles to commons specific to each mode. */ //testing=script 2006.07.13 #include "globals.h" #include "e_elemnt.h" #include "bm.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ static EVAL_BM_VALUE func_zero(CC_STATIC); /*--------------------------------------------------------------------------*/ class EVAL_BM_COND : public EVAL_BM_BASE { private: COMMON_COMPONENT* _func[sCOUNT]; bool _set[sCOUNT]; explicit EVAL_BM_COND(const EVAL_BM_COND& p); public: explicit EVAL_BM_COND(int c=0); ~EVAL_BM_COND(); private: // override virtual bool operator==(const COMMON_COMPONENT&)const; COMMON_COMPONENT* clone()const {return new EVAL_BM_COND(*this);} void parse_common_obsolete_callback(CS&); void print_common_obsolete_callback(OMSTREAM&, LANGUAGE*)const; void precalc_first(const CARD_LIST*); void expand(const COMPONENT*); COMMON_COMPONENT* deflate(); void precalc_last(const CARD_LIST*); void tr_eval(ELEMENT*d)const {assert(_func[d->_sim->sim_mode()]); _func[d->_sim->sim_mode()]->tr_eval(d);} void ac_eval(ELEMENT*d)const {assert(_func[s_AC]); _func[s_AC]->ac_eval(d);} TIME_PAIR tr_review(COMPONENT*d)const {assert(_func[d->_sim->sim_mode()]); return _func[d->_sim->sim_mode()]->tr_review(d);} void tr_accept(COMPONENT*d)const {assert(_func[d->_sim->sim_mode()]); _func[d->_sim->sim_mode()]->tr_accept(d);} std::string name()const {itested(); return "????";} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_COND::EVAL_BM_COND(int c) :EVAL_BM_BASE(c) { std::fill_n(_func, sCOUNT, static_cast(0)); std::fill_n(_set, sCOUNT, false); } /*--------------------------------------------------------------------------*/ EVAL_BM_COND::EVAL_BM_COND(const EVAL_BM_COND& p) :EVAL_BM_BASE(p) { for (int i=0; i(&x); bool rv = p && EVAL_BM_BASE::operator==(x); if (rv) {untested(); incomplete(); } return rv; } /*--------------------------------------------------------------------------*/ void EVAL_BM_COND::parse_common_obsolete_callback(CS& cmd) //used { unsigned here = cmd.cursor(); cmd.reset().skipbl(); bool is_source = cmd.match1("viVI") || (cmd.match1('.') && (cmd.umatch(".vso{urce} ") || cmd.umatch(".iso{urce} "))); cmd.reset(here); do { SIM_MODE mode(s_NONE); ONE_OF || Set(cmd, "ac", &mode, s_AC) || Set(cmd, "op", &mode, s_OP) || Set(cmd, "dc", &mode, s_DC) || Set(cmd, "tran{sient}",&mode, s_TRAN) || Set(cmd, "four{ier}", &mode, s_FOURIER) || Set(cmd, "else", &mode, s_NONE) || Set(cmd, "all", &mode, s_NONE) || (mode = s_NONE) ; if (_set[mode]) {itested(); cmd.warn(bWARNING, (mode != s_NONE) ? "duplicate mode" : "what's this?"); } COMMON_COMPONENT* c = EVAL_BM_ACTION_BASE::parse_func_type(cmd); if (!c) { // no match for func_type if (cmd.more()) { if (!cmd.match1("\"'{")) { // quoted means it is a parameter or expression // otherwise assume it's a "model", for now // it might not be, but we fix later c = bm_dispatcher.clone("eval_bm_model"); }else{ } if (!c) { c = bm_dispatcher.clone("eval_bm_value"); }else{ } }else{ // no more } }else{ // got bm function } if (is_source // Spice compatibility && mode == s_NONE // for sources, no condition implies "DC" && !_set[s_DC] && dynamic_cast(c)) { mode = s_DC; }else{ } if (c) { c->parse_common_obsolete_callback(cmd); //BUG//callback }else{ c = &func_zero; } assert(c); attach_common(c, &(_func[mode])); assert(_func[mode]); _set[mode] = true; if (cmd.is_end()) { break; } } while (cmd.more() && !cmd.stuck(&here)); // apply rules to determine states not explicitly specified if (!_func[s_OP] && _set[s_DC]) {attach_common(_func[s_DC], &(_func[s_OP]));} if (!_func[s_OP] && _set[s_NONE]) {attach_common(_func[s_NONE],&(_func[s_OP]));} if (!_func[s_OP] && _set[s_TRAN]) {untested();attach_common(_func[s_TRAN],&(_func[s_OP]));} if (!_func[s_OP]) {attach_common(&func_zero, &(_func[s_OP]));} if (!_func[s_DC] && _set[s_NONE]) {attach_common(_func[s_NONE],&(_func[s_DC]));} if (!_func[s_DC] && _set[s_OP]) {untested();attach_common(_func[s_OP], &(_func[s_DC]));} if (!_func[s_DC] && _set[s_TRAN]) {untested();attach_common(_func[s_TRAN],&(_func[s_DC]));} if (!_func[s_DC]) {attach_common(&func_zero, &(_func[s_DC]));} if (!_func[s_TRAN]&&_set[s_NONE]) {attach_common(_func[s_NONE],&(_func[s_TRAN]));} if (!_func[s_TRAN] && _set[s_DC]) {attach_common(_func[s_DC],&(_func[s_TRAN]));} if (!_func[s_TRAN] && _set[s_OP]) {untested();attach_common(_func[s_OP],&(_func[s_TRAN]));} if (!_func[s_TRAN]) {attach_common(&func_zero,&(_func[s_TRAN]));} if (!_func[s_FOURIER]) {attach_common(_func[s_TRAN],&(_func[s_FOURIER]));} const EVAL_BM_ACTION_BASE* c = prechecked_cast(_func[s_NONE]); if (!_func[s_AC] && _set[s_NONE] && (!is_source || c->ac_too())) {attach_common(_func[s_NONE],&(_func[s_AC]));} if (!_func[s_AC]) {attach_common(&func_zero, &(_func[s_AC]));} for (int i = 1; i < sCOUNT; ++i) { assert(_func[i]); } } /*--------------------------------------------------------------------------*/ void EVAL_BM_COND::expand(const COMPONENT* d) { EVAL_BM_BASE::expand(d); for (int i = 1; i < sCOUNT; ++i) { //BUG// makes unnecessary duplicates assert(_func[i]); COMMON_COMPONENT* new_common = _func[i]->clone(); new_common->expand(d); COMMON_COMPONENT* deflated_common = new_common->deflate(); if (deflated_common != _func[i]) { attach_common(deflated_common, &(_func[i])); }else{untested(); } } } /*--------------------------------------------------------------------------*/ // If all are the same, there is no use for the COND. // Return the one thing that is attached, so the caller can replace it. COMMON_COMPONENT* EVAL_BM_COND::deflate() { for (int i = 1; i < sCOUNT; ++i) { if (_func[i] != _func[s_NONE]) { // they are not all the same, don't deflate return this; } } // they are all the same. Take one of them. return _func[s_NONE]->deflate(); } /*--------------------------------------------------------------------------*/ void EVAL_BM_COND::precalc_first(const CARD_LIST* Scope) { //BUG// calls the individual precalc more than once // wastes time and makes multiple "has no value" warnings // when there should be only one COMMON_COMPONENT* did_this = NULL; for (int i = 1; i < sCOUNT; ++i) { assert(_func[i]); if (_func[i] != did_this) { _func[i]->precalc_first(Scope); did_this = _func[i]; }else{ // already did } } } /*--------------------------------------------------------------------------*/ void EVAL_BM_COND::precalc_last(const CARD_LIST* Scope) { //BUG// calls the individual precalc more than once // wastes time and makes multiple "has no value" warnings // when there should be only one COMMON_COMPONENT* did_this = NULL; for (int i = 1; i < sCOUNT; ++i) { assert(_func[i]); if (_func[i] != did_this) { _func[i]->precalc_last(Scope); did_this = _func[i]; }else{itested(); // already did } } } /*--------------------------------------------------------------------------*/ void EVAL_BM_COND::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); bool more = false; if (_set[s_NONE]) { _func[s_NONE]->print_common_obsolete_callback(o, lang); more = true; }else{ } for (int i = sCOUNT-1; i != s_NONE; --i) { if (_set[i]) { if (more) { o << ' '; }else{ } o << ' ' << static_cast(i) << ' '; _func[i]->print_common_obsolete_callback(o, lang); more = true; }else{ } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ EVAL_BM_COND p1(CC_STATIC); DISPATCHER::INSTALL d1(&bm_dispatcher, "eval_bm_cond", &p1); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/bm_value.cc000066400000000000000000000067201316501211100137210ustar00rootroot00000000000000/*$Id: bm_value.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * behavioral modeling simple value * used with tc, etc, and conditionals */ //testing=script 2005.10.07 #include "globals.h" #include "bm.h" /*--------------------------------------------------------------------------*/ static EVAL_BM_VALUE p1(CC_STATIC); static DISPATCHER::INSTALL d1(&bm_dispatcher, "value|eval_bm_value", &p1); /*--------------------------------------------------------------------------*/ bool EVAL_BM_VALUE::operator==(const COMMON_COMPONENT& x)const { const EVAL_BM_VALUE* p = dynamic_cast(&x); return p && EVAL_BM_ACTION_BASE::operator==(x); } /*--------------------------------------------------------------------------*/ void EVAL_BM_VALUE::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { o << _value; EVAL_BM_ACTION_BASE::print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_VALUE::is_trivial()const { return !(_bandwidth.has_hard_value() || _delay.has_hard_value() || _phase.has_hard_value() || _ooffset.has_hard_value() || _ioffset.has_hard_value() || _scale.has_hard_value() || _tc1.has_hard_value() || _tc2.has_hard_value() || _ic.has_hard_value() || _tnom_c.has_hard_value() || _dtemp.has_hard_value() || _temp_c.has_hard_value()); } /*--------------------------------------------------------------------------*/ void EVAL_BM_VALUE::precalc_first(const CARD_LIST* Scope) { if (modelname() != "") { _value = modelname(); }else{ } EVAL_BM_ACTION_BASE::precalc_first(Scope); } /*--------------------------------------------------------------------------*/ void EVAL_BM_VALUE::tr_eval(ELEMENT* d)const { tr_finish_tdv(d, _value); } /*--------------------------------------------------------------------------*/ bool EVAL_BM_VALUE::parse_numlist(CS& cmd) { unsigned here = cmd.cursor(); PARAMETER new_value(NOT_VALID); cmd >> new_value; if (cmd.gotit(here)) { _value = new_value; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ bool EVAL_BM_VALUE::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "=", &_value) || EVAL_BM_ACTION_BASE::parse_params_obsolete_callback(cmd) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/c__cmd.cc000066400000000000000000000103011316501211100133210ustar00rootroot00000000000000/*$Id: c__cmd.cc 2016/09/11 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * command interpreter and dispatcher */ //testing=obsolete #include "u_status.h" #include "declare.h" /* plclose */ #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ /* cmdproc: process a command * parse, and act on, a command string */ void CMD::cmdproc(CS& cmd, CARD_LIST* scope) { bool get_timer_was_running = ::status.get.is_running(); ::status.get.stop(); static TIMER timecheck; bool didsomething = true; error(bTRACE, ">>>>>" + cmd.fullstring() + "\n"); timecheck.stop().reset().start(); cmd.umatch(ANTI_COMMENT); while (cmd.umatch(I_PROMPT)) {itested(); /* skip any number of these */ } unsigned here = cmd.cursor(); std::string s; // Map possible short names to full ones. // If this if/else block is removed, the only loss is the short names. // Although it looks like it can be used to make aliases, don't. if (cmd.umatch("'|*|#|//|\"")) { s = "xxxxcomment";} else if (cmd.umatch("b{uild} ")) {itested(); s = "build";} else if (cmd.umatch("del{ete} ")) { s = "delete";} else if (cmd.umatch("fo{urier} ")) { s = "fourier";} else if (cmd.umatch("gen{erator} ")) { s = "generator";} else if (cmd.umatch("inc{lude} ")) {itested(); s = "include";} else if (cmd.umatch("l{ist} ")) { s = "list";} else if (cmd.umatch("m{odify} ")) { s = "modify";} else if (cmd.umatch("opt{ions} ")) { s = "options";} else if (cmd.umatch("par{ameter} ")) { s = "param";} else if (cmd.umatch("pr{int} ")) { s = "print";} else if (cmd.umatch("q{uit} ")) { s = "quit";} else if (cmd.umatch("st{atus} ")) { s = "status";} else if (cmd.umatch("te{mperature} ")){itested(); s = "temperature";} else if (cmd.umatch("tr{ansient} ")) { s = "transient";} else if (cmd.umatch("!")) { s = "system";} else if (cmd.umatch("<")) {itested(); s = "<";} else if (cmd.umatch(">")) {itested(); s = ">";} else{ /* no shortcut available */ cmd >> s; didsomething = false; } if (s == "xxxxcomment") { // nothing }else if (s != "") { CMD* c = command_dispatcher[s]; if (c) { c->do_it(cmd, scope); didsomething = true; }else{itested(); cmd.warn(bWARNING, here, "what's this?"); } }else if (!didsomething) { cmd.check(bWARNING, "bad command"); didsomething = false; }else{itested(); } if (OPT::acct && didsomething) {itested(); IO::mstdout.form("time=%8.2f\n", timecheck.check().elapsed()); }else{ } plclose(); outreset(); if (get_timer_was_running) { ::status.get.start(); }else{ } } /*--------------------------------------------------------------------------*/ void CMD::command(const std::string& cs, CARD_LIST* scope) { CS cmd(CS::_STRING, cs); // from string, full command std::string s; cmd >> s; CMD* c = command_dispatcher[s]; if (c) { c->do_it(cmd, scope); }else{ error(bDEBUG, "bad internal command: " + s + '\n'); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/c_attach.cc000066400000000000000000000150501316501211100136710ustar00rootroot00000000000000/*$Id: c_attach.cc $ -*- C++ -*- * Copyright (C) 2007 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script 2017.06.22 #include "e_cardlist.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ std::map attach_list; /*--------------------------------------------------------------------------*/ std::string plug_path() { return OS::getenv("GNUCAP_PLUGPATH"); } /*--------------------------------------------------------------------------*/ void list() { for (std::map::iterator ii = attach_list.begin(); ii != attach_list.end(); ++ii) { if (ii->second) { IO::mstdout << ii->first << '\n'; }else{itested(); error(bTRACE, ii->first + " (unloaded)\n"); } } } /*--------------------------------------------------------------------------*/ class CMD_ATTACH : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { unsigned here = cmd.cursor(); int dl_scope = RTLD_LOCAL; int check = RTLD_NOW; // RTLD_NOW means to resolve symbols on loading // RTLD_LOCAL means symbols defined in a plugin are local do { if (cmd.umatch("public ")) {untested(); dl_scope = RTLD_GLOBAL; // RTLD_GLOBAL means symbols defined in a plugin are global // Use this when a plugin depends on another. }else if (cmd.umatch("lazy ")) {untested(); check = RTLD_LAZY; // RTLD_LAZY means to defer resolving symbols until needed // Use when a plugin will not load because of unresolved symbols, // but it may work without it. }else{ } } while (cmd.more() && !cmd.stuck(&here)); std::string short_file_name; cmd >> short_file_name; if (short_file_name == "") { // nothing, list what we have list(); }else{ // a name to look for // check if already loaded if (void* handle = attach_list[short_file_name]) {itested(); if (CARD_LIST::card_list.is_empty()) {itested(); cmd.warn(bDANGER, here, "\"" + short_file_name + "\": already loaded, replacing"); dlclose(handle); attach_list[short_file_name] = NULL; }else{itested(); cmd.reset(here); throw Exception_CS("already loaded, cannot replace when there is a circuit", cmd); } }else{ } std::string full_file_name; if (short_file_name[0]=='/' || short_file_name[0]=='.'){untested(); if (OS::access_ok(short_file_name, R_OK)) {untested(); // found it, local or root full_file_name = short_file_name; }else{untested(); cmd.reset(here); throw Exception_CS(std::string("plugin not found in ") + short_file_name[0], cmd); } }else{ std::string path = plug_path(); full_file_name = findfile(short_file_name, path, R_OK); if (full_file_name != "") { // found it, with search }else{untested(); cmd.reset(here); throw Exception_CS("plugin not found in " + path, cmd); } } assert(OS::access_ok(full_file_name, R_OK)); if (void* handle = dlopen(full_file_name.c_str(), check | dl_scope)) { attach_list[short_file_name] = handle; }else{untested(); cmd.reset(here); throw Exception_CS(dlerror(), cmd); } } } std::string help_text()const { return "load command\n" "Loads plugins\n" "Syntax: load plugin\n" "Plugin search path is: " + plug_path() + " \n" "Path is set by GNUCAP_PLUGPATH environment variable\n" "With no arg, it lists plugins already loaded\n\n"; } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "attach|load", &p1); /*--------------------------------------------------------------------------*/ class CMD_DETACH : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { unsigned here = cmd.cursor(); //BUG// due to the way dlopen and dlclose work std::string file_name; // it doesn't really work. cmd >> file_name; // the dispatcher's active instance blocks unload if (file_name == "") { // nothing, list what we have list(); }else{untested(); if (CARD_LIST::card_list.is_empty()) {untested(); void* handle = attach_list[file_name]; if (handle) {untested(); dlclose(handle); attach_list[file_name] = NULL; }else{untested(); cmd.reset(here); throw Exception_CS("plugin not attached", cmd); } }else{untested(); throw Exception_CS("detach prohibited when there is a circuit", cmd); } } } std::string help_text()const { return "unload command\n" "Unloads plugins\n" "Syntax: unload plugin\n" "The name must match the name you loaded it with.\n" "Prohibited when there is a circuit\n" "With no arg, it lists plugins already loaded\n\n"; } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, "detach|unload", &p2); /*--------------------------------------------------------------------------*/ class CMD_DETACH_ALL : public CMD { public: void do_it(CS& cmd, CARD_LIST*) { if (CARD_LIST::card_list.is_empty()) { for (std::map::iterator ii = attach_list.begin(); ii != attach_list.end(); ++ii) { void* handle = ii->second; if (handle) { dlclose(handle); ii->second = NULL; }else{itested(); // name still in list, but has been detached already } } }else{untested(); throw Exception_CS("detach prohibited when there is a circuit", cmd); } } } p3; DISPATCHER::INSTALL d3(&command_dispatcher, "detach_all", &p3); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/c_file.cc000066400000000000000000000110631316501211100133440ustar00rootroot00000000000000/*$Id: c_file.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * log and > commands * log == commands log to a file * > == all output to a file (redirect stdout) * bare command closes the file */ //testing=none 2006.07.16 #include "u_lang.h" #include "c_comand.h" #include "globals.h" /*--------------------------------------------------------------------------*/ extern OMSTREAM mout; /* > file bitmap */ extern OMSTREAM mlog; /* log file bitmap */ /*--------------------------------------------------------------------------*/ namespace { /*--------------------------------------------------------------------------*/ class CMD_INCLUDE : public CMD { public: void do_it(CS& cmd, CARD_LIST* Scope) { unsigned here = cmd.cursor(); try { std::string file_name; cmd >> file_name; CS file(CS::_INC_FILE, file_name); for (;;) { if (OPT::language) { OPT::language->parse_top_item(file, Scope); }else{untested(); CMD::cmdproc(file.get_line(""), Scope); } } }catch (Exception_File_Open& e) { cmd.warn(bDANGER, here, e.message() + '\n'); }catch (Exception_End_Of_Input& e) { // done } } } p0; DISPATCHER::INSTALL d0(&command_dispatcher, "include", &p0); /*--------------------------------------------------------------------------*/ /* cmd_log: "log" command processing * open a file for logging (history) * arg is name of file * no arg closes the one most recently opened * the file will contain a list of commands executed, for use by "<" * multiple files can be open, they are nested, output to all. */ class CMD_LOG : public CMD { public: void do_it(CS& cmd, CARD_LIST*) {itested(); static std::list filestack; if (cmd.more()) { /* a file name .. open it */ const char *access = "w"; while (cmd.match1('>')) { access = "a"; cmd.skip(); cmd.skipbl(); } FILE* newfile = xopen(cmd,"",access); if (newfile) { filestack.push_back(newfile); mlog.attach(newfile); }else{ } }else{ /* empty command -- close a file */ if (filestack.empty()) { error(bWARNING, "no files open\n"); }else{ FILE* oldfile = filestack.back(); filestack.pop_back(); mlog.detach(oldfile); fclose(oldfile); } } } } p1; DISPATCHER::INSTALL d1(&command_dispatcher, "log", &p1); /*--------------------------------------------------------------------------*/ /* cmd_file: ">" command processing * open a file for all output * the file will contain a copy of all screen output. * arg is name of file * no arg closes it * the file will contain all that would go to stdout */ class CMD_FILE : public CMD { public: void do_it(CS& cmd, CARD_LIST*) {itested(); static std::list filestack; if (cmd.more()) { /* a file name .. open it */ const char* access = "w"; while (cmd.match1('>')) { access = "a"; cmd.skip(); cmd.skipbl(); } FILE* newfile = xopen(cmd,"",access); if (newfile) { filestack.push_back(newfile); mout.attach(newfile); IO::mstdout.attach(newfile); }else{ } }else{ /* empty command -- close a file */ if (filestack.empty()) { error(bWARNING, "no files open\n"); }else{ FILE* oldfile = filestack.back(); filestack.pop_back(); mout.detach(oldfile); IO::mstdout.detach(oldfile); fclose(oldfile); } } } } p2; DISPATCHER::INSTALL d2(&command_dispatcher, ">", &p2); /*--------------------------------------------------------------------------*/ } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/configure000077500000000000000000000040461316501211100135260ustar00rootroot00000000000000#!/bin/sh # configure for library (shared object) mkdir -p O #------------- Stuff added to enable --prefix -------------- if test "x$1" != "x"; then # echo Found input parameter -- $1 # Now see if the parameter is --prefix= if test "x${1#--prefix=}" != "x$1"; then # echo "Found --prefix in input args. Setting prefix directory." prefix=${1#--prefix=} else # echo "Found unrecognized parameter in input args." # Just use the default prefix dir. prefix=/usr/local fi else # echo "No input parameter found." # Just use the default prefix dir prefix=/usr/local fi sed -e "s#/usr/local#$prefix#" ../Makefile.template > Makefile #---------------------------------------------------------------- echo "CCFLAGS = -fPIC \\" >Make.ccflags echo "LIBS = -ldl \\" >Make.libs rm -f a.out c++ test_readline.cc -lreadline -ltermcap if [ -f a.out ] ; then echo "using readline" echo "-DHAVE_LIBREADLINE \\" >>Make.ccflags echo "-lreadline -ltermcap \\" >>Make.libs else echo "warning: either libtermcap or libreadline is missing - building without readline" fi rm -f a.out echo "-DUNIX -O2 -DNDEBUG -I. -I../include -I../../include -W" >>Make.ccflags echo "" >>Make.libs echo "PREFIX = " $prefix >>Make.libs echo "" >>Make.libs cat <Make.sys #------------------------------------------------------------------------ VPATH = .:.. CCC = c++ TARGET_EXT = .so LDFLAGS = -shared .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) -c \$< #------------------------------------------------------------------------ \$(TARGET)\$(TARGET_EXT): \$(TARGET_DEPENDS) rm -f \$@ \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) \$(OBJS) \$(LIBS) \$(LDFLAGS) -o \$@ #------------------------------------------------------------------------ CAT_EOF echo \# created by $PWD/$0. do not edit >Make2 echo \#------------------------------------------------------------------------ >>Make2 cat Make.ccflags Make.libs Make.sys >>Make2 rm Make.ccflags Make.libs Make.sys exit 0 lib/d_logic.cc000066400000000000000000000375141316501211100135340ustar00rootroot00000000000000/*$Id: d_logic.cc 2016/09/17 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * logic model and device. * netlist syntax: * device: mxxxx out gnd vdd in1 in2 ... family gatetype * model: .model mname LOGIC */ //testing=script,sparse 2006.07.17 #include "globals.h" #include "e_subckt.h" #include "u_xprobe.h" #include "d_logic.h" /*--------------------------------------------------------------------------*/ int DEV_LOGIC::_count = -1; int COMMON_LOGIC::_count = -1; int MODEL_LOGIC::_count = -1; // there is one in e_node.cc, and the dispatcher static LOGIC_NONE Default_LOGIC(CC_STATIC); /*--------------------------------------------------------------------------*/ static DEV_LOGIC p1; static DISPATCHER::INSTALL d1(&device_dispatcher, "U|logic", &p1); /*--------------------------------------------------------------------------*/ static MODEL_LOGIC p2(&p1); static DISPATCHER::INSTALL d2(&model_dispatcher, "logic", &p2); /*--------------------------------------------------------------------------*/ DEV_LOGIC::DEV_LOGIC() :ELEMENT(), _lastchangenode(0), _quality(qGOOD), _failuremode("ok"), _oldgatemode(moUNKNOWN), _gatemode(moUNKNOWN) { attach_common(&Default_LOGIC); _n = nodes; ++_count; } /*--------------------------------------------------------------------------*/ DEV_LOGIC::DEV_LOGIC(const DEV_LOGIC& p) :ELEMENT(p), _lastchangenode(0), _quality(qGOOD), _failuremode("ok"), _oldgatemode(moUNKNOWN), _gatemode(moUNKNOWN) { assert(max_nodes() == PORTS_PER_GATE); for (int ii = 0; ii < max_nodes(); ++ii) { nodes[ii] = p.nodes[ii]; } _n = nodes; ++_count; } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::expand() { ELEMENT::expand(); const COMMON_LOGIC* c = prechecked_cast(common()); assert(c); attach_model(); const MODEL_LOGIC* m = dynamic_cast(c->model()); if (!m) { throw Exception_Model_Type_Mismatch(long_label(), c->modelname(), "logic family (LOGIC)"); }else{ } std::string subckt_name(c->modelname()+c->name()+to_string(c->incount)); try { const CARD* model = find_looking_out(subckt_name); if(!dynamic_cast(model)) {untested(); error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": " + subckt_name + " is not a subckt, forcing digital\n"); }else{ _gatemode = OPT::mode; renew_subckt(model, NULL/*&(c->_params)*/); subckt()->expand(); } }catch (Exception_Cant_Find&) { error(((!_sim->is_first_expand()) ? (bDEBUG) : (bWARNING)), long_label() + ": can't find subckt: " + subckt_name + ", forcing digital\n"); } assert(!is_constant()); /* is a BUG */ } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::tr_iwant_matrix() { if (subckt()) { subckt()->tr_iwant_matrix(); }else{ } tr_iwant_matrix_passive(); } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::tr_begin() { ELEMENT::tr_begin(); if (!subckt()) { _gatemode = moDIGITAL; _n[OUTNODE]->set_mode(_gatemode); _oldgatemode = _gatemode; }else{ _gatemode = (OPT::mode==moMIXED) ? moANALOG : OPT::mode; _n[OUTNODE]->set_mode(_gatemode); _oldgatemode = _gatemode; subckt()->tr_begin(); } } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::tr_restore() {untested(); ELEMENT::tr_restore(); if (!subckt()) {untested(); _gatemode = moDIGITAL; }else{untested(); _gatemode = (OPT::mode==moMIXED) ? moANALOG : OPT::mode; subckt()->tr_restore(); } } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::dc_advance() { ELEMENT::dc_advance(); if (_gatemode != _oldgatemode) {untested(); tr_unload(); _n[OUTNODE]->set_mode(_gatemode); _oldgatemode = _gatemode; }else{ } switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moANALOG: assert(subckt()); subckt()->dc_advance(); break; case moDIGITAL: if (_n[OUTNODE]->in_transit()) { //q_eval(); evalq is not used for DC _n[OUTNODE]->propagate(); }else{ } break; } } /*--------------------------------------------------------------------------*/ /* tr_advance: the first to run on a new time step. * It sets up preconditions for the new time. */ void DEV_LOGIC::tr_advance() { ELEMENT::tr_advance(); if (_gatemode != _oldgatemode) { tr_unload(); _n[OUTNODE]->set_mode(_gatemode); _oldgatemode = _gatemode; }else{ } switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moANALOG: assert(subckt()); subckt()->tr_advance(); break; case moDIGITAL: if (_n[OUTNODE]->in_transit()) { q_eval(); if (_sim->_time0 >= _n[OUTNODE]->final_time()) { _n[OUTNODE]->propagate(); }else{untested(); } }else{ } break; } } void DEV_LOGIC::tr_regress() {itested(); ELEMENT::tr_regress(); if (_gatemode != _oldgatemode) {itested(); tr_unload(); _n[OUTNODE]->set_mode(_gatemode); _oldgatemode = _gatemode; }else{itested(); } switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moANALOG: itested(); assert(subckt()); subckt()->tr_regress(); break; case moDIGITAL: itested(); if (_n[OUTNODE]->in_transit()) {itested(); q_eval(); if (_sim->_time0 >= _n[OUTNODE]->final_time()) {itested(); _n[OUTNODE]->propagate(); }else{itested(); } }else{itested(); } break; } } /*--------------------------------------------------------------------------*/ /* tr_needs_eval * in digital mode ... DC always returns true, to queue it. * tran always returns false, already queued by tr_advance if needed */ bool DEV_LOGIC::tr_needs_eval()const { switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moDIGITAL: //assert(!is_q_for_eval()); if (_sim->analysis_is_restore()) {untested(); }else if (_sim->analysis_is_static()) { }else{ } return (_sim->analysis_is_static() || _sim->analysis_is_restore()); case moANALOG: untested(); assert(!is_q_for_eval()); assert(subckt()); return subckt()->tr_needs_eval(); } unreachable(); return false; } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::tr_queue_eval() { switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moDIGITAL: ELEMENT::tr_queue_eval(); break; case moANALOG: assert(subckt()); subckt()->tr_queue_eval(); break; } } /*--------------------------------------------------------------------------*/ bool DEV_LOGIC::tr_eval_digital() { assert(_gatemode == moDIGITAL); if (_sim->analysis_is_restore()) {untested(); }else if (_sim->analysis_is_static()) { }else{ } if (_sim->analysis_is_static() || _sim->analysis_is_restore()) { tr_accept(); }else{ assert(_sim->analysis_is_tran_dynamic()); } const COMMON_LOGIC* c = prechecked_cast(common()); assert(c); const MODEL_LOGIC* m = prechecked_cast(c->model()); assert(m); _y[0].x = 0.; _y[0].f1 = _n[OUTNODE]->to_analog(m); _y[0].f0 = 0.; _m0.x = 0.; _m0.c1 = 1./m->rs; _m0.c0 = _y[0].f1 / -m->rs; set_converged(conv_check()); store_values(); q_load(); return converged(); } /*--------------------------------------------------------------------------*/ bool DEV_LOGIC::do_tr() { switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moDIGITAL: set_converged(tr_eval_digital()); break; case moANALOG: assert(subckt()); set_converged(subckt()->do_tr()); break; } return converged(); } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::tr_load() { switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moDIGITAL: tr_load_passive(); break; case moANALOG: assert(subckt()); subckt()->tr_load(); break; } } /*--------------------------------------------------------------------------*/ TIME_PAIR DEV_LOGIC::tr_review() { // not calling ELEMENT::tr_review(); q_accept(); //digital mode queues events explicitly in tr_accept switch (_gatemode) { case moUNKNOWN: unreachable(); break; case moMIXED: unreachable(); break; case moDIGITAL: _time_by.reset(); break; case moANALOG: assert(subckt()); _time_by = subckt()->tr_review(); break; } return _time_by; } /*--------------------------------------------------------------------------*/ /* tr_accept: This runs after everything has passed "review". * It sets up and queues transitions, and sometimes determines logic states. */ void DEV_LOGIC::tr_accept() { assert(_gatemode == moDIGITAL || _gatemode == moANALOG); const COMMON_LOGIC* c = prechecked_cast(common()); assert(c); const MODEL_LOGIC* m = prechecked_cast(c->model()); assert(m); /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ /* Check quality and get node info to local array. */ /* side effect --- generate digital values for analog nodes */ assert(PORTS_PER_GATE == max_nodes()); { _n[OUTNODE]->to_logic(m); _quality = _n[OUTNODE]->quality(); /* the worst quality on this device */ _failuremode = _n[OUTNODE]->failure_mode(); /* what is wrong with it? */ _lastchangenode = OUTNODE; /* which node changed most recently */ int lastchangeiter=_n[OUTNODE]->d_iter();/* iteration # when it changed */ trace0(long_label().c_str()); trace2(_n[OUTNODE]->failure_mode().c_str(), OUTNODE, _n[OUTNODE]->quality()); for (int ii = BEGIN_IN; ii < net_nodes(); ++ii) { _n[ii]->to_logic(m); if (_n[ii]->quality() < _quality) { _quality = _n[ii]->quality(); _failuremode = _n[ii]->failure_mode(); }else{ } if (_n[ii]->d_iter() >= lastchangeiter) { lastchangeiter = _n[ii]->d_iter(); _lastchangenode = ii; }else{ } trace2(_n[ii]->failure_mode().c_str(), ii, _n[ii]->quality()); } /* If _lastchangenode == OUTNODE, no new changes, bypass may be ok. * Otherwise, an input changed. Need to evaluate. * If all quality are good, can evaluate as digital. * Otherwise need to evaluate as analog. */ trace3(_failuremode.c_str(), _lastchangenode, lastchangeiter, _quality); } /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ if (want_analog()) { if (_gatemode == moDIGITAL) {untested(); error(bTRACE, "%s:%u:%g switch to analog, %s\n", long_label().c_str(), _sim->iteration_tag(), _sim->_time0, _failuremode.c_str()); _oldgatemode = _gatemode; _gatemode = moANALOG; }else{ } assert(_gatemode == moANALOG); }else{ assert(want_digital()); if (_gatemode == moANALOG) { error(bTRACE, "%s:%u:%g switch to digital\n", long_label().c_str(), _sim->iteration_tag(), _sim->_time0); _oldgatemode = _gatemode; _gatemode = moDIGITAL; }else{ } assert(_gatemode == moDIGITAL); if (_sim->analysis_is_restore()) {untested(); }else if (_sim->analysis_is_static()) { }else{ } if (!_sim->_bypass_ok || _lastchangenode != OUTNODE || _sim->analysis_is_static() || _sim->analysis_is_restore()) { LOGICVAL future_state = c->logic_eval(&_n[BEGIN_IN]); // ^^^^^^^^^^ if ((_n[OUTNODE]->is_unknown()) && (_sim->analysis_is_static() || _sim->analysis_is_restore())) { _n[OUTNODE]->force_initial_value(future_state); /* This happens when initial DC is digital. * Answers could be wrong if order in netlist is reversed */ }else if (future_state != _n[OUTNODE]->lv()) { assert(future_state != lvUNKNOWN); switch (future_state) { case lvSTABLE0: /*nothing*/ break; case lvRISING: future_state=lvSTABLE0; break; case lvFALLING: future_state=lvSTABLE1; break; case lvSTABLE1: /*nothing*/ break; case lvUNKNOWN: unreachable(); break; } /* This handling of rising and falling may seem backwards. * These states occur when the value has been contaminated * by another pending action. The "old" value is the * value without this contamination. * This code is planned for replacement as part of VHDL/Verilog * conversion, so the kluge stays in for now. */ assert(future_state.lv_old() == future_state.lv_future()); if (_n[OUTNODE]->lv() == lvUNKNOWN || future_state.lv_future() != _n[OUTNODE]->lv_future()) { _n[OUTNODE]->set_event(m->delay, future_state); _sim->new_event(_n[OUTNODE]->final_time()); //assert(future_state == _n[OUTNODE].lv_future()); if (_lastchangenode == OUTNODE) { unreachable(); error(bDANGER, "%s:%u:%g non-event state change\n", long_label().c_str(), _sim->iteration_tag(), _sim->_time0); }else{ } }else{ } }else{ } }else{ } } } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::tr_unload() { if (subckt()) { subckt()->tr_unload(); }else{untested(); } tr_unload_passive(); } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::ac_iwant_matrix() { if (subckt()) { subckt()->ac_iwant_matrix(); }else{ } } /*--------------------------------------------------------------------------*/ void DEV_LOGIC::ac_begin() {untested(); if (subckt()) {untested(); subckt()->ac_begin(); }else{untested(); error(bWARNING, long_label() + ": no logic in AC analysis\n"); } } /*--------------------------------------------------------------------------*/ double DEV_LOGIC::tr_probe_num(const std::string& what)const { return _n[OUTNODE]->tr_probe_num(what); } /*--------------------------------------------------------------------------*/ XPROBE DEV_LOGIC::ac_probe_ext(const std::string& what)const {untested(); return _n[OUTNODE]->ac_probe_ext(what); } /*--------------------------------------------------------------------------*/ bool DEV_LOGIC::want_analog()const { return subckt() && ((OPT::mode == moANALOG) || (OPT::mode == moMIXED && _quality != qGOOD)); } /*--------------------------------------------------------------------------*/ bool DEV_LOGIC::want_digital()const { return !subckt() || ((OPT::mode == moDIGITAL) || (OPT::mode == moMIXED && _quality == qGOOD)); } /*--------------------------------------------------------------------------*/ bool COMMON_LOGIC::operator==(const COMMON_COMPONENT& x)const { const COMMON_LOGIC* p = dynamic_cast(&x); bool rv = p && incount == p->incount && COMMON_COMPONENT::operator==(x); if (rv) { }else{ } return rv; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/d_logicmod.cc000066400000000000000000000124561316501211100142320ustar00rootroot00000000000000/*$Id: d_logicmod.cc,v 26.127 2009/11/09 16:06:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * logic model and device. * netlist syntax: * device: mxxxx vdd out in1 in2 ... family gatetype * model: .model mname LOGIC */ //testing=script 2006.07.17 #include "d_logic.h" /*--------------------------------------------------------------------------*/ MODEL_LOGIC::MODEL_LOGIC(const DEV_LOGIC* p) :MODEL_CARD(p), delay (1e-9), vmax (5.), vmin (0.), unknown((vmax+vmin)/2), rise (delay / 2), fall (delay / 2), rs (100.), rw (1e9), th1 (.75), th0 (.25), mr (5.), mf (5.), over (.1), range (vmax - vmin) { ++_count; } /*--------------------------------------------------------------------------*/ MODEL_LOGIC::MODEL_LOGIC(const MODEL_LOGIC& p) :MODEL_CARD(p), delay (p.delay), vmax (p.vmax), vmin (p.vmin), unknown(p.unknown), rise (p.rise), fall (p.fall), rs (p.rs), rw (p.rw), th1 (p.th1), th0 (p.th0), mr (p.mr), mf (p.mf), over (p.over), range (p.range) { ++_count; } /*--------------------------------------------------------------------------*/ void MODEL_LOGIC::precalc_first() { MODEL_CARD::precalc_first(); const CARD_LIST* par_scope = scope(); assert(par_scope); delay.e_val(1e-9, par_scope); vmax.e_val(5., par_scope); vmin.e_val(0., par_scope); unknown.e_val((vmax+vmin)/2, par_scope); rise.e_val(delay / 2, par_scope); fall.e_val(delay / 2, par_scope); rs.e_val(100., par_scope); rw.e_val(1e9, par_scope); th1.e_val(.75, par_scope); th0.e_val(.25, par_scope); mr.e_val(5., par_scope); mf.e_val(5., par_scope); over.e_val(.1, par_scope); range = vmax - vmin; } /*--------------------------------------------------------------------------*/ void MODEL_LOGIC::set_param_by_index(int i, std::string& value, int offset) { switch (MODEL_LOGIC::param_count() - 1 - i) { case 0: delay = value; break; case 1: vmax = value; break; case 2: vmin = value; break; case 3: unknown = value; break; case 4: rise = value; break; case 5: fall = value; break; case 6: rs = value; break; case 7: rw = value; break; case 8: th1 = value; break; case 9: th0 = value; break; case 10: mr = value; break; case 11: mf = value; break; case 12: over = value; break; default: MODEL_CARD::set_param_by_index(i, value, offset); break; } } /*--------------------------------------------------------------------------*/ bool MODEL_LOGIC::param_is_printable(int i)const { switch (MODEL_LOGIC::param_count() - 1 - i) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: return true; default: return MODEL_CARD::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_LOGIC::param_name(int i)const { switch (MODEL_LOGIC::param_count() - 1 - i) { case 0: return "delay"; case 1: return "vmax"; case 2: return "vmin"; case 3: return "unknown"; case 4: return "rise"; case 5: return "fall"; case 6: return "rs"; case 7: return "rw"; case 8: return "thh"; case 9: return "thl"; case 10: return "mr"; case 11: return "mf"; case 12: return "over"; default: return MODEL_CARD::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_LOGIC::param_name(int i, int j)const { if (j == 0) { return param_name(i); }else if (i >= MODEL_CARD::param_count()) { return ""; }else{ return MODEL_CARD::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string MODEL_LOGIC::param_value(int i)const { switch (MODEL_LOGIC::param_count() - 1 - i) { case 0: return delay.string(); case 1: return vmax.string(); case 2: return vmin.string(); case 3: return unknown.string(); case 4: return rise.string(); case 5: return fall.string(); case 6: return rs.string(); case 7: return rw.string(); case 8: return th1.string(); case 9: return th0.string(); case 10: return mr.string(); case 11: return mf.string(); case 12: return over.string(); default: return MODEL_CARD::param_value(i); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/d_subckt.cc000066400000000000000000000220201316501211100137140ustar00rootroot00000000000000/*$Id: d_subckt.cc 2016/09/17 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * subcircuit stuff * base class for other elements using internal subckts * netlist syntax: * device: Xxxxx * model: .subckt * (device cards) * .ends * storage note ... * the .subckt always has a comment at the hook point, so a for loop works * the expansion (attact to the X) has all comments removed * - need to process the entire ring - for doesn't work */ //testing=script 2016.09.16 #include "e_node.h" #include "globals.h" #include "e_paramlist.h" #include "e_subckt.h" /*--------------------------------------------------------------------------*/ namespace{ /*--------------------------------------------------------------------------*/ static COMMON_PARAMLIST Default_SUBCKT(CC_STATIC); #define PORTS_PER_SUBCKT 100 //BUG// fixed limit on number of ports /*--------------------------------------------------------------------------*/ class DEV_SUBCKT : public BASE_SUBCKT { friend class DEV_SUBCKT_PROTO; private: explicit DEV_SUBCKT(const DEV_SUBCKT&); public: explicit DEV_SUBCKT(); ~DEV_SUBCKT() {--_count;} CARD* clone()const {return new DEV_SUBCKT(*this);} private: // override virtual char id_letter()const {untested();return 'X';} bool print_type_in_spice()const {return true;} std::string value_name()const {return "#";} int max_nodes()const {return PORTS_PER_SUBCKT;} int min_nodes()const {return 0;} int matrix_nodes()const {return 0;} int net_nodes()const {return _net_nodes;} void precalc_first(); bool makes_own_scope()const {return false;} void expand(); private: void precalc_last(); double tr_probe_num(const std::string&)const; int param_count_dont_print()const {return common()->COMMON_COMPONENT::param_count();} std::string port_name(int i)const; public: static int count() {untested();return _count;} protected: const BASE_SUBCKT* _parent; private: node_t _nodes[PORTS_PER_SUBCKT]; static int _count; } p1; int DEV_SUBCKT::_count = -1; /*--------------------------------------------------------------------------*/ class DEV_SUBCKT_PROTO : public DEV_SUBCKT { private: explicit DEV_SUBCKT_PROTO(const DEV_SUBCKT_PROTO&p); public: explicit DEV_SUBCKT_PROTO(); ~DEV_SUBCKT_PROTO(){} public: // override virtual char id_letter()const {untested();return '\0';} CARD* clone_instance()const; bool print_type_in_spice()const {unreachable(); return false;} std::string value_name()const {untested();incomplete(); return "";} std::string dev_type()const {untested(); return "";} int max_nodes()const {return PORTS_PER_SUBCKT;} int min_nodes()const {return 0;} int matrix_nodes()const {untested();return 0;} int net_nodes()const {return _net_nodes;} CARD* clone()const {return new DEV_SUBCKT_PROTO(*this);} bool is_device()const {return false;} bool makes_own_scope()const {return true;} CARD_LIST* scope() {untested();return subckt();} const CARD_LIST* scope()const {return subckt();} private: // no-ops for prototype void precalc_first(){} void expand(){} void precalc_last(){} void map_nodes(){} void tr_begin(){} void tr_load(){} TIME_PAIR tr_review(){ return TIME_PAIR(NEVER, NEVER);} void tr_accept(){} void tr_advance(){} void tr_restore(){} void tr_regress(){} void dc_advance(){} void ac_begin(){} void do_ac(){} void ac_load(){} bool do_tr(){ return true;} bool tr_needs_eval()const{untested(); return false;} void tr_queue_eval(){} std::string port_name(int)const {untested();return "";} } pp; DISPATCHER::INSTALL d1(&device_dispatcher, "X|subckt", &pp); /*--------------------------------------------------------------------------*/ DEV_SUBCKT_PROTO::DEV_SUBCKT_PROTO(const DEV_SUBCKT_PROTO& p) :DEV_SUBCKT(p) { new_subckt(); } /*--------------------------------------------------------------------------*/ DEV_SUBCKT_PROTO::DEV_SUBCKT_PROTO() :DEV_SUBCKT() { new_subckt(); } /*--------------------------------------------------------------------------*/ CARD* DEV_SUBCKT_PROTO::clone_instance()const { DEV_SUBCKT* new_instance = dynamic_cast(p1.clone()); assert(!new_instance->subckt()); if (this == &pp){ // cloning from static, empty model // look out for _parent in expand }else{ new_instance->_parent = this; } assert(new_instance->is_device()); return new_instance; } /*--------------------------------------------------------------------------*/ DEV_SUBCKT::DEV_SUBCKT() :BASE_SUBCKT(), _parent(NULL) { attach_common(&Default_SUBCKT); _n = _nodes; ++_count; } /*--------------------------------------------------------------------------*/ DEV_SUBCKT::DEV_SUBCKT(const DEV_SUBCKT& p) :BASE_SUBCKT(p), _parent(p._parent) { //strcpy(modelname, p.modelname); in common for (int ii = 0; ii < max_nodes(); ++ii) { _nodes[ii] = p._nodes[ii]; } _n = _nodes; assert(!subckt()); ++_count; } /*--------------------------------------------------------------------------*/ std::string DEV_SUBCKT::port_name(int i)const { if (const DEV_SUBCKT* p=dynamic_cast(_parent)) { if (inet_nodes()){ return p->port_value(i); }else{untested(); return ""; } }else if(_parent){untested(); untested(); // reachable? return ""; }else{untested(); return ""; } } /*--------------------------------------------------------------------------*/ void DEV_SUBCKT::expand() { BASE_SUBCKT::expand(); COMMON_PARAMLIST* c = prechecked_cast(mutable_common()); assert(c); if (!_parent) { // get here when instanciating X, then set modelname assert(c->modelname()!=""); const CARD* model = find_looking_out(c->modelname()); if(!dynamic_cast(model)) { throw Exception_Type_Mismatch(long_label(), c->modelname(), "subckt"); }else{ _parent = prechecked_cast(model); } }else{ // possible after clone_instance. assert(find_looking_out(c->modelname()) == _parent); } assert(_parent->subckt()); assert(_parent->subckt()->params()); PARAM_LIST* pl = const_cast(_parent->subckt()->params()); assert(pl); c->_params.set_try_again(pl); renew_subckt(_parent, &(c->_params)); subckt()->expand(); } /*--------------------------------------------------------------------------*/ void DEV_SUBCKT::precalc_first() { BASE_SUBCKT::precalc_first(); if (subckt()) { COMMON_PARAMLIST* c = prechecked_cast(mutable_common()); assert(c); subckt()->attach_params(&(c->_params), scope()); subckt()->precalc_first(); }else{ } assert(!is_constant()); /* because I have more work to do */ } /*--------------------------------------------------------------------------*/ void DEV_SUBCKT::precalc_last() { BASE_SUBCKT::precalc_last(); COMMON_PARAMLIST* c = prechecked_cast(mutable_common()); assert(c); subckt()->attach_params(&(c->_params), scope()); subckt()->precalc_last(); assert(!is_constant()); /* because I have more work to do */ } /*--------------------------------------------------------------------------*/ double DEV_SUBCKT::tr_probe_num(const std::string& x)const {untested(); if (Umatch(x, "p ")) {untested(); double power = 0.; assert(subckt()); for (CARD_LIST::const_iterator ci = subckt()->begin(); ci != subckt()->end(); ++ci) {untested(); power += CARD::probe(*ci,"P"); } return power; }else if (Umatch(x, "pd ")) {untested(); double power = 0.; assert(subckt()); for (CARD_LIST::const_iterator ci = subckt()->begin(); ci != subckt()->end(); ++ci) {untested(); power += CARD::probe(*ci,"PD"); } return power; }else if (Umatch(x, "ps ")) {untested(); double power = 0.; assert(subckt()); for (CARD_LIST::const_iterator ci = subckt()->begin(); ci != subckt()->end(); ++ci) {untested(); power += CARD::probe(*ci,"PS"); } return power; }else{untested(); return COMPONENT::tr_probe_num(x); } /*NOTREACHED*/ } } // namespace /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_base.cc000066400000000000000000000127241316501211100133460ustar00rootroot00000000000000/*$Id: e_base.cc 2015/02/05 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Base class for "cards" in the circuit description file */ //testing=script 2014.07.04 #include "ap.h" #include "u_sim_data.h" #include "m_wave.h" #include "u_prblst.h" #include "u_xprobe.h" #include "e_base.h" /*--------------------------------------------------------------------------*/ static char fix_case(char c) { return ((OPT::case_insensitive) ? (static_cast(tolower(c))) : (c)); } /*--------------------------------------------------------------------------*/ double CKT_BASE::tr_probe_num(const std::string&)const {return NOT_VALID;} XPROBE CKT_BASE::ac_probe_ext(const std::string&)const {return XPROBE(NOT_VALID, mtNONE);} /*--------------------------------------------------------------------------*/ SIM_DATA* CKT_BASE::_sim = NULL; PROBE_LISTS* CKT_BASE::_probe_lists = NULL; /*--------------------------------------------------------------------------*/ CKT_BASE::~CKT_BASE() { trace1("~CKT_BASE", _probes); if (_probes == 0) { }else if (!_probe_lists) {untested(); }else if (!_sim) {untested(); }else{ _probe_lists->purge(this); } trace1("", _probes); assert(_probes==0); } /*--------------------------------------------------------------------------*/ const std::string CKT_BASE::long_label()const { //incomplete(); std::string buffer(short_label()); //for (const CKT_BASE* brh = owner(); exists(brh); brh = brh->owner()) {untested(); // buffer += '.' + brh->short_label(); //} return buffer; } /*--------------------------------------------------------------------------*/ bool CKT_BASE::help(CS& Cmd, OMSTREAM& Out)const { if (help_text() != "") { unsigned here = Cmd.cursor(); std::string keyword; Cmd >> keyword; CS ht(CS::_STRING, help_text()); if (keyword == "") { Out << ht.get_to("@@"); }else if (ht.scan("@@" + keyword + ' ')) { Out << ht.get_to("@@"); }else if (keyword == "?") { while (ht.scan("@@")) { Out << " " << ht.get_to("\n") << '\n'; } }else{ Cmd.warn(bWARNING, here, "no help on subtopic " + Cmd.substr(here)); } return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ double CKT_BASE::probe_num(const std::string& what)const { double x; if (_sim->analysis_is_ac()) { x = ac_probe_num(what); }else{ x = tr_probe_num(what); } return (std::abs(x)>=1) ? x : floor(x/OPT::floor + .5) * OPT::floor; } /*--------------------------------------------------------------------------*/ double CKT_BASE::ac_probe_num(const std::string& what)const { size_t length = what.length(); mod_t modifier = mtNONE; bool want_db = false; char parameter[BUFLEN+1]; strcpy(parameter, what.c_str()); if (length > 2 && Umatch(¶meter[length-2], "db ")) { want_db = true; length -= 2; } if (length > 1) { // selects modifier based on last letter of parameter switch (fix_case(parameter[length-1])) { case 'm': modifier = mtMAG; length--; break; case 'p': modifier = mtPHASE; length--; break; case 'r': modifier = mtREAL; length--; break; case 'i': modifier = mtIMAG; length--; break; default: modifier = mtNONE; break; } } parameter[length] = '\0'; // chop // "p" is "what" with the modifier chopped off. // Try that first. XPROBE xp = ac_probe_ext(parameter); // If we don't find it, try again with the full string. if (!xp.exists()) { xp = ac_probe_ext(what); if (!xp.exists()) { // Still didn't find anything. Print "??". }else{untested(); // The second attempt worked. } } return xp(modifier, want_db); } /*--------------------------------------------------------------------------*/ /*static*/ double CKT_BASE::probe(const CKT_BASE *This, const std::string& what) { if (This) { return This->probe_num(what); }else{ /* return 0 if doesn't exist */ return 0.0; /* happens when optimized models */ } /* don't have all parts */ } /*--------------------------------------------------------------------------*/ /*static*/ WAVE* CKT_BASE::find_wave(const std::string& probe_name) { int ii = 0; for (PROBELIST::const_iterator p = _probe_lists->store[_sim->_mode].begin(); p != _probe_lists->store[_sim->_mode].end(); ++p) { if (wmatch(p->label(), probe_name)) { return &(_sim->_waves[ii]); }else{ } ++ii; } return NULL; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_card.cc000066400000000000000000000177071316501211100133530ustar00rootroot00000000000000/*$Id: e_card.cc 2016/09/17 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Base class for "cards" in the circuit description file */ //testing=script 2014.07.04 #include "u_time_pair.h" #include "e_cardlist.h" #include "e_node.h" #include "e_card.h" /*--------------------------------------------------------------------------*/ const int POOLSIZE = 4; /*--------------------------------------------------------------------------*/ CARD::CARD() :CKT_BASE(), _evaliter(-100), _subckt(0), _owner(0), _constant(false), _n(0), _net_nodes(0) { } /*--------------------------------------------------------------------------*/ CARD::CARD(const CARD& p) :CKT_BASE(p), _evaliter(-100), _subckt(0), //BUG// isn't this supposed to copy???? _owner(0), _constant(p._constant), _n(0), _net_nodes(p._net_nodes) { } /*--------------------------------------------------------------------------*/ CARD::~CARD() { delete _subckt; } /*--------------------------------------------------------------------------*/ const std::string CARD::long_label()const { std::string buffer(short_label()); for (const CARD* brh = owner(); brh; brh = brh->owner()) { buffer = brh->short_label() + '.' + buffer; } return buffer; } /*--------------------------------------------------------------------------*/ /* connects_to: does this part connect to this node? * input: a node * returns: how many times this part connects to it. * does not traverse subcircuits */ int CARD::connects_to(const node_t& node)const {untested(); int count = 0; if (is_device()) {untested(); for (int ii = 0; ii < net_nodes(); ++ii) {untested(); if (node.n_() == _n[ii].n_()) {untested(); ++count; }else{untested(); } } }else{untested(); } return count; } /*--------------------------------------------------------------------------*/ CARD_LIST* CARD::scope() { if (owner()) { return owner()->subckt(); // normal element, owner determines scope }else{ return &(CARD_LIST::card_list); // root circuit } } /*--------------------------------------------------------------------------*/ const CARD_LIST* CARD::scope()const { if (owner()) { return owner()->subckt(); // normal element, owner determines scope }else{ return &(CARD_LIST::card_list); // root circuit } } /*--------------------------------------------------------------------------*/ /* find_in_my_scope: find in same scope as myself * whatever is found will have the same owner as me. * capable of finding me. * throws exception if can't find. */ CARD* CARD::find_in_my_scope(const std::string& name) { assert(name != ""); assert(scope()); CARD_LIST::iterator i = scope()->find_(name); if (i == scope()->end()) { throw Exception_Cant_Find(long_label(), name, ((owner()) ? owner()->long_label() : "(root)")); }else{ } return *i; } /*--------------------------------------------------------------------------*/ /* find_in_my_scope: find in same scope as myself * whatever is found will have the same owner as me. * capable of finding me. * throws exception if can't find. */ const CARD* CARD::find_in_my_scope(const std::string& name)const { assert(name != ""); assert(scope()); CARD_LIST::const_iterator i = scope()->find_(name); if (i == scope()->end()) { throw Exception_Cant_Find(long_label(), name, ((owner()) ? owner()->long_label() : "(root)")); }else{ } return *i; } /*--------------------------------------------------------------------------*/ /* find_in_parent_scope: find in parent's scope * parent is what my scope is a copy of. * capable of finding my parent, who should be just like me. * If there is no parent (I'm an original), use my scope. * throws exception if can't find. */ const CARD* CARD::find_in_parent_scope(const std::string& name)const { assert(name != ""); const CARD_LIST* p_scope = (scope()->parent()) ? scope()->parent() : scope(); CARD_LIST::const_iterator i = p_scope->find_(name); if (i == p_scope->end()) { throw Exception_Cant_Find(long_label(), name); }else{ } return *i; } /*--------------------------------------------------------------------------*/ /* find_looking_out: find in my or enclosing scope * capable of finding me, or anything back to root. * throws exception if can't find. */ const CARD* CARD::find_looking_out(const std::string& name)const { try { return find_in_parent_scope(name); }catch (Exception_Cant_Find&) { if (owner()) { return owner()->find_looking_out(name); }else if (makes_own_scope()) { // probably a subckt or "module" CARD_LIST::const_iterator i = CARD_LIST::card_list.find_(name); if (i != CARD_LIST::card_list.end()) { return *i; }else{ throw; } }else{ throw; } } } /*--------------------------------------------------------------------------*/ TIME_PAIR CARD::tr_review() { return TIME_PAIR(NEVER,NEVER); } /*--------------------------------------------------------------------------*/ void CARD::new_subckt() { assert(!_subckt); delete _subckt; _subckt = NULL; _subckt = new CARD_LIST; } /*--------------------------------------------------------------------------*/ void CARD::new_subckt(const CARD* Model, PARAM_LIST* Params) { delete _subckt; _subckt = NULL; _subckt = new CARD_LIST(Model, this, scope(), Params); } /*--------------------------------------------------------------------------*/ void CARD::renew_subckt(const CARD* Model, PARAM_LIST* Params) { if (_sim->is_first_expand()) { new_subckt(Model, Params); }else{untested(); assert(subckt()); subckt()->attach_params(Params, scope()); } } /*--------------------------------------------------------------------------*/ node_t& CARD::n_(int i)const { return _n[i]; } /*--------------------------------------------------------------------------*/ void CARD::set_param_by_name(std::string Name, std::string Value) { //BUG// ugly linear search for (int i = param_count() - 1; i >= 0; --i) { for (int j = 0; param_name(i,j) != ""; ++j) { // multiple names if (Umatch(Name, param_name(i,j) + ' ')) { set_param_by_index(i, Value, 0/*offset*/); return; //success }else{ //keep looking } } } throw Exception_No_Match(Name); } /*--------------------------------------------------------------------------*/ /* set_dev_type: Attempt to change the type of an existing device. * Usually, it just throws an exception, unless there is no change. * Practical use is to override, so you can set things like NPN vs. PNP. */ void CARD::set_dev_type(const std::string& New_Type) { if (!Umatch(New_Type, dev_type() + ' ')) { //throw Exception_Cant_Set_Type(dev_type(), New_Type); }else{ // it matches -- ok. } } /*--------------------------------------------------------------------------*/ bool CARD::evaluated()const { if (_evaliter == _sim->iteration_tag()) { return true; }else{ _evaliter = _sim->iteration_tag(); return false; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_cardlist.cc000066400000000000000000000351131316501211100142360ustar00rootroot00000000000000/*$Id: e_cardlist.cc 2016/09/17 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Base class for "cards" in the circuit description file * This file contains functions that process a list of cards */ //testing=script 2006.07.10 #include "u_time_pair.h" #include "e_node.h" #include "u_nodemap.h" #include "e_model.h" /*--------------------------------------------------------------------------*/ #define trace_func_comp() trace0((__func__ + (":" + (**ci).long_label())).c_str()) /*--------------------------------------------------------------------------*/ CARD_LIST::CARD_LIST() :_parent(NULL), _nm(new NODE_MAP), _params(NULL) { } /*--------------------------------------------------------------------------*/ CARD_LIST::CARD_LIST(const CARD* model, CARD* owner, const CARD_LIST* scope, PARAM_LIST* p) :_parent(NULL), _nm(new NODE_MAP), _params(NULL) { assert(model); assert(model->subckt()); assert(owner); assert(!p || scope); attach_params(p, scope); shallow_copy(model->subckt()); set_owner(owner); map_subckt_nodes(model, owner); } /*--------------------------------------------------------------------------*/ CARD_LIST::~CARD_LIST() { erase_all(); delete _nm; if (!_parent) { delete _params; }else{ } } /*--------------------------------------------------------------------------*/ PARAM_LIST* CARD_LIST::params() { if (!_params) { assert(!_parent); _params = new PARAM_LIST; }else{ } return _params; } /*--------------------------------------------------------------------------*/ PARAM_LIST* CARD_LIST::params()const { if (_params) { return _params; }else{ //BUG//const static PARAM_LIST empty_params; return &empty_params; } } /*--------------------------------------------------------------------------*/ CARD_LIST::iterator CARD_LIST::find_again(const std::string& short_name, CARD_LIST::iterator Begin) { trace0(("CARD_LIST::find_ name=" + short_name).c_str()); return notstd::find_ptr(Begin, end(), short_name); } /*--------------------------------------------------------------------------*/ CARD_LIST::const_iterator CARD_LIST::find_again(const std::string& short_name, CARD_LIST::const_iterator Begin)const { return notstd::find_ptr(Begin, end(), short_name); } /*--------------------------------------------------------------------------*/ CARD_LIST& CARD_LIST::erase(iterator ci) { assert(ci != end()); delete *ci; _cl.erase(ci); return *this; } /*--------------------------------------------------------------------------*/ CARD_LIST& CARD_LIST::erase(CARD* c) { delete c; _cl.remove(c); return *this; } /*--------------------------------------------------------------------------*/ /* erase_all: empty the list, destroy contents * Beware: something else may be pointing to them, leaving dangling ptr. */ CARD_LIST& CARD_LIST::erase_all() { while (!_cl.empty()) { delete _cl.back(); _cl.pop_back(); } return *this; } /*--------------------------------------------------------------------------*/ CARD_LIST& CARD_LIST::set_owner(CARD* owner) { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).set_owner(owner); } return *this; } /*--------------------------------------------------------------------------*/ /* set_slave: set a whole circuit to "slave" mode. * Only useful for subckts. */ CARD_LIST& CARD_LIST::set_slave() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).set_slave(); } return *this; } /*--------------------------------------------------------------------------*/ /* expand: expand (flatten) a list of components (subckts) * Scan component list. Expand each subckt: create actual elements * for flat representation to use for simulation. */ CARD_LIST& CARD_LIST::expand() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).precalc_first(); } for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).expand_first(); } for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).expand(); } for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).expand_last(); } return *this; } /*--------------------------------------------------------------------------*/ CARD_LIST& CARD_LIST::precalc_first() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).precalc_first(); } return *this; } /*--------------------------------------------------------------------------*/ CARD_LIST& CARD_LIST::precalc_last() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).precalc_last(); } return *this; } /*--------------------------------------------------------------------------*/ /* map_nodes: create mapping between user node names and internal numbers */ CARD_LIST& CARD_LIST::map_nodes() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).map_nodes(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_iwant_matrix: allocate solution matrix * also sets some flags for mixed-mode */ CARD_LIST& CARD_LIST::tr_iwant_matrix() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_iwant_matrix(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_begin: first pass on a new transient simulation (initial DC) */ CARD_LIST& CARD_LIST::tr_begin() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_begin(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_restore: first pass on restarting a transient simulation */ CARD_LIST& CARD_LIST::tr_restore() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_restore(); } return *this; } /*--------------------------------------------------------------------------*/ /* dc_advance: first pass on a new step in a dc sweep */ CARD_LIST& CARD_LIST::dc_advance() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).dc_advance(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_advance: first pass on a new time step */ CARD_LIST& CARD_LIST::tr_advance() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_advance(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_regress: throw away the last result and try again, first pass on redo */ CARD_LIST& CARD_LIST::tr_regress() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_regress(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_needs_eval: determine if anything needs to be evaluated */ bool CARD_LIST::tr_needs_eval()const { for (const_iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); if ((**ci).tr_needs_eval()) { return true; }else{itested(); } } untested(); return false; } /*--------------------------------------------------------------------------*/ /* tr_queue_eval: build evaluator queue */ CARD_LIST& CARD_LIST::tr_queue_eval() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_queue_eval(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_eval: evaluate a list of models * evaluates a list (or sublist), checks convergence, etc. * does not load the matrix * argument is the head of the netlist. * recursively called to evaluate subcircuits */ bool CARD_LIST::do_tr() { bool isconverged = true; if (OPT::bypass) { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); if ((**ci).tr_needs_eval()) { isconverged &= (**ci).do_tr(); }else{ } } }else{ for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); isconverged &= (**ci).do_tr(); } } return isconverged; } /*--------------------------------------------------------------------------*/ /* tr_load: load list of models to the matrix * recursively called to load subcircuits * Called only when either !OPT::traceload or !SIM::inc_mode */ CARD_LIST& CARD_LIST::tr_load() { if (CKT_BASE::_sim->is_inc_mode()) {itested(); assert(!OPT::traceload); for (iterator ci=begin(); ci!=end(); ++ci) {itested(); trace_func_comp(); CARD* brh = *ci; if (!brh->is_constant()) {itested(); brh->tr_load(); }else{itested(); } } }else{ for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); CARD* brh = *ci; brh->tr_load(); } } return *this; } /*--------------------------------------------------------------------------*/ TIME_PAIR CARD_LIST::tr_review() { TIME_PAIR time_by; for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); time_by.min((**ci).tr_review()); } return time_by; } /*--------------------------------------------------------------------------*/ /* tr_accept: final acceptance of a time step, before moving on */ CARD_LIST& CARD_LIST::tr_accept() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_accept(); } return *this; } /*--------------------------------------------------------------------------*/ /* tr_unload: remove a list of models from the matrix * recursively called to unload subcircuits */ CARD_LIST& CARD_LIST::tr_unload() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).tr_unload(); } return *this; } /*--------------------------------------------------------------------------*/ /* ac_iwant_matrix: allocate solution matrix */ CARD_LIST& CARD_LIST::ac_iwant_matrix() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).ac_iwant_matrix(); } return *this; } /*--------------------------------------------------------------------------*/ /* ac_begin: first pass on a new ac simulation */ CARD_LIST& CARD_LIST::ac_begin() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).ac_begin(); } return *this; } /*--------------------------------------------------------------------------*/ CARD_LIST& CARD_LIST::do_ac() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); if (!(**ci).evaluated()) { (**ci).do_ac(); }else{ } } return *this; } /*--------------------------------------------------------------------------*/ /* ac_load: load list of models to the matrix * recursively called to load subcircuits */ CARD_LIST& CARD_LIST::ac_load() { for (iterator ci=begin(); ci!=end(); ++ci) { trace_func_comp(); (**ci).ac_load(); } return *this; } /*--------------------------------------------------------------------------*/ void CARD_LIST::attach_params(PARAM_LIST* p, const CARD_LIST* scope) { if (p) { assert(scope); if (_params) { delete _params; _params = NULL; }else{ } _params = new PARAM_LIST; _params->eval_copy(*p, scope); }else{ } } /*--------------------------------------------------------------------------*/ void CARD_LIST::shallow_copy(const CARD_LIST* p) { assert(p); _parent = p; for (const_iterator ci = p->begin(); ci != p->end(); ++ci) { trace_func_comp(); if ((**ci).is_device() || dynamic_cast(*ci)) { CARD* copy = (**ci).clone(); push_back(copy); }else{ } } } /*--------------------------------------------------------------------------*/ // set up the map of external to expanded node numbers void CARD_LIST::map_subckt_nodes(const CARD* model, const CARD* owner) { assert(model); assert(model->subckt()); assert(model->subckt()->nodes()); assert(owner); //assert(owner->subckt()); //assert(owner->subckt() == this); trace0(model->long_label().c_str()); trace0(owner->long_label().c_str()); int num_nodes_in_subckt = model->subckt()->nodes()->how_many(); int* map = new int[num_nodes_in_subckt+1]; { map[0] = 0; // self test: verify that port node numbering is correct for (int port = 0; port < model->net_nodes(); ++port) { assert(model->n_(port).e_() <= num_nodes_in_subckt); //assert(model->n_(port).e_() == port+1); trace3("ports", port, model->n_(port).e_(), owner->n_(port).t_()); } { // take care of the "port" nodes (external connections) // map them to what the calling circuit wants int i=0; for (i=1; i <= model->net_nodes(); ++i) { map[i] = owner->n_(i-1).t_(); trace3("ports", i, map[i], owner->n_(i-1).t_()); } // get new node numbers, and assign them to the remaining for (assert(i==model->net_nodes() + 1); i <= num_nodes_in_subckt; ++i) { // for each remaining node in card_list map[i] = CKT_BASE::_sim->newnode_subckt(); trace2("internal", i, map[i]); } } } // "map" now contains a translation list, // from subckt local numbers to matrix index numbers // The node list (_nm) in an instance of a subckt does not exist. // Device nodes (type node_t) points to the NODE in the parent. // Mapping is done in node_t. // scan the list, map the nodes for (CARD_LIST::iterator ci = begin(); ci != end(); ++ci) { // for each card in card_list if ((**ci).is_device()) { for (int ii = 0; ii < (**ci).net_nodes(); ++ii) { // for each connection node in card try{ (**ci).n_(ii).map_subckt_node(map, owner); }catch(...){ delete[] map; throw; } } }else{ assert(dynamic_cast(*ci)); } } delete[] map; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_ccsrc.cc000066400000000000000000000060151316501211100135250ustar00rootroot00000000000000/*$Id: e_ccsrc.cc,v 26.124 2009/09/28 22:59:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * current controlled source base */ //testing=script,complete 2006.07.12 #include "e_ccsrc.h" /*--------------------------------------------------------------------------*/ void CCSRC_BASE::expand_last() { ELEMENT::expand_last(); if (_input_label != "") { _input = dynamic_cast(find_in_my_scope(_input_label)); }else{untested(); // _input already set, an internal element. example: mutual L. } if (!_input) {untested(); throw Exception(long_label() + ": " + _input_label + " cannot be used as current probe"); }else if (_input->subckt()) {untested(); throw Exception(long_label() + ": " + _input_label + " has a subckt, cannot be used as current probe"); }else if (_input->has_inode()) {untested(); _n[IN1] = _input->n_(IN1); _n[IN2].set_to_ground(this); }else if (_input->has_iv_probe()) { _n[IN1] = _input->n_(OUT1); _n[IN2] = _input->n_(OUT2); }else{ throw Exception(long_label() + ": " + _input_label + " cannot be used as current probe"); } } /*--------------------------------------------------------------------------*/ void CCSRC_BASE::set_port_by_index(int num, std::string& Value) { if (num == 2) { _input_label = Value; }else{ ELEMENT::set_port_by_index(num, Value); } } /*--------------------------------------------------------------------------*/ bool CCSRC_BASE::node_is_connected(int i)const { if (i == 2) { return _input_label != ""; }else{ return ELEMENT::node_is_connected(i); } } /*--------------------------------------------------------------------------*/ void CCSRC_BASE::set_parameters_cc(const std::string& Label, CARD *Owner, COMMON_COMPONENT *Common, double Value, const node_t& N0, const node_t& N1, ELEMENT* Input) { node_t nodes[] = {N0, N1}; COMPONENT::set_parameters(Label, Owner, Common, Value, 0, 0, 2, nodes); _input = Input; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_compon.cc000066400000000000000000000645301316501211100137310ustar00rootroot00000000000000/*$Id: e_compon.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Base class for elements of a circuit */ //testing=script 2014.07.04 #include "u_lang.h" #include "e_model.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ COMMON_COMPONENT::COMMON_COMPONENT(const COMMON_COMPONENT& p) :CKT_BASE(p), _tnom_c(p._tnom_c), _dtemp(p._dtemp), _temp_c(p._temp_c), _mfactor(p._mfactor), _value(p._value), _modelname(p._modelname), _model(p._model), _attach_count(0) { } /*--------------------------------------------------------------------------*/ COMMON_COMPONENT::COMMON_COMPONENT(int c) :CKT_BASE(), _tnom_c(NOT_INPUT), _dtemp(0), _temp_c(NOT_INPUT), _mfactor(1), _value(0), _modelname(), _model(0), _attach_count(c) { } /*--------------------------------------------------------------------------*/ COMMON_COMPONENT::~COMMON_COMPONENT() { trace1("common,destruct", _attach_count); assert(_attach_count == 0 || _attach_count == CC_STATIC); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::attach_common(COMMON_COMPONENT*c, COMMON_COMPONENT**to) { assert(to); if (c == *to) { // The new and old are the same object. Do nothing. }else if (!c) {untested(); // There is no new common. probably a simple element detach_common(to); }else if (!*to) { // No old one, but have a new one. ++(c->_attach_count); trace1("++1", c->_attach_count); *to = c; }else if (*c != **to) { // They are different, usually by edit. detach_common(to); ++(c->_attach_count); trace1("++2", c->_attach_count); *to = c; }else if (c->_attach_count == 0) { // The new and old are identical. // Use the old one. // The new one is not used anywhere, so throw it away. trace1("delete", c->_attach_count); delete c; }else{untested(); // The new and old are identical. // Use the old one. // The new one is also used somewhere else, so keep it. } } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::detach_common(COMMON_COMPONENT** from) { assert(from); if (*from) { assert((**from)._attach_count > 0); --((**from)._attach_count); trace1("--", (**from)._attach_count); if ((**from)._attach_count == 0) { trace1("delete", (**from)._attach_count); delete *from; }else{ trace1("nodelete", (**from)._attach_count); } *from = NULL; }else{ } } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::attach_model(const COMPONENT* d)const { assert(d); _model = d->find_model(modelname()); assert(_model); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::parse_modelname(CS& cmd) { set_modelname(cmd.ctos(TOKENTERM)); } /*--------------------------------------------------------------------------*/ // called only by COMMON_COMPONENT::parse_obsolete bool COMMON_COMPONENT::parse_param_list(CS& cmd) { unsigned start = cmd.cursor(); unsigned here = cmd.cursor(); do{ parse_params_obsolete_callback(cmd); //BUG//callback }while (cmd.more() && !cmd.stuck(&here)); return cmd.gotit(start); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::parse_common_obsolete_callback(CS& cmd) //used { if (cmd.skip1b('(')) { // start with a paren unsigned start = cmd.cursor(); parse_param_list(cmd); if (cmd.gotit(start)) { // ( params ( .... // named args before num list if (cmd.skip1b('(')) { // ( params ( list ) params ) parse_numlist(cmd); if (!cmd.skip1b(')')) {untested(); cmd.warn(bWARNING, "need )"); }else{ } }else{ // ( params list params ) parse_numlist(cmd); //BUG// } parse_param_list(cmd); if (!cmd.skip1b(')')) {untested(); cmd.warn(bWARNING, "need )"); }else{ } }else{ // no named args before num list // but there's a paren // not sure whether it belongs to all args or to num list if (cmd.skip1b('(')) { // ( ( list ) params ) // two parens parse_numlist(cmd); if (!cmd.skip1b(')')) {untested(); cmd.warn(bWARNING, "need )"); }else{ } parse_param_list(cmd); if (!cmd.skip1b(')')) {untested(); cmd.warn(bWARNING, "need )"); }else{ } }else{ // ( list ... // only one paren parse_numlist(cmd); if (cmd.skip1b(')')) { // ( list ) params // assume it belongs to num list // and named params follow parse_param_list(cmd); }else{ // ( list params ) // assume it belongs to all args parse_param_list(cmd); if (!cmd.skip1b(')')) { cmd.warn(bWARNING, "need )"); }else{ } } } } }else{ // does not start with a paren unsigned start = cmd.cursor(); parse_param_list(cmd); if (cmd.gotit(start)) { if (cmd.skip1b('(')) { // params ( list ) params parse_numlist(cmd); if (!cmd.skip1b(')')) {untested(); cmd.warn(bWARNING, "need )"); }else{ } }else if (!(cmd.is_alpha())) { // params list params parse_numlist(cmd); }else{ // params (only) } }else{ // list params assert(!(cmd.skip1b('('))); parse_numlist(cmd); } parse_param_list(cmd); if (cmd.skip1b(')')) { cmd.warn(bWARNING, start, "need ("); }else{ } } } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::print_common_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); print_pair(o, lang, "tnom", _tnom_c, _tnom_c.has_hard_value()); print_pair(o, lang, "dtemp",_dtemp, _dtemp.has_hard_value()); print_pair(o, lang, "temp", _temp_c, _temp_c.has_hard_value()); print_pair(o, lang, "m", _mfactor, _mfactor.has_hard_value()); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::set_param_by_index(int i, std::string& Value, int Offset) { switch (i) { case 0:untested(); _tnom_c = Value; break; case 1:untested(); _dtemp = Value; break; case 2:untested(); _temp_c = Value; break; case 3: _mfactor = Value; break; default:untested(); throw Exception_Too_Many(i, 3, Offset); break; } } /*--------------------------------------------------------------------------*/ bool COMMON_COMPONENT::param_is_printable(int i)const { switch (i) { case 0: return _tnom_c.has_hard_value(); case 1: return _dtemp.has_hard_value(); case 2: return _temp_c.has_hard_value(); case 3: return _mfactor.has_hard_value(); default:untested(); return false; } } /*--------------------------------------------------------------------------*/ std::string COMMON_COMPONENT::param_name(int i)const { switch (i) { case 0:untested(); return "tnom"; case 1:untested(); return "dtemp"; case 2:untested(); return "temp"; case 3: return "m"; default:untested(); return ""; } } /*--------------------------------------------------------------------------*/ std::string COMMON_COMPONENT::param_name(int i, int j)const {untested(); return (j==0) ? param_name(i) : ""; } /*--------------------------------------------------------------------------*/ std::string COMMON_COMPONENT::param_value(int i)const { switch (i) { case 0:untested(); return _tnom_c.string(); case 1:untested(); return _dtemp.string(); case 2:untested(); return _temp_c.string(); case 3: return _mfactor.string(); default:untested(); return ""; } } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::precalc_last(const CARD_LIST* Scope) { assert(Scope); _tnom_c.e_val(OPT::tnom_c, Scope); _dtemp.e_val(0., Scope); _temp_c.e_val(_sim->_temp_c + _dtemp, Scope); _mfactor.e_val(1, Scope); _value.e_val(0, Scope); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::tr_eval(ELEMENT*x)const {untested(); assert(_model); _model->tr_eval(x); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::ac_eval(ELEMENT*x)const {untested(); assert(_model); _model->ac_eval(x); } /*--------------------------------------------------------------------------*/ bool COMMON_COMPONENT::operator==(const COMMON_COMPONENT& x)const { return (_modelname == x._modelname && _model == x._model && _tnom_c == x._tnom_c && _dtemp == x._dtemp && _temp_c == x._temp_c && _mfactor == x._mfactor && _value == x._value); } /*--------------------------------------------------------------------------*/ void COMMON_COMPONENT::set_param_by_name(std::string Name, std::string Value) { if (has_parse_params_obsolete_callback()) {untested(); std::string args(Name + "=" + Value); CS cmd(CS::_STRING, args); //obsolete_callback bool ok = parse_params_obsolete_callback(cmd); //BUG//callback if (!ok) {untested(); throw Exception_No_Match(Name); }else{untested(); } }else{ //BUG// ugly linear search for (int i = param_count() - 1; i >= 0; --i) { for (int j = 0; param_name(i,j) != ""; ++j) { if (Umatch(Name, param_name(i,j) + ' ')) { set_param_by_index(i, Value, 0/*offset*/); return; //success }else{ //keep looking } } } untested(); throw Exception_No_Match(Name); } } /*--------------------------------------------------------------------------*/ //BUG// This is a kluge for the spice_wrapper, to disable virtual functions. // It is called during expansion only. void COMMON_COMPONENT::Set_param_by_name(std::string Name, std::string Value) {untested(); assert(!has_parse_params_obsolete_callback()); //BUG// ugly linear search for (int i = COMMON_COMPONENT::param_count() - 1; i >= 0; --i) {untested(); for (int j = 0; COMMON_COMPONENT::param_name(i,j) != ""; ++j) {untested(); if (Umatch(Name, COMMON_COMPONENT::param_name(i,j) + ' ')) {untested(); COMMON_COMPONENT::set_param_by_index(i, Value, 0/*offset*/); return; //success }else{untested(); //keep looking } } } throw Exception_No_Match(Name); } /*--------------------------------------------------------------------------*/ bool COMMON_COMPONENT::parse_numlist(CS&) { return false; } /*--------------------------------------------------------------------------*/ bool COMMON_COMPONENT::parse_params_obsolete_callback(CS& cmd) { return ONE_OF || Get(cmd, "tnom", &_tnom_c) || Get(cmd, "dtemp", &_dtemp) || Get(cmd, "temp", &_temp_c) || Get(cmd, "m", &_mfactor) || Get(cmd, "mfactor",&_mfactor) ; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ COMPONENT::COMPONENT() :CARD(), _common(0), _value(0), _mfactor(1), _mfactor_fixed(NOT_VALID), _converged(false), _q_for_eval(-1), _time_by() { if (_sim) { _sim->uninit(); }else{ } } /*--------------------------------------------------------------------------*/ COMPONENT::COMPONENT(const COMPONENT& p) :CARD(p), _common(0), _value(p._value), _mfactor(p._mfactor), _mfactor_fixed(p._mfactor_fixed), _converged(p._converged), _q_for_eval(-1), _time_by(p._time_by) { if (_sim) { _sim->uninit(); }else{untested(); } attach_common(p._common); assert(_common == p._common); } /*--------------------------------------------------------------------------*/ COMPONENT::~COMPONENT() { detach_common(); if (_sim) { _sim->uninit(); }else{ } } /*--------------------------------------------------------------------------*/ bool COMPONENT::node_is_grounded(int i)const { assert(_n); assert(i >= 0); assert(i < net_nodes()); return _n[i].is_grounded(); } /*--------------------------------------------------------------------------*/ bool COMPONENT::node_is_connected(int i)const { assert(_n); assert(i >= 0); assert(i < net_nodes()); return _n[i].is_connected(); } /*--------------------------------------------------------------------------*/ void COMPONENT::set_port_by_name(std::string& int_name, std::string& ext_name) { for (int i=0; i _net_nodes) { // make the list bigger _net_nodes = num+1; }else{ // it's already big enough, probably assigning out of order } }else{ throw Exception_Too_Many(num+1, max_nodes(), 0/*offset*/); } } /*--------------------------------------------------------------------------*/ void COMPONENT::set_port_to_ground(int num) { if (num < max_nodes()) { _n[num].set_to_ground(this); if (num+1 > _net_nodes) { _net_nodes = num+1; }else{untested(); } }else{untested(); throw Exception_Too_Many(num+1, max_nodes(), 0/*offset*/); } } /*--------------------------------------------------------------------------*/ void COMPONENT::set_dev_type(const std::string& new_type) { if (common()) { if (new_type != dev_type()) { COMMON_COMPONENT* c = common()->clone(); assert(c); c->set_modelname(new_type); attach_common(c); }else{ } }else{ CARD::set_dev_type(new_type); } } /*--------------------------------------------------------------------------*/ void COMPONENT::print_args_obsolete_callback(OMSTREAM& o, LANGUAGE* lang)const { assert(lang); assert(has_common()); common()->print_common_obsolete_callback(o, lang); } /*--------------------------------------------------------------------------*/ void COMPONENT::deflate_common() {untested(); unreachable(); if (has_common()) {untested(); COMMON_COMPONENT* deflated_common = mutable_common()->deflate(); if (deflated_common != common()) {untested(); attach_common(deflated_common); }else{untested(); } }else{untested(); unreachable(); } } /*--------------------------------------------------------------------------*/ void COMPONENT::expand() { CARD::expand(); if (has_common()) { COMMON_COMPONENT* new_common = common()->clone(); new_common->expand(this); COMMON_COMPONENT* deflated_common = new_common->deflate(); if (deflated_common != common()) { attach_common(deflated_common); }else{untested(); } }else{ } } /*--------------------------------------------------------------------------*/ void COMPONENT::precalc_first() { CARD::precalc_first(); if (has_common()) { try { mutable_common()->precalc_first(scope()); }catch (Exception_Precalc& e) {untested(); error(bWARNING, long_label() + ": " + e.message()); } _mfactor = common()->mfactor(); }else{ } //BUG// _mfactor must be in precalc_first _mfactor.e_val(1, scope()); trace1(long_label().c_str(), double(_mfactor)); if (const COMPONENT* o = prechecked_cast(owner())) { _mfactor_fixed = o->mfactor() * _mfactor; }else{ _mfactor_fixed = _mfactor; } trace1(long_label().c_str(), _mfactor_fixed); } /*--------------------------------------------------------------------------*/ void COMPONENT::precalc_last() { CARD::precalc_last(); if (has_common()) { try { mutable_common()->precalc_last(scope()); }catch (Exception_Precalc& e) { error(bWARNING, long_label() + ": " + e.message()); } }else{ } _value.e_val(0.,scope()); } /*--------------------------------------------------------------------------*/ void COMPONENT::map_nodes() { assert(is_device()); assert(0 <= min_nodes()); //assert(min_nodes() <= net_nodes()); assert(net_nodes() <= max_nodes()); //assert(ext_nodes() + int_nodes() == matrix_nodes()); for (int ii = 0; ii < ext_nodes()+int_nodes(); ++ii) { _n[ii].map(); } if (subckt()) { subckt()->map_nodes(); }else{ } } /*--------------------------------------------------------------------------*/ void COMPONENT::tr_iwant_matrix() { if (is_device()) { assert(matrix_nodes() == 0); if (subckt()) { subckt()->tr_iwant_matrix(); }else{untested(); } }else{ } } /*--------------------------------------------------------------------------*/ void COMPONENT::ac_iwant_matrix() { if (is_device()) { assert(matrix_nodes() == 0); if (subckt()) { subckt()->ac_iwant_matrix(); }else{untested(); } }else{ } } /*--------------------------------------------------------------------------*/ /* set: set parameters, used in model building */ void COMPONENT::set_parameters(const std::string& Label, CARD *Owner, COMMON_COMPONENT *Common, double Value, int , double [], int node_count, const node_t Nodes[]) { set_label(Label); set_owner(Owner); set_value(Value); attach_common(Common); assert(node_count <= net_nodes()); notstd::copy_n(Nodes, node_count, _n); } /*--------------------------------------------------------------------------*/ /* set_slave: force evaluation whenever the owner is evaluated. */ void COMPONENT::set_slave() { mark_always_q_for_eval(); if (subckt()) { subckt()->set_slave(); }else{ } } /*--------------------------------------------------------------------------*/ void COMPONENT::set_value(double v, COMMON_COMPONENT* c) { if (c != _common) { detach_common(); attach_common(c); }else{ } set_value(v); } /*--------------------------------------------------------------------------*/ void COMPONENT::set_param_by_name(std::string Name, std::string Value) { if (has_common()) { COMMON_COMPONENT* c = common()->clone(); assert(c); c->set_param_by_name(Name, Value); attach_common(c); }else{ CARD::set_param_by_name(Name, Value); } } /*--------------------------------------------------------------------------*/ void COMPONENT::set_param_by_index(int i, std::string& Value, int offset) { if (has_common()) {untested(); COMMON_COMPONENT* c = common()->clone(); assert(c); c->set_param_by_index(i, Value, offset); attach_common(c); }else{ switch (COMPONENT::param_count() - 1 - i) { case 0: _value = Value; break; case 1:untested(); _mfactor = Value; break; default:untested(); CARD::set_param_by_index(i, Value, offset); } } } /*--------------------------------------------------------------------------*/ bool COMPONENT::param_is_printable(int i)const { if (has_common()) { return common()->param_is_printable(i); }else{ switch (COMPONENT::param_count() - 1 - i) { case 0: return value().has_hard_value(); case 1: return _mfactor.has_hard_value(); default:untested(); return CARD::param_is_printable(i); } } } /*--------------------------------------------------------------------------*/ std::string COMPONENT::param_name(int i)const { if (has_common()) { return common()->param_name(i); }else{ switch (COMPONENT::param_count() - 1 - i) { case 0: return value_name(); case 1: return "m"; default:untested(); return CARD::param_name(i); } } } /*--------------------------------------------------------------------------*/ std::string COMPONENT::param_name(int i, int j)const { if (has_common()) {untested(); return common()->param_name(i,j); }else{ if (j == 0) { return param_name(i); }else if (i >= CARD::param_count()) {untested(); return ""; }else{untested(); return CARD::param_name(i,j); } } } /*--------------------------------------------------------------------------*/ std::string COMPONENT::param_value(int i)const { if (has_common()) { return common()->param_value(i); }else{ switch (COMPONENT::param_count() - 1 - i) { case 0: return value().string(); case 1: return _mfactor.string(); default:untested(); return CARD::param_value(i); } } } /*--------------------------------------------------------------------------*/ const std::string COMPONENT::port_value(int i)const { assert(_n); assert(i >= 0); assert(i < net_nodes()); return _n[i].short_label(); } /*--------------------------------------------------------------------------*/ const std::string COMPONENT::current_port_value(int)const {untested(); unreachable(); static std::string s; return s; } /*--------------------------------------------------------------------------*/ double COMPONENT::tr_probe_num(const std::string& x)const { CS cmd(CS::_STRING, x); if (cmd.umatch("v")) { int nn = cmd.ctoi(); return (nn > 0 && nn <= net_nodes()) ? _n[nn-1].v0() : NOT_VALID; }else if (Umatch(x, "error{time} |next{time} ")) { return (_time_by._error_estimate < BIGBIG) ? _time_by._error_estimate : 0; }else if (Umatch(x, "timef{uture} ")) { return (_time_by._error_estimate < _time_by._event) ? _time_by._error_estimate : _time_by._event; }else if (Umatch(x, "event{time} ")) { return (_time_by._event < BIGBIG) ? _time_by._event : 0; }else{ return CARD::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ const MODEL_CARD* COMPONENT::find_model(const std::string& modelname)const { if (modelname == "") { throw Exception(long_label() + ": missing args -- need model name"); unreachable(); return NULL; }else{ const CARD* c = NULL; { int bin_count = 0; for (const CARD* Scope = this; Scope && !c; Scope = Scope->owner()) { // start here, looking out try { c = Scope->find_in_my_scope(modelname); }catch (Exception_Cant_Find& e1) { // didn't find plain model. try binned models bin_count = 0; for (;;) { // loop over binned models std::string extended_name = modelname + '.' + to_string(++bin_count); try { c = Scope->find_in_my_scope(extended_name); }catch (Exception_Cant_Find& e2) { // that's all .. looked at all of them c = NULL; break; } const MODEL_CARD* m = dynamic_cast(c); if (m && m->is_valid(this)) { //matching name and correct bin break; }else{ // keep looking } } } } if (!c) { if (bin_count <= 1) { throw Exception_Cant_Find(long_label(), modelname); }else{ throw Exception(long_label() + ": no bins match: " + modelname); } unreachable(); }else{ } } // found something, what is it? assert(c); const MODEL_CARD* model = dynamic_cast(c); if (!model) {untested(); throw Exception_Type_Mismatch(long_label(), modelname, ".model"); }else if (!model->is_valid(this)) {untested(); error(bWARNING, long_label() + ", " + modelname + "\nmodel and device parameters are incompatible, using anyway\n"); }else{ } assert(model); return model; } } /*--------------------------------------------------------------------------*/ /* q_eval: queue this device for evaluation on the next pass, * with a check against doing it twice. */ void COMPONENT::q_eval() { if(!is_q_for_eval()) { mark_q_for_eval(); _sim->_evalq_uc->push_back(this); }else{untested(); } } /*--------------------------------------------------------------------------*/ void COMPONENT::tr_queue_eval() { if(tr_needs_eval()) { q_eval(); }else{ } } /*--------------------------------------------------------------------------*/ TIME_PAIR COMPONENT::tr_review() { _time_by.reset(); if(has_common()) { return _common->tr_review(this); }else{ return _time_by; } } /*--------------------------------------------------------------------------*/ void COMPONENT::tr_accept() { if(has_common()) { _common->tr_accept(this); }else{ } } /*--------------------------------------------------------------------------*/ bool COMPONENT::use_obsolete_callback_parse()const { if (has_common()) { return common()->use_obsolete_callback_parse(); }else{untested(); return false; } } /*--------------------------------------------------------------------------*/ bool COMPONENT::use_obsolete_callback_print()const { if (has_common()) { return common()->use_obsolete_callback_print(); }else{ return false; } } /*--------------------------------------------------------------------------*/ void COMPONENT::obsolete_move_parameters_from_common(const COMMON_COMPONENT* dc) { assert(dc); _value = dc->value(); _mfactor = dc->mfactor(); } /*--------------------------------------------------------------------------*/ /* volts_limited: transient voltage, best approximation, with limiting */ double COMPONENT::volts_limited(const node_t & n1, const node_t & n2) { bool limiting = false; double v1 = n1.v0(); assert(v1 == v1); if (v1 < _sim->_vmin) { limiting = true; v1 = _sim->_vmin; }else if (v1 > _sim->_vmax) { limiting = true; v1 = _sim->_vmax; } double v2 = n2.v0(); assert(v2 == v2); if (v2 < _sim->_vmin) { limiting = true; v2 = _sim->_vmin; }else if (v2 > _sim->_vmax) { limiting = true; v2 = _sim->_vmax; } if (limiting) { _sim->_limiting = true; if (OPT::dampstrategy & dsRANGE) { _sim->_fulldamp = true; error(bTRACE, "range limit damp\n"); } if (OPT::picky <= bTRACE) {untested(); error(bNOERROR,"node limiting (n1,n2,dif) " "was (%g %g %g) now (%g %g %g)\n", n1.v0(), n2.v0(), n1.v0() - n2.v0(), v1, v2, v1-v2); } } return dn_diff(v1,v2); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_elemnt.cc000066400000000000000000000373071316501211100137240ustar00rootroot00000000000000/*$Id: e_elemnt.cc 2016/09/26 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Base class for elements of a circuit */ //testing=script 2006.07.12 #include "m_divdiff.h" #include "u_xprobe.h" #include "e_aux.h" #include "e_elemnt.h" /*--------------------------------------------------------------------------*/ ELEMENT::ELEMENT() :COMPONENT(), _loaditer(0), _m0(), _m1(), _loss0(0.), _loss1(0.), _acg(0.), _ev(0.), _dt(0.) { _n = _nodes; assert(_y[0].x == 0. && _y[0].f0 == 0. && _y[0].f1 == 0.); assert(_y1 == _y[0]); std::fill_n(_time, int(OPT::_keep_time_steps), 0.); } /*--------------------------------------------------------------------------*/ ELEMENT::ELEMENT(const ELEMENT& p) :COMPONENT(p), _loaditer(0), _m0(), _m1(), _loss0(p._loss0), _loss1(p._loss1), _acg(0.), _ev(0.), _dt(0.) { trace0(long_label().c_str()); _n = _nodes; if (p._n == p._nodes) { for (int ii = 0; ii < NODES_PER_BRANCH; ++ii) { _n[ii] = p._n[ii]; } }else{ assert(p._nodes); // the constructor for a derived class will take care of it } assert(_y[0].x == 0. && _y[0].f0 == 0. && _y[0].f1 == 0.); assert(_y1 == _y[0]); notstd::copy_n(p._time, int(OPT::_keep_time_steps), _time); } /*--------------------------------------------------------------------------*/ bool ELEMENT::skip_dev_type(CS& cmd) { return cmd.umatch(dev_type() + ' '); } /*--------------------------------------------------------------------------*/ void ELEMENT::precalc_last() { COMPONENT::precalc_last(); //BUG// This is needed for AC analysis without doing op (or dc or tran ...) first. // Something like it should be moved to ac_begin. if (_sim->has_op() == s_NONE) { _y[0].x = 0.; _y[0].f0 = LINEAR; _y[0].f1 = value(); }else{ } } /*--------------------------------------------------------------------------*/ void ELEMENT::tr_begin() { _time[0] = 0.; _y[0].x = 0.; _y[0].f0 = LINEAR; _y[0].f1 = value(); _y1 = _y[0]; for (int i=1; i _sim->_time0) {untested(); // _freezetime incomplete(); //BUG// wrong values in _time[] for (int i=0 ; i_time0) { // the usual continue where the last one left off }else{unreachable(); // skipping ahead, not implemented } //assert(_time[0] == _sim->_time0); if (_time[0] != _sim->_time0) {untested(); error(bDANGER, "//BUG// restore time mismatch. last=%g, using=%g\n", _time[0], _sim->_time0); //BUG// happens when continuing after a ^c, // when the last step was not printed //BUG// also happens with _freezetime // _time[0] is the non-printed time. _sim->_time0 is the printed time. }else{ } for (int i=OPT::_keep_time_steps-1; i>0; --i) { assert(_time[i] < _time[i-1] || _time[i] == 0.); } } /*--------------------------------------------------------------------------*/ void ELEMENT::dc_advance() { assert(_sim->_time0 == 0.); // DC for (int i=OPT::_keep_time_steps-1; i>=0; --i) { assert(_time[i] == 0.); } _dt = NOT_VALID; } /*--------------------------------------------------------------------------*/ void ELEMENT::tr_advance() { assert(_time[0] < _sim->_time0); // moving forward for (int i=OPT::_keep_time_steps-1; i>0; --i) { assert(_time[i] < _time[i-1] || _time[i] == 0.); _time[i] = _time[i-1]; _y[i] = _y[i-1]; } _time[0] = _sim->_time0; _dt = _time[0] - _time[1]; } /*--------------------------------------------------------------------------*/ void ELEMENT::tr_regress() { assert(_time[0] >= _sim->_time0); // moving backwards assert(_time[1] <= _sim->_time0); // but not too far backwards for (int i=OPT::_keep_time_steps-1; i>0; --i) { assert(_time[i] < _time[i-1] || _time[i] == 0.); } _time[0] = _sim->_time0; _dt = _time[0] - _time[1]; } /*--------------------------------------------------------------------------*/ TIME_PAIR ELEMENT::tr_review() { COMPONENT::tr_review(); if (order() > 0 && _y[0].f0 != LINEAR) { double timestep = tr_review_trunc_error(_y); double newtime = tr_review_check_and_convert(timestep); _time_by.min_error_estimate(newtime); }else{ } return _time_by; } /*--------------------------------------------------------------------------*/ void ELEMENT::tr_iwant_matrix_passive() { assert(matrix_nodes() == 2); assert(is_device()); //assert(!subckt()); ok for subckt to exist for logic trace2(long_label().c_str(), _n[OUT1].m_(), _n[OUT2].m_()); assert(_n[OUT1].m_() != INVALID_NODE); assert(_n[OUT2].m_() != INVALID_NODE); //BUG// assert can fail as a result of some parse errors _sim->_aa.iwant(_n[OUT1].m_(),_n[OUT2].m_()); _sim->_lu.iwant(_n[OUT1].m_(),_n[OUT2].m_()); } /*--------------------------------------------------------------------------*/ void ELEMENT::tr_iwant_matrix_active() { assert(matrix_nodes() == 4); assert(is_device()); assert(!subckt()); assert(_n[OUT1].m_() != INVALID_NODE); assert(_n[OUT2].m_() != INVALID_NODE); assert(_n[IN1].m_() != INVALID_NODE); assert(_n[IN2].m_() != INVALID_NODE); //BUG// assert can fail as a result of some parse errors //_sim->_aa.iwant(_n[OUT1].m_(),_n[OUT2].m_()); _sim->_aa.iwant(_n[OUT1].m_(),_n[IN1].m_()); _sim->_aa.iwant(_n[OUT1].m_(),_n[IN2].m_()); _sim->_aa.iwant(_n[OUT2].m_(),_n[IN1].m_()); _sim->_aa.iwant(_n[OUT2].m_(),_n[IN2].m_()); //_sim->_aa.iwant(_n[IN1].m_(),_n[IN2].m_()); //_sim->_lu.iwant(_n[OUT1].m_(),_n[OUT2].m_()); _sim->_lu.iwant(_n[OUT1].m_(),_n[IN1].m_()); _sim->_lu.iwant(_n[OUT1].m_(),_n[IN2].m_()); _sim->_lu.iwant(_n[OUT2].m_(),_n[IN1].m_()); _sim->_lu.iwant(_n[OUT2].m_(),_n[IN2].m_()); //_sim->_lu.iwant(_n[IN1].m_(),_n[IN2].m_()); } /*--------------------------------------------------------------------------*/ void ELEMENT::tr_iwant_matrix_extended() { assert(is_device()); assert(!subckt()); assert(ext_nodes() + int_nodes() == matrix_nodes()); for (int ii = 0; ii < matrix_nodes(); ++ii) { if (_n[ii].m_() >= 0) { for (int jj = 0; jj < ii ; ++jj) { _sim->_aa.iwant(_n[ii].m_(),_n[jj].m_()); _sim->_lu.iwant(_n[ii].m_(),_n[jj].m_()); } }else{itested(); // node 1 is grounded or invalid } } } /*--------------------------------------------------------------------------*/ void ELEMENT::ac_iwant_matrix_passive() { trace2(long_label().c_str(), _n[OUT1].m_(), _n[OUT2].m_()); _sim->_acx.iwant(_n[OUT1].m_(),_n[OUT2].m_()); } /*--------------------------------------------------------------------------*/ void ELEMENT::ac_iwant_matrix_active() { //_sim->_acx.iwant(_n[OUT1].m_(),_n[OUT2].m_()); _sim->_acx.iwant(_n[OUT1].m_(),_n[IN1].m_()); _sim->_acx.iwant(_n[OUT1].m_(),_n[IN2].m_()); _sim->_acx.iwant(_n[OUT2].m_(),_n[IN1].m_()); _sim->_acx.iwant(_n[OUT2].m_(),_n[IN2].m_()); //_sim->_acx.iwant(_n[IN1].m_(),_n[IN2].m_()); } /*--------------------------------------------------------------------------*/ void ELEMENT::ac_iwant_matrix_extended() { assert(is_device()); assert(!subckt()); assert(ext_nodes() + int_nodes() == matrix_nodes()); for (int ii = 0; ii < matrix_nodes(); ++ii) { if (_n[ii].m_() >= 0) { for (int jj = 0; jj < ii ; ++jj) { _sim->_acx.iwant(_n[ii].m_(),_n[jj].m_()); } }else{itested(); // node 1 is grounded or invalid } } } /*--------------------------------------------------------------------------*/ double ELEMENT::tr_amps()const { trace5("", _loss0, tr_outvolts(), _m0.c1, tr_involts(), _m0.c0); return fixzero((_loss0 * tr_outvolts() + _m0.c1 * tr_involts() + _m0.c0), _m0.c0); } /*--------------------------------------------------------------------------*/ double ELEMENT::tr_probe_num(const std::string& x)const { if (Umatch(x, "v{out} ")) { return tr_outvolts(); }else if (Umatch(x, "vi{n} ")) { return tr_involts(); }else if (Umatch(x, "i ")) { return tr_amps(); }else if (Umatch(x, "p ")) { return tr_amps() * tr_outvolts(); }else if (Umatch(x, "pd ")) { double p = tr_amps() * tr_outvolts(); return (p > 0.) ? p : 0.; }else if (Umatch(x, "ps ")) { double p = tr_amps() * tr_outvolts(); return (p < 0.) ? -p : 0.; }else if (Umatch(x, "in{put} ")) { return _y[0].x; }else if (Umatch(x, "f ")) { if (_y[0].f0 == LINEAR) {itested(); return _y[0].x * _y[0].f1; }else{ return _y[0].f0; } }else if (Umatch(x, "ev |df ")) { return _y[0].f1; }else if (Umatch(x, "nv ")) { return value(); }else if (Umatch(x, "eiv ")) {untested(); return _m0.x; }else if (Umatch(x, "y ")) { return _m0.c1; }else if (Umatch(x, "is{tamp} ")) { return _m0.f0(); }else if (Umatch(x, "iof{fset} ")) {itested(); return _m0.c0; }else if (Umatch(x, "ip{assive} ")) {itested(); return _m0.c1 * tr_involts(); }else if (Umatch(x, "il{oss} ")) {untested(); return _loss0 * tr_outvolts(); }else if (Umatch(x, "dt ")) { return _dt; }else if (Umatch(x, "dtr{equired} ")) { return ((_time_by._error_estimate - _time[0]) > 0) ? _time_by._error_estimate - _time[0] : _time_by._error_estimate - _time[1]; }else if (Umatch(x, "time ")) {untested(); return _time[0]; }else if (Umatch(x, "timeo{ld} ")) {untested(); return _time[1]; //}else if (Umatch(x, "didt ")) {untested(); //double i0 = (_m0.c1 * _m0.x + _m0.c0); //double it1 = (mt1.f1 * mt1.x + mt1.c0); //return (i0 - it1) / (_sim->_time0 - _time1); }else if (Umatch(x, "r ")) { return (_m0.c1!=0.) ? 1/_m0.c1 : MAXDBL; }else if (Umatch(x, "z ")) { return port_impedance(_n[OUT1], _n[OUT2], _sim->_lu, mfactor()*(_m0.c1+_loss0)); }else if (Umatch(x, "zraw ")) { return port_impedance(_n[OUT1], _n[OUT2], _sim->_lu, 0.); }else{ return COMPONENT::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ COMPLEX ELEMENT::ac_amps()const { assert(!is_source()); return (ac_involts() * _acg + ac_outvolts() * _loss0); } /*--------------------------------------------------------------------------*/ XPROBE ELEMENT::ac_probe_ext(const std::string& x)const { COMPLEX admittance = (is_source()) ? _loss0 : _acg+_loss0; if (Umatch(x, "v{out} ")) { /* volts (out) */ return XPROBE(ac_outvolts()); }else if (Umatch(x, "vin ")) { /* volts (in) */ return XPROBE(ac_involts()); }else if (Umatch(x, "i ")) { /* amps */ return XPROBE(ac_amps()); }else if (Umatch(x, "p ")) { /* complex "power" */ return XPROBE(ac_outvolts() * conj(ac_amps()), mtREAL, 10.); }else if (Umatch(x, "nv ")) {untested(); /* nominal value */ return XPROBE(value()); }else if (Umatch(x, "ev ")) { /* effective value */ return XPROBE(_ev); }else if (Umatch(x, "y ")) {untested(); /* admittance */ return XPROBE(admittance, mtREAL); }else if (Umatch(x, "r ")) { /* complex "resistance" */ if (admittance == 0.) {untested(); return XPROBE(MAXDBL); }else{ return XPROBE(1. / admittance); } }else if (Umatch(x, "z ")) { /* port impedance */ return XPROBE(port_impedance(_n[OUT1], _n[OUT2], _sim->_acx, mfactor()*admittance)); }else if (Umatch(x, "zraw ")) { /* port impedance, raw */ return XPROBE(port_impedance(_n[OUT1], _n[OUT2], _sim->_acx, COMPLEX(0.))); }else{ /* bad parameter */ return COMPONENT::ac_probe_ext(x); } } /*--------------------------------------------------------------------------*/ double ELEMENT::tr_review_trunc_error(const FPOLY1* q) { double timestep; if (_time[0] <= 0.) { // DC, I know nothing timestep = NEVER; }else{ int error_deriv; // which derivative to use for error estimate if (order() >= OPT::_keep_time_steps - 2) { error_deriv = OPT::_keep_time_steps - 1; }else if (order() < 0) {untested(); error_deriv = 1; }else{ error_deriv = order()+1; } while (_time[error_deriv-1] <= 0.) { // not enough info to use that derivative, use a lower order derivative --error_deriv; } assert(error_deriv > 0); assert(error_deriv < OPT::_keep_time_steps); for (int i=error_deriv; i>0; --i) { assert(_time[i] < _time[i-1]); } double c[OPT::_keep_time_steps]; for (int i=0; i= 5); trace4(("ts " + long_label()).c_str(), error_deriv, error_factor(), OPT::trsteporder, OPT::trstepcoef[OPT::trsteporder] ); trace5("time", _time[0], _time[1], _time[2], _time[3], _time[4]); trace5("charge", q[0].f0, q[1].f0, q[2].f0, q[3].f0, q[4].f0); trace5("deriv", c[0], c[1], c[2], c[3], c[4]); if (c[error_deriv] == 0) { // avoid divide by zero timestep = NEVER; }else{ double chargetol = std::max(OPT::chgtol, OPT::reltol * std::max(std::abs(q[0].f0), std::abs(q[1].f0))); double tol = OPT::trtol * chargetol; double denom = error_factor() * std::abs(c[error_deriv]); assert(tol > 0.); assert(denom > 0.); switch (error_deriv) { // pow is slow. case 1: timestep = tol / denom; break; case 2: timestep = sqrt(tol / denom); break; case 3: timestep = cbrt(tol / denom); break; default: timestep = pow((tol / denom), 1./(error_deriv)); break; } trace4("", chargetol, tol, denom, timestep); } } assert(timestep > 0.); return timestep; } /*--------------------------------------------------------------------------*/ double ELEMENT::tr_review_check_and_convert(double timestep) { double time_future; if (timestep == NEVER) { time_future = NEVER; }else{ if (timestep < _sim->_dtmin) { timestep = _sim->_dtmin; }else{ } if (timestep < _dt * OPT::trreject) { if (_time[order()] == 0) { error(bTRACE, "initial step rejected:" + long_label() + '\n'); error(bTRACE, "new=%g old=%g required=%g\n", timestep, _dt, _dt * OPT::trreject); }else{ error(bTRACE, "step rejected:" + long_label() + '\n'); error(bTRACE, "new=%g old=%g required=%g\n", timestep, _dt, _dt * OPT::trreject); } time_future = _time[1] + timestep; trace3("reject", timestep, _dt, time_future); }else{ time_future = _time[0] + timestep; trace3("accept", timestep, _dt, time_future); } } assert(time_future > 0.); assert(time_future > _time[1]); return time_future; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_model.cc000066400000000000000000000065751316501211100135430ustar00rootroot00000000000000/*$Id: e_model.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * base class for all models */ //testing=script 2006.07.12 #include "e_compon.h" #include "e_model.h" /*--------------------------------------------------------------------------*/ MODEL_CARD::MODEL_CARD(const COMPONENT* p) :CARD(), _component_proto(p), _tnom_c(NOT_INPUT) { if (_sim) { _sim->uninit(); }else{ } } /*--------------------------------------------------------------------------*/ MODEL_CARD::MODEL_CARD(const MODEL_CARD& p) :CARD(p), _component_proto(p._component_proto), _tnom_c(p._tnom_c) { if (_sim) { _sim->uninit(); }else{untested(); } } /*--------------------------------------------------------------------------*/ MODEL_CARD::~MODEL_CARD() { if (_sim) { _sim->uninit(); }else{ } } /*--------------------------------------------------------------------------*/ void MODEL_CARD::set_param_by_index(int i, std::string& value, int offset) { switch (MODEL_CARD::param_count() - 1 - i) { case 0: _tnom_c = value; break; default: CARD::set_param_by_index(i, value, offset); break; } } /*--------------------------------------------------------------------------*/ bool MODEL_CARD::param_is_printable(int i)const { switch (MODEL_CARD::param_count() - 1 - i) { case 0: return true; default: return CARD::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_CARD::param_name(int i)const { switch (MODEL_CARD::param_count() - 1 - i) { case 0: return "tnom\0"; default: return CARD::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string MODEL_CARD::param_name(int i, int j)const { if (j == 0) { return param_name(i); }else if (i >= CARD::param_count()) { return ""; }else{ return MODEL_CARD::param_name(i, j); } } /*--------------------------------------------------------------------------*/ std::string MODEL_CARD::param_value(int i)const { switch (MODEL_CARD::param_count() - 1 - i) { case 0: return _tnom_c.string(); default: return CARD::param_value(i); } } /*--------------------------------------------------------------------------*/ void MODEL_CARD::precalc_first() { CARD::precalc_first(); _tnom_c.e_val(OPT::tnom_c, scope()); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_node.cc000066400000000000000000000427751316501211100133720ustar00rootroot00000000000000/*$Id: e_node.cc,v 26.138 2013/04/24 03:03:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * node probes */ //testing=script,sparse 2006.07.11 #include "u_nodemap.h" #include "d_logic.h" #include "e_aux.h" #include "u_xprobe.h" /*--------------------------------------------------------------------------*/ const _LOGICVAL LOGICVAL::or_truth[lvNUM_STATES][lvNUM_STATES] = { {lvSTABLE0, lvRISING, lvFALLING, lvSTABLE1, lvUNKNOWN}, {lvRISING, lvRISING, lvRISING, lvSTABLE1, lvRISING}, {lvFALLING, lvRISING, lvFALLING, lvSTABLE1, lvUNKNOWN}, {lvSTABLE1, lvSTABLE1, lvSTABLE1, lvSTABLE1, lvSTABLE1}, {lvUNKNOWN, lvRISING, lvUNKNOWN, lvSTABLE1, lvUNKNOWN} }; /*--------------------------------------------------------------------------*/ const _LOGICVAL LOGICVAL::xor_truth[lvNUM_STATES][lvNUM_STATES] = { {lvSTABLE0, lvRISING, lvFALLING, lvSTABLE1, lvUNKNOWN}, {lvRISING, lvFALLING, lvRISING, lvFALLING, lvUNKNOWN}, {lvFALLING, lvRISING, lvFALLING, lvRISING, lvUNKNOWN}, {lvSTABLE1, lvFALLING, lvRISING, lvSTABLE0, lvUNKNOWN}, {lvUNKNOWN, lvUNKNOWN, lvUNKNOWN, lvUNKNOWN, lvUNKNOWN} }; /*--------------------------------------------------------------------------*/ const _LOGICVAL LOGICVAL::and_truth[lvNUM_STATES][lvNUM_STATES] = { {lvSTABLE0, lvSTABLE0, lvSTABLE0, lvSTABLE0, lvSTABLE0}, {lvSTABLE0, lvRISING, lvFALLING, lvRISING, lvUNKNOWN}, {lvSTABLE0, lvFALLING, lvFALLING, lvFALLING, lvFALLING}, {lvSTABLE0, lvRISING, lvFALLING, lvSTABLE1, lvUNKNOWN}, {lvSTABLE0, lvUNKNOWN, lvFALLING, lvUNKNOWN, lvUNKNOWN} }; /*--------------------------------------------------------------------------*/ const _LOGICVAL LOGICVAL::not_truth[lvNUM_STATES] = { lvSTABLE1, lvFALLING, lvRISING, lvSTABLE0, lvUNKNOWN }; /*--------------------------------------------------------------------------*/ static _LOGICVAL prop_truth[lvNUM_STATES][lvNUM_STATES] = { {lvSTABLE0, lvUNKNOWN, lvUNKNOWN, lvRISING, lvUNKNOWN}, {lvUNKNOWN, lvUNKNOWN, lvUNKNOWN, lvUNKNOWN, lvUNKNOWN}, {lvUNKNOWN, lvUNKNOWN, lvUNKNOWN, lvUNKNOWN, lvUNKNOWN}, {lvFALLING, lvUNKNOWN, lvUNKNOWN, lvSTABLE1, lvUNKNOWN}, {lvFALLING, lvUNKNOWN, lvUNKNOWN, lvRISING, lvUNKNOWN} }; /*--------------------------------------------------------------------------*/ inline LOGICVAL& LOGICVAL::set_in_transition(LOGICVAL newval) { _lv = prop_truth[_lv][newval]; assert(_lv != lvUNKNOWN); return *this; } /*--------------------------------------------------------------------------*/ LOGIC_NODE::LOGIC_NODE() :NODE(), _family(0), _d_iter(-1), // initially d_iter is older than a_iter _a_iter(0), _final_time(0), _lastchange(0), _old_lastchange(0), _mode(moANALOG), _lv(), _old_lv(), _quality(qBAD), _failure_mode("initial") { } /*--------------------------------------------------------------------------*/ /* default constructor : unconnected, don't use */ NODE::NODE() :CKT_BASE(), _user_number(INVALID_NODE) //_flat_number(INVALID_NODE) //_matrix_number(INVALID_NODE) { } /*--------------------------------------------------------------------------*/ /* copy constructor : user data only */ NODE::NODE(const NODE& p) :CKT_BASE(p), _user_number(p._user_number) //_flat_number(p._flat_number) //_matrix_number(INVALID_NODE) { unreachable(); } /*--------------------------------------------------------------------------*/ /* constructor taking a pointer : it must be valid * supposedly not used, but used by a required function that is also not used */ NODE::NODE(const NODE* p) :CKT_BASE(*p), _user_number(p->_user_number) //_flat_number(p->_flat_number) //_matrix_number(INVALID_NODE) { unreachable(); } /*--------------------------------------------------------------------------*/ /* usual initializing constructor : name and index */ NODE::NODE(const std::string& s, int n) :CKT_BASE(s), _user_number(n) //_flat_number(n) //_matrix_number(INVALID_NODE) { } /*--------------------------------------------------------------------------*/ node_t::node_t() :_nnn(0), _ttt(INVALID_NODE), _m(INVALID_NODE) { } node_t::node_t(const node_t& p) :_nnn(p._nnn), _ttt(p._ttt), _m(p._m) { //assert(_ttt == _nnn->flat_number()); } node_t::node_t(NODE* n) :_nnn(n), _ttt(n->user_number()), _m(to_internal(n->user_number())) { //assert(_ttt == _nnn->flat_number()); } node_t& node_t::operator=(const node_t& p) { if (p._nnn) { //assert(p._ttt == p._nnn->flat_number()); }else{ assert(p._ttt == INVALID_NODE); assert(p._m == INVALID_NODE); } _nnn = p._nnn; _ttt = p._ttt; _m = p._m; return *this; } /*--------------------------------------------------------------------------*/ LOGIC_NODE& node_t::data()const { assert(CKT_BASE::_sim->_nstat); return CKT_BASE::_sim->_nstat[m_()]; } /*--------------------------------------------------------------------------*/ double NODE::tr_probe_num(const std::string& x)const { if (Umatch(x, "v ")) { // return v0(); denoised return floor(v0()/OPT::vfloor + .5) * OPT::vfloor; }else if (Umatch(x, "z ")) { return port_impedance(node_t(const_cast(this)), node_t(&ground_node), _sim->_lu, 0.); }else if (Umatch(x, "l{ogic} |la{stchange} |fi{naltime} |di{ter} |ai{ter} |count ")) { assert(_sim->_nstat); return _sim->_nstat[matrix_number()].tr_probe_num(x); }else if (Umatch(x, "mdy ")) { // matrix diagonal admittance const BSMATRIX& aaa = _sim->_aa; return aaa.d(m_(),m_()); }else if (Umatch(x, "mdz ")) { // matrix diagonal impedance const BSMATRIX& aaa = _sim->_aa; return 1/aaa.d(m_(),m_()); }else if (Umatch(x, "zero ")) { // fake probe: 0.0 return 0.0; }else if (Umatch(x, "pdz ")) { // fake probe 1/0 .. positive divide by zero = Infinity double z1 = tr_probe_num("zero "); return 1.0/z1; }else if (Umatch(x, "ndz ")) { // fake probe -1/0 .. negative divide by zero = -Infinity double z1 = tr_probe_num("zero "); return -1.0/z1; }else if (Umatch(x, "nan ")) { // fake probe 0/0 = NaN double z1 = tr_probe_num("zero "); double z2 = tr_probe_num("zero "); return z1/z2; }else{itested(); return CKT_BASE::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ double LOGIC_NODE::tr_probe_num(const std::string& x)const { if (Umatch(x, "l{ogic} ")) { return annotated_logic_value(); }else if (Umatch(x, "la{stchange} ")) {untested(); return _lastchange; }else if (Umatch(x, "fi{naltime} ")) {untested(); return final_time(); }else if (Umatch(x, "di{ter} ")) {untested(); return static_cast(_d_iter); }else if (Umatch(x, "ai{ter} ")) {untested(); return static_cast(_a_iter); }else{ return NODE::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ XPROBE NODE::ac_probe_ext(const std::string& x)const { if (Umatch(x, "v ")) { return XPROBE(vac()); }else if (Umatch(x, "z ")) { return XPROBE(port_impedance(node_t(const_cast(this)), node_t(&ground_node), _sim->_acx, COMPLEX(0.))); }else{itested(); return CKT_BASE::ac_probe_ext(x); } } /*--------------------------------------------------------------------------*/ /* annotated_logic_value: a printable value for probe * that has secondary info encoded in its fraction part */ double LOGIC_NODE::annotated_logic_value()const { return (_lv + (.1 * (OPT::transits - quality())) + (.01 * (2 - _mode))); } /*--------------------------------------------------------------------------*/ static bool newly_stable[lvUNKNOWN+1][lvUNKNOWN+1] = { // oldlv, _lv /* s0 rise fall s1 u */ /* s0 */{false, false, false, true, false}, /*rise*/{false, false, false, true, false}, /*fall*/{true, false, false, false, false}, /* s1 */{true, false, false, false, false}, /* u */{true, false, false, true, false} }; /*--------------------------------------------------------------------------*/ inline bool LOGIC_NODE::just_reached_stable()const { return newly_stable[old_lv()][lv()]; } /*--------------------------------------------------------------------------*/ /* to_logic: set up logic data for a node, if needed * If the logic data is already up to date, do nothing. * else set up: logic value (_lv) and quality. * Use and update _d_iter, _lastchange to keep track of what was done. */ void LOGIC_NODE::to_logic(const MODEL_LOGIC*f) { assert(f); if (process() && process() != f) {untested(); set_bad_quality("logic process mismatch"); error(bWARNING, "node " + long_label() + " logic process mismatch\nis it " + process()->long_label() + " or " + f->long_label() + "?\n"); } set_process(f); if (is_analog() && d_iter() < a_iter()) { if (_sim->analysis_is_restore()) {untested(); }else if (_sim->analysis_is_static()) { }else{ } if (_sim->analysis_is_static() || _sim->analysis_is_restore()) { set_last_change_time(0); store_old_last_change_time(); set_lv(lvUNKNOWN); }else{ } double dt = _sim->_time0 - last_change_time(); if (dt < 0.) {untested(); error(bPICKY, "time moving backwards. was %g, now %g\n", last_change_time(), _sim->_time0); dt = _sim->_time0 - old_last_change_time(); if (dt <= 0.) {untested(); throw Exception("internal error: time moving backwards, can't recover"); }else{untested(); } assert(dt > 0.); restore_lv(); /* skip back one */ }else{ store_old_last_change_time(); store_old_lv(); /* save to see if it changes */ } double sv = v0() / process()->range; /* new scaled voltage */ if (sv >= process()->th1) { /* logic 1 */ switch (lv()) { case lvSTABLE0: dont_set_quality("stable 0 to stable 1"); break; case lvRISING: dont_set_quality("begin stable 1"); break; case lvFALLING:untested();set_bad_quality("falling to stable 1"); break; case lvSTABLE1: dont_set_quality("continuing stable 1"); break; case lvUNKNOWN: set_good_quality("initial 1"); break; } set_lv(lvSTABLE1); }else if (sv <= process()->th0) { /* logic 0 */ switch (lv()) { case lvSTABLE0: dont_set_quality("continuing stable 0"); break; case lvRISING: untested();set_bad_quality("rising to stable 0"); break; case lvFALLING: dont_set_quality("begin stable 0"); break; case lvSTABLE1: dont_set_quality("stable 1 to stable 0"); break; case lvUNKNOWN: set_good_quality("initial 0"); break; } set_lv(lvSTABLE0); }else{ /* transition region */ double oldsv = vt1() / process()->range;/* old scaled voltage */ double diff = sv - oldsv; if (diff > 0) { /* rising */ switch (lv()) { case lvSTABLE0: dont_set_quality("begin good rise"); break; case lvRISING: if (diff < dt/(process()->mr * process()->rise)) { set_bad_quality("slow rise"); }else{ dont_set_quality("continuing good rise"); } break; case lvFALLING: untested(); set_bad_quality("positive glitch in fall"); break; case lvSTABLE1: untested(); set_bad_quality("negative glitch in 1"); break; case lvUNKNOWN: set_bad_quality("initial rise"); break; } set_lv(lvRISING); }else if (diff < 0) { /* falling */ switch (lv()) { case lvSTABLE0: untested(); set_bad_quality("positive glitch in 0"); break; case lvRISING: set_bad_quality("negative glitch in rise"); break; case lvFALLING: if (-diff < dt/(process()->mf * process()->fall)) { set_bad_quality("slow fall"); }else{ dont_set_quality("continuing good fall"); } break; case lvSTABLE1: dont_set_quality("begin good fall"); break; case lvUNKNOWN: untested(); set_bad_quality("initial fall"); break; } set_lv(lvFALLING); }else{ /* hanging up in transition */ untested(); error(bDANGER, "inflection???\n"); set_bad_quality("in transition but no change"); /* state (rise/fall) unchanged */ } } if (sv > 1.+process()->over || sv < -process()->over) {/* out of range */ set_bad_quality("out of range"); } if (just_reached_stable()) { /* A bad node gets a little better */ improve_quality(); /* on every good transition. */ } /* Eventually, it is good enough. */ /* A good transition is defined as */ /* entering a stable state from */ /* a transition state. */ set_d_iter(); set_last_change_time(); trace3(_failure_mode.c_str(), _lastchange, _quality, _lv); } } /*--------------------------------------------------------------------------*/ double LOGIC_NODE::to_analog(const MODEL_LOGIC* f) { assert(f); if (process() && process() != f) {untested(); error(bWARNING, "node " + long_label() + " logic process mismatch\nis it " + process()->long_label() + " or " + f->long_label() + "?\n"); } set_process(f); double start = NOT_VALID; double end = NOT_VALID; double risefall = NOT_VALID; switch (lv()) { case lvSTABLE0: return process()->vmin; case lvRISING: untested(); start = process()->vmin; end = process()->vmax; risefall = process()->rise; break; case lvFALLING: start = process()->vmax; end = process()->vmin; risefall = process()->fall; break; case lvSTABLE1: return process()->vmax; case lvUNKNOWN: return process()->unknown; } assert(start != NOT_VALID); assert(end != NOT_VALID); assert(risefall != NOT_VALID); if (_sim->_time0 <= (final_time()-risefall)) { return start; }else if (_sim->_time0 >= final_time()) { untested(); return end; }else{ untested(); return end - ((end-start) * (final_time()-_sim->_time0) / risefall); } } /*--------------------------------------------------------------------------*/ void LOGIC_NODE::propagate() { assert(in_transit()); if (lv().is_rising()) { set_lv(lvSTABLE1); }else if (lv().is_falling()) { set_lv(lvSTABLE0); }else{ // lv no change } set_d_iter(); set_final_time(NEVER); set_last_change_time(); assert(!(in_transit())); } /*--------------------------------------------------------------------------*/ void LOGIC_NODE::force_initial_value(LOGICVAL v) { if (_sim->analysis_is_restore()) {untested(); }else if (_sim->analysis_is_static()) { }else{untested(); } assert(_sim->analysis_is_static() || _sim->analysis_is_restore()); assert(_sim->_time0 == 0.); assert(is_unknown()); assert(is_digital()); set_lv(v); // BUG ?? set_good_quality("initial dc"); set_d_iter(); set_final_time(NEVER); set_last_change_time(); } /*--------------------------------------------------------------------------*/ void LOGIC_NODE::set_event(double delay, LOGICVAL v) { _lv.set_in_transition(v); if (_sim->analysis_is_tran_dynamic() && in_transit()) {untested(); set_bad_quality("race"); } set_d_iter(); set_final_time(_sim->_time0 + delay); if (OPT::picky <= bTRACE) {untested(); error(bTRACE, "%s:%u:%g new event\n", long_label().c_str(), d_iter(), final_time()); } set_last_change_time(); } /*--------------------------------------------------------------------------*/ void node_t::set_to_ground(CARD* d) { //assert(!_nnn); //BUG// fails on MUTUAL_L::expand after clone assert(d); NODE_MAP* Map = d->scope()->nodes(); assert(Map); _nnn = (*Map)["0"]; _ttt = 0; assert(_nnn); } /*--------------------------------------------------------------------------*/ /* new_node: a raw new node, as when a netlist is parsed */ void node_t::new_node(const std::string& node_name, const CARD* d) { //assert(!_nnn); //BUG// fails on MUTUAL_L::expand after clone assert(d); NODE_MAP* Map = d->scope()->nodes(); assert(Map); _nnn = Map->new_node(node_name); _ttt = _nnn->user_number(); assert(_nnn); } /*--------------------------------------------------------------------------*/ /* new_model_node: a mapped new node, produced through model expansion. * Not really a model_node, but a node in the subckt that is made * in model expansion. * Supposedly equivalent to new_node() then map_subckt_node() * but it does it without building a map */ void node_t::new_model_node(const std::string& node_name, CARD* d) { new_node(node_name, d); _ttt = CKT_BASE::_sim->newnode_model(); //assert(_ttt == _nnn->flat_number()); } /*--------------------------------------------------------------------------*/ void node_t::map_subckt_node(int* m, const CARD* d) { assert(m); assert(e_() >= 0); if (node_is_valid(m[e_()])) { _ttt = m[e_()]; }else{ throw Exception(d->long_label() + ": need more nodes"); } //_nnn->set_flat_number(_ttt); assert(node_is_valid(_ttt)); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_paramlist.cc000066400000000000000000000072461316501211100144330ustar00rootroot00000000000000/*$Id: e_paramlist.cc 2016/09/16 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script 2016.09.16 #include "e_paramlist.h" /*--------------------------------------------------------------------------*/ int COMMON_PARAMLIST::_count = -1; /*--------------------------------------------------------------------------*/ bool COMMON_PARAMLIST::operator==(const COMMON_COMPONENT& x)const { const COMMON_PARAMLIST* p = dynamic_cast(&x); bool rv = p && _params == p->_params && COMMON_COMPONENT::operator==(x); return rv; } /*--------------------------------------------------------------------------*/ bool COMMON_PARAMLIST::param_is_printable(int i)const { assert(i < COMMON_PARAMLIST::param_count()); if (i >= COMMON_COMPONENT::param_count()) { return _params.is_printable(COMMON_PARAMLIST::param_count() - 1 - i); }else{ return COMMON_COMPONENT::param_is_printable(i); } } /*--------------------------------------------------------------------------*/ std::string COMMON_PARAMLIST::param_name(int i)const { assert(i < COMMON_PARAMLIST::param_count()); if (i >= COMMON_COMPONENT::param_count()) { return _params.name(COMMON_PARAMLIST::param_count() - 1 - i); }else{untested(); return COMMON_COMPONENT::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string COMMON_PARAMLIST::param_name(int i, int j)const {untested(); assert(i < COMMON_PARAMLIST::param_count()); if (j == 0) {untested(); return param_name(i); }else if (i >= COMMON_COMPONENT::param_count()) {untested(); return ""; }else{untested(); return COMMON_COMPONENT::param_name(i); } } /*--------------------------------------------------------------------------*/ std::string COMMON_PARAMLIST::param_value(int i)const { assert(i < COMMON_PARAMLIST::param_count()); if (i >= COMMON_COMPONENT::param_count()) { return _params.value(COMMON_PARAMLIST::param_count() - 1 - i); }else{untested(); return COMMON_COMPONENT::param_value(i); } } /*--------------------------------------------------------------------------*/ void COMMON_PARAMLIST::precalc_first(const CARD_LIST* Scope) { assert(Scope); COMMON_COMPONENT::precalc_first(Scope); _mfactor = _params.deep_lookup("m"); //BUG// _mfactor must be in precalc_first } /*--------------------------------------------------------------------------*/ void COMMON_PARAMLIST::precalc_last(const CARD_LIST* Scope) { assert(Scope); COMMON_COMPONENT::precalc_last(Scope); for (PARAM_LIST::iterator i = _params.begin(); i != _params.end(); ++i) { i->second.e_val(NOT_INPUT,Scope); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/e_storag.cc000066400000000000000000000170431316501211100137320ustar00rootroot00000000000000/*$Id: e_storag.cc,v 26.132 2009/11/24 04:26:37 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Base class for storage elements of a circuit */ //testing=obsolete,script 2006.06.14 #include "e_storag.h" /*--------------------------------------------------------------------------*/ /* table for selecting local integraton method * Determines which one wins in a conflict. * "only" wins over non-only. local (_method_u) wins over opt. */ // OPT::method _method_u METHOD STORAGE::method_select[meNUM_METHODS][meNUM_METHODS] = { /*vv OPT vv*/ //local>>>EULER,EULERONLY,TRAP,TRAPONLY,GEAR2,GEAR2ONLY,TRAPGEAR,TRAPEULER /*meUNKNOWN*/ {mTRAPGEAR,mEULER,mEULER,mTRAP, mTRAP,mGEAR, mGEAR,mTRAPGEAR,mTRAPEULER}, /*meEULER*/ {mEULER, mEULER,mEULER,mTRAP, mTRAP,mGEAR, mGEAR,mTRAPGEAR,mTRAPEULER}, /*meEULERONLY*/ {mEULER, mEULER,mEULER,mEULER,mTRAP,mEULER,mGEAR,mEULER, mEULER}, /*meTRAP*/ {mTRAP, mEULER,mEULER,mTRAP, mTRAP,mGEAR, mGEAR,mTRAPGEAR,mTRAPEULER}, /*meTRAPONLY*/ {mTRAP, mTRAP, mEULER,mTRAP, mTRAP,mTRAP, mGEAR,mTRAP, mTRAP}, /*meGEAR*/ {mGEAR, mEULER,mEULER,mTRAP, mTRAP,mGEAR, mGEAR,mTRAPGEAR,mTRAPEULER}, /*meGEAR2ONLY*/ {mGEAR, mGEAR, mEULER,mGEAR, mTRAP,mGEAR, mGEAR,mGEAR, mGEAR}, /*meTRAPGEAR*/ {mTRAPGEAR,mEULER,mEULER,mTRAP, mTRAP,mGEAR, mGEAR,mTRAPGEAR,mTRAPEULER}, /*meTRAPEULER*/ {mTRAPEULER,mEULER,mEULER,mTRAP,mTRAP,mGEAR, mGEAR,mTRAPGEAR,mTRAPEULER} }; /*--------------------------------------------------------------------------*/ void STORAGE::precalc_last() { ELEMENT::precalc_last(); set_converged(); assert(!is_constant()); /* because of integration */ _method_a = method_select[OPT::method][_method_u]; //assert(_loss0 == 0.); //assert(_loss1 == 0.); /* m0 and acg are frequency/time dependent and cannot be set here. * If this is a coupled inductor, there is a subckt, which is expanded * by the mutual pseudo-element. * Assigning the values here becomes unnecessary, but harmless. */ } /*--------------------------------------------------------------------------*/ void STORAGE::tr_begin() { ELEMENT::tr_begin(); _method_a = method_select[OPT::method][_method_u]; for (int i = 0; i < OPT::_keep_time_steps; ++i) { _i[i] = FPOLY1(0., 0., 0.); } _m1 = _m0 = CPOLY1(0., 0., 0.); } /*--------------------------------------------------------------------------*/ void STORAGE::tr_restore() { ELEMENT::tr_restore(); _method_a = method_select[OPT::method][_method_u]; } /*--------------------------------------------------------------------------*/ void STORAGE::dc_advance() { ELEMENT::dc_advance(); for (int i = 1; i < OPT::_keep_time_steps; ++i) { _i[i] = _i[0]; } } /*--------------------------------------------------------------------------*/ void STORAGE::tr_advance() { ELEMENT::tr_advance(); for (int i=OPT::_keep_time_steps-1; i>0; --i) { _i[i] = _i[i-1]; } } /*--------------------------------------------------------------------------*/ /* tr_needs_eval: check to see if this device needs to be evaluated * this works, and saves significant time * but possible errors. * Errors do not seem significant, but I can't tell without more data. * To disable: option nolcbypass */ bool STORAGE::tr_needs_eval()const { //assert(!is_q_for_eval()); return (!OPT::lcbypass || !converged() || _sim->is_advance_or_first_iteration() || !conchk(_y[0].x, tr_input(), OPT::abstol) || _sim->uic_now()); } /*--------------------------------------------------------------------------*/ /* differentiate: this is what Spice calls "integrate". * returns an approximation of the time derivative of _q, * where _q is an array of states .. charge for capacitors, flux for inductors. * return value is current for capacitors, volts for inductors. */ FPOLY1 differentiate(const FPOLY1* q, const FPOLY1* i, double* time, METHOD method) { if (CKT_BASE::_sim->analysis_is_static()) { assert(time[0] == 0.); return FPOLY1(q[0].x, 0., 0.); }else if (CKT_BASE::_sim->analysis_is_restore()) { /* leave it alone to restart from a previous solution */ /* it goes this way to continue a transient analysis */ assert(time[0] > 0); return i[0]; }else{ assert(CKT_BASE::_sim->analysis_is_tran_dynamic()); if (time[1] == 0) { method = mEULER; // Bogus current in previous step. Force Euler. }else{ } double dt = time[0] - time[1]; assert(dt > 0.); switch (method) { case mTRAPGEAR: incomplete(); case mGEAR: assert(OPT::_keep_time_steps >= 3); return FPOLY1(q[0].x, (3./2.) * (q[0].f0 - q[1].f0) / dt - (1./2.) * (q[1].f0 - q[2].f0) / (time[1] - time[2]), q[0].f1 * (3./2.) / dt); case mTRAPEULER: incomplete(); case mEULER: assert(OPT::_keep_time_steps >= 2); return FPOLY1(q[0].x, (q[0].f0 - q[1].f0) / dt, q[0].f1 / dt); case mTRAP: assert(OPT::_keep_time_steps >= 2); return FPOLY1(q[0].x, 2 * (q[0].f0 - q[1].f0) / dt - i[1].f0, q[0].f1 * 2 / dt); } unreachable(); return FPOLY1(); } unreachable(); } /*--------------------------------------------------------------------------*/ double STORAGE::tr_c_to_g(double c, double g)const { if (_sim->analysis_is_static()) { assert(_time[0] == 0.); return 0.; }else if (_sim->analysis_is_restore()) {itested(); assert(_time[0] > 0); return g; // no change, fake }else{ assert(_sim->analysis_is_tran_dynamic()); METHOD method; if (_time[1] == 0) { method = mEULER; // Bogus current in previous step. Force Euler. }else{ method = _method_a; } g = c / _dt; switch (method) { case mTRAPGEAR: incomplete(); case mGEAR: g *= 3./2.; break; case mTRAPEULER: incomplete(); case mEULER: /* g *= 1 */ break; case mTRAP: g *= 2; break; } return g; } } /*--------------------------------------------------------------------------*/ TIME_PAIR STORAGE::tr_review() { COMPONENT::tr_review(); // skip ELEMENT if (_method_a == mEULER) { // Backward Euler, no step control, take it as it comes }else{ double timestep = tr_review_trunc_error(_y); _time_by.min_error_estimate(tr_review_check_and_convert(timestep)); } return _time_by; } /*--------------------------------------------------------------------------*/ double STORAGE::tr_probe_num(const std::string& x)const { if (Umatch(x, "method ")) {untested(); return static_cast(_method_a); }else{ return ELEMENT::tr_probe_num(x); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/findbr.cc000066400000000000000000000071501316501211100133710ustar00rootroot00000000000000/*$Id: findbr.cc,v 26.133 2009/11/26 04:58:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * find a branch with matching label * returns the branch pointer */ //testing=script,sparse 2006.07.17 #include "l_lib.h" #include "constant.h" #include "e_cardlist.h" #include "ap.h" #include "e_card.h" /*--------------------------------------------------------------------------*/ /* findbranch: find a matching label, by (ugh) linear search * label to look for is in command line (cmd). * start "here". Look only after "here". * return pointer to next match if exists (and eat input) * pointer to a non-existent branch if no match (don't eat input) * caution: caller must check return value before using */ CARD_LIST::fat_iterator findbranch(CS& cmd, CARD_LIST::fat_iterator here) { unsigned save = cmd.cursor(); char labelwanted[BUFLEN+1]; cmd.ctostr(labelwanted, BUFLEN, TOKENTERM); if (!labelwanted[0]) { // nothing to look for cmd.reset(save); return here.end(); }else{ } char* local_part; // part before last dot, the thing inside char* last_part; // part after last dot, top level { char* dot = strrchr(labelwanted,'.'); if (dot) {itested(); // split the string into 2 parts at the last dot *dot = '\0'; // before is the new "local_part", shortened last_part = dot + 1; // after is the "last_part". local_part = labelwanted; }else{ last_part = labelwanted; local_part = NULL; } } for (;;) { if (here.is_end()) { // at the end of the list - done, fails. cmd.reset(save); return here; }else if (wmatch((**here).short_label(), last_part)) { // last_part matches if (!local_part) { // requested a simple name, found it .. done. return here; }else{untested(); // there are dots, so look inside subckt untested(); if ((**here).subckt()) {untested(); untested(); // has a subckt, and its name matches, doing fine CS want(CS::_STRING, local_part); // recursion CARD_LIST::fat_iterator subbrh=findbranch(want,(**here).subckt()); if (!subbrh.is_end()) {untested(); // found it in a subckt return subbrh; }else{untested(); // didn't find anything in this subckt // keep looking for another with the same name // why? ++here; } }else{untested(); // no subckt // keep looking for something with this name that has a subckt // why? untested(); ++here; } } }else{ // label doesn't match // keep looking for one that does. (linear search) ++here; } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/globals.cc000066400000000000000000000053661316501211100135570ustar00rootroot00000000000000/*$Id: globals.cc,v 26.138 2013/04/24 03:03:11 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * static objects -- construct first, destruct last */ #include "globals.h" #include "u_prblst.h" #include "e_cardlist.h" #include "u_status.h" #include "patchlev.h" /*--------------------------------------------------------------------------*/ // here to make sure they get constructed and destructed in proper order // first construct, last destruct const char* lib_version() { return PATCHLEVEL; } // dispatchers must be constructed before any static objects they contain // and destructed after. RUN_MODE ENV::run_mode = rPRE_MAIN; DISPATCHER command_dispatcher; DISPATCHER bm_dispatcher; DISPATCHER model_dispatcher; DISPATCHER device_dispatcher; DISPATCHER language_dispatcher; DISPATCHER function_dispatcher; DISPATCHER measure_dispatcher; DISPATCHER status_dispatcher; DISPATCHER help_dispatcher; DISPATCHER probe_dispatcher; // for the rest, order should not matter, but it is convenient here CARD_LIST CARD_LIST::card_list; // root circuit // the rest of this should not be here, is residue of old stuff STATUS status; std::string head; /*--------------------------------------------------------------------------*/ /* sweep command. This will go away with a rewrite of looping */ const int swp_nest_max = 1; /* no loop, "future" expansion */ INTERFACE int swp_count[swp_nest_max]; /* sweep counter */ INTERFACE int swp_steps[swp_nest_max]; /* sweep number of steps */ INTERFACE int swp_type[swp_nest_max]; /* type of sweep (log or linear) */ INTERFACE int swp_nest; /* sweep nesting (recursion) level */ /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/io.cc000066400000000000000000000023521316501211100125330ustar00rootroot00000000000000/*$Id: io.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * shared data for all io functions, initialization, default values */ //testing=trivial 2006.07.17 #include "io_.h" OMSTREAM IO::mstdout(stdout); OMSTREAM IO::error(stdout); OMSTREAM IO::plotout; bool IO::plotset(false); int IO::formaat(0); bool IO::incipher(false); lib/io_contr.cc000066400000000000000000000123251316501211100137410ustar00rootroot00000000000000/*$Id: io_contr.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Sets up output direction and format for most commands * updates pointers into the string * outreset starts it all over */ //testing=script,sparse 2006.07.17 #include "io_.h" #include "ap.h" /*--------------------------------------------------------------------------*/ void initio(OMSTREAM&); //static void decipher(char*); void outreset(void); OMSTREAM* outset(CS&,OMSTREAM*); static FILE* file_open(CS&,const char*,const char*,FILE*); /*--------------------------------------------------------------------------*/ static FILE* fn; /* write file */ static FILE* to_pipe; /*--------------------------------------------------------------------------*/ /* initio: initialize file encryption, etc */ void initio(OMSTREAM& Where) { const char* tag = "''''"; if (Where.cipher()) { /* if writing an encrypted file, */ untested(); Where << tag << '\n'; /* mark it as encrypted */ }else{ } #if 0 if (Whence) { char buf[BUFLEN]; if (!fgets(buf, BUFLEN, Whence)) /* if the first line deciphers to */ return; /* the cipher tag, it is encrypted */ IO::incipher = true; /* otherwise, */ decipher(buf); /* rewind and read normally */ if (strcmp(buf,tag) != 0) { /* mismatch */ IO::incipher = false; fseek(Whence,0L,SEEK_SET); } } #endif } /*--------------------------------------------------------------------------*/ #if 0 /* decipher: un-encrypt a line of text in place */ void decipher(char *buf) { untested(); if (IO::incipher) { for ( ; isprint(buf[1]); buf++ ) { int fixed = static_cast(buf[1]) - static_cast(buf[0]); while (!isascii(fixed) || !isprint(fixed)) fixed += (0x7f-0x20); buf[0] = static_cast(fixed); } buf[0] = '\0'; }else{ } } #endif /*--------------------------------------------------------------------------*/ /* outreset: close files and set i/o flags to standard values */ void outreset(void) { if (to_pipe) { untested(); pclose(to_pipe); to_pipe = NULL; }else{ } xclose(&fn); IO::formaat = 0; IO::incipher = false; IO::mstdout.reset(); } /*--------------------------------------------------------------------------*/ /* outset: set up i/o for a command * return whether or not it did anything */ OMSTREAM* outset(CS& cmd, OMSTREAM* out) { bool echo = false; for (;;) { if (cmd.umatch("basic ")) { IO::formaat = ftos_EXP; (*out).setformat(ftos_EXP); }else if (cmd.umatch("cipher ")) {untested(); (*out).setcipher().setpack(); }else if (cmd.umatch("pack ")) {itested(); (*out).setpack(); }else if (cmd.umatch("quiet ")) {itested(); echo = false; (*out).detach(IO::mstdout); }else if (cmd.umatch("echo ") || cmd.umatch("list ")) {itested(); echo = true; (*out).attach(IO::mstdout); }else if (cmd.umatch("save ")) {itested(); fn = file_open(cmd,"","w",fn); (*out).attach(fn); }else if (cmd.umatch("\\|")) {untested(); // open a pipe std::string command; cmd >> command; to_pipe = popen(command.c_str(), "w"); assert(to_pipe); (*out).attach(to_pipe); IO::formaat = ftos_EXP; (*out).setformat(ftos_EXP); if (!echo) {untested(); (*out).detach(IO::mstdout); }else{untested(); } }else if (cmd.umatch(">")) {itested(); // open a file for write or append const char *rwaflag; rwaflag = (cmd.umatch(">")) ? "a" : "w"; fn = file_open(cmd,"",rwaflag,fn); (*out).attach(fn); IO::formaat = ftos_EXP; (*out).setformat(ftos_EXP); if (!echo) {itested(); (*out).detach(IO::mstdout); }else{untested(); } }else{ break; } } return out; } /*--------------------------------------------------------------------------*/ /* file_open: a different interface for xopen */ static FILE *file_open( CS& cmd, const char *ext, const char *rwaflag, FILE *fileptr) {itested(); xclose(&fileptr); fileptr = xopen(cmd,ext,rwaflag); if (!fileptr) {itested(); throw Exception_File_Open(""); }else{itested(); } return fileptr; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/io_error.cc000066400000000000000000000060661316501211100137520ustar00rootroot00000000000000/*$Id: io_error.cc,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Error handler. * Collection of functions to handle all types of errors * including user interrupts, system errors, overflow, etc. */ //testing=script,sparse 2006.07.17 #include "ap.h" #include "u_opt.h" /*--------------------------------------------------------------------------*/ void error(int,const char*,...); void error(int,const std::string&); /*--------------------------------------------------------------------------*/ #if 0 Exception_CS::Exception_CS(const std::string& Message, const CS& cmd, unsigned cursor) :Exception(Message), _cmd(cmd.fullstring()), _cursor(cursor) {untested(); } #endif /*--------------------------------------------------------------------------*/ Exception_CS::Exception_CS(const std::string& Message, const CS& cmd) :Exception(Message), _cmd(cmd.fullstring()), _cursor(cmd.cursor()) {itested(); } /*--------------------------------------------------------------------------*/ const std::string Exception_CS::message()const {itested(); std::string s; if (_cursor < 40) {itested(); s = _cmd.substr(0,60) + '\n' + std::string(_cursor, ' ') + "^ ? " + Exception::message(); }else{untested(); s = "... " + _cmd.substr(_cursor-36, 56) + "\n ^ ? " + Exception::message(); } return s; } /*--------------------------------------------------------------------------*/ /* error: error message printer * print it, if severe enough * terminate command, if really bad */ void error(int badness, const char* fmt, ...) { if (badness >= OPT::picky) { char buffer[BIGBUFLEN] = ""; va_list arg_ptr; va_start(arg_ptr,fmt); vsprintf(buffer,fmt,arg_ptr); va_end(arg_ptr); IO::error << buffer; }else{ } } /*--------------------------------------------------------------------------*/ void error(int badness, const std::string& message) { if (badness >= OPT::picky) { IO::error << message; }else{ } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/io_findf.cc000066400000000000000000000052361316501211100137050ustar00rootroot00000000000000/*$Id: io_findf.cc 2016/05/15 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Modified by AD. Sent to me by C-WARE * This file contains the routine to locate a file, * using a path string for the directories to search. * Interface: * findfile(filename, paths, mode) * filename is the name of the file to be searched for, * paths is the path to follow to find it. * mode is how you want to open the file * returns full path name, if successful, else "". * * PATHSEP, ENDDIR are system dependent, defined in md.h */ //testing=script,complete 2017.03.12 #include "l_lib.h" /*--------------------------------------------------------------------------*/ INTERFACE std::string findfile(const std::string& filename, const std::string& path, int mode) { #ifdef CHECK_LOCAL_FIRST if (OS::access_ok(filename, mode)) {untested(); return filename; }else{untested(); } #endif // for each item in the path for (std::string::const_iterator p_ptr=path.begin(); p_ptr!=path.end(); ++p_ptr) { // p_ptr changed internally ^^^^^ skip sep std::string target = ""; while (*p_ptr != PATHSEP && p_ptr != path.end()) { // copy 1 path item target += *p_ptr++; } if (!target.empty() && !strchr(ENDDIR,p_ptr[-1])) { target += *ENDDIR; // append '/' if needed }else{ } target += filename; if (OS::access_ok(target, mode)) { // found it return target; }else if (p_ptr==path.end()) { // ran out of path, didn't find it return ""; }else{ // else try again } } return ""; // path doesn't exist - didn't go thru loop at all } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/io_out.cc000066400000000000000000000147041316501211100134260ustar00rootroot00000000000000/*$Id: io_out.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * output text to files, devices, or whatever * m???? = multiple output to a bunch of io devices. * with character count (so tab will work) * Will start a new line first if the entire output will not fit. * so wrap will not break a word or number. * Where is a bit mask of places to send the output. * A possible portability problem exists with the handle numbers. * It assumes they start at 0, and count up, and that there are no more than * the number of bits in an integer (MAXHANDLE). * but I have yet to find a system that did not meet this form. */ //testing=script,sparse 2006.07.17 #include "u_opt.h" /*--------------------------------------------------------------------------*/ const char* octal(int x); // OMSTREAM & OMSTREAM::tab(int count) // OMSTREAM & OMSTREAM::form(const char*,...); // OMSTREAM & OMSTREAM::operator<<(const char *str) // OMSTREAM & OMSTREAM::operator<<(char chr) /*--------------------------------------------------------------------------*/ FILE* OMSTREAM::_stream[MAXHANDLE+1]; unsigned OMSTREAM::_cpos[MAXHANDLE+1]; /* character counter */ /*--------------------------------------------------------------------------*/ /* octal: make octal string for an int */ const char* octal(int x) { static char s[sizeof(int)*3+1]; sprintf(s, "%o", x); return s; } /*--------------------------------------------------------------------------*/ /* mtab: tab to column "count" on output devices "where" * by outputting spaces. * If already beyond, start new line, then tab to column. */ OMSTREAM & OMSTREAM::tab(unsigned count) { for (int ii=0, mm=1; ii<=MAXHANDLE; ++ii, mm<<=1) { if (_mask & mm) { OMSTREAM this_file(_mask & mm); if (_cpos[ii] > count) { this_file << '\n'; }else{ } while (_cpos[ii]= OPT::outwidth && _cpos[ii] != 0) { OMSTREAM this_file(_mask & mm); this_file << '\n' << '+'; }else{ } /* see if it fits .... */ if (_cpos[ii]==0) { /* if not, next line */ newline = true; }else{ } } if (cipher() && newline) {untested(); *this << '\t'; }else{ } while (*str && (str[1] || *str != '@')) { *this << *str++; } return *this; } /*--------------------------------------------------------------------------*/ /* mputc: multiple putc * multiple putc * also.... * crunch spaces, if selected * encripts, if selected * keeps track of character count */ OMSTREAM & OMSTREAM::operator<<(char chr) { if (_mask & 1) { unreachable(); _mask &= ~1; error(bDANGER, "internal error: out to stdin\n"); }else{ } static int old = '\0'; static int cchr = 'w'; /* starting encryption seed */ /* arbitrary printable character */ bool count; if (chr=='\t') {itested(); chr = ' '; count = false; }else{ count = true; } bool suppress = (pack() && old==' ' && chr==' '); old = chr; if (cipher() && !suppress && isprint(chr)) {untested(); cchr += static_cast(chr); while (!isascii(cchr) || !isprint(cchr)) {untested(); cchr -= (0x7f-0x20); } chr = static_cast(cchr); }else{ } for (int ii=0, mm=1; ii<=MAXHANDLE; ++ii, mm<<=1) { if (_mask & mm) { assert(_stream[ii]); if (chr=='\b') {untested(); --_cpos[ii]; fflush(_stream[ii]); }else if (count) { ++_cpos[ii]; }else{itested(); } if (chr=='\n') { _cpos[ii] = 0; fflush(_stream[ii]); }else if (chr=='\r') {itested(); if (_cpos[ii] == 0) {untested(); suppress = true; }else{itested(); _cpos[ii] = 0; fflush(_stream[ii]); } }else{ } if (!suppress) { fputc(chr,_stream[ii]); }else{itested(); } }else{ } } return *this; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/io_xopen.cc000066400000000000000000000075751316501211100137600ustar00rootroot00000000000000/*$Id: io_xopen.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * scan a string for a file name * fill in extension, if necessary * open file */ //testing=script,sparse 2006.07.17 #include "u_opt.h" #include "constant.h" #include "ap.h" /*--------------------------------------------------------------------------*/ void xclose(FILE**); FILE* xopen(CS&,const char*,const char*); /*--------------------------------------------------------------------------*/ void xclose(FILE **fn) { if (*fn) { fclose(*fn); *fn = NULL; } } /*--------------------------------------------------------------------------*/ /* xopen: open a file from a command string * scan and eat up the name from the command * add default extension if appropriate * if there is no name, prompt for one * trap errors of not found and clobber */ FILE *xopen(CS& cmd, const char *ext, const char *how) { char fname[BIGBUFLEN]; cmd.skipbl(); if (cmd.is_end()) {untested(); cmd = getcmd("file name? ",fname, BIGBUFLEN); } /* copy the name */ cmd.skipbl(); /* and while we're at it ... */ { /* find out if we want to add the */ bool defalt = true; /* default extension */ size_t i; for (i = 0; i < BIGBUFLEN; ) { char c = cmd.ctoc(); if (!c || isspace(c)) { break; } if (c == '$') {untested(); sprintf(&(fname[i]), "%ld", static_cast(time(0))); i = strlen(fname); }else{ /* we want to add the extension */ fname[i++] = c; /* if it doesn't already have one, */ if (c == '.') { /* as determined by a '.' */ defalt = false; /* not before the directory */ }else if (strchr(ENDDIR,c)) { /* separator-terminator character */ itested(); defalt = true; /* '\' or '/' for msdos, */ } } /* ']' or '/' for vms, */ } /* '/' for unix (in ENDDIR) */ cmd.skip(-1); if (defalt && ext && *ext && i+strlen(ext)+2 < BIGBUFLEN) {untested(); fname[i++] = '.'; /* add the extension (maybe) */ strcpy(&fname[i],ext); }else{ fname[i] = '\0'; } } trim(fname); if (strlen(fname)==0) { return NULL; } cmd.skipcom(); FILE *code = NULL; /* a file pointer for the file we found */ if (!OPT::clobber && (*how == 'w') && (access(fname,F_OK) == FILE_OK)) {untested(); char buffer[BUFLEN]; std::string msg = std::string(fname) + " exists. replace? "; getcmd(msg.c_str(), buffer, BUFLEN); if (Umatch(buffer,"y{es} ")) {untested(); /* should be new file, but */ code = fopen(fname,how); /* file already exists, ask */ }else{untested(); return NULL; } }else{ code = fopen(fname,how); } if (code) { }else{itested(); error(bWARNING, "can't open %s, %s\n", fname, strerror(errno)); } return code; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/l_ftos.cc000066400000000000000000000177201316501211100134170ustar00rootroot00000000000000/*$Id: l_ftos.cc 2016/09/21 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * float to string * builds string representing floating number * num = number to convert. * str = string to put it in. Must be big enough, or else!! * Must have length at least len+6. * sig digits + dec.pt.(1) + sign(1) + exp(4) * len = max number of displayed digits. (left + right of dp) * (includes d.p. if 'e' notation and 2 digit exp) * fmt = format : 0 = alpha for exp notation * FMTEXP = exponential notation * FMTSIGN = always inlcude sign * FMTFILL = fill in zeros * //BUG// * returns a pointer to static space where the string is. * there is a finite pool, so repeated calls work, to a point. * after that, the space is overwritten, every POOLSIZE calls */ //testing=script 2005.10.11 #include "l_lib.h" #include "constant.h" /*--------------------------------------------------------------------------*/ char* ftos(double,int,int,int); /*--------------------------------------------------------------------------*/ const int POOLSIZE = 100; const int MAXLENGTH = 40; static double ftos_floor = 1e-99; /*--------------------------------------------------------------------------*/ std::string to_string(unsigned n) { char s[100]; sprintf(s, "%u", n); return s; } /*--------------------------------------------------------------------------*/ std::string to_string(int n) { char s[100]; sprintf(s, "%d", n); return s; } /*--------------------------------------------------------------------------*/ std::string to_string(double n) { return ftos(n, 0, 15, 0); } /*--------------------------------------------------------------------------*/ char* ftos(double num, int fieldwidth, int len, int fmt) // num = number to convert // fieldwidth = size for fixed width, 0 for variable width // len = max length of new string // fmt = how to format it { if (len < 3) { untested(); len = 3; } if (len > MAXLENGTH-6) { untested(); len = MAXLENGTH-6; } if (fieldwidth > MAXLENGTH-1) { untested(); fieldwidth = MAXLENGTH-1; } char *str; { /* get a buffer from the pool */ //BUG// It is possible to have too many buffers active // then the extras are overwritten, giving bad output // There are no known cases, but it is not checked. static char strpool[POOLSIZE][MAXLENGTH]; static int poolindex = 0; ++poolindex; if (poolindex >= POOLSIZE) { poolindex = 0; } str = strpool[poolindex]; } { /* build a clean blank string */ int string_size = std::max(fieldwidth, len+6); for (int iii=0; iii::infinity()) { untested(); strncpy(str," Over", 5); }else if (num == -std::numeric_limits::infinity()) { untested(); strncpy(str,"-Over", 5); }else if (num == std::numeric_limits::quiet_NaN()) { untested(); strncpy(str," NaN", 4); }else if (num == std::numeric_limits::signaling_NaN()) { untested(); strncpy(str," NaN", 4); }else #endif if (num == NOT_VALID) { strncpy(str," ??", 3); }else if (num == NOT_INPUT) { strncpy(str," NA", 3); }else if (num >= BIGBIG) { strncpy(str," Inf", 4); }else if (num <= -BIGBIG) { strncpy(str,"-Inf", 4); }else if (num != num) { strncpy(str," NaN", 4); }else{ if (std::abs(num) < ftos_floor) { /* hide noise */ num = 0.; } int expo = 0; /* exponent */ int nnn = 0; /* char counter -- pos in string */ if (num == 0.) { strcpy(str, " 0."); nnn = static_cast(strlen(str)); /* num==0 .. build string 0.000... */ while (--len) { str[nnn++] = '0'; } assert(expo == 0); }else{ /* num != 0 */ { // insert sign if (num < 0.) { str[0] = '-'; num = -num; }else if (fmt & ftos_SIGN) { untested(); str[0] = '+'; }else{ assert(str[0] == ' '); } } { // scale to .001 - 1.0. adjust expo. expo = -3; while (num < .001) { num *= 1000.; expo -= 3; } while (num >= 1.) { num *= .001; expo += 3; } } { // adjust len to compensate for length of printed exponent if ((fmt&ftos_EXP && expo<-9) || expo>10 || expo<-16) { --len; /* one less digit if 'e' notation */ } /* and exp is 2 digits */ if (len < 3) { untested(); ++len; } } { // round to correct number of digits double rnd = .5 / pow(10., len); /* find amt to add to round */ if (num < .01) { rnd /= 100.; }else if (num < .1) { rnd /= 10.; } num += rnd; /* add it */ if (num >= 1.) { num *= .001; /* created an extra digit: rescale */ expo += 3; } } { // build mantissa nnn = 1; if (expo == -3) { /* .001 is preferable to 1e-3 */ int flg = 0; /* print in fixed point, no exponent*/ expo = 0; str[nnn++] = '0'; str[nnn++] = '.'; while (len > 0) { num *= 10.; int digit = static_cast(floor(num)); num -= static_cast(digit); str[nnn++] = static_cast(digit + '0'); if ((flg += digit)) { --len; } } }else{ int flg = 0; for (int iii=2; len>0; --iii) {/* mantissa */ num *= 10.; /* get next digit */ int digit = static_cast(floor(num)); num -= static_cast(digit);/* subtract off last digit */ if ((flg += digit)) { /* if int part !=0 */ str[nnn++]=static_cast(digit+'0');/*(not all zeros so far)*/ --len; /* stuff the digit into the string */ } if (iii==0) { /* if we found the dec.pt. and */ str[nnn++] = '.'; /* haven't used up all the space */ } /* put a dec.pt. in the string */ } } } } assert(nnn > 0); assert(str[nnn] == ' ' || str[nnn] == '\0'); { // suppress trailing zeros if (!(fmt&ftos_FILL)) { while (str[--nnn]=='0') { str[nnn] = static_cast((nnn < fieldwidth) ? ' ' : '\0'); } ++nnn; }else{ untested(); } } { // append exponent if (expo == 0) { // nothing; }else if (fmt&ftos_EXP || expo>10 || expo<-16) {/* exponential format */ char c = str[nnn+4]; sprintf(&str[nnn], ((expo < 100) ? "E%+-3d" : "E%3u"), expo); nnn+=4; str[nnn++] = c; }else{ /* if letter-scale format */ str[nnn++] = "fpnum KMGT"[(expo+15)/3];/* put the appropriate letter*/ } /* note that letter-scale is not valid */ /* for exp==-3 or exp not in -15..+12 */ /* this is trapped but letter-scale is also */ /* not valid if exp not divisible by 3. */ /* This is not trapped, since it supposedly */ /* cant happen. */ if (str[nnn-1] == 'M') { str[nnn++] = 'e'; /* Spice kluge "MEG" */ str[nnn++] = 'g'; } } } { // clean up trailing blanks if (fieldwidth==0) { trim(str); } } return str; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/l_pmatch.cc000066400000000000000000000035711316501211100137170ustar00rootroot00000000000000/*$Id: l_pmatch.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * string compare * compares characters until end of first string * any non-alpha character is a terminator * returns offset into string to legal start of next token * (skips trailing spaces and comma, if any) * if they match so far, and enough matched, else NO (0) * Characters in reference string in UPPER case must match. * Always requires at least one character to match. */ //testing=script,complete 2006.07.13 #include "ap.h" #include "l_lib.h" /*--------------------------------------------------------------------------*/ bool Umatch(const std::string& str1, const std::string& str2) { CS cmd(CS::_STRING, str1); //call to CS member on string if (cmd.umatch(str2)) { return true; }else{ return 0; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/l_timer.cc000066400000000000000000000075071316501211100135660ustar00rootroot00000000000000/*$Id: l_timer.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Time a command, or whatever */ //testing=script,sparse 2006.07.13 #include "l_timer.h" /*--------------------------------------------------------------------------*/ // TIMER::TIMER(); // TIMER::TIMER(const char*); // TIMER& TIMER::fullreset(); // TIMER& TIMER::reset(); // TIMER& TIMER::start(); // TIMER& TIMER::stop(); // TIMER& TIMER::check(); // TIMER& TIMER::print(); // TIMER& TIMER::operator=(const TIMER&); TIMER operator-(const TIMER&,const TIMER&); /*--------------------------------------------------------------------------*/ inline double run_time() { return static_cast(clock()) / static_cast(CLOCKS_PER_SEC); } /*--------------------------------------------------------------------------*/ TIMER::TIMER() { fullreset(); } /*--------------------------------------------------------------------------*/ TIMER::TIMER(const std::string& label) :_name(label) { fullreset(); } /*--------------------------------------------------------------------------*/ TIMER& TIMER::fullreset() { _total = 0.; return reset(); } /*--------------------------------------------------------------------------*/ TIMER& TIMER::reset() { _last = 0.; _ref = 0.; _running = false; return *this; } /*--------------------------------------------------------------------------*/ TIMER& TIMER::start() { assert(!_running); if (_running) { untested(); stop(); } _ref = run_time(); _running = true; return *this; } /*--------------------------------------------------------------------------*/ TIMER& TIMER::stop() { if (_running) { double runtime = run_time() - _ref; _ref = 0.; _last += runtime; _total += runtime; _running = false; } return *this; } /*--------------------------------------------------------------------------*/ TIMER& TIMER::check() { itested(); if (_running) { itested(); stop(); start(); }else{ untested(); } return *this; } /*--------------------------------------------------------------------------*/ TIMER& TIMER::print(OMSTREAM& s) { s.form("%10s %8.2f %8.2f\n", _name.c_str(), _last, _total); return *this; } /*--------------------------------------------------------------------------*/ TIMER& TIMER::operator=(const TIMER& x) { _last = x._last; _ref = x._ref; _total = x._total; _running = x._running; // but don't copy the name return *this; } /*--------------------------------------------------------------------------*/ TIMER operator-(const TIMER& x, const TIMER& y) { TIMER z("temp"); z._last = x._last - y._last; z._ref = 0.; // when did the difference start running? z._total = x._total - y._total; z._running = false; // but don't copy the name return z; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/l_trim.cc000066400000000000000000000031341316501211100134110ustar00rootroot00000000000000/*$Id: l_trim.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * remove whitespace from the end of strings */ //testing=script,complete 2006.07.13 #include #include /*--------------------------------------------------------------------------*/ char* trim(char*); /*--------------------------------------------------------------------------*/ char* trim(char *string) { size_t idx = strlen(string); while (idx > 0 && !isgraph(string[--idx])) { string[idx] = '\0' ; } return string; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/l_wmatch.cc000066400000000000000000000052251316501211100137240ustar00rootroot00000000000000/*$Id: l_wmatch.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * wmatch: string match with wild cards * s1 may have wild cards: ? any character matches; * any repeated 0 or more * returns true or false * normally not case sensitive, * but \ before any letter in s1 forces exact match * recursive */ //testing=script 2006.07.13 #include #include "u_opt.h" #include "l_lib.h" /*--------------------------------------------------------------------------*/ static char fix_case(char c) { return ((OPT::case_insensitive) ? (static_cast(tolower(c))) : (c)); } /*--------------------------------------------------------------------------*/ bool wmatch_by_ptr(const char *s2, const char *s1) { if (!*s2 && !*s1) { // both end together -- match return true; }else if (!*s2 || !*s1) { // ends don't match return false; }else if (fix_case(*s2) == fix_case(*s1)) { // one char matches - move on return wmatch_by_ptr(s2+1, s1+1); }else if (*s1 == '?') { // ? wild card match - move on return wmatch_by_ptr(s2+1, s1+1); }else if (*s1 == '*') { // * (repeat) wild card match if (wmatch_by_ptr(s2+1, s1)) { // match 1, try for 2 return true; }else if (wmatch_by_ptr(s2, s1+1)) {itested(); // match 0 - continue return true; }else{ // match 1, only 1 return wmatch_by_ptr(s2+1, s1+1); } }else{ // mismatch return false; } } /*--------------------------------------------------------------------------*/ bool wmatch(const std::string& s1,const std::string& s2) { return wmatch_by_ptr(s1.c_str(), s2.c_str()); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_base_in.cc000066400000000000000000000070501316501211100140400ustar00rootroot00000000000000/*$Id: m_base_in.cc,v 26.125 2009/10/15 20:58:21 al Exp $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script,sparse 2009.08.13 #include "m_base.h" /*--------------------------------------------------------------------------*/ void Float::parse(CS& File) { if (File >> "NA") { _data = NOT_INPUT; }else{ unsigned here = File.cursor(); File >> _data; if (File.stuck(&here)) {untested(); _data = NOT_INPUT; }else{ } } } /*--------------------------------------------------------------------------*/ void Name_String::parse(CS& File) { File.skipbl(); _data = ""; if (File.is_pfloat()) { while (File.is_pfloat()) { _data += File.ctoc(); } if (File.match1("eE")) { _data += File.ctoc(); if (File.match1("+-")) { _data += File.ctoc(); }else{ } while (File.is_digit()) { _data += File.ctoc(); } }else{ } while (File.is_alpha()) { _data += File.ctoc(); } }else{ while (File.is_alpha() || File.is_pfloat() || File.match1("_[]")) { _data += File.ctoc(); } } File.skipbl(); } /*--------------------------------------------------------------------------*/ void Quoted_String::parse(CS& File) {untested(); File.skipbl(); unsigned here = File.cursor(); char quote = File.ctoc(); _data = ""; for (;;) {untested(); if (File.skip1(quote)) {untested(); break; }else if (!File.more()) {untested(); File.warn(0, "end of file in quoted string"); File.warn(0, here, "string begins here"); break; }else{untested(); _data += File.ctoc(); } } File.skipbl(); } /*--------------------------------------------------------------------------*/ void Tail_String::parse(CS& File) {untested(); // c_str static char end_marks[] = "\n"; const char* begin = File.tail().c_str(); File.skipto1(end_marks); const char* end = File.tail().c_str(); assert(end >= begin); while ((--end >= begin) && (isspace(*end))) {untested(); } ++end; assert(end >= begin); _data = std::string(begin, static_cast(end-begin)); } /*--------------------------------------------------------------------------*/ #if 0 void Text_Block::parse(CS& File) {untested(); // c_str const char* begin = File.tail().c_str(); for (;;) {untested(); File.skipto1("\n").skip(); if (File.peek() == '[') {untested(); break; }else{untested(); } } const char* end = File.tail().c_str(); _data = std::string(begin, static_cast(end-begin)); } #endif /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_base_math.cc000066400000000000000000000040571316501211100143670ustar00rootroot00000000000000/*$Id: m_base_math.cc,v 26.114 2009/08/13 16:32:53 al Exp $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ */ //testing=script 2009.08.13 #include "m_base.h" /*--------------------------------------------------------------------------*/ std::string new_name() {untested(); static int c = 0; char s[30]; sprintf(s, "EX%04u", ++c); return s; } /*--------------------------------------------------------------------------*/ Base* Base::logic_not()const { if (to_bool()) { return new Float(0.); }else{untested(); return new Float(1.); } } /*--------------------------------------------------------------------------*/ Base* Base::logic_or(const Base* X)const { if ((to_bool()) || (X && X->to_bool())) { return new Float(1.); }else{ return new Float(0.); } } /*--------------------------------------------------------------------------*/ Base* Base::logic_and(const Base* X)const { if (!to_bool() || !X || !X->to_bool()) { return new Float(0.); }else{ return new Float(1.); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_expression_dump.cc000066400000000000000000000077721316501211100156770ustar00rootroot00000000000000/*$Id: m_expression_dump.cc,v 26.115 2009/08/17 22:49:30 al Exp $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Reconstructs an infix expression from the RPN. */ //testing=script,sparse 2009.08.12 #include "m_expression.h" /*--------------------------------------------------------------------------*/ void Token::dump(std::ostream& out)const {itested(); out << _name << ' '; } /*--------------------------------------------------------------------------*/ void Expression::dump(std::ostream& out)const { std::vector locals; // a way of faking garbage collection. std::vector stack; // actually use this // The _list is the expression in RPN. // Un-parse it -- back to infix. for (const_iterator i = begin(); i != end(); ++i) { if (dynamic_cast(*i)) { stack.push_back(*i); }else if (dynamic_cast(*i)) { // pop*n push bool been_here = false; std::string tmp(")"); for (;;) { if (stack.empty()) {untested(); throw Exception("bad expression"); }else{ } const Token* t = stack.back(); stack.pop_back(); if (dynamic_cast(t)) { tmp = "(" + tmp; break; }else if (dynamic_cast(t)) { if (been_here) { tmp = ", " + tmp; }else{ been_here = true; } tmp = t->full_name() + tmp; }else{ unreachable(); } } Token* t = new Token_PARLIST(tmp); locals.push_back(t); stack.push_back(t); }else if (dynamic_cast(*i)|| dynamic_cast(*i)) { if (!stack.empty() && (dynamic_cast(stack.back()))) { // has parameters (table or function) // pop op push const Token* t1 = stack.back(); stack.pop_back(); Token* t = new Token_SYMBOL((**i).name(), t1->full_name()); locals.push_back(t); stack.push_back(t); }else{ // has no parameters (scalar) stack.push_back(*i); } }else if (dynamic_cast(*i)) { // pop pop op push assert(!stack.empty()); const Token* t2 = stack.back(); stack.pop_back(); assert(!stack.empty()); const Token* t1 = stack.back(); stack.pop_back(); std::string tmp('(' + t1->full_name() + ' ' + (**i).name() + ' ' + t2->full_name() + ')'); Token* t = new Token_SYMBOL(tmp, ""); locals.push_back(t); stack.push_back(t); }else if (dynamic_cast(*i)) { // pop op push assert(!stack.empty()); const Token* t1 = stack.back(); stack.pop_back(); std::string tmp('(' + (**i).name() + ' ' + t1->full_name() + ')'); Token* t = new Token_SYMBOL(tmp, ""); locals.push_back(t); stack.push_back(t); }else{ unreachable(); } } if (stack.empty()) {untested(); out << "empty"; }else{ out << stack.back()->full_name(); assert(stack.size() == 1); } while (!locals.empty()) { delete locals.back(); locals.pop_back(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_expression_in.cc000066400000000000000000000137261316501211100153340ustar00rootroot00000000000000/*$Id: m_expression_in.cc,v 26.115 2009/08/17 22:49:30 al Exp $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Classic recursive descent parser. * Builds a RPN representation in _list. * Numbers stay as strings. * * BNF: * arglisttail : "," expression arglisttail * | nothing * arglist : "(" expression arglisttail ")"; * | "(" ")" * | nothing * leaf : name arglist * factor : unary "(" expression ")" * | unary leaf * termtail : "*" factor termtail * | "/" factor termtail * | nothing * term : factor termtail * addexptail : "+" term addexptail * | "-" term addexptail * | nothing * addexp : term addexptail * logicaltail : "<" addexp logicaltail * | ">" addexp logicaltail * | "<=" addexp logicaltail * | ">=" addexp logicaltail * | "==" addexp logicaltail * | "!=" addexp logicaltail * | nothing * logical : addexp logicaltail * andtail : "&&" logical andtail * | nothing * andarg : logical andtail * exptail : "||" andarg exptail * | nothing * expression : andarg exptail */ //testing=script 2009.08.12 #include "m_expression.h" /*--------------------------------------------------------------------------*/ void Expression::arglisttail(CS& File) { if (File.skip1b(",")) { expression(File); arglisttail(File); }else{ } } /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void Expression::arglist(CS& File) { if (File.skip1b("(")) { push_back(new Token_STOP("(")); if (!File.skip1b(")")) { expression(File); arglisttail(File); if (!File.skip1b(")")) {itested(); throw Exception_CS("unbalanced parentheses (arglist)", File); }else{ } }else{ } push_back(new Token_PARLIST(")")); }else{ } } /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void Expression::leaf(CS& File) { #if 0 if (File.peek() == '"') {untested(); Quoted_String name(File); push_back(new Token_SYMBOL(name, "")); // do not put constants in symbol table } // else #endif unsigned here = File.cursor(); Name_String name(File); if (!File.stuck(&here)) { arglist(File); push_back(new Token_SYMBOL(name, "")); }else{itested(); throw Exception_CS("what's this?", File); } } /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ void Expression::factor(CS& File) { Token* t = 0; if (File >> "-|+|!") { std::string name(File.last_match()); t = new Token_UNARY(name); }else{ } if (File.skip1b("(")) { expression(File); if (!File.skip1b(")")) {untested(); throw Exception_CS("unbalanced parentheses (factor)", File); }else{ } }else{ leaf(File); } if (t) { push_back(t); }else{ } } /*--------------------------------------------------------------------------*/ void Expression::termtail(CS& File) { if (File >> "*|/") { std::string name(File.last_match()); factor(File); push_back(new Token_BINOP(name)); termtail(File); }else{ } } /*--------------------------------------------------------------------------*/ void Expression::term(CS& File) { factor(File); termtail(File); } /*--------------------------------------------------------------------------*/ void Expression::addexptail(CS& File) { if (File >> "+|-") { std::string name(File.last_match()); term(File); push_back(new Token_BINOP(name)); addexptail(File); }else{ } } /*--------------------------------------------------------------------------*/ void Expression::addexp(CS& File) { term(File); addexptail(File); } /*--------------------------------------------------------------------------*/ void Expression::logicaltail(CS& File) { if (File >> "<=|<|>=|>|==|!=") { std::string name(File.last_match()); addexp(File); push_back(new Token_BINOP(name)); logicaltail(File); }else{ } } /*--------------------------------------------------------------------------*/ void Expression::logical(CS& File) { addexp(File); logicaltail(File); } /*--------------------------------------------------------------------------*/ void Expression::andtail(CS& File) { if (File >> "&&") { std::string name(File.last_match()); logical(File); push_back(new Token_BINOP(name)); andtail(File); }else{ } } /*--------------------------------------------------------------------------*/ void Expression::andarg(CS& File) { logical(File); andtail(File); } /*--------------------------------------------------------------------------*/ void Expression::exptail(CS& File) { if (File >> "\\|\\|") { // "||" std::string name(File.last_match()); andarg(File); push_back(new Token_BINOP(name)); exptail(File); }else{ } } /*--------------------------------------------------------------------------*/ void Expression::expression(CS& File) { andarg(File); exptail(File); } /*--------------------------------------------------------------------------*/ void Expression::parse(CS& File) { expression(File); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_expression_reduce.cc000066400000000000000000000216271316501211100161740ustar00rootroot00000000000000/*$Id: m_expression_reduce.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2003 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Constructs a simplified (reduced) version of an expression. * Incomplete: * Expressions in arg-lists print as ####false#### * Not sure what should happen when expression is empty */ //testing=script,sparse 2009.08.12 #include "globals.h" #include "u_function.h" #include "u_parameter.h" /*--------------------------------------------------------------------------*/ Token* Token_BINOP::op(const Token* T1, const Token* T2)const { assert(T1); assert(T2); assert(dynamic_cast(T1)); assert(dynamic_cast(T2)); assert(T1->data()); assert(T2->data()); // not "or" operator, both ops exist -- do it Base* b = 0; if (name() == "*") { b = (T1->data())->multiply(T2->data()); }else if (name() == "+") { b = (T1->data())->add(T2->data()); }else if (name() == "-") { b = (T1->data())->subtract(T2->data()); }else if (name() == "/") { b = (T1->data())->divide(T2->data()); }else if (name() == "==") { b = (T1->data())->equal(T2->data()); }else if (name() == "!=") { b = (T1->data())->not_equal(T2->data()); }else if (name() == "<") { b = (T1->data())->less(T2->data()); }else if (name() == ">") { b = (T1->data())->greater(T2->data()); }else if (name() == "<=") { b = (T1->data())->leq(T2->data()); }else if (name() == ">=") { b = (T1->data())->geq(T2->data()); }else if (name() == "||") { b = (T1->data())->logic_or(T2->data()); }else if (name() == "&&") { b = (T1->data())->logic_and(T2->data()); }else{ // op (name()) not one of those listed unreachable(); return NULL; } if (b) { if (T1->aRgs() == "") { }else{untested(); } if (T2->aRgs() == "") { }else{untested(); } return new Token_CONSTANT(b->val_string(), b, (T1->aRgs()+T2->aRgs())); }else{ // can get here if either T1 or T2 has no data return new Token_CONSTANT("false", NULL, ""); } } /*--------------------------------------------------------------------------*/ Token* Token_UNARY::op(const Token* T1)const { assert(T1); assert(dynamic_cast(T1)); assert(T1->data()); const Base* b = 0; if (name() == "-") { b = (T1->data())->minus(); }else if (name() == "+") { b = (T1->data())->plus(); }else if (name() == "!") { b = (T1->data())->logic_not(); }else{ // op (name()) not one of those listed unreachable(); return NULL; } if (b) { if (T1->aRgs() == "") { }else{untested(); } return new Token_CONSTANT(b->val_string(), b, (T1->aRgs())); }else{untested(); // can get here if T1 has no data return new Token_CONSTANT("false", NULL, ""); } } /*--------------------------------------------------------------------------*/ void Token_SYMBOL::stack_op(Expression* E)const { assert(E); // replace single token with its value if (!E->is_empty() && dynamic_cast(E->back())) { // has parameters (table or function) if (FUNCTION* f = function_dispatcher[name()]) { const Token* T1 = E->back(); // arglist E->pop_back(); CS cmd(CS::_STRING, T1->name()); std::string value = f->eval(cmd, E->_scope); const Float* v = new Float(value); E->push_back(new Token_CONSTANT(value, v, "")); delete T1; }else{ throw Exception_No_Match(name()); //BUG// memory leak unreachable(); E->push_back(clone()); } }else{ // has no parameters (scalar) if (strchr("0123456789.", name()[0])) { // a number Float* n = new Float(name()); E->push_back(new Token_CONSTANT(name(), n, "")); }else{ // a name PARAMETER p = (*(E->_scope->params()))[name()]; if (p.has_hard_value()) { // can find value - push value double v = p.e_val(NOT_INPUT, E->_scope); Float* n = new Float(v); E->push_back(new Token_CONSTANT(n->val_string(), n, "")); }else{ // no value - push name (and accept incomplete solution later) String* s = new String(name()); E->push_back(new Token_CONSTANT(name(), s, "")); } } } } /*--------------------------------------------------------------------------*/ void Token_BINOP::stack_op(Expression* E)const { assert(E); // replace 2 tokens (binop) with 1 (result) Token* t1 = E->back(); E->pop_back(); Token* t2 = E->back(); E->pop_back(); if (dynamic_cast(t1)) { if (dynamic_cast(t2)) { // have # # + .. becomes result (the usual) Token* t = op(t2, t1); assert(t); if (t->data()) { // success E->push_back(t); delete t2; delete t1; }else{ // fail - one arg is unknown, push back args if (strchr("+*", name()[0]) && !dynamic_cast(t1->data())) { // change order to enable later optimization E->push_back(t1); E->push_back(t2); }else{ E->push_back(t2); E->push_back(t1); } E->push_back(clone()); //op delete t; } }else if (((*t2) == (*this)) && strchr("+*", name()[0]) && dynamic_cast(E->back())) { // have # + # + .. becomes result + (previous unknown, try to optimize) Token* t3 = E->back(); E->pop_back(); Token* t = op(t3, t1); assert(t); if (t->data()) { // success E->push_back(t); E->push_back(t2); delete t3; delete t1; }else{ // fail - push all E->push_back(t3); E->push_back(t2); E->push_back(t1); E->push_back(clone()); delete t; } }else{untested(); // # - # - or something like that E->push_back(t2); E->push_back(t1); E->push_back(clone()); } }else{untested(); // # - # - or something like that E->push_back(t2); E->push_back(t1); E->push_back(clone()); } } /*--------------------------------------------------------------------------*/ void Token_STOP::stack_op(Expression* E)const { assert(E); E->push_back(clone()); } /*--------------------------------------------------------------------------*/ void Token_PARLIST::stack_op(Expression* E)const { assert(E); // replace multiple tokens of a PARLIST with a single token bool been_here = false; std::string tmp;//(")"); for (;;) { const Token* t = E->back(); E->pop_back(); if (dynamic_cast(t)) { // tmp = "(" + tmp; break; }else{ if (been_here) { tmp = ", " + tmp; }else{ been_here = true; } tmp = t->name() + tmp; } delete t; } E->push_back(new Token_PARLIST(tmp)); } /*--------------------------------------------------------------------------*/ void Token_UNARY::stack_op(Expression* E)const { assert(E); // replace 1 token with 1 (result) Token* t1 = E->back(); E->pop_back(); if (dynamic_cast(t1)) { Token* t = op(t1); assert(t); if (t->data()) { E->push_back(t); delete t1; }else{untested(); E->push_back(t1); E->push_back(clone()); delete t; } }else{untested(); E->push_back(t1); E->push_back(clone()); } } /*--------------------------------------------------------------------------*/ void Token_CONSTANT::stack_op(Expression* E)const { unreachable(); (void)(E); assert(E); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void Expression::reduce_copy(const Expression& Proto) { // The Proto._list is the expression in RPN. // Attempt to build a reduced _list here, hopefully with only one item. for (const_iterator i = Proto.begin(); i != Proto.end(); ++i) { (**i).stack_op(this); } if (is_empty()) {untested(); assert(Proto.is_empty()); }else{ } } /*--------------------------------------------------------------------------*/ Expression::Expression(const Expression& Proto, const CARD_LIST* Scope) :_scope(Scope) { reduce_copy(Proto); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_fft.cc000066400000000000000000000041351316501211100132200ustar00rootroot00000000000000/*$Id: m_fft.cc,v 26.81 2008/05/27 05:34:00 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * fast fourier transform */ //testing=script 2006.07.13 #include "constant.h" #include "declare.h" /* self */ /*--------------------------------------------------------------------------*/ void fft(COMPLEX* x, int n, int inv) { int s = (inv) ? 1 : -1; int nxp, nxp2; for (nxp=n; (nxp2=nxp/2) > 0; nxp=nxp2) { double wpwr = M_TWO_PI / nxp; for (int m = 0; m < nxp2; ++m) { double argg = m * wpwr; COMPLEX w(cos(argg), s*sin(argg)); for (int jj1 = m; jj1+nxp-m <= n; jj1 += nxp) { int jj2 = jj1 + nxp2; COMPLEX t = x[jj1] - x[jj2]; x[jj1] += x[jj2]; x[jj2] = t * w; } } } /* unscramble */ { int i, j; for (/*k =*/ i = j = 0; i < n-1; ++i) { if (i < j) { swap(x[i],x[j]); } int k; for (k = n/2; k <= j; k /= 2) { j -= k; } j += k; } } /* fix level */ if (!inv) { for (int i = 0; i < n; ++i) { x[i] /= n; } }else{ untested(); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/m_spline.cc000066400000000000000000000207571316501211100137430ustar00rootroot00000000000000/*$Id: m_spline.cc,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * piecewise polynomial interpolation */ //testing=script 2006.04.18 #include "m_cpoly.h" #include "l_denoise.h" #include "m_spline.h" /*--------------------------------------------------------------------------*/ SPLINE::SPLINE(const std::vector& table, double d0, double dn, int order) :_n(static_cast(table.size())-1), _x( new double[_n+1]), _f0(new double[_n+1]), _f1(0), _f2(0), _f3(0), _order(order) {untested(); if (_n < 0) {untested(); throw Exception("no points in spline"); }else{untested(); } for (int i=0; i<=_n; ++i) {untested(); _x[i] = table[static_cast(i)].first; _f0[i] = table[static_cast(i)].second; } // set up h -------------------------------------------------- double* h = new double[_n+1]; for (int i=0; i<_n; ++i) { h[i] = _x[i+1] - _x[i]; if (h[i] == 0.) {untested(); throw Exception("duplicate points in spline: " + to_string(_x[i]) + ", " + to_string(_x[i+1])); }else{untested(); } } h[_n] = NOT_VALID; switch (_order) { case 3: construct_order_3(h, d0, dn); break; case 2: construct_order_2(h, d0, dn); break; case 1: construct_order_1(h, d0, dn); break; case 0: untested(); /* nothing to do */ break; default: untested(); error(bDANGER, "illegal spline order (%d), must be 0, 1, 2, 3\n", _order); break; } } /*--------------------------------------------------------------------------*/ SPLINE::SPLINE(const std::vector, PARAMETER > >& table, double d0, double dn, int order) :_n(static_cast(table.size())-1), _x( new double[_n+1]), _f0(new double[_n+1]), _f1(0), _f2(0), _f3(0), _order(order) { if (_n < 0) { throw Exception("no points in spline"); }else{ } for (int i=0; i<=_n; ++i) { _x[i] = table[static_cast(i)].first; _f0[i] = table[static_cast(i)].second; } // set up h -------------------------------------------------- double* h = new double[_n+1]; for (int i=0; i<_n; ++i) { h[i] = _x[i+1] - _x[i]; if (h[i] == 0.) { throw Exception("duplicate points in spline: " + to_string(_x[i]) + ", " + to_string(_x[i+1])); }else{ } } h[_n] = NOT_VALID; switch (_order) { case 3: construct_order_3(h, d0, dn); break; case 2: construct_order_2(h, d0, dn); break; case 1: construct_order_1(h, d0, dn); break; case 0: untested(); /* nothing to do */ break; default: untested(); error(bDANGER, "illegal spline order (%d), must be 0, 1, 2, 3\n", _order); break; } } /*--------------------------------------------------------------------------*/ void SPLINE::construct_order_1(double* h, double d0, double dn) { assert(_n >= 0); _f1 = h; // reuse storage for (int i=0; i<_n; ++i) { _f1[i] = (_f0[i+1] - _f0[i]) / h[i]; } //h = 0; if (d0 == NOT_INPUT) { _d0 = _f1[0]; }else{untested(); _d0 = d0; } if (dn == NOT_INPUT) { _f1[_n] = _f1[_n-1]; }else{untested(); _f1[_n] = dn; } } /*--------------------------------------------------------------------------*/ void SPLINE::construct_order_2(double* h, double d0, double dn) { assert(_n >= 0); _f1 = new double[_n+1]; if (d0 != NOT_INPUT && dn == NOT_INPUT) { _d0 = _f1[0] = d0; for (int i=0; i<_n; ++i) { _f1[i+1] = 2*(_f0[i+1]-_f0[i])/h[i] - _f1[i]; } }else{ if (dn == NOT_INPUT) { // neither bc .. must guess _f1[_n] = (_f0[_n] - _f0[_n-1]) / h[_n-1]; }else{ _f1[_n] = dn; } for (int i=_n-1; i>=0; --i) { _f1[i] = 2*(_f0[i+1]-_f0[i])/h[i] - _f1[i+1]; } if (d0 == NOT_INPUT) { _d0 = _f1[0]; }else{ // both bc ... discontinuous derivative at _x[0] _d0 = d0; } } // second derivative -- piecewise constant _f2 = h; // reuse storage for (int i=0; i<_n; ++i) { _f2[i] = .5 * (_f1[i+1] - _f1[i]) / h[i]; } _f2[_n] = 0.; //h = 0; } /*--------------------------------------------------------------------------*/ void SPLINE::construct_order_3(double* h, double d0, double dn) { assert(_n >= 0); // set up right side ----------------------------------------- double* b = new double[_n+1]; // b as in Ax=b for (int i=1; i<_n; ++i) { double num = _f0[i+1]*h[i-1] -_f0[i]*(h[i]+h[i-1]) +_f0[i-1]*h[i]; double den = h[i-1] * h[i]; b[i] = 3 * num / den; } // boundary conditions if (d0 == NOT_INPUT) { b[0] = 0.; }else{ b[0] = 3 * ((_f0[1]-_f0[0])/h[0] - d0); } if (dn == NOT_INPUT) { b[_n] = 0.; }else{ b[_n] = 3 * (dn - (_f0[_n]-_f0[_n-1])/h[_n-1]); } // fill, LU decomp, fwd sub ---------------------------------- double* u = new double[_n+1]; double* z = b; // reuse storage. if (d0 == NOT_INPUT) { u[0] = 0.; z[0] = 0.; }else{ u[0] = .5; // h[0] / (2*h[0]) z[0] = b[0] / (2*h[0]); } for (int i=1; i<_n; ++i) { double p = 2*(h[i]+h[i-1]) - h[i-1]*u[i-1]; // pivot u[i] = h[i] / p; z[i] = (b[i] - z[i-1]*h[i-1]) / p; } if (dn == NOT_INPUT) { // natural z[_n] = 0; }else{ // clamped double p = h[_n-1] * (2.-u[_n-1]); z[_n] = (b[_n] - z[_n-1]*h[_n-1]) / p; } u[_n] = NOT_VALID; //b = 0; // back sub -------------------------------------------------- _f1 = u; // reuse storage. _f2 = z; _f3 = h; _f2[_n] = z[_n]; _f3[_n] = 0.; for (int i=_n-1; i>=0; --i) { _f2[i] = z[i] - u[i]*_f2[i+1]; _f1[i] = (_f0[i+1]-_f0[i])/h[i] - h[i]*(_f2[i+1]+2*_f2[i])/3; _f3[i] = (_f2[i+1]-_f2[i])/(3*h[i]); trace4("", i, _f1[i], _f2[i], _f3[i]); } _d0 = fixzero(_f1[0], _f1[1]); //_f1[0]; assert(d0 == NOT_INPUT || _d0 == d0); // set up last slot for extrapolation above. ----------------- if (dn == NOT_INPUT) { // natural _f1[_n] = _f1[_n-1] + (_x[_n]-_x[_n-1])*_f2[_n-1]; }else{ // clamped _f1[_n] = dn; } _f2[_n] = 0.; _f3[_n] = 0.; //u = z = h = 0; } /*--------------------------------------------------------------------------*/ SPLINE::~SPLINE() { delete [] _x; delete [] _f0; delete [] _f1; delete [] _f2; delete [] _f3; } /*--------------------------------------------------------------------------*/ FPOLY1 SPLINE::at(double x)const { assert(_n >= 0); double* here = std::upper_bound(_x, _x+_n+1, x); if (here == _x) { // x out of range, below if (_order == 0) {untested(); return FPOLY1(x, _f0[0], 0.); }else{ double dx = x - _x[0]; double f0 = _f0[0] + dx*_d0; return FPOLY1(x, f0, _d0); } }else{ // x in range, or out of range above int i = static_cast(here - _x - 1); double dx = x - _x[i]; switch (_order) { case 3:{ double f0 = _f0[i] + dx*(_f1[i] + dx*(_f2[i] + dx*_f3[i])); double f1 = _f1[i] + dx*(2*_f2[i] + 3*dx*_f3[i]); return FPOLY1(x, f0, f1); } case 2:{ double f0 = _f0[i] + dx*(_f1[i] + dx*_f2[i]); double f1 = _f1[i] + dx*(2*_f2[i]); return FPOLY1(x, f0, f1); } case 1:{ double f0 = _f0[i] + dx*_f1[i]; double f1 = _f1[i]; return FPOLY1(x, f0, f1); } case 0: untested(); return FPOLY1(x, _f0[i], 0.); default: untested(); assert(!"spline problem"); return FPOLY1(); } untested(); //trace4("", x, _x[i], dx, i); //trace4("", _f0[i], _f1[i], _f2[i], _f3[i]); //trace4("", _f0[i+1], _f1[i+1], _f2[i+1], _f3[i+1]); //trace2("", f0, f1); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/plot.cc000066400000000000000000000170661316501211100131120ustar00rootroot00000000000000/*$Id: plot.cc,v 26.110 2009/05/28 15:32:04 al Exp $ * (this file is a mess. it should be redone.) */ //testing=script 2006.07.17 #include "declare.h" /* self */ #include "constant.h" #include "u_opt.h" #include "u_prblst.h" /*--------------------------------------------------------------------------*/ void plottr(double,const PROBELIST&); int plopen(double,double,const PROBELIST&); void plclose(void); void plclear(void); static void plborder(void); static void calibrate(const PROBE&); static int round_to_int(double); static void plhead(const PROBELIST&); static int point(double,double,double,int,int,int); static void plotarg(double,double,double,double,double,double, double,double,double); /*--------------------------------------------------------------------------*/ #define MAXWIDTH 512 #define OUTWIDTH (std::min(static_cast(OPT::outwidth), MAXWIDTH)) #define INDENT 8 /* beware OMSTERAM::form! */ #define CONSSCALE (OUTWIDTH - INDENT - 2) /*console scale size in chr */ static bool active; /* flag: plotting has opened */ static double xstart, xstop; static char border[MAXWIDTH+1]; /* border string (keep, repeat at end) */ static char emptydata[MAXWIDTH+1]; /* empty data, to copy then insert data */ /*--------------------------------------------------------------------------*/ void plottr(double xx, const PROBELIST& plotlist) /* plot a data point, */ { if (active) { int ii = 0; double lo[2] = {0.}; double hi[2] = {0.}; double val[2] = {0.}; for (PROBELIST::const_iterator i = plotlist.begin(); i != plotlist.end(); ++i) { val[ii] = i->value(); if (i->range() != 0.) { lo[ii] = i->lo(); hi[ii] = i->hi(); }else{ lo[ii] = -5.; hi[ii] = 5.; } ++ii; if (ii >= 2) { break; } } if (ii <= 1) { val[1] = NOT_VALID; } plotarg(xx, val[0], val[1], xstart, lo[0], lo[1], xstop, hi[0], hi[1]); } } /*--------------------------------------------------------------------------*/ /* plopen: begin the plot. any type */ int plopen(double start, double stop, const PROBELIST& plotlist) { if (start == stop) { IO::plotout = OMSTREAM(); } if (!IO::plotout.any()) { plclear(); return false; } xstart = start; xstop = stop; plhead(plotlist); assert(active == false); active = true; return true; } /*--------------------------------------------------------------------------*/ /* plclose: finish up the plot (any type) */ void plclose(void) { if (!active) { return; } plborder(); active = false; IO::plotout = OMSTREAM(); } /*--------------------------------------------------------------------------*/ /* plclear: clear graphics mode */ void plclear(void) { if (active) { untested(); } active = false; } /*--------------------------------------------------------------------------*/ /* plborder: draw the border -- Ascii graphics */ static void plborder(void) { IO::plotout.tab(INDENT) << border << '\n'; } /*--------------------------------------------------------------------------*/ /* calibrate: calibrate the y axis. ascii plot. */ static void calibrate(const PROBE& prb) { static char nums[20]; /* this label string */ static char highs[20]; /* the last label string */ int cal; /* char position within line */ int stop; /* location of last label, stop printing */ int filled; /* how far (characters) have been printed */ int numsize; /* number of characters in this label */ int start; /* starting position of this label */ double markno; /* loop counter */ double hi, lo; if (prb.range() == 0) { hi = 5; lo = -5; }else{ hi = prb.hi(); lo = prb.lo(); } double range = hi - lo; strcpy(highs, ftos(hi, 0, 5, IO::formaat)); highs[8] = '\0'; /* trim to 8 chrs */ /* *strchr(&highs[2],' ') = '\0'; */ /* make the top label, and save */ stop = OUTWIDTH - static_cast(strlen(highs)) - 1; /* space for it. */ IO::plotout << prb.label(); range = hi - lo; filled = 0; for (markno = 0.; markno < OPT::ydivisions; markno++) { double number = lo + range * markno/OPT::ydivisions ; if (std::abs(number) < std::abs(range)/(10.*CONSSCALE)) { number = 0.; } /* label to put on this div. */ strcpy(nums, ftos(number, 0, 5, IO::formaat)); nums[8] = '\0'; /* trim to 8 chrs */ numsize = static_cast(strlen(nums)); /* center it over the mark */ cal = round_to_int(INDENT + CONSSCALE * (markno/OPT::ydivisions)); start = cal - (numsize+1)/2; if (start > filled && start+numsize < stop) { IO::plotout.tab(start) << nums; /* if it fits, print it */ filled = start + numsize ; }else{untested(); } } IO::plotout.tab(stop) << highs << '\n'; /* print the last calibration */ } /*--------------------------------------------------------------------------*/ static int round_to_int(double x) { return static_cast(floor(x+.5)); } /*--------------------------------------------------------------------------*/ /* plhead: begin ascii graphics * print opening border, calibrations, etc. */ static void plhead(const PROBELIST& plotlist) { for (PROBELIST::const_iterator i = plotlist.begin(); i != plotlist.end(); ++i) { calibrate(*i); } for (int ii = 0; ii < CONSSCALE; ii++) { /* build strings */ border[ii] = '-'; emptydata[ii] = ' '; } double incr = static_cast(CONSSCALE) / OPT::ydivisions; for (double place = 0.; place < static_cast(CONSSCALE); place += incr) { border[round_to_int(place)] = '+'; emptydata[round_to_int(place)] = '.'; /* tics in emptydata */ } border[CONSSCALE] = '+'; /* fix ends of the strings */ border[CONSSCALE+1] = '\0'; emptydata[CONSSCALE] = emptydata[0] = '|'; emptydata[CONSSCALE+1] = '\0'; plborder(); /* print the border */ } /*--------------------------------------------------------------------------*/ /* point: return coordinate to plot in pixel # */ static int point( double yy, /* raw data */ double lo, double hi, /* limits: both ends of the plot */ int scale, /* length of scale in pixels */ int offset, /* pixel offset of start of plot area */ int linswp) /* flag: linear scale (else log scale) */ { int place; if (linswp) { place = round_to_int( scale*(yy-lo)/(hi-lo)); }else{untested(); place = round_to_int( scale*(log(yy/lo))/(log(hi/lo))); } if (place < 0) { place = 0; } if (place > scale) {itested(); place = scale; } return place + offset; } /*--------------------------------------------------------------------------*/ /* plotarg: plot all 2 selected probes at one time, freq, etc. point. */ /*ARGSUSED*/ static void plotarg( double xx, /* values */ double yy, double zz, double , /* lower limits */ double ylo, double zlo, double , /* upper limits */ double yhi, double zhi) { char adata[MAXWIDTH+1]; /* actual data. copy emptydata, insert */ char *xxs; /* string representation of xx */ memcpy(adata, emptydata, MAXWIDTH); /* copy prototype */ xxs = ftos( xx, 11, 5, IO::formaat ); if (zz != NOT_VALID) { adata[point(zz,zlo,zhi,CONSSCALE,0,1)] = '+';/* zap data into string */ } adata[point(yy,ylo,yhi,CONSSCALE,0,1)] = '*'; IO::plotout.form( "%-8.8s%s", xxs, adata ); IO::plotout << '\n'; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/test_readline.cc000066400000000000000000000004101316501211100147370ustar00rootroot00000000000000//testing=trivial 2006.07.17 #include //BUG// sometimes required by readline.h and history.h #include #include int main() { char* line_read = readline("xx"); add_history(line_read); } // vim:ts=8:sw=2:noet: lib/u_function.cc000066400000000000000000000000101316501211100142620ustar00rootroot00000000000000deleted lib/u_lang.cc000066400000000000000000000155351316501211100134000ustar00rootroot00000000000000/*$Id: u_lang.cc 2016/09/22 $ -*- C++ -*- * Copyright (C) 2006 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ // testing=script 2015.01.27 #include "globals.h" #include "c_comand.h" #include "d_dot.h" #include "d_coment.h" #include "e_subckt.h" #include "e_model.h" #include "u_lang.h" /*--------------------------------------------------------------------------*/ LANGUAGE::~LANGUAGE() { if (OPT::language == this) { OPT::language = NULL; }else{ } } /*--------------------------------------------------------------------------*/ void LANGUAGE::parse_top_item(CS& cmd, CARD_LIST* Scope) { cmd.get_line(I_PROMPT); CMD::cmdproc(cmd, Scope); } /*--------------------------------------------------------------------------*/ const CARD* LANGUAGE::find_proto(const std::string& Name, const CARD* Scope) { const CARD* p = NULL; if (Scope) { try { p = Scope->find_looking_out(Name); }catch (Exception_Cant_Find& e) { assert(!p); } }else{ CARD_LIST::const_iterator i = CARD_LIST::card_list.find_(Name); if (i != CARD_LIST::card_list.end()) { p = *i; }else{ assert(!p); } } if (p) { return p; }else if ((command_dispatcher[Name])) { return new DEV_DOT; //BUG// memory leak }else if ((p = device_dispatcher[Name])) { return p; }else if ((p = model_dispatcher[Name])) { return p; }else{ assert(!p); std::string s; /* */if (Umatch(Name, "b{uild} ")) {untested(); s = "build";} else if (Umatch(Name, "del{ete} ")) { s = "delete";} else if (Umatch(Name, "fo{urier} ")) {untested(); s = "fourier";} else if (Umatch(Name, "gen{erator} ")) { s = "generator";} else if (Umatch(Name, "inc{lude} ")) {untested(); s = "include";} else if (Umatch(Name, "l{ist} ")) {untested(); s = "list";} else if (Umatch(Name, "m{odify} ")) {untested(); s = "modify";} else if (Umatch(Name, "opt{ions} ")) { s = "options";} else if (Umatch(Name, "par{ameter} ")) {untested(); s = "param";} else if (Umatch(Name, "pr{int} ")) {untested(); s = "print";} else if (Umatch(Name, "q{uit} ")) {untested(); s = "quit";} else if (Umatch(Name, "st{atus} ")) { s = "status";} else if (Umatch(Name, "te{mperature} ")){untested(); s = "temperature";} else if (Umatch(Name, "tr{ansient} ")) { s = "transient";} else if (Umatch(Name, "!")) {untested(); s = "system";} else if (Umatch(Name, "<")) {untested(); s = "<";} else if (Umatch(Name, ">")) {untested(); s = ">";} else{ /* no shortcut available */ s = Name; } if ((command_dispatcher[s])) { return new DEV_DOT; //BUG// we will look it up twice, //BUG// memory leak }else{ return NULL; } } } /*--------------------------------------------------------------------------*/ void LANGUAGE::new__instance(CS& cmd, BASE_SUBCKT* owner, CARD_LIST* Scope) { if (cmd.is_end()) {untested(); // nothing }else{ std::string type = find_type_in_string(cmd); if (const CARD* proto = find_proto(type, owner)) { CARD* new_instance = proto->clone_instance(); assert(new_instance); new_instance->set_owner(owner); CARD* x = parse_item(cmd, new_instance); if (x) { assert(Scope); Scope->push_back(x); }else{ } }else{ cmd.warn(bDANGER, type + ": no match"); } } } /*--------------------------------------------------------------------------*/ CARD* LANGUAGE::parse_item(CS& cmd, CARD* c) { // See Stroustrup 15.4.5 // If you can think of a better way, tell me. // It must be in the LANGUAGE class, not CARD. assert(c); if (c->is_device()){ assert(dynamic_cast(c)); return parse_instance(cmd, prechecked_cast(c)); }else if (BASE_SUBCKT* s = dynamic_cast(c)) { return parse_module(cmd, s); }else if (MODEL_CARD* m = dynamic_cast(c)) {untested(); return parse_paramset(cmd, m); }else if (DEV_COMMENT* com = dynamic_cast(c)) { return parse_comment(cmd, com); }else if (DEV_DOT* d = dynamic_cast(c)) { return parse_command(cmd, d); }else{untested(); incomplete(); unreachable(); return NULL; } } /*--------------------------------------------------------------------------*/ void LANGUAGE::print_item(OMSTREAM& o, const CARD* c) { // See Stroustrup 15.4.5 // If you can think of a better way, tell me. // It must be in the LANGUAGE class, not CARD. assert(c); if (c->is_device()){ assert(dynamic_cast(c)); print_instance(o, prechecked_cast(c)); }else if (const BASE_SUBCKT* s = dynamic_cast(c)) { print_module(o, s); }else if (const MODEL_CARD* m = dynamic_cast(c)) { print_paramset(o, m); }else if (const DEV_COMMENT* com = dynamic_cast(c)) { print_comment(o, com); }else if (const DEV_DOT* d = dynamic_cast(c)) {untested(); print_command(o, d); }else{untested(); incomplete(); unreachable(); } } /*--------------------------------------------------------------------------*/ OMSTREAM& operator<<(OMSTREAM& o, LANGUAGE* x) { if (x) { return (o << x->name()); }else{untested(); return (o << "none"); } } /*--------------------------------------------------------------------------*/ bool Get(CS& cmd, const std::string& key, LANGUAGE** val) { if (cmd.umatch(key + " {=}")) { LANGUAGE* lang = language_dispatcher[cmd]; if (lang) { *val = lang; }else{untested(); std::string choices; for(DISPATCHER::const_iterator i = language_dispatcher.begin(); i != language_dispatcher.end(); ++i) {untested(); if (i->second) {untested(); choices += i->first + ' '; }else{untested(); } } cmd.warn(bWARNING, "need a language (" + choices + ")"); } return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/u_nodemap.cc000066400000000000000000000064711316501211100141010ustar00rootroot00000000000000/*$Id: u_nodemap.cc,v 26.83 2008/06/05 04:46:59 al Exp $ -*- C++ -*- * Copyright (C) 2002 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * node name to number mapping -- for named nodes */ //testing=script,complete 2006.07.14 #include "e_node.h" #include "u_nodemap.h" /*--------------------------------------------------------------------------*/ NODE ground_node("0",0); /*--------------------------------------------------------------------------*/ NODE_MAP::NODE_MAP() : _node_map() { _node_map["0"] = &ground_node; } /*--------------------------------------------------------------------------*/ /* copy constructor: deep copy * The std::map copy constructor does a shallow copy, * then replace second with a deep copy. */ NODE_MAP::NODE_MAP(const NODE_MAP& p) : _node_map(p._node_map) { unreachable(); for (iterator i = _node_map.begin(); i != _node_map.end(); ++i) { untested(); if (i->first != "0") { untested(); assert(i->second); i->second = new NODE(i->second); }else{ untested(); } } } /*--------------------------------------------------------------------------*/ NODE_MAP::~NODE_MAP() { for (iterator i = _node_map.begin(); i != _node_map.end(); ++i) { if (i->first != "0") { assert(i->second); delete i->second; } } } /*--------------------------------------------------------------------------*/ /* return a pointer to a node given a string * returns NULL pointer if no match */ NODE* NODE_MAP::operator[](std::string s) { const_iterator i = _node_map.find(s); if (i != _node_map.end()) { return i->second; }else if (OPT::case_insensitive) { notstd::to_lower(&s); i = _node_map.find(s); }else{ return NULL; } return (i != _node_map.end()) ? i->second : NULL; } /*--------------------------------------------------------------------------*/ /* return a pointer to a node given a string * creates a new one if it isn't already there. */ NODE* NODE_MAP::new_node(std::string s) { if (OPT::case_insensitive) { notstd::to_lower(&s); }else{ } NODE* node = _node_map[s]; // increments how_many() when lookup fails (new s) if (!node) { node = new NODE(s, how_many()); // ^^^^ is really the map number of the new node _node_map[s] = node; } assert(node); return node; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/u_opt1.cc000066400000000000000000000073611316501211100133400ustar00rootroot00000000000000/*$Id: u_opt1.cc,v 26.121 2009/09/22 20:30:18 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * all the options set by the .options card. * initialization and declaration of statics */ //testing=trivial 2006.07.17 #include "u_opt.h" bool OPT::acct = false; bool OPT::listing = false; bool OPT::mod = true; bool OPT::page = false; bool OPT::node = false; bool OPT::opts = false; double OPT::gmin = 1e-12; double OPT::bypasstol = .1; double OPT::loadtol = .1; double OPT::reltol = .001; double OPT::abstol = 1e-12; double OPT::vntol = 1e-6; double OPT::trtol = 7.0; double OPT::chgtol = 1e-14; double OPT::pivtol = 1e-13; double OPT::pivrel = 1e-3; int OPT::numdgt = 5; double OPT::tnom_c = 27.0; int OPT::cptime = 30000; int OPT::limtim = 2; int OPT::limpts = 201; int OPT::lvlcod = 2; int OPT::lvltim = 2; method_t OPT::method = meTRAP; int OPT::maxord = 2; double OPT::defl = 100e-6; double OPT::defw = 100e-6; double OPT::defad = 0.; double OPT::defas = 0.; bool OPT::clobber = true; bool OPT::keys_between_nodes = true; double OPT::dampmax = 1.0; double OPT::dampmin = 0.5; int OPT::dampstrategy = 0; //dsINIT|dsDEVREGION|dsREVERSE; double OPT::floor = 1e-21; double OPT::vfloor = 1e-15; double OPT::roundofftol = 1e-13; double OPT::temp_c = 27.0; double OPT::shortckt = 10e-6; int OPT::picky = bPICKY; unsigned OPT::outwidth = 9999; double OPT::ydivisions = 4.; phase_t OPT::phase = pDEGREES; order_t OPT::order = oAUTO; smode_t OPT::mode = moMIXED; int OPT::transits = 2; bool OPT::dupcheck = false; bool OPT::bypass = true; bool OPT::incmode = true; bool OPT::lcbypass = true; bool OPT::lubypass = true; bool OPT::fbbypass = true; bool OPT::traceload = true; int OPT::itermin = 1; double OPT::vmax = 5; double OPT::vmin = -5; double OPT::dtmin = 1e-12; double OPT::dtratio = 1e9; bool OPT::rstray = true; bool OPT::cstray = true; int OPT::harmonics = 9; double OPT::trstepgrow = 1e99; double OPT::trstephold = 1e99; double OPT::trstepshrink = 2.; /* spice is fixed at 8 */ double OPT::trreject = .5; int OPT::trsteporder = 3; double OPT::trstepcoef[_keep_time_steps] = {1., 1./4., 1./24., 1./192.}; bool OPT::showall = false; int OPT::foooo = 0; int OPT::diodeflags = 0; int OPT::mosflags = 0; bool OPT::quitconvfail = false; bool OPT::edit = true; int OPT::recursion = 20; LANGUAGE* OPT::language = NULL; bool OPT::case_insensitive = false; UNITS OPT::units = uSI; double OPT::lowlim = 1. - OPT::reltol; double OPT::uplim = 1. + OPT::reltol; int OPT::itl[OPT::ITL_COUNT] = { 100, /* 0=dummy */ 100, /* 1=dc (bias) iteration limit */ 50, /* 2=dc transfer iteration limit */ 6, /* 3=lower transient iteration limit (spice is 4) */ 20, /* 4=upper transient iteration limit (spice is 10) */ 0, /* 5=transient total iterations allowed */ 5000, /* 6=source stepping iteration limit */ 1, /* 7=worst case iteration limit */ 99 /* 8=trace nonconvergence start iteration */ }; // vim:ts=8:sw=2:noet: lib/u_opt2.cc000066400000000000000000000277151316501211100133460ustar00rootroot00000000000000/*$Id: u_opt2.cc 2016/09/26 $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * command and functions to access OPT class */ //testing=script,complete 2006.07.14 #include "globals.h" #include "c_comand.h" #include "u_lang.h" #include "l_compar.h" #include "ap.h" /*--------------------------------------------------------------------------*/ void OPT::command(CS& cmd) { bool changed = set_values(cmd); if (!changed || opts) { print(IO::mstdout); } } /*--------------------------------------------------------------------------*/ /* set: set options from a string */ bool OPT::set_values(CS& cmd) { bool big_change = false; bool changed = false; unsigned here = cmd.cursor(); do{ ONE_OF || Get(cmd, "acct", &acct) || Get(cmd, "list", &listing) || Get(cmd, "mod", &mod) || Get(cmd, "page", &page) || Get(cmd, "node", &node) || Get(cmd, "opts", &opts) || Get(cmd, "gmin", &gmin, mPOSITIVE) || Get(cmd, "bypasstol", &bypasstol, mPOSITIVE) || Get(cmd, "loadtol", &loadtol, mPOSITIVE) || Get(cmd, "reltol", &reltol, mPOSITIVE) || Get(cmd, "abstol", &abstol, mPOSITIVE) || Get(cmd, "vntol", &vntol, mPOSITIVE) || Get(cmd, "trtol", &trtol, mPOSITIVE) || Get(cmd, "chgtol", &chgtol, mPOSITIVE) || Get(cmd, "pivtol", &pivtol, mPOSITIVE) || Get(cmd, "pivrel", &pivrel, mPOSITIVE) || Get(cmd, "numdgt", &numdgt) || Get(cmd, "tnom", &tnom_c) || Get(cmd, "cptime", &cptime) || Get(cmd, "limtim", &limtim) || Get(cmd, "limpts", &limpts) || Get(cmd, "lvlcod", &lvlcod) || Get(cmd, "lvltim", &lvltim) || (cmd.umatch("method {=}") && (ONE_OF || Set(cmd, "euler", &method, meEULER) || Set(cmd, "eulero{nly}", &method, meEULERONLY) || Set(cmd, "trap{ezoidal}", &method, meTRAP) || Set(cmd, "trapo{nly}", &method, meTRAPONLY) || Set(cmd, "gear{2}", &method, meGEAR2) || Set(cmd, "gear2o{nly}", &method, meGEAR2ONLY) || Set(cmd, "t{rap}g{ear}", &method, meTRAPGEAR) || Set(cmd, "t{rap}e{uler}", &method, meTRAPEULER) || cmd.warn(bWARNING, "illegal method"))) || Get(cmd, "maxord", &maxord) || Get(cmd, "defl", &defl, mPOSITIVE) || Get(cmd, "defw", &defw, mPOSITIVE) || Get(cmd, "defad", &defad, mPOSITIVE) || Get(cmd, "defas", &defas, mPOSITIVE) || Get(cmd, "clobber", &clobber) || Get(cmd, "dampmax", &dampmax, mPOSITIVE) || Get(cmd, "dampmin", &dampmin, mPOSITIVE) || Get(cmd, "damps{trategy}",&dampstrategy, mOCTAL) || Get(cmd, "floor", &floor, mPOSITIVE) || Get(cmd, "vfloor", &vfloor, mPOSITIVE) || Get(cmd, "roundofftol", &roundofftol, mPOSITIVE) || Get(cmd, "t{empamb}", &temp_c) || Get(cmd, "t{emperature}", &temp_c) || Get(cmd, "short", &shortckt, mPOSITIVE) || Get(cmd, "out{width}", &outwidth) || Get(cmd, "ydiv{isions}", &ydivisions, mPOSITIVE) || Set(cmd, "nag", &picky, bNOERROR) || Set(cmd, "nonag", &picky, bTRACE) || Set(cmd, "trace", &picky, bTRACE) || Set(cmd, "notrace", &picky, bLOG) || Set(cmd, "log", &picky, bLOG) || Set(cmd, "nolog", &picky, bDEBUG) || Set(cmd, "debug", &picky, bDEBUG) || Set(cmd, "nodebug", &picky, bPICKY) || Set(cmd, "picky", &picky, bPICKY) || Set(cmd, "nopicky", &picky, bWARNING) || Set(cmd, "warn{ing}", &picky, bWARNING) || Set(cmd, "nowarn", &picky, bDANGER) || (cmd.umatch("phase {=}") && (ONE_OF || Set(cmd, "d{egrees}", &phase, pDEGREES) || Set(cmd, "+d{egrees}", &phase, pP_DEGREES) || Set(cmd, "-d{egrees}", &phase, pN_DEGREES) || Set(cmd, "r{adians}", &phase, pRADIANS) || cmd.warn(bWARNING, "need degrees or radians"))) || (cmd.umatch("order {=}") && (ONE_OF || Set(cmd, "r{everse}", &order, oREVERSE) || Set(cmd, "f{orward}", &order, oFORWARD) || Set(cmd, "a{uto}", &order, oAUTO) || cmd.warn(bWARNING, "need reverse, forward, or auto"))) || (cmd.umatch("mode {=}") && (ONE_OF || Set(cmd, "a{nalog}", &mode, moANALOG) || Set(cmd, "d{igital}", &mode, moDIGITAL) || Set(cmd, "m{ixed}", &mode, moMIXED) || cmd.warn(bWARNING, "need analog, digital, or mixed"))) || Get(cmd, "tr{ansits}", &transits) || Get(cmd, "dup{check}", &dupcheck) || Get(cmd, "byp{ass}", &bypass) || Get(cmd, "inc{mode}", &incmode) || Get(cmd, "lcb{ypass}", &lcbypass) || Get(cmd, "lub{ypass}", &lubypass) || Get(cmd, "fbb{ypass}", &fbbypass) || Get(cmd, "tracel{oad}", &traceload) || Get(cmd, "itermin", &itermin) || Get(cmd, "vmax", &vmax) || Get(cmd, "vmin", &vmin) || Get(cmd, "mrt", &dtmin, mPOSITIVE) || Get(cmd, "dtmin", &dtmin, mPOSITIVE) || Get(cmd, "dtr{atio}", &dtratio, mPOSITIVE) || (Get(cmd, "rstray", &rstray) && (big_change = true)) || (Get(cmd, "cstray", &cstray) && (big_change = true)) || Get(cmd, "harmonics", &harmonics) || Get(cmd, "trstepgrow", &trstepgrow, mPOSITIVE) || Get(cmd, "trstephold", &trstephold, mPOSITIVE) || Get(cmd, "trstepshrink", &trstepshrink,mPOSITIVE) || Get(cmd, "trreject", &trreject, mPOSITIVE) || (Get(cmd, "trsteporder", &trsteporder) && (trsteporder = to_range(1,trsteporder,3))) || Get(cmd, "trstepcoef1", &trstepcoef[1]) || Get(cmd, "trstepcoef2", &trstepcoef[2]) || Get(cmd, "trstepcoef3", &trstepcoef[3]) || Get(cmd, "showall", &showall) || Get(cmd, "foooo", &foooo) || Get(cmd, "diode{flags}", &diodeflags, mOCTAL) || Get(cmd, "mos{flags}", &mosflags, mOCTAL) || Get(cmd, "quitconv{fail}",&quitconvfail) || Get(cmd, "edit", &edit) || Get(cmd, "recur{sion}", &recursion) || (Get(cmd, "lang{uage}", &language) && ((case_insensitive = ((language) ? (language->case_insensitive()) : false)), (units = ((language) ? (language->units()) : uSI)), true)) || Get(cmd, "insensitive", &case_insensitive) || (cmd.umatch("units {=}") && (ONE_OF || Set(cmd, "si", &units, uSI) || Set(cmd, "spice", &units, uSPICE) || cmd.warn(bWARNING, "need si or spice"))) || Get(cmd, "itl1", &itl[1]) || Get(cmd, "itl2", &itl[2]) || Get(cmd, "itl3", &itl[3]) || Get(cmd, "itl4", &itl[4]) || Get(cmd, "itl5", &itl[5]) || Get(cmd, "itl6", &itl[6]) || Get(cmd, "itl7", &itl[7]) || Get(cmd, "itl8", &itl[8]) || (cmd.check(bWARNING, "what's this?"), cmd.skiparg()); if (!cmd.stuck(&here)) { changed = true; } }while (cmd.more() && changed); if (big_change) { //_sim->uninit(); //BUG// not sure if this is really working //regressions do go both ways, but not sure if it actually //makes the topology changes expected }else{ } if (changed) { lowlim = 1 - reltol; uplim = 1 + reltol; numdgt = to_range(3, numdgt, 20); } return changed; } /*--------------------------------------------------------------------------*/ /* print: "print" all option values to "o" * string is in a form suitable for passing to set */ void OPT::print(OMSTREAM& o) { o.setfloatwidth(7); o << "* i/o\n"; o << ".options"; o << ((acct) ?" acct" :" noacct"); o << ((listing)?" list" :" nolist"); o << ((clobber) ? " clobber" : " noclobber"); o << " out=" << outwidth; o << " ydivisions=" << ydivisions; o << " phase=" << phase; o << " harmonics=" << harmonics; o << ((edit) ?" edit" :" noedit"); o << " language=" << language; o << ((case_insensitive) ?" insensitive":" noinsensitive"); o << " units=" << units; o << " recursion="<< recursion; o << "\n\n"; o << "* accuracy, i/o\n"; o << ".options"; o << " numdgt=" << numdgt; o << " floor=" << floor; o << " vfloor=" << vfloor; o << " roundofftol=" << roundofftol; o << "\n\n"; o << "* accuracy, tolerances\n"; o << ".options"; o << " gmin=" << gmin; o << " short=" << shortckt; o << " reltol=" << reltol; o << " abstol=" << abstol; o << " vntol=" << vntol; o << " trtol=" << trtol; o << " chgtol=" << chgtol; o << " pivtol=" << pivtol; o << " bypasstol=" << bypasstol; o << " loadtol=" << loadtol; o << "\n\n"; o << "* accuracy, algorithms\n"; o << ".options"; o << " method=" << method; o << ((bypass) ?" bypass" :" nobypass"); o << ((incmode) ?" incmode" :" noincmode"); o << ((lcbypass) ?" lcbypass" :" nolcbypass"); o << ((lubypass) ?" lubypass" :" nolubypass"); o << ((fbbypass) ?" fbbypass" :" nofbbypass"); o << ((traceload)?" traceload":" notraceload"); o << " order=" << order; o << " mode=" << mode; o << " transits=" << transits; o << ((quitconvfail)?" quitconvfail":" noquitconvfail"); o << "\n\n"; o << "* iteration limiting and heuristics\n"; o << ".options"; for (int ii=1; ii * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * A class for parameterized values * Used for .param statements * and passing arguments to models and subcircuits */ //testing=script,sparse 2006.07.14 #include "l_stlextra.h" #include "u_parameter.h" #include "u_lang.h" /*--------------------------------------------------------------------------*/ void PARAM_LIST::parse(CS& cmd) { (cmd >> "real |integer "); // ignore type unsigned here = cmd.cursor(); for (;;) { if (!(cmd.more() && (cmd.is_alpha() || cmd.match1('_')))) { break; }else{ } std::string Name; PARAMETER Value; cmd >> Name >> '=' >> Value; if (cmd.stuck(&here)) {untested(); break; }else{ } if (OPT::case_insensitive) { notstd::to_lower(&Name); }else{ } _pl[Name] = Value; } cmd.check(bDANGER, "syntax error"); } /*--------------------------------------------------------------------------*/ void PARAM_LIST::print(OMSTREAM& o, LANGUAGE* lang)const { for (const_iterator i = _pl.begin(); i != _pl.end(); ++i) { if (i->second.has_hard_value()) { print_pair(o, lang, i->first, i->second); }else{ } } } /*--------------------------------------------------------------------------*/ bool PARAM_LIST::is_printable(int i)const { //BUG// ugly linear search int i_try = 0; for (const_iterator ii = _pl.begin(); ii != _pl.end(); ++ii) { if (i_try++ == i) { return ii->second.has_hard_value(); }else{ } } return false; } /*--------------------------------------------------------------------------*/ std::string PARAM_LIST::name(int i)const { //BUG// ugly linear search int i_try = 0; for (const_iterator ii = _pl.begin(); ii != _pl.end(); ++ii) { if (i_try++ == i) { return ii->first; }else{ } } return ""; } /*--------------------------------------------------------------------------*/ std::string PARAM_LIST::value(int i)const { //BUG// ugly linear search int i_try = 0; for (const_iterator ii = _pl.begin(); ii != _pl.end(); ++ii) { if (i_try++ == i) { return ii->second.string(); }else{ } } return ""; } /*--------------------------------------------------------------------------*/ void PARAM_LIST::eval_copy(PARAM_LIST& p, const CARD_LIST* scope) { assert(!_try_again); _try_again = p._try_again; for (iterator i = p._pl.begin(); i != p._pl.end(); ++i) { if (i->second.has_hard_value()) { if (_pl[i->first].has_hard_value()) {untested(); _pl[i->first] = i->second.e_val(_pl[i->first], scope); }else{ _pl[i->first] = i->second.e_val(NOT_INPUT, scope); } }else{ } } } /*--------------------------------------------------------------------------*/ const PARAMETER& PARAM_LIST::deep_lookup(std::string Name)const { if (OPT::case_insensitive) { notstd::to_lower(&Name); }else{ } PARAMETER & rv = _pl[Name]; if (rv.has_hard_value()) { // found a value, return it return rv; }else if (_try_again) { // didn't find one, look in enclosing scope return _try_again->deep_lookup(Name); }else{ // no enclosing scope to look in // really didn't find it, give up // return garbage value (NOT_INPUT) return rv; } } /*--------------------------------------------------------------------------*/ void PARAM_LIST::set(std::string Name, const std::string& Value) { if (OPT::case_insensitive) { notstd::to_lower(&Name); }else{ } _pl[Name] = Value; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ bool Get(CS& cmd, const std::string& key, PARAMETER* val) { if (cmd.umatch(key + ' ')) { if (cmd.skip1b('=')) { cmd >> *val; }else{ *val = true; } return true; }else if (cmd.umatch("no" + key)) { *val = false; return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ bool Get(CS& cmd, const std::string& key, PARAMETER* val) { if (cmd.umatch(key + " {=}")) { *val = int(cmd.ctof()); return true; }else{ return false; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/u_prblst.cc000066400000000000000000000222111316501211100137520ustar00rootroot00000000000000/*$Id: u_prblst.cc,v 26.137 2010/04/10 02:37:33 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * probe list functions */ //testing=script,sparse 2006.07.14 #include "e_cardlist.h" #include "e_node.h" #include "e_card.h" #include "u_nodemap.h" #include "ap.h" #include "u_prblst.h" /*--------------------------------------------------------------------------*/ void PROBE_LISTS::purge(CKT_BASE* brh) { for (int i = 0; i < sCOUNT; ++i) { alarm[i].remove_one(brh); plot[i] .remove_one(brh); print[i].remove_one(brh); store[i].remove_one(brh); } } /*--------------------------------------------------------------------------*/ void PROBELIST::listing(const std::string& label)const { IO::mstdout.form("%-7s", label.c_str()); for (const_iterator p = begin(); p != end(); ++p) { IO::mstdout << ' ' << p->label(); if (p->range() != 0.) {untested(); IO::mstdout.setfloatwidth(5) << '(' << p->lo() << ',' << p->hi() << ')'; }else{ } } IO::mstdout << '\n'; } /*--------------------------------------------------------------------------*/ void PROBELIST::clear(void) { erase(begin(), end()); } /*--------------------------------------------------------------------------*/ /* check for match * called by STL remove, below * both are needed to support different versions of STL */ bool operator==(const PROBE& prb, const std::string& par) { return wmatch(prb.label(), par); } bool operator!=(const PROBE& prb, const std::string& par) {untested(); //return !wmatch(prb.label(), par); return !(prb == par); } /*--------------------------------------------------------------------------*/ /* remove a complete probe, extract from CS * wild card match ex: vds(m*) */ void PROBELIST::remove_list(CS& cmd) { unsigned mark = cmd.cursor(); std::string parameter(cmd.ctos(TOKENTERM) + '('); int paren = cmd.skip1b('('); parameter += cmd.ctos(TOKENTERM) + ')'; paren -= cmd.skip1b(')'); if (paren != 0) {untested(); cmd.warn(bWARNING, "need )"); }else if (parameter.empty()) {untested(); cmd.warn(bWARNING, "what's this?"); }else{ } iterator x = remove(begin(), end(), parameter); if (x != end()) { erase(x, end()); }else{itested(); cmd.warn(bWARNING, mark, "probe isn't set -- can't remove"); } } /*--------------------------------------------------------------------------*/ /* check for match * called by STL remove, below * both are needed to support different versions of stl */ bool operator==(const PROBE& prb, const CKT_BASE* brh) { return (prb.object() == brh); } bool operator!=(const PROBE& prb, const CKT_BASE* brh) {untested(); return (prb.object() != brh); } /*--------------------------------------------------------------------------*/ /* remove a brh from a PROBELIST * removes all probes on brh */ void PROBELIST::remove_one(CKT_BASE *brh) { assert(brh); erase(remove(begin(), end(), brh), end()); // remove .. removes all that match and compacts the list, leaving blanks at the end // erase .. shortens, throw away the blanks at the end } /*--------------------------------------------------------------------------*/ /* add_list: add a "list" of probes, usually only one * This means possibly several probes with a single parameter * like "v(r*)" meaning all resistors * but not "v(r4) v(r5)" which has two parameters. * It also takes care of setting the range for plot or alarm. */ void PROBELIST::add_list(CS& cmd) { int oldcount = size(); std::string what(cmd.ctos(TOKENTERM));/* parameter */ if (what.empty()) {untested(); cmd.warn(bWARNING, "need a probe"); }else{ } int paren = cmd.skip1b('('); /* device, node, etc. */ if (cmd.umatch("nodes ")) { // all nodes add_all_nodes(what); }else if (cmd.umatch("0")) { // node 0 means system stuff push_new_probe(what, 0); }else if (cmd.is_alnum() || cmd.match1("*?")) { // branches or named nodes unsigned here1 = cmd.cursor(); bool found_something = add_branches(cmd.ctos(),what,&CARD_LIST::card_list); if (!found_something) { cmd.warn(bWARNING, here1, "no match"); }else{ } for (;;) { // a list, as in v(r1,r2,r3) or v(1,2,3) if (!(cmd.is_alnum() || cmd.match1("*?"))) { break; }else{ } unsigned here2 = cmd.cursor(); found_something = add_branches(cmd.ctos(),what,&CARD_LIST::card_list); if (!found_something) {itested(); cmd.reset(here2); break; }else{ } } }else{itested(); cmd.warn(bDANGER, "need device or node"); } paren -= cmd.skip1b(')'); if (paren != 0) {itested(); cmd.warn(bWARNING, "need )"); }else{ } if (cmd.skip1b('(')) { /* range for plotting and alarm */ double lo = cmd.ctof(); double hi = cmd.ctof(); for (iterator p = begin() + oldcount; p != end(); ++p) { p->set_limit(lo,hi); } if (!cmd.skip1b(')')) {untested(); cmd.check(bWARNING, "need )"); }else{ } }else{ } } /*--------------------------------------------------------------------------*/ void PROBELIST::push_new_probe(const std::string& param,const CKT_BASE* object) { bag.push_back(PROBE(param, object)); } /*--------------------------------------------------------------------------*/ void PROBELIST::add_all_nodes(const std::string& what) { for (NODE_MAP::const_iterator i = CARD_LIST::card_list.nodes()->begin(); i != CARD_LIST::card_list.nodes()->end(); ++i) { if ((i->first != "0") && (i->first.find('.') == std::string::npos)) { NODE* node = i->second; assert (node); push_new_probe(what, node); }else{ } } } /*--------------------------------------------------------------------------*/ /* add_branches: add net elements to probe list * all matching a label with wildcards */ bool PROBELIST::add_branches(const std::string&device, const std::string¶m, const CARD_LIST* scope) { assert(scope); bool found_something = false; std::string::size_type dotplace = device.find_first_of("."); if (dotplace != std::string::npos) { // has a dot, look deeper { // forward (Verilog style) std::string dev = device.substr(dotplace+1, std::string::npos); std::string container = device.substr(0, dotplace); for (CARD_LIST::const_iterator i = scope->begin(); i != scope->end(); ++i) { CARD* card = *i; if (card->is_device() && card->subckt() && wmatch(card->short_label(), container)) { found_something |= add_branches(dev, param, card->subckt()); }else{ } } } { // reverse (ACS style) dotplace = device.find_last_of("."); std::string container = device.substr(dotplace+1, std::string::npos); std::string dev = device.substr(0, dotplace); for (CARD_LIST::const_iterator i = scope->begin(); i != scope->end(); ++i) { CARD* card = *i; if (card->is_device() && card->subckt() && wmatch(card->short_label(), container)) { found_something |= add_branches(dev, param, card->subckt()); }else{ } } } }else{ // no dots, look here if (device.find_first_of("*?") != std::string::npos) { // there's a wild card. do linear search for all { // nodes for (NODE_MAP::const_iterator i = scope->nodes()->begin(); i != scope->nodes()->end(); ++i) { if (i->first != "0") { NODE* node = i->second; assert (node); if (wmatch(node->short_label(), device)) { push_new_probe(param, node); found_something = true; }else{ } }else{ } } } {// components for (CARD_LIST::const_iterator i = scope->begin(); i != scope->end(); ++i) { CARD* card = *i; if (wmatch(card->short_label(), device)) { push_new_probe(param, card); found_something = true; }else{ } } } }else{ // no wild card. do fast search for one { // nodes NODE* node = (*scope->nodes())[device]; if (node) { push_new_probe(param, node); found_something = true; }else{ } } { //components CARD_LIST::const_iterator i = scope->find_(device); if (i != scope->end()) { push_new_probe(param, *i); found_something = true; }else{ } } } } return found_something; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/u_probe.cc000066400000000000000000000077751316501211100135750ustar00rootroot00000000000000/*$Id: u_probe.cc 2016/09/22 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * general probe object */ //testing=script 2009.06.21 #include "u_sim_data.h" #include "u_status.h" #include "e_base.h" #include "u_probe.h" /*--------------------------------------------------------------------------*/ PROBE::PROBE(const std::string& what,const CKT_BASE *brh) :CKT_BASE(), _what(what), _brh(brh), _lo(0.), _hi(0.) { if (_brh) { _brh->inc_probes(); }else{ } } /*--------------------------------------------------------------------------*/ PROBE::PROBE(const PROBE& p) :CKT_BASE(p), _what(p._what), _brh(p._brh), _lo(p._lo), _hi(p._hi) { if (_brh) { _brh->inc_probes(); }else{ } } /*--------------------------------------------------------------------------*/ /* operator= ... assignment * copy a probe */ PROBE& PROBE::operator=(const PROBE& p) { detach(); _what = p._what; _brh = p._brh; _lo = p._lo; _hi = p._hi; if (_brh) { _brh->inc_probes(); }else{ } return *this; } /*--------------------------------------------------------------------------*/ /* "detach" a probe from a device * which means ... 1. tell the device that the probe has been removed * 2. blank out the probe, so it doesn't reference anything * does not remove the probe from the list */ void PROBE::detach() { if (_brh) { _brh->dec_probes(); }else{ } _what = ""; _brh = NULL; } /*--------------------------------------------------------------------------*/ /* label: returns a string corresponding to a possible probe point * (suitable for printing) * It has nothing to do with whether it was selected or not */ const std::string PROBE::label(void)const { if (_brh) { return _what + '(' + _brh->long_label() + ')'; }else{ return _what + "(0)"; } } /*--------------------------------------------------------------------------*/ double PROBE::value(void)const { // _brh is either a node or a "branch", which is really any device if (_brh) { return _brh->probe_num(_what); }else{ return probe_node(); } } /*--------------------------------------------------------------------------*/ double PROBE::probe_node(void)const { if (Umatch(_what, "iter ")) { assert(iPRINTSTEP - sCOUNT == 0); assert(iSTEP - sCOUNT == 1); assert(iTOTAL - sCOUNT == 2); assert(iCOUNT - sCOUNT == 3); return _sim->_iter[sCOUNT]; }else if (Umatch(_what, "bypass ")) {untested(); return OPT::bypass + 10*_sim->_bypass_ok; }else if (Umatch(_what, "control ")) { return ::status.control; }else if (Umatch(_what, "damp ")) {untested(); return _sim->_damp; }else if (Umatch(_what, "gen{erator} ")) {untested(); return _sim->_genout; }else if (Umatch(_what, "hidden ")) { return ::status.hidden_steps; }else if (Umatch(_what, "temp{erature} ")) { return _sim->_temp_c; }else if (Umatch(_what, "time ")) {untested(); return _sim->_time0; }else{ return NOT_VALID; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/u_sim_data.cc000066400000000000000000000225431316501211100142350ustar00rootroot00000000000000/*$Id: u_sim_data.cc 2016/03/23 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * aux functions associated with the SIM class */ //testing=script 2015.01.28 #include "m_wave.h" #include "e_node.h" #include "u_nodemap.h" #include "e_cardlist.h" #include "u_status.h" /*--------------------------------------------------------------------------*/ SIM_DATA::SIM_DATA() :_time0(0.), _freq(0.), _temp_c(0.), _damp(0.), _dtmin(0.), _genout(0.), _bypass_ok(true), _fulldamp(false), _last_time(0.), _freezetime(false), _user_nodes(0), _subckt_nodes(0), _model_nodes(0), _total_nodes(0), _jomega(0.,0.), _limiting(true), _vmax(0.), _vmin(0.), _uic(false), _inc_mode(tsNO), //_mode(), //_phase(), _nm(NULL), _i(NULL), _v0(NULL), _vt1(NULL), _ac(NULL), _nstat(NULL), _vdc(NULL), _aa(), _lu(), _acx(), _eq(), _loadq(), _acceptq(), _evalq1(), _evalq2(), _late_evalq(), _evalq(NULL), _evalq_uc(NULL), _waves(NULL), _has_op(s_NONE) { _evalq = &_evalq1; _evalq_uc = &_evalq2; std::fill_n(_iter, iCOUNT, 0); } /*--------------------------------------------------------------------------*/ SIM_DATA::~SIM_DATA() { if (_nm) {unreachable(); delete [] _nm; _nm = NULL; }else{ } if (_i) {unreachable(); delete [] _i; _i = NULL; }else{ } if (_v0) {unreachable(); delete [] _v0; _v0 = NULL; }else{ } if (_vt1) {unreachable(); delete [] _vt1; _vt1 = NULL; }else{ } if (_ac) {unreachable(); delete [] _ac; _ac = NULL; }else{ } if (_nstat) {unreachable(); delete [] _nstat; _nstat = NULL; }else{ } if (_vdc) {unreachable(); delete [] _vdc; _vdc = NULL; }else{ } //assert(_eq.empty()); //not empty means an analysis ended with an unhandled event // could be DC, could be tran with event time past the end assert(_loadq.empty()); assert(_acceptq.empty()); assert(_evalq1.empty()); assert(_evalq2.empty()); assert(_late_evalq.empty()); assert(_evalq); assert(_evalq_uc); _evalq = NULL; _evalq_uc = NULL; if (_waves) { delete [] _waves; _waves = NULL; }else{ } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void SIM_DATA::set_limit() { for (int ii = 1; ii <= _total_nodes; ++ii) { set_limit(_v0[ii]); } } /*--------------------------------------------------------------------------*/ void SIM_DATA::set_limit(double v) { if (v+.4 > _vmax) { _vmax = v+.5; error(bTRACE, "new max = %g, new limit = %g\n", v, _vmax); } if (v-.4 < _vmin) { _vmin = v-.5; error(bTRACE, "new min = %g, new limit = %g\n", v, _vmin); } } /*--------------------------------------------------------------------------*/ void SIM_DATA::clear_limit() { _vmax = OPT::vmax; _vmin = OPT::vmin; } /*--------------------------------------------------------------------------*/ void SIM_DATA::keep_voltages() { if (!_freezetime) { for (int ii = 1; ii <= _total_nodes; ++ii) { _vdc[ii] = _v0[ii]; } _last_time = (_time0 > 0.) ? _time0 : 0.; }else{untested(); //BUG// probably incorrect } } /*--------------------------------------------------------------------------*/ void SIM_DATA::restore_voltages() { for (int ii = 1; ii <= _total_nodes; ++ii) { _vt1[ii] = _v0[ii] = _vdc[ii]; } } /*--------------------------------------------------------------------------*/ void SIM_DATA::zero_voltages() { for (int ii = 1; ii <= _total_nodes; ++ii) { _vt1[ii] = _v0[ii] = _vdc[ii] = _i[ii] = 0.; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /* map__nodes: map intermediate node number to internal node number. * Ideally, this function would find some near-optimal order * and squash out gaps. */ void SIM_DATA::map__nodes() { _nm = new int[_total_nodes+1]; ::status.order.reset().start(); switch (OPT::order) { default: unreachable(); error(bWARNING, "invalid order spec: %d\n", OPT::order); case oAUTO: order_auto(); break; case oREVERSE: order_reverse(); break; case oFORWARD: order_forward(); break; } ::status.order.stop(); } /*--------------------------------------------------------------------------*/ /* order_reverse: force ordering to reverse of user ordering * subcircuits at beginning, results on border at the bottom */ void SIM_DATA::order_reverse() { _nm[0] = 0; for (int node = 1; node <= _total_nodes; ++node) { _nm[node] = _total_nodes - node + 1; } } /*--------------------------------------------------------------------------*/ /* order_forward: use user ordering, with subcircuits added to end * results in border at the top (worst possible if lots of subcircuits) */ void SIM_DATA::order_forward() { _nm[0] = 0; for (int node = 1; node <= _total_nodes; ++node) { _nm[node] = node; } } /*--------------------------------------------------------------------------*/ /* order_auto: full automatic ordering * reverse, for now */ void SIM_DATA::order_auto() { _nm[0] = 0; for (int node = 1; node <= _total_nodes; ++node) { _nm[node] = _total_nodes - node + 1; } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ /* init: allocate, set up, etc ... for any type of simulation * also called by status and probe for access to internals and subckts */ void SIM_DATA::init() { if (is_first_expand()) { uninit(); init_node_count(CARD_LIST::card_list.nodes()->how_many(), 0, 0); CARD_LIST::card_list.expand(); map__nodes(); CARD_LIST::card_list.map_nodes(); alloc_hold_vectors(); _aa.reinit(_total_nodes); _lu.reinit(_total_nodes); _acx.reinit(_total_nodes); CARD_LIST::card_list.tr_iwant_matrix(); CARD_LIST::card_list.ac_iwant_matrix(); _last_time = 0; }else{ CARD_LIST::card_list.precalc_first(); } } /*--------------------------------------------------------------------------*/ /* alloc_hold_vectors: * allocate space to hold data between commands. * for restart, convergence assistance, bias for AC, post-processing, etc. * must be done BEFORE deciding what array elements to allocate, * but after mapping * if they already exist, leave them alone to save data */ void SIM_DATA::alloc_hold_vectors() { assert(is_first_expand()); assert(!_nstat); _nstat = new LOGIC_NODE[_total_nodes+1]; for (int ii=0; ii <= _total_nodes; ++ii) { _nstat[_nm[ii]].set_user_number(ii); } assert(!_vdc); _vdc = new double[_total_nodes+1]; std::fill_n(_vdc, _total_nodes+1, 0); assert(_nstat); assert(_vdc); } /*--------------------------------------------------------------------------*/ /* alloc_vectors: * these are new with every run and are discarded after the run. */ void SIM_DATA::alloc_vectors() { assert(_evalq1.empty()); assert(_evalq2.empty()); assert(_evalq != _evalq_uc); assert(!_ac); assert(!_i); assert(!_v0); assert(!_vt1); _ac = new COMPLEX[_total_nodes+1]; _i = new double[_total_nodes+1]; _v0 = new double[_total_nodes+1]; _vt1 = new double[_total_nodes+1]; std::fill_n(_ac, _total_nodes+1, 0); std::fill_n(_i, _total_nodes+1, 0); std::fill_n(_v0, _total_nodes+1, 0); std::fill_n(_vt1,_total_nodes+1, 0); } /*--------------------------------------------------------------------------*/ void SIM_DATA::unalloc_vectors() { _evalq1.clear(); _evalq2.clear(); delete [] _i; _i = NULL; delete [] _v0; _v0 = NULL; delete [] _vt1; _vt1 = NULL; delete [] _ac; _ac = NULL; } /*--------------------------------------------------------------------------*/ /* uninit: undo all the allocation associated with any simulation * called when the circuit changes after a run, so it needs a restart * may be called multiple times without damage to make sure it is clean */ void SIM_DATA::uninit() { if (_vdc) { _acx.reinit(0); _lu.reinit(0); _aa.reinit(0); delete [] _vdc; _vdc = NULL; delete [] _nstat; _nstat = NULL; delete [] _nm; _nm = NULL; }else{ assert(_acx.size() == 0); assert(_lu.size() == 0); assert(_aa.size() == 0); assert(!_nstat); assert(!_nm); } _has_op = s_NONE; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: lib/u_xprobe.cc000066400000000000000000000041301316501211100137430ustar00rootroot00000000000000/*$Id: u_xprobe.cc,v 26.110 2009/05/28 15:32:04 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * extended probe data * used for AC analysis */ //testing=script 2006.07.14 #include "m_phase.h" #include "u_xprobe.h" /*--------------------------------------------------------------------------*/ double XPROBE::operator()(mod_t m, bool db)const { if (exists()) { if (m == mtNONE) { m = _modifier; } double rv = NOT_VALID; switch (m) { case mtNONE: unreachable(); break; case mtMAG: rv = std::abs(_value); break; case mtPHASE: rv = phase(_value); break; case mtREAL: rv = real(_value); break; case mtIMAG: rv = imag(_value); break; } return (db) ? _dbscale * log10(std::max(rv,VOLTMIN)) : rv; }else{ return NOT_VALID; } } /*--------------------------------------------------------------------------*/ XPROBE& XPROBE::operator=(const XPROBE& p) { _value = p._value; _modifier = p._modifier; _dbscale = p._dbscale; return *this; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ // vim:ts=8:sw=2:noet: main/000077500000000000000000000000001316501211100117715ustar00rootroot00000000000000main/Make.depend000066400000000000000000000010671316501211100140330ustar00rootroot00000000000000main.o: main.cc config.h ../include/globals.h ../include/l_dispatcher.h \ ../include/e_base.h ../include/md.h ../include/io_trace.h \ ../include/io_error.h ../include/l_stlextra.h ../include/u_opt.h \ ../include/mode.h ../include/io_.h ../include/l_lib.h ../include/ap.h \ ../include/u_prblst.h ../include/u_probe.h ../include/l_compar.h \ ../include/u_sim_data.h ../include/constant.h ../include/m_matrix.h \ ../include/e_cardlist.h ../include/u_lang.h ../include/ap.h \ ../include/patchlev.h ../include/c_comand.h ../include/e_card.h \ ../include/declare.h main/Make1000066400000000000000000000063171316501211100126610ustar00rootroot00000000000000#$Id: Make1,v 26.138 2013/04/24 03:32:53 al Exp $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ TARGET = gnucap #------------------------------------------------------------------------ INSTALL_DIR = $(PREFIX)/bin INSTALL_FILES = $(TARGET)$(TARGET_EXT) ../gnucap-conf #------------------------------------------------------------------------ INSTALL_SYSCONF_DIR = $(PREFIX)/etc INSTALL_SYSCONF_FILES = ../gnucap.conf #------------------------------------------------------------------------ DELETED = #------------------------------------------------------------------------ RAW_SRCS = main.cc #------------------------------------------------------------------------ RAW_OTHER = Make1 Make2.g++ Make2.Debug Make2.mingw32 configure #------------------------------------------------------------------------ RAW = $(RAW_HDRS) $(RAW_SRCS) $(RAW_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ IMPORTED_SRCS = IMPORTED_HDRS = IMPORTED_OTHER = IMPORTED = $(IMPORTED_SRCS) $(IMPORTED_HDRS) $(IMPORTED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_SRCS = GENERATED_HDRS = GENERATED_OTHER = Make.aux GENERATED = $(GENERATED_HDRS) $(GENERATED_SRCS) $(GENERATED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_DIST = Make.depend IMPORTED_DIST = $(IMPORTED) DISTFILES = $(RAW) $(GENERATED_DIST) $(IMPORTED_DIST) #------------------------------------------------------------------------ #------------------------------------------------------------------------ SRCS = $(IMPORTED_SRCS) $(GENERATED_SRCS) $(RAW_SRCS) HDRS = $(RAW_HDRS) $(GENERATED_HDRS) $(IMPORTED_HDRS) OBJS = ${SRCS:.cc=.o} TARGET_DEPENDS = $(OBJS) $(RAW) #------------------------------------------------------------------------ #------------------------------------------------------------------------ MOSTLYCLEANFILES = $(OBJS) $(GENERATED) CLEANFILES = $(MOSTLYCLEANFILES) DISTCLEANFILES = $(CLEANFILES) MAINTAINERCLEANFILES = $(DISTCLEANFILES) #------------------------------------------------------------------------ #------------------------------------------------------------------------ main/Make2.Debug000066400000000000000000000071701316501211100137050ustar00rootroot00000000000000#$Id: Make2.Debug 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++, debugging, no optimization # Running the program will give a spew of line markers for debugging. CCC = g++ CCFLAGS = \ -DUNIX -g -O0 -I. -I../../include -DTRACE_UNTESTED \ -Wall -Wextra \ -Wswitch-enum -Wundef -Wpointer-arith -Woverloaded-virtual \ -Wcast-qual -Wcast-align -Wpacked -Wshadow -Wconversion \ -Winit-self -Wmissing-include-dirs -Winvalid-pch \ -Wvolatile-register-var -Wstack-protector \ -Wlogical-op -Wvla -Woverlength-strings -Wsign-conversion #last line not in 4.1 LIBS = \ -lgnucap \ LDFLAGS = -rdynamic \ -L../../lib/O-DEBUG %.SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # warnings turned off, because they warn of nothing wrong # 4.3 #-Wswitch-default -- lack of default is correct with enum #-Wfloat-equal -- warns on NA, div by zero trap #-Wpadded -- a bool in a class is enough #-Wredundant-decls -- in both header and func is an error check #-Wmissing-declarations -- pascal style #-Wmissing-noreturn -- warns when always throws exception #-Wunreachable-code -- warns even if reachable .. compiler bug?? #-Waggregate-return -- warns even if passed by reference #-Wunsafe-loop-optimizations -- if can't unroll a loop #-Winline #-Wdisabled-optimization -- -O0 disables optimization, so it warns # 4.2 #-Wpadded -- a bool in a class is enough #-Winline #-Waggregate-return -- warns even if passed by reference #-Wfloat-equal -- warns on NA, div by zero trap #-Wredundant-decls -- in both header and func is an error check #-Wunsafe-loop-optimizations -- warns on any loop with variable count # warnings turned off, because of the public headers #-Wunreachable-code -- didn't use nonportable syntax to hide #-Wmissing-noreturn -- didn't use nonportable syntax to hide # warnings that should be on, but ... #-Wshadow -- lambda functions #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "debug" version, with extra warnings and run-time tracing. # If you get errors or warnings, make a copy of it and modify that. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ main/Make2.g++000066400000000000000000000042061316501211100132300ustar00rootroot00000000000000#$Id: Make2.g++ 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++. CCC = g++ CCFLAGS = \ -DUNIX -O3 -DNDEBUG -I. -I../include -I../../include -W LIBS = \ -lgnucap \ LDFLAGS = -rdynamic \ -L../../lib/O .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "release" version, optimized with run-time tracing removed. # If you get errors or warnings, make a copy of it and modify that. # For the first cut, use "Make2.Debug" as the start for more tracing, # or "Make2.Trace" for an extreme amount of tracing. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ main/Make2.mingw32000066400000000000000000000031251316501211100141410ustar00rootroot00000000000000#$Id: Make2.mingw32 2016/05/15 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. CCC = i586-mingw32msvc-g++ DLLTOOL = i586-mingw32msvc-dlltool TARGET_EXT = .exe CCFLAGS = \ -O2 -DNDEBUG -I. -I../../include LIBS = -lgnucap LDFLAGS = -L../../lib/MSW .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET)$(TARGET_EXT) #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ #------------------------------------------------------------ main/config.h.in000066400000000000000000000026371316501211100140240ustar00rootroot00000000000000#ifndef GNUCAP_MAIN_CONFIG_H #define GNUCAP_MAIN_CONFIG_H /*--------------------------------------------------------------------------*/ /* configuration */ #define GNUCAP_PLUGPATH "@pkglibdir@" /*--------------------------------------------------------------------------*/ /* user interface preferences */ #define DEFAULT_LANGUAGE "acs" /*--------------------------------------------------------------------------*/ /* installation setup */ #if defined(__WIN32__) #if !defined(DEFAULT_PLUGINS) #define DEFAULT_PLUGINS "gnucap-default-plugins.dll" #endif #if !defined(SYSTEMSTARTFILE) #define SYSTEMSTARTFILE "gnucap.rc" #endif #if !defined(SYSTEMSTARTPATH) #define SYSTEMSTARTPATH OS::getenv("PATH") #endif #if !defined(USERSTARTFILE) #define USERSTARTFILE "gnucap.rc" #endif #if !defined(USERSTARTPATH) #define USERSTARTPATH OS::getenv("HOME") #endif /*--------------------------------------------------------------------------*/ #else #if !defined(DEFAULT_PLUGINS) #define DEFAULT_PLUGINS "gnucap-default-plugins.so" #endif #if !defined(SYSTEMSTARTFILE) #define SYSTEMSTARTFILE "gnucap.rc" #endif #if !defined(SYSTEMSTARTPATH) #define SYSTEMSTARTPATH OS::getenv("PATH") #endif #if !defined(USERSTARTFILE) #define USERSTARTFILE ".gnucaprc" #endif #if !defined(USERSTARTPATH) #define USERSTARTPATH OS::getenv("HOME") #endif #endif /*--------------------------------------------------------------------------*/ #endif main/configure000077500000000000000000000045551316501211100137110ustar00rootroot00000000000000#!/bin/sh # configure for executable mkdir -p O #------------- Stuff added to enable --prefix -------------- if test "x$1" != "x"; then # echo Found input parameter -- $1 # Now see if the parameter is --prefix= if test "x${1#--prefix=}" != "x$1"; then # echo "Found --prefix in input args. Setting prefix directory." prefix=${1#--prefix=} else # echo "Found unrecognized parameter in input args." # Just use the default prefix dir. prefix=/usr/local fi else # echo "No input parameter found." # Just use the default prefix dir prefix=/usr/local fi sed -e "s#/usr/local#$prefix#" ../Makefile.template > Makefile #---------------------------------------------------------------- pkglibdir=$prefix/lib/gnucap # bug. this is not implemented consistently. CXX=${CXX-c++} fill_template() { sed -e "s#@prefix@#$prefix#" \ -e "s#@exec_prefix@#$prefix#" \ -e "s#@libdir@#$prefix/lib#" \ -e "s#@includedir@#$\{prefix\}/include#" \ -e "s#@datarootdir@#$\{prefix\}/share/gnucap#" \ -e "s#@sysconfdir@#$\{prefix\}/etc#" \ -e "s#@pkglibdir@#$pkglibdir#" \ -e "s#@CXXFLAGS@#$CCFLAGS#" \ -e "s#@LIBS@#-lgnucap#" \ -e "s#@CXX@#$CXX#" < $1.in > $1 } fill_template config.h fill_template gnucap-conf fill_template gnucap.conf chmod +x gnucap-conf #---------------------------------------------------------------- echo "CCFLAGS = \\" >Make.ccflags echo "-DUNIX -O2 -DNDEBUG -I. -I../include -I../../include -W" >>Make.ccflags echo "LIBS = \\" >Make.libs echo "-lgnucap \\" >>Make.libs echo "" >>Make.libs echo "PREFIX = " $prefix >>Make.libs echo "" >>Make.libs cat <Make.sys #------------------------------------------------------------------------ VPATH = .:.. CCC = c++ TARGET_EXT = LDFLAGS = -rdynamic \ -L../../lib/O .SUFFIXES : .o .cc .cc.o:; \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) -c \$< #------------------------------------------------------------------------ \$(TARGET): \$(OBJS) rm -f \$@ \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) \$(OBJS) -o \$@ \$(LIBS) \$(LDFLAGS) #------------------------------------------------------------------------ CAT_EOF echo \# created by $PWD/$0. do not edit >Make2 echo \#------------------------------------------------------------------------ >>Make2 cat Make.ccflags Make.libs Make.sys >>Make2 rm Make.ccflags Make.libs Make.sys exit 0 main/gnucap-conf.in000066400000000000000000000013261316501211100145230ustar00rootroot00000000000000#!/bin/bash prefix="@prefix@" sysconfdir="@sysconfdir@" source $sysconfdir/gnucap.conf case $1 in --cppflags) echo "-I$includedir/gnucap" ;; --cxxflags) echo "$CXXFLAGS" ;; --cxx) echo "$CXX" ;; --ldflags) echo "-L$libdir" ;; --includedir) echo $includedir/gnucap ;; --pkglibdir) echo "$pkglibdir" ;; --libdir) echo "$libdir" ;; --libs) echo "$LIBS" ;; --exec-prefix) echo "$exec_prefix" ;; --data) echo "$datarootdir" ;; --sysconfdir) echo "$sysconfdir" ;; *) echo $0 --cppflags echo $0 --cxxflags echo $0 --cxx echo $0 --ldflags echo $0 --includedir echo $0 --pkglibdir echo $0 --libdir echo $0 --libs echo $0 --exec-prefix echo $0 --data echo $0 --sysconfdir esac main/gnucap.conf.in000066400000000000000000000003611316501211100145220ustar00rootroot00000000000000# a shell/make fragment prefix="@prefix@" exec_prefix="@exec_prefix@" includedir="@includedir@" libdir="@libdir@" pkglibdir="@pkglibdir@" LIBS="@LIBS@" CXX="@CXX@" CXXFLAGS="@CXXFLAGS@" datarootdir="@datarootdir@" sysconfdir="@sysconfdir@" main/main.cc000066400000000000000000000217231316501211100132310ustar00rootroot00000000000000/*$Id: main.cc $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * top level module * it all starts here */ //testing=script 2006.07.14 #include "config.h" #include "globals.h" #include "u_prblst.h" #include "u_sim_data.h" #include "e_cardlist.h" #include "u_lang.h" #include "ap.h" #include "patchlev.h" #include "c_comand.h" #include "declare.h" /* plclose */ /*--------------------------------------------------------------------------*/ struct JMP_BUF{ sigjmp_buf p; } env; /*--------------------------------------------------------------------------*/ static void sign_on(void) { IO::mstdout << "Gnucap : The Gnu Circuit Analysis Package\n" "Never trust any version less than 1.0\n" "Copyright 1982-2013, Albert Davis\n" "Gnucap comes with ABSOLUTELY NO WARRANTY\n" "This is free software, and you are welcome\n" "to redistribute it under the terms of \n" "the GNU General Public License, version 3 or later.\n" "See the file \"COPYING\" for details.\n" "main version: " PATCHLEVEL "\n" "core-lib version: " << lib_version() << "\n"; } /*--------------------------------------------------------------------------*/ static void prepare_env() { static const char* plugpath="PLUGPATH=" GNUCAP_PLUGPATH "\0 (reserved space) "; std::string ldlpath = OS::getenv("LD_LIBRARY_PATH"); if (ldlpath != "") {untested(); ldlpath += ":"; }else{ } assert(strlen("PLUGPATH=") == 9); OS::setenv("GNUCAP_PLUGPATH", ldlpath + (plugpath+9), false); } /*--------------------------------------------------------------------------*/ static void read_startup_files(void) { { std::string name = findfile(SYSTEMSTARTFILE, SYSTEMSTARTPATH, R_OK); if (name != "") {untested(); CMD::command("include " + name, &CARD_LIST::card_list); }else{ CMD::command(std::string("load " DEFAULT_PLUGINS), &CARD_LIST::card_list); } } { std::string name = findfile(USERSTARTFILE, USERSTARTPATH, R_OK); if (name != "") {untested(); CMD::command("include " + name, &CARD_LIST::card_list); }else{ } } //CMD::command("clear", &CARD_LIST::card_list); if (!OPT::language) { OPT::language = language_dispatcher[DEFAULT_LANGUAGE]; for(DISPATCHER::const_iterator i=language_dispatcher.begin(); !OPT::language && i!=language_dispatcher.end(); ++i) {untested(); OPT::language = prechecked_cast(i->second); } }else{untested(); // already have a language specified in a startup file } if (OPT::language) { OPT::case_insensitive = OPT::language->case_insensitive(); OPT::units = OPT::language->units(); }else{ OPT::case_insensitive = false; OPT::units = uSI; } } /*--------------------------------------------------------------------------*/ /* sig_abrt: trap asserts */ extern "C" { static void sig_abrt(SIGNALARGS) {untested(); signal(SIGABRT,sig_abrt); static int count = 100; if (--count > 0 && ENV::run_mode != rBATCH) {untested(); IO::error << '\n'; siglongjmp(env.p,1); }else{untested(); exit(1); } } } /*--------------------------------------------------------------------------*/ /* sig_int: what to do on receipt of interrupt signal (SIGINT) * cancel batch files, then back to command mode. * (actually, control-c trap) */ extern "C" { static void sig_int(SIGNALARGS) {itested(); signal(SIGINT,sig_int); if (ENV::run_mode == rBATCH) {untested(); exit(1); }else{itested(); IO::error << '\n'; siglongjmp(env.p,1); } } } /*--------------------------------------------------------------------------*/ extern "C" { static void sig_fpe(SIGNALARGS) {untested(); signal(SIGFPE,sig_fpe); error(bDANGER, "floating point error\n"); } } /*--------------------------------------------------------------------------*/ static void setup_traps(void) { signal(SIGFPE,sig_fpe); signal(SIGINT,sig_int); //signal(SIGABRT,sig_abrt); } /*--------------------------------------------------------------------------*/ /* finish: clean up after a command * deallocates space, closes plot windows, resets i/o redirection, etc. * This is done separately for exception handling. * If a command aborts, clean-up is still done, leaving a consistent state. * //BUG// It is a function to call as a remnant of old C code. * Should be in a destructor, so it doesn't need to be explicitly called. */ static void finish(void) { plclose(); outreset(); } /*--------------------------------------------------------------------------*/ static void process_cmd_line(int argc, const char *argv[]) { for (int ii = 1; ii < argc; /*inside*/) { try { if (strncmp(argv[ii], "--", 2) == 0) { if (ii < argc) { CS cmd(CS::_STRING, argv[ii++]+2); // command line CMD::cmdproc(cmd, &CARD_LIST::card_list); }else{untested(); } }else if (strcasecmp(argv[ii], "-c") == 0) { ++ii; if (ii < argc) { CS cmd(CS::_STRING, argv[ii++]); // command line CMD::cmdproc(cmd, &CARD_LIST::card_list); }else{untested(); } }else if (strcasecmp(argv[ii], "-i") == 0) {untested(); ++ii; if (ii < argc) {untested(); CMD::command(std::string("include ") + argv[ii++], &CARD_LIST::card_list); }else{untested(); } }else if (strcasecmp(argv[ii], "-b") == 0) { try { ++ii; if (ii < argc) { CMD::command(std::string("< ") + argv[ii++], &CARD_LIST::card_list); }else{untested(); CMD::command(std::string("< /dev/stdin"), &CARD_LIST::card_list); } }catch (Exception& e) { error(bDANGER, e.message() + '\n'); finish(); } if (ii >= argc) { //CMD::command("end", &CARD_LIST::card_list); throw Exception_Quit(""); }else{untested(); } }else if (strcasecmp(argv[ii], "-a") == 0) { ++ii; if (ii < argc) { CMD::command(std::string("attach ") + argv[ii++], &CARD_LIST::card_list); }else{untested(); } }else{ CMD::command(std::string("include ") + argv[ii++], &CARD_LIST::card_list); } }catch (Exception_Quit& e) { throw; }catch (Exception& e) {itested(); // abort command, continue loop error(bDANGER, e.message() + '\n'); finish(); } } } /*--------------------------------------------------------------------------*/ int main(int argc, const char *argv[]) { prepare_env(); CKT_BASE::_sim = new SIM_DATA; CKT_BASE::_probe_lists = new PROBE_LISTS; try { { SET_RUN_MODE xx(rBATCH); sign_on(); if (!sigsetjmp(env.p, true)) { #if 0 try {untested(); #endif read_startup_files(); setup_traps(); process_cmd_line(argc,argv); #if 0 }catch (Exception& e) {untested(); error(bDANGER, e.message() + '\n'); finish(); /* error clean up (from longjmp()) */ //CMD::command("quit", &CARD_LIST::card_list); unreachable(); exit(0); } #endif }else{untested(); finish(); /* error clean up (from longjmp()) */ //CMD::command("quit", &CARD_LIST::card_list); exit(0); } } { SET_RUN_MODE xx(rINTERACTIVE); CS cmd(CS::_STDIN); for (;;) { if (!sigsetjmp(env.p, true)) { try { if (OPT::language) { OPT::language->parse_top_item(cmd, &CARD_LIST::card_list); }else{untested(); CMD::cmdproc(cmd.get_line(I_PROMPT), &CARD_LIST::card_list); } }catch (Exception_End_Of_Input& e) { error(bDANGER, e.message() + '\n'); finish(); //CMD::command("quit", &CARD_LIST::card_list); //exit(0); break; }catch (Exception& e) { error(bDANGER, e.message() + '\n'); finish(); } }else{itested(); finish(); /* error clean up (from longjmp()) */ } } } }catch (Exception_Quit&) { }catch (Exception& e) {untested(); error(bDANGER, e.message() + '\n'); } //CARD_LIST::card_list.erase_all(); CMD::command("clear", &CARD_LIST::card_list); assert(CARD_LIST::card_list.is_empty()); CMD::command("detach_all", &CARD_LIST::card_list); delete CKT_BASE::_probe_lists; CKT_BASE::_probe_lists = NULL; delete CKT_BASE::_sim; CKT_BASE::_sim = NULL; return 0; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/000077500000000000000000000000001316501211100126375ustar00rootroot00000000000000modelgen/Make.depend000066400000000000000000000024471316501211100147040ustar00rootroot00000000000000mg_main.o: mg_main.cc ../include/u_opt.h ../include/mode.h \ ../include/io_.h ../include/l_lib.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h mg_out.h mg_.h \ ../include/ap.h ../include/patchlev.h mg_error.o: mg_error.cc ../include/ap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h mg_in.o: mg_in.cc mg_.h ../include/ap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h mg_out_h.o: mg_out_h.cc mg_out.h mg_.h ../include/ap.h ../include/md.h \ ../include/io_trace.h ../include/io_error.h mg_out_dump.o: mg_out_dump.cc ../include/md.h ../include/io_trace.h \ ../include/io_error.h mg_out.h mg_.h ../include/ap.h ../include/md.h mg_out_common.o: mg_out_common.cc mg_out.h mg_.h ../include/ap.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h mg_out_dev.o: mg_out_dev.cc mg_out.h mg_.h ../include/ap.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h mg_out_lib.o: mg_out_lib.cc mg_out.h mg_.h ../include/ap.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h mg_out_model.o: mg_out_model.cc mg_out.h mg_.h ../include/ap.h \ ../include/md.h ../include/io_trace.h ../include/io_error.h mg_out_root.o: mg_out_root.cc ../include/md.h ../include/io_trace.h \ ../include/io_error.h mg_out.h mg_.h ../include/ap.h ../include/md.h modelgen/Make1000066400000000000000000000065501316501211100135260ustar00rootroot00000000000000#$Id: Make1,v 26.138 2013/04/24 03:21:58 al Exp $ -*- Makefile -*- # # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ TARGET = gnucap-modelgen #------------------------------------------------------------------------ INSTALL_FILES = $(TARGET)$(TARGET_EXT) #------------------------------------------------------------------------ INSTALL_DIR = $(PREFIX)/bin #------------------------------------------------------------------------ DELETED = #------------------------------------------------------------------------ RAW_SRCS = \ mg_main.cc mg_error.cc mg_in.cc mg_out_h.cc mg_out_dump.cc \ mg_out_common.cc mg_out_dev.cc mg_out_lib.cc mg_out_model.cc mg_out_root.cc #------------------------------------------------------------------------ RAW_HDRS = mg_.h mg_out.h #------------------------------------------------------------------------ RAW_OTHER = Make1 Make2.g++ Make2.Debug Make2.mingw32 configure #------------------------------------------------------------------------ RAW = $(RAW_HDRS) $(RAW_SRCS) $(RAW_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ IMPORTED_SRCS = IMPORTED_HDRS = NOT_IMPORTED_HDRS = IMPORTED_OTHER = IMPORTED = $(IMPORTED_SRCS) $(IMPORTED_HDRS) $(IMPORTED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_SRCS = GENERATED_HDRS = GENERATED_OTHER = Make.aux GENERATED = $(GENERATED_HDRS) $(GENERATED_SRCS) $(GENERATED_OTHER) #------------------------------------------------------------------------ #------------------------------------------------------------------------ GENERATED_DIST = Make.depend IMPORTED_DIST = $(IMPORTED) DISTFILES = $(RAW) $(GENERATED_DIST) $(IMPORTED_DIST) #------------------------------------------------------------------------ #------------------------------------------------------------------------ SRCS = $(RAW_SRCS) $(GENERATED_SRCS) HDRS = $(RAW_HDRS) $(GENERATED_HDRS) $(IMPORTED_HDRS) OBJS = ${SRCS:.cc=.o} TARGET_DEPENDS = $(OBJS) $(RAW) #------------------------------------------------------------------------ #------------------------------------------------------------------------ MOSTLYCLEANFILES = $(OBJS) $(GENERATED) CLEANFILES = $(MOSTLYCLEANFILES) DISTCLEANFILES = $(CLEANFILES) MAINTAINERCLEANFILES = $(DISTCLEANFILES) #------------------------------------------------------------------------ #------------------------------------------------------------------------ modelgen/Make2.Debug000066400000000000000000000071701316501211100145530ustar00rootroot00000000000000#$Id: Make2.Debug 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++, debugging, no optimization # Running the program will give a spew of line markers for debugging. CCC = g++ CCFLAGS = \ -DUNIX -g -O0 -I. -I../../include -DTRACE_UNTESTED \ -Wall -Wextra \ -Wswitch-enum -Wundef -Wpointer-arith -Woverloaded-virtual \ -Wcast-qual -Wcast-align -Wpacked -Wshadow -Wconversion \ -Winit-self -Wmissing-include-dirs -Winvalid-pch \ -Wvolatile-register-var -Wstack-protector \ -Wlogical-op -Wvla -Woverlength-strings -Wsign-conversion #last line not in 4.1 LIBS = \ -lgnucap \ LDFLAGS = -rdynamic \ -L../../lib/O-DEBUG %.SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # warnings turned off, because they warn of nothing wrong # 4.3 #-Wswitch-default -- lack of default is correct with enum #-Wfloat-equal -- warns on NA, div by zero trap #-Wpadded -- a bool in a class is enough #-Wredundant-decls -- in both header and func is an error check #-Wmissing-declarations -- pascal style #-Wmissing-noreturn -- warns when always throws exception #-Wunreachable-code -- warns even if reachable .. compiler bug?? #-Waggregate-return -- warns even if passed by reference #-Wunsafe-loop-optimizations -- if can't unroll a loop #-Winline #-Wdisabled-optimization -- -O0 disables optimization, so it warns # 4.2 #-Wpadded -- a bool in a class is enough #-Winline #-Waggregate-return -- warns even if passed by reference #-Wfloat-equal -- warns on NA, div by zero trap #-Wredundant-decls -- in both header and func is an error check #-Wunsafe-loop-optimizations -- warns on any loop with variable count # warnings turned off, because of the public headers #-Wunreachable-code -- didn't use nonportable syntax to hide #-Wmissing-noreturn -- didn't use nonportable syntax to hide # warnings that should be on, but ... #-Wshadow -- lambda functions #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "debug" version, with extra warnings and run-time tracing. # If you get errors or warnings, make a copy of it and modify that. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ modelgen/Make2.g++000066400000000000000000000042061316501211100140760ustar00rootroot00000000000000#$Id: Make2.g++ 2014/07/03 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. # Standard base for g++. CCC = g++ CCFLAGS = \ -DUNIX -O3 -DNDEBUG -I. -I../include -I../../include -W LIBS = \ -lgnucap \ LDFLAGS = -rdynamic \ -L../../lib/O .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ # If you are porting and using g++, you should use this file as a start, # for a "release" version, optimized with run-time tracing removed. # If you get errors or warnings, make a copy of it and modify that. # For the first cut, use "Make2.Debug" as the start for more tracing, # or "Make2.Trace" for an extreme amount of tracing. # After it works, use the file "Make2.g++" as a start for # executable to use. # If the port is non-trivial, check with me first because someone else # may have already done it. # If it works without changes, send me a note so I can put it in the docs. # Please send the changes to aldavis@gnu.org #------------------------------------------------------------ #------------------------------------------------------------ modelgen/Make2.mingw32000066400000000000000000000031671316501211100150150ustar00rootroot00000000000000#$Id: Make2.mingw32 2016/05/15 al $ -*- Makefile -*- # Copyright (C) 2001 Albert Davis # Author: Albert Davis # # This file is part of "Gnucap", the Gnu Circuit Analysis Package # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. #------------------------------------------------------------------------ VPATH = .:.. CCC = i586-mingw32msvc-g++ DLLTOOL = i586-mingw32msvc-dlltool TARGET_EXT = .exe CCFLAGS = \ -O2 -DNDEBUG -I. -I../../include LIBS = -lgnucap LDFLAGS = -L../../lib/MSW .SUFFIXES: .SUFFIXES: .o .cc .cc.o:; $(CCC) $(CCFLAGS) -c $< #------------------------------------------------------------------------ $(TARGET): $(TARGET)$(TARGET_EXT) -ln -s `which gnucap-modelgen` . #------------------------------------------------------------------------ $(TARGET)$(TARGET_EXT): $(TARGET_DEPENDS) rm -f $@ $(CCC) $(CCFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ #------------------------------------------------------------ #------------------------------------------------------------ modelgen/configure000077500000000000000000000033351316501211100145520ustar00rootroot00000000000000#!/bin/sh # configure for executable mkdir -p O #------------- Stuff added to enable --prefix -------------- if test "x$1" != "x"; then # echo Found input parameter -- $1 # Now see if the parameter is --prefix= if test "x${1#--prefix=}" != "x$1"; then # echo "Found --prefix in input args. Setting prefix directory." prefix=${1#--prefix=} else # echo "Found unrecognized parameter in input args." # Just use the default prefix dir. prefix=/usr/local fi else # echo "No input parameter found." # Just use the default prefix dir prefix=/usr/local fi sed -e "s#/usr/local#$prefix#" ../Makefile.template > Makefile #---------------------------------------------------------------- echo "CCFLAGS = \\" >Make.ccflags echo "-DUNIX -O2 -DNDEBUG -I. -I../include -I../../include -W" >>Make.ccflags echo "LIBS = \\" >Make.libs echo "-lgnucap \\" >>Make.libs echo "" >>Make.libs echo "PREFIX = " $prefix >>Make.libs echo "" >>Make.libs cat <Make.sys #------------------------------------------------------------------------ VPATH = .:.. CCC = c++ TARGET_EXT = LDFLAGS = -rdynamic \ -L../../lib/O .SUFFIXES : .o .cc .cc.o:; \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) -c \$< #------------------------------------------------------------------------ \$(TARGET): \$(OBJS) rm -f \$@ \$(CCC) \$(CXXFLAGS) \$(CPPFLAGS) \$(CCFLAGS) \$(OBJS) -o \$@ \$(LIBS) \$(LDFLAGS) #------------------------------------------------------------------------ CAT_EOF echo \# created by $PWD/$0. do not edit >Make2 echo \#------------------------------------------------------------------------ >>Make2 cat Make.ccflags Make.libs Make.sys >>Make2 rm Make.ccflags Make.libs Make.sys exit 0 modelgen/mg_.h000066400000000000000000000465621316501211100135670ustar00rootroot00000000000000/*$Id: mg_.h,v 26.81 2008/05/27 05:33:43 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.10.31 #include "ap.h" /*--------------------------------------------------------------------------*/ #ifdef PASS_TRACE_TAGS #define make_tag() (out << "//" << __func__ << ":" << __LINE__ << "\n") #else #define make_tag() #endif /*--------------------------------------------------------------------------*/ inline std::string to_lower(std::string s) { for (std::string::iterator i = s.begin(); i != s.end(); ++i) { *i = static_cast(tolower(*i)); } return s; } /*--------------------------------------------------------------------------*/ inline std::string to_upper(std::string s) { for (std::string::iterator i = s.begin(); i != s.end(); ++i) { *i = static_cast(toupper(*i)); } return s; } /*--------------------------------------------------------------------------*/ inline void error(const std::string& message) {untested(); std::cerr << message << '\n'; exit(1); } /*--------------------------------------------------------------------------*/ inline void os_error(const std::string& name) {untested(); error(name + ':' + strerror(errno)); } /*--------------------------------------------------------------------------*/ class Base { public: virtual void parse(CS&) = 0; virtual void print(std::ostream& f)const {unreachable(); f << "Base::print";} virtual ~Base() {} }; inline CS& operator>>(CS& f, Base& b) {untested();b.parse(f); return f;} inline std::ostream& operator<<(std::ostream& f, const Base& d) {d.print(f); return f;} /*--------------------------------------------------------------------------*/ template class List_Base :public Base { protected: typedef typename std::list _Std_List_T; _Std_List_T _list; virtual ~List_Base() { for (typename std::list::iterator i = _list.begin(); i != _list.end(); ++i) { delete *i; } } public: virtual void parse(CS& f) = 0; typedef typename std::list::const_iterator const_iterator; const_iterator begin()const {return _list.begin();} const_iterator end()const {return _list.end();} bool is_empty()const {return _list.empty();} size_t size()const {return _list.size();} }; /*--------------------------------------------------------------------------*/ class C_Comment :public Base { public: void parse(CS& f); }; /*--------------------------------------------------------------------------*/ class Cxx_Comment :public Base { public: void parse(CS& f); }; /*--------------------------------------------------------------------------*/ /* A "Collection" differs from a "List" in how it is parsed. * Each parse of a "Collection" created one more object and stores * it in the Collection. The size of the Collection therefore grows by 1. * A "Collection" is often parsed many times. * Each parse of a "List" creates a bunch of objects, and storing them. * A list has opening and closing delimeters, usually {}. * A "List" is usually parsed once. */ template class List :public List_Base { using List_Base::_list; public: //BUG// why not inherited? typedef typename std::list::const_iterator const_iterator; const_iterator begin()const {return _list.begin();} const_iterator end()const {return _list.end();} void parse(CS& file) { int paren = !BEGIN || file.skip1b(BEGIN); unsigned here = file.cursor(); for (;;) { C_Comment c_comment; Cxx_Comment cxx_comment; (file >> "/*") && (file >> c_comment); (file >> "//") && (file >> cxx_comment); if (file.stuck(&here)) { paren -= file.skip1b(END); if (paren == 0) { //file.warn(0, "list exit"); break; }else{ //file.warn(0, "list"); } T* p = new T(file); if (!file.stuck(&here)) { _list.push_back(p); }else{itested(); delete p; file.warn(0, "not valid here"); break; } }else{ } } } void print(std::ostream& f)const { f << BEGIN; for (const_iterator i = begin(); i != end(); ++i) { f << (**i); } f << END; } }; /*--------------------------------------------------------------------------*/ /* A "Collection" differs from a "List" in how it is parsed. * Each parse of a "Collection" created one more object and stores * it in the Collection. The size of the Collection therefore grows by 1. * A "Collection" is often parsed many times. * Each parse of a "List" creates a bunch of objects, and storing them. * A list has opening and closing delimeters, usually {}. * A "List" is usually parsed once. */ template class Collection :public List_Base { using List_Base::_list; public: //BUG// why not inherited? typedef typename std::list::const_iterator const_iterator; const_iterator begin()const {return _list.begin();} const_iterator end()const {return _list.end();} void parse(CS& file) { unsigned here = file.cursor(); T* m = new T(file); if (!file.stuck(&here)) { _list.push_back(m); }else{untested(); delete m; file.warn(0, "what's this??"); } } void print(std::ostream& f)const { for (const_iterator i = begin(); i != end(); ++i) { f << (**i); } } }; /*--------------------------------------------------------------------------*/ class Key :public Base { std::string _name; std::string _var; std::string _value; public: void parse(CS& f) {f >> _name >> _var >> '=' >> _value >> ';';} void print(std::ostream& f)const {f << name() << " " << var() << "=" << value() << "; ";} Key(CS& f) {parse(f);} const std::string& name()const {return _name;} const std::string& var()const {return _var;} const std::string& value()const {return _value;} }; typedef List Key_List; /*--------------------------------------------------------------------------*/ class String_Arg :public Base { std::string _s; public: void parse(CS& f) {f >> _s >> ';';} void print(std::ostream& f)const {f << _s;} void operator=(const std::string& s) {untested();_s = s;} void operator+=(const std::string& s) {_s += s;} bool operator!=(const std::string& s)const {return _s != s;} bool is_empty()const {return _s.empty();} std::string lower()const {return to_lower(_s);} const std::string& to_string()const {return _s;} }; /*--------------------------------------------------------------------------*/ class Bool_Arg :public Base { bool _s; public: void parse(CS& f) {_s = true; f.skip1b(";");} void print(std::ostream& f)const {untested();f << _s;} Bool_Arg() :_s(false) {} operator bool()const {return _s;} }; /*--------------------------------------------------------------------------*/ class Parameter :public Base { std::string _type; std::string _code_name; std::string _user_name; std::string _alt_name; std::string _default_val; std::string _comment; std::string _print_test; std::string _calc_print_test; std::string _scale; std::string _offset; std::string _calculate; std::string _quiet_min; std::string _quiet_max; std::string _final_default; bool _positive; bool _octal; public: void parse(CS& f); void print(std::ostream& f)const; Parameter(CS& f) :_positive(false), _octal(false) {parse(f);} const std::string& type()const {return _type;} const std::string& code_name()const {return _code_name;} const std::string& user_name()const {return _user_name;} const std::string& alt_name()const {return _alt_name;} const std::string& comment()const {return _comment;} const std::string& default_val()const {return _default_val;} const std::string& print_test()const {return _print_test;} const std::string& calc_print_test()const {return _calc_print_test;} const std::string& scale()const {return _scale;} const std::string& offset()const {return _offset;} const std::string& calculate()const {return _calculate;} const std::string& quiet_min()const {return _quiet_min;} const std::string& quiet_max()const {return _quiet_max;} const std::string& final_default()const {return _final_default;} bool positive()const {return _positive;} bool octal()const {return _octal;} void fill_in_default_name() { if (_user_name.empty()) { _user_name = to_upper(_code_name); }else{ } } }; typedef List Parameter_List; /*--------------------------------------------------------------------------*/ class Code_Block :public Base { std::string s; public: void parse(CS& f); void print(std::ostream& f)const {f << s;} Code_Block() {} bool is_empty()const {return s.length() < 2;} }; /*--------------------------------------------------------------------------*/ class Parameter_Block :public Base { String_Arg _unnamed_value; Parameter_List _override; Parameter_List _raw; Parameter_List _calculated; Code_Block _code_pre; Code_Block _code_mid; Code_Block _code_post; public: void parse(CS& f); void print(std::ostream& f)const; const String_Arg& unnamed_value()const {return _unnamed_value;} const Parameter_List& override()const {return _override;} const Parameter_List& raw()const {return _raw;} const Parameter_List& calculated()const {return _calculated;} const Code_Block& code_pre()const {return _code_pre;} const Code_Block& code_mid()const {return _code_mid;} const Code_Block& code_post()const {return _code_post;} bool is_empty()const {return (calculated().is_empty() && code_post().is_empty() && code_mid().is_empty() && override().is_empty() && raw().is_empty() && code_pre().is_empty());} void fill_in_default_values(); }; /*--------------------------------------------------------------------------*/ class Eval :public Base { protected: String_Arg _name; Code_Block _code; Eval() :_name(), _code() {} public: void parse(CS& f); void print(std::ostream& f)const; Eval(CS& f) :_name(), _code() {parse(f);} const String_Arg& name()const {return _name;} const Code_Block& code()const {return _code;} }; typedef Collection Eval_List; /*--------------------------------------------------------------------------*/ class Function :public Eval { public: void parse(CS& f); void print(std::ostream& f)const; Function(CS& f) :Eval() {parse(f);} }; typedef Collection Function_List; /*--------------------------------------------------------------------------*/ class Port :public Base { std::string _name; std::string _short_to; std::string _short_if; public: void parse(CS& f); void print(std::ostream& f)const; Port() {untested();} Port(CS& f) {parse(f);} const std::string& name()const {return _name;} const std::string& short_to()const {return _short_to;} const std::string& short_if()const {return _short_if;} }; typedef List Port_List; /*--------------------------------------------------------------------------*/ class Element :public Base { std::string _dev_type; std::string _name; Port_List _port_list; std::string _eval; std::string _value; std::string _args; std::string _omit; std::string _reverse; std::string _state; public: void parse(CS&); void print(std::ostream& f)const; Element() {untested();} Element(CS& f) {parse(f);} const std::string& dev_type()const {return _dev_type;} const Port_List& ports()const {return _port_list;} const std::string& name()const {return _name;} const std::string& eval()const {return _eval;} const std::string& value()const {return _value;} const std::string& args()const {return _args;} const std::string& omit()const {return _omit;} const std::string& reverse()const {return _reverse;} const std::string& state()const {return _state;} size_t num_nodes()const {return ports().size();} }; typedef Collection Element_List; /*--------------------------------------------------------------------------*/ class Arg :public Base { std::string _arg; public: void parse(CS& f); void print(std::ostream& f)const {f << " " << arg() << ";\n";} Arg(CS& f) {parse(f);} const std::string& arg()const {return _arg;} }; typedef List Arg_List; /*--------------------------------------------------------------------------*/ class Args :public Base { String_Arg _name; String_Arg _type; Arg_List _arg_list; public: void parse(CS& f) {f >> _name >> _type >> _arg_list;} void print(std::ostream& f)const {f << " args " << name() << " " << type() << "\n" << arg_list() << "\n";} Args(CS& f) {parse(f);} const String_Arg& name()const {return _name;} const String_Arg& type()const {return _type;} const Arg_List& arg_list()const {return _arg_list;} typedef Arg_List::const_iterator const_iterator; const_iterator begin()const {return _arg_list.begin();} const_iterator end()const {return _arg_list.end();} }; typedef Collection Args_List; /*--------------------------------------------------------------------------*/ class Circuit :public Base { Port_List _required_nodes; Port_List _optional_nodes; Port_List _local_nodes; Element_List _element_list; Args_List _args_list; bool _sync; public: void parse(CS&); void print(std::ostream& f)const; Circuit() : _sync(false) {} bool sync()const {return _sync;} const Port_List& req_nodes()const {return _required_nodes;} const Port_List& opt_nodes()const {return _optional_nodes;} const Port_List& local_nodes()const {return _local_nodes;} const Element_List& elements()const {return _element_list;} const Args_List& args_list()const {return _args_list;} size_t min_nodes()const {return req_nodes().size();} size_t max_nodes()const {return opt_nodes().size()+min_nodes();} size_t net_nodes()const {untested();return max_nodes();} }; /*--------------------------------------------------------------------------*/ class Probe :public Base { std::string _name; std::string _expression; public: void parse(CS& f) {f >> _name >> '=' >> _expression >> ';';} void print(std::ostream& f)const {f << " " << name() << " = \"" << expression() << "\";\n";} Probe() {untested();} Probe(CS& f) {parse(f);} const std::string& name()const {return _name;} const std::string& expression()const {return _expression;} }; typedef List Probe_List; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class Model :public Base { String_Arg _name; String_Arg _level; String_Arg _dev_type; String_Arg _inherit; Key_List _public_key_list; Key_List _private_key_list; Parameter_Block _independent; Parameter_Block _size_dependent; Parameter_Block _temperature; Code_Block _tr_eval; Code_Block _validate; Bool_Arg _hide_base; public: void parse(CS& f); void print(std::ostream& f)const; Model(CS& f) {parse(f);} bool hide_base()const {return _hide_base;} const String_Arg& name()const {return _name;} const String_Arg& level()const {return _level;} const String_Arg& dev_type()const {return _dev_type;} const String_Arg& inherit()const {return _inherit;} const Key_List& public_key_list()const {return _public_key_list;} const Key_List& private_key_list()const{return _private_key_list;} const Parameter_Block& independent()const {return _independent;} const Parameter_Block& size_dependent()const {return _size_dependent;} const Parameter_Block& temperature()const {return _temperature;} const Code_Block& tr_eval()const {return _tr_eval;} const Code_Block& validate()const {return _validate;} }; typedef Collection Model_List; /*--------------------------------------------------------------------------*/ class Device :public Base { String_Arg _name; String_Arg _parse_name; String_Arg _id_letter; String_Arg _model_type; Circuit _circuit; Probe_List _probes; Parameter_Block _device; Parameter_Block _common; Code_Block _tr_eval; Eval_List _eval_list; Function_List _function_list; public: void parse(CS& f); void print(std::ostream& f)const; Device(CS& f) {parse(f);} const String_Arg& name()const {return _name;} const String_Arg& parse_name()const {return _parse_name;} const String_Arg& id_letter()const {return _id_letter;} const String_Arg& model_type()const {return _model_type;} const Circuit& circuit()const {return _circuit;} const Probe_List& probes()const {return _probes;} const Parameter_Block& device()const {return _device;} const Parameter_Block& common()const {return _common;} const Code_Block& tr_eval()const {return _tr_eval;} const Eval_List& eval_list()const {return _eval_list;} const Function_List& function_list()const {return _function_list;} size_t min_nodes()const {return circuit().min_nodes();} size_t max_nodes()const {return circuit().max_nodes();} size_t net_nodes()const {untested();return circuit().net_nodes();} }; typedef Collection Device_List; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class Head :public Base { std::string s; public: void parse(CS& f); void print(std::ostream& f)const {f << s;} Head() {} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class Attribute :public Base { String_Arg _name; String_Arg _value; public: void parse(CS& f); Attribute(CS& f) {untested();parse(f);} const String_Arg& name()const {untested();return _name;} const String_Arg& value()const {untested();return _value;} }; typedef Collection Attribute_List; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ class File { std::string _name; CS _file; Head _head; Code_Block _h_headers; Code_Block _cc_headers; Model_List _model_list; Device_List _device_list; Code_Block _h_direct; Code_Block _cc_direct; public: File(const std::string& file_name); const std::string& name()const {return _name;} const Head& head()const {return _head;} const Code_Block& h_headers()const {return _h_headers;} const Code_Block& cc_headers()const {return _cc_headers;} const Model_List& models()const {return _model_list;} const Device_List& devices()const {return _device_list;} const Code_Block& h_direct()const {return _h_direct;} const Code_Block& cc_direct()const {return _cc_direct;} }; /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_error.cc000066400000000000000000000053221316501211100147640ustar00rootroot00000000000000/*$Id: mg_error.cc 2016/05/15 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. *------------------------------------------------------------------ * Error handler. */ //testing=script,sparse 2006.10.31 #include "ap.h" extern int errorcount; /*--------------------------------------------------------------------------*/ static void tab(unsigned n) { for (unsigned i=0; i= 0) { ++errorcount; unsigned linestart = spot; for (;;) { if (linestart == 0) {untested(); break; }else if (_cmd[linestart] == '\n') { ++linestart; break; }else{ --linestart; } } int lineno = 1; for (unsigned i=0; i * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.10.31 #include "mg_.h" /*--------------------------------------------------------------------------*/ static C_Comment dummy_c_comment; static Cxx_Comment dummy_cxx_comment; /*--------------------------------------------------------------------------*/ void Parameter::parse(CS& file) { file >> _type >> _code_name >> _comment; unsigned here = file.cursor(); for (;;) { ONE_OF || Set(file, "positive", &_positive, true) || Set(file, "octal", &_octal, true) || ((file >> "name =") && (file >> _user_name)) || ((file >> "alt_name =") && (file >> _alt_name)) || ((file >> "default =") && (file >> _default_val)) || ((file >> "offset =") && (file >> _offset)) || ((file >> "print_test =") && (file >> _print_test)) || ((file >> "calc_print_test =")&& (file >> _calc_print_test)) || ((file >> "scale =") && (file >> _scale)) || ((file >> "calculate =") && (file >> _calculate)) || ((file >> "quiet_min =") && (file >> _quiet_min)) || ((file >> "quiet_max =") && (file >> _quiet_max)) || ((file >> "final_default =") && (file >> _final_default)) || ((file >> "/*") && (file >> dummy_c_comment)) || ((file >> "//") && (file >> dummy_cxx_comment)) ; if (file.skip1b(";,")) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (parameter)"); break; }else if (file.stuck(&here)) {untested(); file.warn(0, "need ;"); break; }else{ } } } /*--------------------------------------------------------------------------*/ void Parameter::print(std::ostream& out)const { out << "\n" " " << type() << " " << code_name() << " \"" << comment() << "\"\n " "name=\"" << user_name() << "\" " "alt_name=\"" << alt_name() << "\" " "default=\"" << default_val() << "\" " "offset=\"" << offset() << "\"\n "; if (positive()) { out << "positive "; } if (octal()) { out << "octal "; } out << "print_test=\"" << print_test() << "\" " "calc_print_test=\"" << calc_print_test() << "\"\n " "scale=\"" << scale() << "\" " "calculate=\"" << calculate() << "\"\n " "quiet_min=\"" << quiet_min() << "\" " "quiet_max=\"" << quiet_max() << "\"\n " "final_default=\"" << final_default() << "\";"; } /*--------------------------------------------------------------------------*/ void Code_Block::parse(CS& file) { // skips the code block, delimited by {} // also checks paren balance, so you can have {} inside the block int paren = file.skip1("{"); if (paren == 0) {untested(); file.warn(0, "need {"); }else{ } unsigned here = file.cursor(); unsigned begin = here; unsigned end = here; for (;;) { paren -= file.skip1b("])"); if (paren == 0) {untested(); file.warn(0, "unbalanced {}[]()"); break; }else{ } end = file.cursor(); paren -= file.skip1b("}"); if (paren == 0) { unsigned ihere = file.cursor(); while (file.reset(--end).peek() != '\n' && end >= begin) { } ++end; file.reset(ihere); break; }else{ } if (file.stuck(&here)) {untested(); file.warn(0, "syntax error"); break; }else{ } paren += file.skip1b("{[("); file.skip1b(";="); std::string foo; file >> foo; } s = file.substr(begin, end - begin); } /*--------------------------------------------------------------------------*/ static void fill_in_default_names(Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { (**p).fill_in_default_name(); } } /*--------------------------------------------------------------------------*/ void Parameter_Block::parse(CS& file) { int paren = file.skip1b("{"); unsigned here = file.cursor(); for (;;) { ONE_OF || ((file >> "unnamed ") && (file >> _unnamed_value)) || ((file >> "override ") && (file >> _override)) || ((file >> "raw_parameters ") && (file >> _raw)) || ((file >> "calculated_parameters ")&& (file >> _calculated)) || ((file >> "code_pre ") && (file >> _code_pre)) || ((file >> "code_mid ") && (file >> _code_mid)) || ((file >> "code_post ") && (file >> _code_post)) || ((file >> "/*") && (file >> dummy_c_comment)) || ((file >> "//") && (file >> dummy_cxx_comment)) ; paren -= file.skip1b("}"); if (paren == 0) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (Parameter_Block)"); break; }else if (file.stuck(&here)) {itested(); file.warn(0, "bad Parameter_Code_Block"); break; }else{ } } fill_in_default_names(_calculated); fill_in_default_names(_raw); // but not _override } /*--------------------------------------------------------------------------*/ void Parameter_Block::print(std::ostream& out)const { out << "{\n"; if (unnamed_value() != "") { out << " unnamed " << unnamed_value() << ";\n"; } out << " override " << override() << "\n" " raw_parameters " << raw() << "\n" " calculated_parameters " << calculated() << "\n" " code_pre {" << code_pre() << " }\n" " code_mid {" << code_mid() << " }\n" " code_post {" << code_post() << " }\n" " }\n"; } /*--------------------------------------------------------------------------*/ void Eval::parse(CS& file) { file >> _name >> _code; } /*--------------------------------------------------------------------------*/ void Eval::print(std::ostream& out)const { out << " eval " << name() << " {" << code() << " }\n"; } /*--------------------------------------------------------------------------*/ void Function::parse(CS& file) { file >> _name; _name += '(' + file.ctos("{", "(", ")") + ')'; file >> _code; } /*--------------------------------------------------------------------------*/ void Function::print(std::ostream& out)const { out << " function " << name() << " {" << code() << " }\n"; } /*--------------------------------------------------------------------------*/ void Element::parse(CS& file) { file >> _dev_type >> _name >> _port_list; unsigned here = file.cursor(); for (;;) { ONE_OF || ((file >> "eval =") && (file >> _eval)) || ((file >> "value =") && (file >> _value)) || ((file >> "args =") && (file >> _args)) || ((file >> "omit =") && (file >> _omit)) || ((file >> "reverse =") && (file >> _reverse)) || ((file >> "state =") && (file >> _state)) || ((file >> "/*") && (file >> dummy_c_comment)) || ((file >> "//") && (file >> dummy_cxx_comment)) ; if (file.skip1b(";")) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (Element)"); break; }else if (file.stuck(&here)) {untested(); file.warn(0, "need ;"); break; }else{ } } } /*--------------------------------------------------------------------------*/ void Element::print(std::ostream& out)const { out << " " << dev_type() << " " << name() << " " << ports(); if (eval() != "") { out << " eval=\"" << eval() << "\""; } if (value() != "") { out << " value=\"" << value() << "\""; } if (args() != "") { out << " args=\"" << args() << "\""; } if (omit() != "") { out << " omit=\"" << omit() << "\""; } if (reverse() != "") { out << " reverse=\"" << reverse() << "\""; } if (state() != "") { out << " state=\"" << state() << "\""; } out << ";\n"; } /*--------------------------------------------------------------------------*/ void Arg::parse(CS& file) { file.skipbl(); _arg = file.get_to(";"); file.skip1b(";"); } /*--------------------------------------------------------------------------*/ void Circuit::parse(CS& file) { int paren = file.skip1b("{"); (file >> "/*") && (file >> dummy_c_comment); (file >> "//") && (file >> dummy_cxx_comment); (file >> "sync ;") && (_sync = true); (file >> "ports ") && ((file >> _required_nodes >> _optional_nodes >> ';') || file.warn(0, "need ports")); (file >> "local_nodes ") && (file >> _local_nodes >> ';'); unsigned here = file.cursor(); do { (file >> "args ") && (file >> _args_list); } while (file.more() && !file.stuck(&here)); for (;;) { paren -= file.skip1b("}"); if (paren == 0) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (Circuit)"); break; }else{ } ONE_OF || ((file >> "/*") && (file >> dummy_c_comment)) || ((file >> "//") && (file >> dummy_cxx_comment)) || (file >> _element_list) ; if (file.stuck(&here)) {untested(); file.warn(0, "bad Circuit"); break; }else{ } } } /*--------------------------------------------------------------------------*/ void Circuit::print(std::ostream& out)const { out << " {\n"; if (sync()) { out << " sync;\n"; } out << " ports " << req_nodes() << opt_nodes() << ";\n" " local_nodes " << local_nodes() << "\n" << args_list() << elements() << "}\n"; } /*--------------------------------------------------------------------------*/ void Model::parse(CS& file) { file >> _name; int paren = file.skip1b("{"); unsigned here = file.cursor(); for (;;) { ONE_OF || ((file >> "hide_base ") && (file >> _hide_base)) || ((file >> "level ") && (file >> _level)) || ((file >> "dev_type ") && (file >> _dev_type)) || ((file >> "inherit ") && (file >> _inherit)) || ((file >> "public_keys ") && (file >> _public_key_list)) || ((file >> "private_keys ") && (file >> _private_key_list)) || ((file >> "independent ") && (file >> _independent)) || ((file >> "size_dependent ") && (file >> _size_dependent)) || ((file >> "temperature_dependent ") && (file >> _temperature)) || ((file >> "tr_eval ") && (file >> _tr_eval)) || ((file >> "validate ") && (file >> _validate)) || ((file >> "/*") && (file >> dummy_c_comment)) || ((file >> "//") && (file >> dummy_cxx_comment)) ; paren -= file.skip1b("}"); if (paren == 0) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (Model)"); break; }else if (file.stuck(&here)) {itested(); file.warn(0, "bad Model"); break; }else{ } } } /*--------------------------------------------------------------------------*/ void Model::print(std::ostream& out)const { out << "model " << name() << " {\n"; if (hide_base()) { out << " hide_base;\n"; } out << " level = " << level() << ";\n" " dev_type = " << dev_type() << ";\n" " inherit = " << inherit() << ";\n" " public_keys " << public_key_list() << "\n" " private_keys " << private_key_list() << "\n" " independent " << independent() << "\n" " size_dependent " << size_dependent() << "\n" " temperature_dependent " << temperature() << "\n" " tr_eval {" << tr_eval() << " }\n" " validate {" << validate() << " }\n" "}\n"; } /*--------------------------------------------------------------------------*/ void Device::parse(CS& file) { file >> _name; int paren = file.skip1b("{"); unsigned here = file.cursor(); for (;;) { ONE_OF || ((file >> "parse_name ") && (file >> _parse_name)) || ((file >> "id_letter ") && (file >> _id_letter)) || ((file >> "model_type ") && (file >> _model_type)) || ((file >> "circuit ") && (file >> _circuit)) || ((file >> "tr_probe ") && (file >> _probes)) || ((file >> "device ") && (file >> _device)) || ((file >> "common ") && (file >> _common)) || ((file >> "tr_eval ") && (file >> _tr_eval)) || ((file >> "eval ") && (file >> _eval_list)) || ((file >> "function ") && (file >> _function_list)) || ((file >> "/*") && (file >> dummy_c_comment)) || ((file >> "//") && (file >> dummy_cxx_comment)) ; paren -= file.skip1b("}"); if (paren == 0) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (Device)"); break; }else if (file.stuck(&here)) {itested(); file.warn(0, "bad Device"); break; }else{ } } } /*--------------------------------------------------------------------------*/ void Device::print(std::ostream& out)const { out << "device " << name() << " {\n" " parse_name " << parse_name() << ";\n" " id_letter " << id_letter() << ";\n" " model_type " << model_type() << ";\n" " circuit " << circuit() << "\n" " tr_probe " << probes() << "\n" " device " << device() << "\n" " common " << common() << "\n" " tr_eval {" << tr_eval() << " }\n" << eval_list() << function_list() << "}\n"; } /*--------------------------------------------------------------------------*/ void C_Comment::parse(CS& file) { unsigned here = file.cursor(); for (;;) { file.skipto1('*'); if (file.umatch("*/")) { break; // done with comment }else if (file.stuck(&here)) {untested(); file.warn(0, "unterminated C comment"); break; }else{untested(); file.skip(); } } } /*--------------------------------------------------------------------------*/ void Cxx_Comment::parse(CS& file) { unsigned here = file.cursor(); file.skipto1('\n'); if (file.stuck(&here)) {untested(); file.warn(0, "unterminated C++ comment"); }else{ } } /*--------------------------------------------------------------------------*/ void Port::parse(CS& file) { file >> _name; unsigned here = file.cursor(); for (;;) { ONE_OF || ((file >> "short_to =") && (file >> _short_to)) || ((file >> "short_if =") && (file >> _short_if)) ; if (file.skip1b(";")) { break; }else if (!file.more()) {untested(); file.warn(0, "premature EOF (Port)"); break; }else if (file.stuck(&here)) { break; }else{ } } } /*--------------------------------------------------------------------------*/ void Port::print(std::ostream& out)const { if (short_to() != "" || short_if() != "") { out << name() << " short_to=\"" << short_to() << "\" short_if=\"" << short_if() << "\";\n"; }else{ out << name() << "; "; } } /*--------------------------------------------------------------------------*/ void Head::parse(CS& file) { unsigned here = file.cursor(); unsigned begin = 0; unsigned end = here; for (;;) { file.skipto1('*'); if (file.umatch("*/")) { end = file.cursor(); break; // done with head }else if (file.stuck(&here)) {untested(); file.warn(0, "unterminated head"); break; }else{ file.skip(); } } s = file.substr(begin, end-begin); } /*--------------------------------------------------------------------------*/ File::File(const std::string& file_name) :_name(file_name), _file(CS::_WHOLE_FILE, file_name) { (_file >> "/*") && (_file >> _head); unsigned here = _file.cursor(); for (;;) { ONE_OF || ((_file >> "/*") && (_file >> dummy_c_comment)) || ((_file >> "//") && (_file >> dummy_cxx_comment)) || ((_file >> "h_headers ") && (_file >> _h_headers)) || ((_file >> "cc_headers ")&& (_file >> _cc_headers)) || ((_file >> "device ") && (_file >> _device_list)) || ((_file >> "model ") && (_file >> _model_list)) || ((_file >> "h_direct ") && (_file >> _h_direct)) || ((_file >> "cc_direct ") && (_file >> _cc_direct)) ; if (!_file.more()) { break; }else if (_file.stuck(&here)) {itested(); _file.warn(0, "syntax error, need head or model"); break; }else{ } } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_main.cc000066400000000000000000000047701316501211100145650ustar00rootroot00000000000000/*$Id: mg_main.cc 2016/05/15 al $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.11.01 #include "u_opt.h" #include "mg_out.h" #include "patchlev.h" /*global*/ int errorcount = 0; /*--------------------------------------------------------------------------*/ int main(int argc, char** argv) { try { if (argc > 2 && strcmp(argv[1],"-h")==0) { for (int i=2; i 2 && strcmp(argv[1],"-cc")==0) { for (int i=2; i 2 && strcmp(argv[1],"-dump")==0) { for (int i=2; i 2 && strcmp(argv[1],"-v")==0) {untested(); std::cerr << "Gnucap model compiler " PATCHLEVEL "\n" "Part of the Gnu Circuit Analysis Package\n" "Never trust any version less than 1.0\n" " or any version with a number that looks like a date.\n" "Copyright 2001-2003, Albert Davis\n" "Gnucap comes with ABSOLUTELY NO WARRANTY\n" "This is free software, and you are welcome\n" "to redistribute it under certain conditions\n" "according to the GNU General Public License.\n" "See the file \"COPYING\" for details.\n"; }else if (argc > 1) {itested(); for (int i=1; i * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include #include "mg_.h" /*--------------------------------------------------------------------------*/ /* mg_out_root.cc */ void make_h_file(const File&); void make_cc_file(const File&); void make_dump_file(const File&); /*--------------------------------------------------------------------------*/ /* mg_out_lib.cc */ void make_final_adjust_eval_parameter_list(std::ofstream&, const Parameter_List&); void make_final_adjust_value(std::ofstream&, const Parameter&); void make_final_adjust_value_list(std::ofstream&, const Parameter_List&); void make_final_adjust_parameter(std::ofstream&, const Parameter&); void make_final_adjust_parameter_list(std::ofstream&, const Parameter_List&); void make_final_adjust(std::ofstream&, const Parameter_Block&); void make_construct_parameter_list(std::ofstream&, const Parameter_List&); void make_get_param_list(std::ofstream&, const Parameter_List&); void make_print_param_list(std::ofstream&, const Parameter_List&); void make_print_calc_param_list(std::ofstream&, const Parameter_List&); void make_copy_construct_parameter_list(std::ofstream&, const Parameter_List&); /*--------------------------------------------------------------------------*/ /* mg_out_model.cc */ void make_cc_model(std::ofstream&, const Model&); /* mg_out_dev.cc */ void make_cc_dev(std::ofstream&, const Device&); /* mg_out_common.cc */ void make_cc_common(std::ofstream&, const Device&); /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_out_common.cc000066400000000000000000000353071316501211100160200ustar00rootroot00000000000000/*$Id: mg_out_common.cc,v 26.130 2009/11/15 21:51:08 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.11.01 #include "mg_out.h" /*--------------------------------------------------------------------------*/ static void make_common_default_constructor(std::ofstream& out,const Device& d) { make_tag(); out << "COMMON_" << d.name() << "::COMMON_" << d.name() << "(int c)\n" " :COMMON_COMPONENT(c)"; make_construct_parameter_list(out, d.common().raw()); out << ",\n _sdp(0)"; make_construct_parameter_list(out, d.common().calculated()); for (Args_List::const_iterator p = d.circuit().args_list().begin(); p != d.circuit().args_list().end(); ++p) { out << ",\n _" << (**p).name() << "(0)"; } out << "\n" "{\n" " ++_count;\n"; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) {untested(); if (!((**p).final_default().empty())) {untested(); out << " " << (**p).code_name() << " = NA;\n"; }else{untested(); } if (!((**p).default_val().empty())) {untested(); out << " " << (**p).code_name() << " = " << (**p).default_val() <<";\n"; }else{untested(); } } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_common_copy_constructor(std::ofstream& out, const Device& d) { make_tag(); out << "COMMON_" << d.name() << "::COMMON_" << d.name() << "(const COMMON_" << d.name() << "& p)\n" " :COMMON_COMPONENT(p)"; make_copy_construct_parameter_list(out, d.common().raw()); out << ",\n _sdp(0)"; make_copy_construct_parameter_list(out, d.common().calculated()); for (Args_List::const_iterator p = d.circuit().args_list().begin(); p != d.circuit().args_list().end(); ++p) { out << ",\n _" << (**p).name() << "(0)"; } out << "\n" "{\n" " ++_count;\n"; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) {untested(); out << ",\n " << (**p).code_name() << "(p." << (**p).code_name() << ")"; } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_common_destructor(std::ofstream& out, const Device& d) { make_tag(); out << "COMMON_" << d.name() << "::~COMMON_" << d.name() << "()\n" "{\n"; for (Args_List::const_iterator p = d.circuit().args_list().begin(); p != d.circuit().args_list().end(); ++p) { out << " detach_common(&_" << (**p).name() << ");\n"; } out << " --_count;\n" " delete _sdp;\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_common_operator_equal(std::ofstream& out, const Device& d) { make_tag(); out << "bool COMMON_" << d.name() << "::operator==(const COMMON_COMPONENT& x)const\n" "{\n" " const COMMON_" << d.name() << "* p = dynamic_cast(&x);\n" " return (p\n"; for (Parameter_List::const_iterator p = d.common().raw().begin(); p != d.common().raw().end(); ++p) { out << " && " << (**p).code_name() << " == p->" << (**p).code_name() << '\n'; } out << " && _sdp == p->_sdp\n" " && COMMON_COMPONENT::operator==(x));\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_common_set_param_by_index(std::ofstream& out, const Device& d) { make_tag(); out << "void COMMON_" << d.name() << "::set_param_by_index(int I, std::string& Value, int Offset)\n" "{\n" " switch (COMMON_" << d.name() << "::param_count() - 1 - I) {\n"; size_t i = 0; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": " << (**p).code_name() << " = Value; break;\n"; }else{unreachable(); } } assert(i == d.common().override().size()); for (Parameter_List::const_iterator p = d.common().raw().begin(); p != d.common().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": " << (**p).code_name() << " = Value; break;\n"; }else{unreachable(); } } assert(i == d.common().override().size() + d.common().raw().size()); out << " default: COMMON_COMPONENT::set_param_by_index(I, Value, Offset);\n" " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_common_param_is_printable(std::ofstream& out, const Device& d) { make_tag(); out << "bool COMMON_" << d.name() << "::param_is_printable(int i)const\n" "{\n" " switch (COMMON_" << d.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return ("; if (!((**p).print_test().empty())) { out << (**p).print_test() << ");\n"; }else if ((**p).default_val() == "NA") { out << (**p).code_name() << " != NA);\n"; }else{ out << "true);\n"; } }else{unreachable(); } } assert(i == d.common().override().size()); for (Parameter_List::const_iterator p = d.common().raw().begin(); p != d.common().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return ("; if (!((**p).print_test().empty())) { out << (**p).print_test() << ");\n"; }else if ((**p).default_val() == "NA") { out << (**p).code_name() << " != NA);\n"; }else{ out << "true);\n"; } }else{unreachable(); } } assert(i == d.common().override().size() + d.common().raw().size()); out << " default: return COMMON_COMPONENT::param_is_printable(i);\n" " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_common_param_name(std::ofstream& out, const Device& d) { make_tag(); out << "std::string COMMON_" << d.name() << "::param_name(int i)const\n" "{\n" " switch (COMMON_" << d.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).user_name()) << "\";\n"; }else{unreachable(); } } assert(i == d.common().override().size()); for (Parameter_List::const_iterator p = d.common().raw().begin(); p != d.common().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).user_name()) << "\";\n"; }else{unreachable(); } } assert(i == d.common().override().size() + d.common().raw().size()); out << " default: return COMMON_COMPONENT::param_name(i);\n" " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_common_param_name_or_alias(std::ofstream& out, const Device& d) { make_tag(); out << "std::string COMMON_" << d.name() << "::param_name(int i, int j)const\n" "{\n" " if (j == 0) {\n" " return param_name(i);\n" " }else if (j == 1) {\n" " switch (COMMON_" << d.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).alt_name()) << "\";\n"; }else{unreachable(); } } assert(i == d.common().override().size()); for (Parameter_List::const_iterator p = d.common().raw().begin(); p != d.common().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).alt_name()) << "\";\n"; }else{unreachable(); } } assert(i == d.common().override().size() + d.common().raw().size()); out << " default: return \"\";\n" " }\n" " }else{untested();//281\n" " return COMMON_COMPONENT::param_name(i, j);\n" " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_common_param_value(std::ofstream& out, const Device& d) { make_tag(); out << "std::string COMMON_" << d.name() << "::param_value(int i)const\n" "{\n" " switch (COMMON_" << d.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; for (Parameter_List::const_iterator p = d.common().override().begin(); p != d.common().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return " << (**p).code_name() << ".string();\n"; }else{unreachable(); } } assert(i == d.common().override().size()); for (Parameter_List::const_iterator p = d.common().raw().begin(); p != d.common().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return " << (**p).code_name() << ".string();\n"; }else{unreachable(); } } assert(i == d.common().override().size() + d.common().raw().size()); out << " default: return COMMON_COMPONENT::param_value(i);\n" " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_common_expand(std::ofstream& out, const Device& d) { make_tag(); out << "void COMMON_" << d.name() << "::expand(const COMPONENT* d)\n" "{\n" " COMMON_COMPONENT::expand(d);\n" " attach_model(d);\n" " COMMON_" << d.name() << "* c = this;\n" " const MODEL_" << d.model_type() << "* m = dynamic_cast(model());\n" " if (!m) {\n" " throw Exception_Model_Type_Mismatch(d->long_label(), modelname(), \"" << d.parse_name() << "\");\n" " }else{\n" " }\n" " // size dependent\n" " //delete _sdp;\n" " _sdp = m->new_sdp(this);\n" " assert(_sdp);\n" " const SDP_" << d.model_type() << "* s = prechecked_cast(_sdp);\n" " assert(s);\n" "\n" " // subcircuit commons, recursive\n"; for (Args_List::const_iterator p = d.circuit().args_list().begin(); p != d.circuit().args_list().end(); ++p) { out << " COMMON_" << (**p).type() << "* " << (**p).name() << " = new COMMON_" << (**p).type() << ";\n"; for (Arg_List::const_iterator a = (**p).begin(); a != (**p).end(); ++a) { out << " " << (**p).name() << "->" << (**a).arg() << ";\n"; } out << " attach_common(" << (**p).name() << ", &_" << (**p).name() << ");\n\n"; } out << " assert(c == this);\n" "}\n" "/*--------------------------------------------------------------------------*/\n" "void COMMON_" << d.name() << "::precalc_last(const CARD_LIST* par_scope)\n" "{\n" " assert(par_scope);\n" " COMMON_COMPONENT::precalc_last(par_scope);\n" " COMMON_" << d.name() << "* c = this;\n" " const MODEL_" << d.model_type() << "* m = prechecked_cast(model());\n"; make_final_adjust(out, d.common()); out << "\n" " // size dependent\n" " //delete _sdp;\n" " _sdp = m->new_sdp(this);\n" " assert(_sdp);\n" " const SDP_" << d.model_type() << "* s = prechecked_cast(_sdp);\n" " assert(s);\n" "\n" " // subcircuit commons, recursive\n"; for (Args_List::const_iterator p = d.circuit().args_list().begin(); p != d.circuit().args_list().end(); ++p) { out << " COMMON_" << (**p).type() << "* " << (**p).name() << " = new COMMON_" << (**p).type() << ";\n"; for (Arg_List::const_iterator a = (**p).begin(); a != (**p).end(); ++a) { out << " " << (**p).name() << "->" << (**a).arg() << ";\n"; } out << " attach_common(" << (**p).name() << ", &_" << (**p).name() << ");\n\n"; } out << " assert(c == this);\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_cc_common(std::ofstream& out, const Device& d) { make_tag(); make_common_default_constructor(out, d); make_common_copy_constructor(out, d); make_common_destructor(out, d); make_common_operator_equal(out, d); make_common_set_param_by_index(out, d); make_common_param_is_printable(out, d); make_common_param_name(out, d); make_common_param_name_or_alias(out, d); make_common_param_value(out, d); make_common_expand(out, d); out << "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_out_dev.cc000066400000000000000000000362321316501211100153040ustar00rootroot00000000000000/*$Id: mg_out_dev.cc 2014/11/23 al$ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include "mg_out.h" /*--------------------------------------------------------------------------*/ static void make_dev_dispatcher(std::ofstream& out, const Device& d) { out << "namespace DEV_" << d.name() << "_DISPATCHER { \n" " static DEV_" << d.name() << " p0;\n" " static DISPATCHER::INSTALL\n" " d0(&device_dispatcher, \""; if (d.id_letter() != "") { out << d.id_letter() << '|'; }else{ } out << d.parse_name() << "\", &p0);\n" "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_dev_eval(std::ofstream& out, const Eval& e, const String_Arg& dev_type, const String_Arg& model_type) { make_tag(); std::string class_name = "EVAL_" + dev_type.to_string() + '_' + e.name().to_string(); out << "static " << class_name << " Eval_" << e.name().to_string() << "(CC_STATIC);\n" "void " << class_name << "::tr_eval(ELEMENT* d)const\n" "{\n" " assert(d);\n" " DEV_" << dev_type << "* p = prechecked_cast(d->owner());\n" " assert(p);\n" " const COMMON_" << dev_type << "* c = prechecked_cast(p->common());\n" " assert(c);\n" " const SDP_" << model_type << "* s = prechecked_cast(c->sdp());\n" " assert(s);\n" " const MODEL_" << model_type << "* m = prechecked_cast(c->model());\n" " assert(m);\n" << e.code() << "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_dev_evals(std::ofstream& out, const Device& d) { make_tag(); for (Eval_List::const_iterator e = d.eval_list().begin(); e != d.eval_list().end(); ++e) { make_dev_eval(out, **e, d.name(), d.model_type()); } } /*--------------------------------------------------------------------------*/ void make_dev_default_constructor(std::ofstream& out,const Device& d) { make_tag(); out << "DEV_" << d.name() << "::DEV_" << d.name() << "()\n" " :BASE_SUBCKT()"; out << ",\n // input parameters"; make_construct_parameter_list(out, d.device().raw()); out << ",\n // calculated parameters"; make_construct_parameter_list(out, d.device().calculated()); out << ",\n // netlist"; for (Element_List::const_iterator p = d.circuit().elements().begin(); p != d.circuit().elements().end(); ++p) { out << ",\n _" << (**p).name() << "(0)"; } out << "\n{\n" " _n = _nodes;\n" " attach_common(&Default_" << d.name() << ");\n" " ++_count;\n"; out << " // overrides\n"; for (Parameter_List::const_iterator p = d.device().override().begin(); p != d.device().override().end(); ++p) {untested(); if (!((**p).final_default().empty())) {untested(); out << " " << (**p).code_name() << " = NA;\n"; }else{untested(); } if (!((**p).default_val().empty())) {untested(); out << " " << (**p).code_name() << " = " << (**p).default_val() <<";\n"; }else{untested(); } } out << "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_dev_copy_constructor(std::ofstream& out, const Device& d) { make_tag(); out << "DEV_" << d.name() << "::DEV_" << d.name() << "(const DEV_" << d.name() << "& p)\n" " :BASE_SUBCKT(p)"; out << ",\n // input parameters"; make_copy_construct_parameter_list(out, d.device().raw()); out << ",\n // calculated parameters"; make_copy_construct_parameter_list(out, d.device().calculated()); out << ",\n // netlist"; for (Element_List::const_iterator p = d.circuit().elements().begin(); p != d.circuit().elements().end(); ++p) { out << ",\n _" << (**p).name() << "(0)"; } out << "\n{\n" " _n = _nodes;\n" " for (int ii = 0; ii < max_nodes() + int_nodes(); ++ii) {\n" " _n[ii] = p._n[ii];\n" " }\n" " ++_count;\n"; out << " // overrides\n"; for (Parameter_List::const_iterator p = d.device().override().begin(); p != d.device().override().end(); ++p) {untested(); out << ",\n " << (**p).code_name() << "(p." << (**p).code_name() << ")"; } out << "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_set_parameters(std::ofstream& out, const Element& e) { make_tag(); out << " _" << e.name() << "->set_parameters(\"" << e.name() << "\", this, "; if (e.eval() != "") { out << "&Eval_" << e.eval(); }else if (e.args() != "") { out << "c->_" << e.args(); }else{ out << "NULL"; } out << ", " << ((e.value() != "") ? e.value() : "0."); if (e.state() != "") { out << ", " << e.num_nodes()/2+1 << ", &" << e.state(); }else{ out << ", 0, NULL"; } out << ", " << e.num_nodes() << ", nodes);\n"; } /*--------------------------------------------------------------------------*/ static void make_dev_expand_one_element(std::ofstream& out, const Element& e) { make_tag(); if (!(e.omit().empty())) { out << " if (" << e.omit() << ") {\n" " if (_" << e.name() << ") {\n" " subckt()->erase(_" << e.name() << ");\n" " _" << e.name() << " = NULL;\n" " }else{\n" " }\n" " }else{\n"; }else{ out << " {\n"; } out << " if (!_" << e.name() << ") {\n" " const CARD* p = device_dispatcher[\"" << e.dev_type() << "\"];\n" " assert(p);\n" " _" << e.name() << " = dynamic_cast(p->clone());\n" " assert(_" << e.name() << ");\n" " subckt()->push_front(_" << e.name() << ");\n" " }else{\n" " }\n"; if (!(e.reverse().empty())) { out << " if (" << e.reverse() << ") {\n"; out << " node_t nodes[] = {"; Port_List::const_iterator p = e.ports().begin(); if (p != e.ports().end()) { Port_List::const_iterator even = p; ++p; assert(p != e.ports().end()); out<< "_n[n_" << (**p).name() << "], _n[n_" << (**even).name() << "]"; bool even_node = true; while (++p != e.ports().end()) {untested(); if (even_node) {untested(); even_node = false; even = p; }else{untested(); even_node = true; out<< ", _n[n_"<< (**p).name()<< "], _n[n_"<<(**even).name()<< "]"; } } }else{untested(); } out << " };\n"; make_set_parameters(out, e); out << " }else{\n"; }else{ out << " {\n"; } out << " node_t nodes[] = {"; Port_List::const_iterator p = e.ports().begin(); if (p != e.ports().end()) { assert(*p); out << "_n[n_" << (**p).name() << "]"; while (++p != e.ports().end()) { out << ", _n[n_" << (**p).name() << "]"; } }else{untested(); } out << "};\n"; make_set_parameters(out, e); out << " }\n"; out << " }\n"; } /*--------------------------------------------------------------------------*/ static void make_dev_allocate_local_nodes(std::ofstream& out, const Port& p) { make_tag(); if (p.short_if().empty()) { out << " if (!(_n[n_" << p.name() << "].n_())) {\n" " _n[n_" << p.name() << "] = _n[n_" << p.short_to() << "];\n" " }else{\n" " }\n"; //BUG// generates bad code if no short_to }else{ out << " //assert(!(_n[n_" << p.name() << "].n_()));\n" " //BUG// this assert fails on a repeat elaboration after a change.\n" " //not sure of consequences when new_model_node called twice.\n" " if (!(_n[n_" << p.name() << "].n_())) {\n" " if (" << p.short_if() << ") {\n" " _n[n_" << p.name() << "] = _n[n_" << p.short_to() << "];\n" " }else{\n" " _n[n_" << p.name() << "].new_model_node(\".\" + long_label() + \"." << p.name() << "\", this);\n" " }\n" " }else{\n" " if (" << p.short_if() << ") {\n" " assert(_n[n_" << p.name() << "] == _n[n_" << p.short_to() << "]);\n" " }else{\n" " //_n[n_" << p.name() << "].new_model_node(\"" << p.name() << ".\" + long_label(), this);\n" " }\n" " }\n"; } } /*--------------------------------------------------------------------------*/ static void make_dev_expand(std::ofstream& out, const Device& d) { make_tag(); out << "void DEV_" << d.name() << "::expand()\n" "{\n" " BASE_SUBCKT::expand(); // calls common->expand, attached model\n" " assert(_n);\n" " assert(common());\n" " const COMMON_" << d.name() << "* c = static_cast(common());\n" " assert(c);\n" " assert(c->model());\n" " const MODEL_" << d.model_type() << "* m = prechecked_cast(c->model());\n" " assert(m);\n" " assert(c->sdp());\n" " const SDP_" << d.model_type() << "* s = prechecked_cast(c->sdp());\n" " assert(s);\n" " if (!subckt()) {\n" " new_subckt();\n" " }else{\n" " }\n" "\n" " if (_sim->is_first_expand()) {\n" " precalc_first();\n" " precalc_last();\n" " // optional nodes\n"; for (Port_List::const_iterator p = d.circuit().opt_nodes().begin(); p != d.circuit().opt_nodes().end(); ++p) { make_dev_allocate_local_nodes(out, **p); } out << " // local nodes\n"; for (Port_List::const_iterator p = d.circuit().local_nodes().begin(); p != d.circuit().local_nodes().end(); ++p) { make_dev_allocate_local_nodes(out, **p); } out << "\n" " // clone subckt elements\n"; for (Element_List::const_iterator e = d.circuit().elements().begin(); e != d.circuit().elements().end(); ++e) { make_dev_expand_one_element(out, **e); } out << " }else{\n" " //precalc();\n" " }\n" " //precalc();\n" " subckt()->expand();\n" " //subckt()->precalc();\n" " assert(!is_constant());\n"; if (d.circuit().sync()) { out << " subckt()->set_slave();\n"; }else{ } out << "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static std::string fix_expression(const std::string& in) { std::string out; out[0] = '\0'; CS x(CS::_STRING, in); for (;;) { if (x.peek() == '@') { x.skip1('@'); std::string object(x.ctos("[,")); x.skip1('['); std::string attrib(x.ctos("]")); x.skip1(']'); if (object[0] == 'n') { out += " _n[" + object + "]"; if (attrib != "") { out += ".v0()"; }else{ } }else{ out += " CARD::probe(_" + object + ",\"" + attrib + "\")"; } }else if (x.more()) { out += ' ' + x.ctos("@"); }else{ break; } } return out; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void make_probe_parameter(std::ofstream& out, const Parameter& p) { make_tag(); out << "if (Umatch(x, \""; if (!(p.alt_name().empty())) {untested(); out << to_lower(p.alt_name()) << " \" || \""; } out << to_lower(p.user_name()) << " \")) {\n" " return " << p.code_name() << ";\n" " }else "; } /*--------------------------------------------------------------------------*/ void make_probe_parameter_list(std::ofstream& out,const Parameter_List& pl) { make_tag(); for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_probe_parameter(out, **p); } } /*--------------------------------------------------------------------------*/ static void make_dev_probe(std::ofstream& out, const Device& d) { make_tag(); out << "double DEV_" << d.name() << "::tr_probe_num(const std::string& x)const\n" "{\n" " assert(_n);\n" " const COMMON_" << d.name() << "* c = prechecked_cast(common());\n" " assert(c);\n" " const MODEL_" << d.model_type() << "* m = prechecked_cast(c->model());\n" " assert(m);\n" " const SDP_" << d.model_type() << "* s = prechecked_cast(c->sdp());\n" " assert(s);\n" "\n" " "; for (Probe_List::const_iterator p = d.probes().begin(); p != d.probes().end(); ++p) { assert(*p); out << "if (Umatch(x, \"" << (**p).name() << " \")) {\n" " return " << fix_expression((**p).expression()) << ";\n" " }else "; } make_probe_parameter_list(out, d.device().calculated()); out << "{\n" " return BASE_SUBCKT::tr_probe_num(x);\n" " }\n" "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_dev_aux(std::ofstream& out, const Device& d) { make_tag(); for (Function_List::const_iterator p = d.function_list().begin(); p != d.function_list().end(); ++p) { out << "void DEV_" << d.name() << "::" << (**p).name() << "\n" "{\n" << (**p).code() << "}\n" "/*--------------------------------------" "------------------------------------*/\n"; } } /*--------------------------------------------------------------------------*/ void make_cc_dev(std::ofstream& out, const Device& d) { make_tag(); make_dev_dispatcher(out, d); make_dev_evals(out, d); make_dev_default_constructor(out, d); make_dev_copy_constructor(out, d); make_dev_expand(out, d); make_dev_probe(out, d); make_dev_aux(out, d); out << "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_out_dump.cc000066400000000000000000000052511316501211100154700ustar00rootroot00000000000000/*$Id: mg_out_dump.cc,v 26.81 2008/05/27 05:33:43 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include "md.h" #include "mg_out.h" /*--------------------------------------------------------------------------*/ static void make_header(std::ofstream& out, const File& in) { out << in.head(); } /*--------------------------------------------------------------------------*/ static void make_tail(std::ofstream& out) { out << "/*--------------------------------------" "------------------------------------*/\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void make_dump_file(const File& in) { std::string dump_name = in.name(); { // chop suffix .model std::string::size_type loc = dump_name.rfind(".model"); if (loc == std::string::npos) { untested(); loc = dump_name.rfind(".vams"); }else{ } if (loc != std::string::npos) { dump_name.erase(loc); }else{ untested(); } } { // chop prefix path std::string::size_type loc = dump_name.find_last_of(ENDDIR); if (loc != std::string::npos) { dump_name.erase(0, loc+1); }else{ } } // open file std::ofstream out((dump_name+".dump").c_str()); if (!out) { untested(); os_error(dump_name); } make_header(out, in); out << "h_headers {" << in.h_headers() << "}\n" "cc_headers {" << in.cc_headers() << "}\n" << in.devices() << in.models() << "h_direct {" << in.h_direct() << "}\n" "cc_direct {" << in.cc_direct() << "}\n"; make_tail(out); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_out_h.cc000066400000000000000000000417171316501211100147610ustar00rootroot00000000000000/*$Id: mg_out_h.cc,v 26.134 2009/11/29 03:44:57 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.11.01 #include "mg_out.h" /*--------------------------------------------------------------------------*/ static void make_header(std::ofstream& out, const File& in, const std::string& dump_name) { out << in.head() << "/* This file is automatically generated. DO NOT EDIT */\n" "#ifndef " << to_upper(dump_name) << "_H_INCLUDED\n" "#define " << to_upper(dump_name) << "_H_INCLUDED\n" << in.h_headers() << "#include \"u_sdp.h\"\n" "#include \"e_node.h\"\n" "#include \"e_subckt.h\"\n" "#include \"e_model.h\"\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_sdp(std::ofstream& out, const Model& m) { out << "class SDP_" << m.name() << "\n :public SDP_" << m.inherit() << "{\n" "public:\n" " explicit SDP_" << m.name() << "(const COMMON_COMPONENT* c) : SDP_" << m.inherit() << "(c) {init(c);}\n" " void init(const COMMON_COMPONENT*);\n" "public:\n"; Parameter_List::const_iterator p = m.size_dependent().raw().begin(); for (;;) { if (p == m.size_dependent().raw().end()) { p = m.size_dependent().calculated().begin(); }else{ } if (p == m.size_dependent().calculated().end()) { break; }else{ } out << " " << (**p).type() << " " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; ++p; } out << "};\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_tdp(std::ofstream& out, const Model& m) { out << "class DEV_" << m.dev_type() << ";\n"; out << "class TDP_" << m.name(); if (!m.hide_base()) { out << "\n :public TDP_" << m.inherit(); }else{ } out << "{\n" "public:\n" " explicit TDP_"<< m.name() <<"(const DEV_" << m.dev_type() << "*);\n" "public:\n"; for (Parameter_List::const_iterator p = m.temperature().calculated().begin(); p != m.temperature().calculated().end(); ++p) { out << " " << (**p).type() << " " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "};\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model(std::ofstream& out, const Model& m) { std::string class_name = "MODEL_" + m.name().to_string(); out << "class " << class_name << "\n" " :public MODEL_" << m.inherit() << "{\n" "protected:\n" " explicit " << class_name << "(const " << class_name << "& p);\n" "public:\n" " explicit " << class_name << "(const BASE_SUBCKT*);\n" " ~" << class_name << "() {--_count;}\n" "public: // override virtual\n" " std::string dev_type()const;\n" " void set_dev_type(const std::string& nt);\n" " CARD* clone()const {return new " << class_name << "(*this);}\n" " void precalc_first();\n" " void precalc_last();\n" " SDP_CARD* new_sdp(COMMON_COMPONENT* c)const;\n" " void set_param_by_index(int, std::string&, int);\n" " bool param_is_printable(int)const;\n" " std::string param_name(int)const;\n" " std::string param_name(int,int)const;\n" " std::string param_value(int)const;\n" " int param_count()const {return (" << 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size() + m.independent().raw().size(); if (!m.hide_base()) { out << " + MODEL_" << m.inherit() << "::param_count());}\n"; }else{ out << ");}\n"; } out << " bool is_valid(const COMPONENT*)const;\n" " void tr_eval(COMPONENT*)const;\n" "public: // not virtual\n" " static int count() {return _count;}\n" "private: // strictly internal\n"; out << " static int _count;\n" "public: // input parameters\n"; for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { out << " " << "SDP" << " " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } for (Parameter_List::const_iterator p = m.independent().raw().begin(); p != m.independent().raw().end(); ++p) { out << " PARAMETER<" << (**p).type() << "> " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "public: // calculated parameters\n"; for (Parameter_List::const_iterator p = m.independent().calculated().begin(); p != m.independent().calculated().end(); ++p) { out << " " << (**p).type() << " " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "};\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_common(std::ofstream& out, const Device& d) { std::string class_name = "COMMON_" + d.name().to_string(); out << "class " << class_name << "\n" " :public COMMON_COMPONENT{\n" "public:\n" " explicit " << class_name << "(const " << class_name << "& p);\n" " explicit " << class_name << "(int c=0);\n" " ~" << class_name << "();\n" " bool operator==(const COMMON_COMPONENT&)const;\n" " COMMON_COMPONENT* clone()const {return new "< " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "public: // calculated parameters\n" " SDP_CARD* _sdp;\n"; for (Parameter_List::const_iterator p = d.common().calculated().begin(); p != d.common().calculated().end(); ++p) { out << " " << (**p).type() << " " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "public: // attached commons\n"; for (Args_List::const_iterator p = d.circuit().args_list().begin(); p != d.circuit().args_list().end(); ++p) { out << " COMMON_COMPONENT* _" << (**p).name() << ";\n"; } out << "};\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_device(std::ofstream& out, const Device& d) { std::string class_name = "DEV_" + d.name().to_string(); out << "class " << class_name << " : public BASE_SUBCKT {\n" "private:\n" " explicit " << class_name << "(const " << class_name << "& p);\n" "public:\n" " explicit " << class_name << "();\n" " ~" << class_name << "() {--_count;}\n" "private: // override virtual\n" " char id_letter()const {untested();return '" << d.id_letter() << "';}\n" " bool print_type_in_spice()const {return true;}\n" " std::string value_name()const {return \"area\";}\n" " //std::string dev_type()const; //BASE_SUBCKT\n" " int max_nodes()const {return " << d.max_nodes() << ";}\n" " int min_nodes()const {return " << d.min_nodes() << ";}\n"; if (d.max_nodes() != d.min_nodes()) { out << " //int matrix_nodes()const; //BASE_SUBCKT\n" " //int net_nodes()const; //BASE_SUBCKT\n"; }else{ out << " //int matrix_nodes()const; //BASE_SUBCKT\n" " int net_nodes()const {return " << d.max_nodes() << ";}\n"; } out << " int int_nodes()const {return " << d.circuit().local_nodes().size() << ";}\n" " CARD* clone()const {return new " << class_name << "(*this);}\n" " void precalc_first() {COMPONENT::precalc_first(); if(subckt()) subckt()->precalc_first();}\n" " void expand();\n" " void precalc_last() {COMPONENT::precalc_last(); assert(subckt()); subckt()->precalc_last();}\n" " //void map_nodes(); //BASE_SUBCKT\n" " //void tr_begin(); //BASE_SUBCKT\n" " //void tr_restore(); //BASE_SUBCKT\n"; if (d.tr_eval().is_empty()) { out << " //void dc_advance(); //BASE_SUBCKT\n" " //void tr_advance(); //BASE_SUBCKT\n" " //void tr_regress(); //BASE_SUBCKT\n" " //bool tr_needs_eval()const;//BASE_SUBCKT\n" " //void tr_queue_eval(); //BASE_SUBCKT\n" " //bool do_tr(); //BASE_SUBCKT\n"; }else{ out << " void dc_advance() {set_not_converged(); BASE_SUBCKT::dc_advance();}\n" " void tr_advance() {set_not_converged(); BASE_SUBCKT::tr_advance();}\n" " void tr_regress() {set_not_converged(); BASE_SUBCKT::tr_regress();}\n" " bool tr_needs_eval()const;\n" " void tr_queue_eval() {if(tr_needs_eval()){q_eval();}}\n" " bool do_tr();\n"; } out << " //void tr_load(); //BASE_SUBCKT\n" " //double tr_review(); //BASE_SUBCKT\n" " //void tr_accept(); //BASE_SUBCKT\n" " //void tr_unload(); //BASE_SUBCKT\n" " double tr_probe_num(const std::string&)const;\n" " //void ac_begin(); //BASE_SUBCKT\n" " //void do_ac(); //BASE_SUBCKT\n" " //void ac_load(); //BASE_SUBCKT\n" " //XPROBE ac_probe_ext(CS&)const;//CKT_BASE/nothing\n" "public:\n" " static int count() {return _count;}\n" "public: // may be used by models\n"; for (Function_List::const_iterator p = d.function_list().begin(); p != d.function_list().end(); ++p) { out << " void " << (**p).name() << ";\n"; } out << "private: // not available even to models\n" " static int _count;\n"; out << "public: // input parameters\n"; for (Parameter_List::const_iterator p = d.device().raw().begin(); p != d.device().raw().end(); ++p) {untested(); untested(); out << " PARAMETER<" << (**p).type() << "> " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "public: // calculated parameters\n"; for (Parameter_List::const_iterator p = d.device().calculated().begin(); p != d.device().calculated().end(); ++p) { out << " " << (**p).type() << " " << (**p).code_name() << ";\t// " << (**p).comment() << '\n'; } out << "public: // netlist\n"; for (Element_List::const_iterator p = d.circuit().elements().begin(); p != d.circuit().elements().end(); ++p) { out << " COMPONENT* _" << (**p).name() << ";\n"; } out << "private: // node list\n" " enum {"; for (Port_List::const_iterator p = d.circuit().req_nodes().begin(); p != d.circuit().req_nodes().end(); ++p) { if (p != d.circuit().req_nodes().begin()) { out << ", "; }else{ } out << "n_" << (**p).name(); } for (Port_List::const_iterator p = d.circuit().opt_nodes().begin(); p != d.circuit().opt_nodes().end(); ++p) { out << ", "; out << "n_" << (**p).name(); } for (Port_List::const_iterator p = d.circuit().local_nodes().begin(); p != d.circuit().local_nodes().end(); ++p) { out << ", n_" << (**p).name(); } size_t total_nodes = d.circuit().req_nodes().size() + d.circuit().opt_nodes().size() + d.circuit().local_nodes().size(); out << "};\n" " node_t _nodes[" << total_nodes << "];\n" " std::string port_name(int i)const {\n" " assert(i >= 0);\n" " assert(i < " << d.circuit().req_nodes().size() + d.circuit().opt_nodes().size() << ");\n" " static std::string names[] = {"; for (Port_List::const_iterator p = d.circuit().req_nodes().begin(); p != d.circuit().req_nodes().end(); ++p) { out << '"' << (**p).name() << "\", "; } for (Port_List::const_iterator p = d.circuit().opt_nodes().begin(); p != d.circuit().opt_nodes().end(); ++p) { out << '"' << (**p).name() << "\", "; } out << "\"\"};\n" " return names[i];\n" " }\n" "};\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_eval(std::ofstream& out, const Eval& e, const String_Arg& dev_name) { std::string class_name = "EVAL_" + dev_name.to_string() + '_' + e.name().to_string(); out << "class " << class_name << " : public COMMON_COMPONENT {\n" "private:\n" " explicit "<< class_name << "(const "<< class_name << "& p)\n" " :COMMON_COMPONENT(p) {}\n" "public:\n" " explicit "<< class_name << "(int c=0) :COMMON_COMPONENT(c) {}\n" " bool operator==(const COMMON_COMPONENT& x)const " "{return COMMON_COMPONENT::operator==(x);}\n" " COMMON_COMPONENT* clone()const {return new "< * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.11.01 #include "mg_out.h" /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void make_final_adjust_value(std::ofstream& out, const Parameter& p) { if (!(p.calculate().empty())) { out << " " << p.code_name() << " = " << p.calculate() << ";\n"; }else{ } if (!(p.final_default().empty())) { out << " if (" << p.code_name() << " == NA) {\n" " " << p.code_name() << " = " << p.final_default() << ";\n" " }else{\n" " }\n"; //out << " e_val(&(" << p.code_name() << "), " << p.final_default() // << ", par_scope);\n"; #if 0 }else if (!(p.default_val().empty())) { out << " if (" << p.code_name() << " == NA) {\n" " " << p.code_name() << " = " << p.default_val() << ";\n" " }else{\n" " }\n"; //out << " e_val(&(" << p.code_name() << "), " << p.default_val() // << ", par_scope);\n"; #endif }else{ } if (!(p.quiet_min().empty())) { out << " //" << p.code_name() << " = std::max(" << p.code_name() << ", " << p.quiet_min() << ");\n"; }else{ } if (!(p.quiet_max().empty())) { out << " //" << p.code_name() << " = std::min(" << p.code_name() << ", " << p.quiet_max() << ");\n"; }else{ } } /*--------------------------------------------------------------------------*/ void make_final_adjust_value_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_final_adjust_value(out, **p); } } /*--------------------------------------------------------------------------*/ void make_final_adjust_eval_parameter(std::ofstream& out, const Parameter& p) { if (!(p.calculate().empty())) {untested(); out << " this->" << p.code_name() << " = " << p.calculate() << ";\n"; }else{ out << " e_val(&(this->" << p.code_name() << "), "; if (!(p.default_val().empty())) { out << p.default_val(); }else{ out << "NA"; } out << ", par_scope);\n"; } } /*--------------------------------------------------------------------------*/ void make_final_adjust_eval_parameter_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_final_adjust_eval_parameter(out, **p); } } /*--------------------------------------------------------------------------*/ void make_final_adjust_parameter(std::ofstream& out, const Parameter& p) { if (!(p.calculate().empty())) { out << " this->" << p.code_name() << " = " << p.calculate() << ";\n"; }else{ out << " e_val(&(this->" << p.code_name() << "), "; if (!(p.final_default().empty())) { out << p.final_default(); }else if (!(p.default_val().empty())) { out << p.default_val(); }else{ out << "NA"; } out << ", par_scope);\n"; } if (!(p.quiet_min().empty())) { out << " //this->" << p.code_name() << " = std::max(" << p.code_name() << ", " << p.quiet_min() << ");\n"; }else{ } if (!(p.quiet_max().empty())) { out << " //this->" << p.code_name() << " = std::min(" << p.code_name() << ", " << p.quiet_max() << ");\n"; }else{ } } /*--------------------------------------------------------------------------*/ void make_final_adjust_parameter_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_final_adjust_parameter(out, **p); } } /*--------------------------------------------------------------------------*/ void make_final_adjust(std::ofstream& out, const Parameter_Block& b) { //out << " // final adjust: eval\n"; //make_final_adjust_eval_parameter_list(out, b.raw()); out << " // final adjust: code_pre\n"; out << b.code_pre(); out << " // final adjust: override\n"; make_final_adjust_value_list(out, b.override()); out << " // final adjust: raw\n"; make_final_adjust_parameter_list(out, b.raw()); out << " // final adjust: mid\n"; out << b.code_mid(); out << " // final adjust: calculated\n"; make_final_adjust_value_list(out, b.calculated()); out << " // final adjust: post\n"; out << b.code_post(); out << " // final adjust: done\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void make_construct_parameter(std::ofstream& out, const Parameter& p) { if (!(p.default_val().empty())) { out << ",\n " << p.code_name() << "(" << p.default_val() << ")"; }else{ out << ",\n " << p.code_name() << "(NA)"; } } /*--------------------------------------------------------------------------*/ void make_construct_parameter_list(std::ofstream& out,const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_construct_parameter(out, **p); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void make_get_one_param(std::ofstream& out, const Parameter& p, const std::string& name) { if (!(name.empty())) { out << " || get(cmd, \"" << name << "\", &" << p.code_name(); if (!(p.offset().empty())) {untested(); incomplete(); out << ", m_OFFSET, " << p.offset(); }else if (p.positive()) { //incomplete(); //out << ", mPOSITIVE"; }else if (p.octal()) {untested(); incomplete(); out << ", m_OCTAL"; }else if (!(p.scale().empty())) {untested(); incomplete(); out << ", m_SCALE, " << p.scale(); }else{ } out << ")\n"; }else{ } } /*--------------------------------------------------------------------------*/ void make_get_param_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_get_one_param(out, **p, (**p).user_name()); make_get_one_param(out, **p, (**p).alt_name()); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void make_print_one_param(std::ofstream& out, const Parameter& p) { if (!(p.user_name().empty())) { out << " print_pair(o, lang, \"" << to_lower(p.user_name()) << "\", " << p.code_name(); if (!(p.offset().empty())) {untested(); out << "-(" << p.offset() << ")"; }else{ } if (!(p.scale().empty())) {untested(); out << "/(" << p.scale() << ")"; }else{ } if (!(p.print_test().empty())) { out << ", " << p.print_test() << ""; }else if (p.default_val() == "NA") { out << ", " << p.code_name() << " != NA"; }else{ } out << ");\n"; }else{ } } /*--------------------------------------------------------------------------*/ void make_print_param_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_print_one_param(out, **p); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void make_print_one_calc_param(std::ofstream& out, const Parameter& p) { if (!(p.user_name().empty()) && !(p.calc_print_test().empty())) { out << " if (" << p.calc_print_test() << ")\n " " o << \"* " << to_lower(p.user_name()) << "=\" << " << p.code_name(); if (!(p.offset().empty())) {untested(); out << "-(" << p.offset() << ")"; }else{ } if (!(p.scale().empty())) {untested(); out << "/(" << p.scale() << ")"; }else{ } out << ";\n"; }else{ } } /*--------------------------------------------------------------------------*/ void make_print_calc_param_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_print_one_calc_param(out, **p); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static void make_copy_construct_parameter(std::ofstream&out,const Parameter&p) { out << ",\n " << p.code_name() << "(p." << p.code_name() << ")"; } /*--------------------------------------------------------------------------*/ void make_copy_construct_parameter_list(std::ofstream& out, const Parameter_List& pl) { for (Parameter_List::const_iterator p = pl.begin(); p != pl.end(); ++p) { make_copy_construct_parameter(out, **p); } } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_out_model.cc000066400000000000000000000654301316501211100156300ustar00rootroot00000000000000/*$Id: mg_out_model.cc,v 26.128 2009/11/10 04:21:03 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ //testing=script 2006.11.01 #include "mg_out.h" /*--------------------------------------------------------------------------*/ static void make_model_dispatcher(std::ofstream& out, const Model& m) { if (m.level() != "") { out << "const int LEVEL(" << m.level() <<");\n" "/*--------------------------------------------------------------------------*/\n"; }else{ } if (!m.public_key_list().is_empty()) { out << "namespace MODEL_" << m.name() << "_DISPATCHER { \n" " static DEV_" << m.dev_type() << " p1d;\n" " static MODEL_" << m.name() << " p1(&p1d);\n" " static DISPATCHER::INSTALL\n" " d1(&model_dispatcher, \""; for (Key_List::const_iterator k = m.public_key_list().begin(); k != m.public_key_list().end(); ++k) { if (k != m.public_key_list().begin()) { out << '|'; }else{ } out << (**k).name(); } out << "\", &p1);\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; }else{ } } /*--------------------------------------------------------------------------*/ static void make_sdp_constructor(std::ofstream& out, const Model& m) { #if 0 out << "SDP_" << m.name() << "::SDP_" << m.name() << "(const COMMON_COMPONENT* cc)\n" " :SDP_" << m.inherit() << "(cc)\n" "{\n"; #else out << "void SDP_" << m.name() << "::init(const COMMON_COMPONENT* cc)\n" "{\n" " assert(cc);\n" " SDP_" << m.inherit() << "::init(cc);\n"; #endif if (!m.size_dependent().is_empty()) { out << " const COMMON_" << m.dev_type() << "* c = prechecked_cast(cc);\n" " assert(c);\n" " const MODEL_" << m.name() << "* m = prechecked_cast(c->model());\n" " assert(m);\n" " const CARD_LIST* par_scope = m->scope();\n" " assert(par_scope);\n"; out << m.size_dependent().code_pre(); out << " // adjust: override\n"; make_final_adjust_parameter_list(out, m.size_dependent().override()); out << " // adjust: raw\n"; for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { if (!((**p).final_default().empty())) { out << " " << (**p).code_name() << " = m->" << (**p).code_name() << "(L, W, " << (**p).final_default() << ", par_scope);\n"; }else if (!((**p).default_val().empty())) { out << " " << (**p).code_name() << " = m->" << (**p).code_name() << "(L, W, " << (**p).default_val() << ", par_scope);\n"; }else{untested(); out << " " << (**p).code_name() << " = m->" << (**p).code_name() << "(L, W, 0., par_scope);\n"; } make_final_adjust_value(out, **p); } out << " // adjust: calculated\n"; make_final_adjust_value_list(out, m.size_dependent().calculated()); out << " // code_post\n" << m.size_dependent().code_post(); }else{ } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_tdp_constructor(std::ofstream& out, const Model& m) { out << "TDP_" << m.name() << "::TDP_" << m.name() << "(const DEV_" << m.dev_type() << '*'; if (!m.hide_base() || !m.temperature().is_empty()) { out << " d"; }else{ } out << ")\n"; if (!m.hide_base()) { out << " :TDP_" << m.inherit() << "(d)\n"; }else{ } out << "{\n"; if (!m.temperature().is_empty()) { out << " assert(d);\n" " const COMMON_" << m.dev_type() << "* c = prechecked_cast(d->common());\n" " assert(c);\n" " const SDP_" << m.name() << "* s = prechecked_cast(c->sdp());\n" " assert(s);\n" " const MODEL_" << m.name() << "* m = prechecked_cast(c->model());\n" " assert(m);\n" " const CARD_LIST* par_scope = d->scope();\n" " assert(par_scope);\n"; make_final_adjust_eval_parameter_list(out, m.temperature().raw()); make_final_adjust(out, m.temperature()); }else{ } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_default_constructor(std::ofstream& out, const Model& m) { out << "MODEL_" << m.name() << "::MODEL_" << m.name() << "(const BASE_SUBCKT* p)\n" " :MODEL_" << m.inherit() << "(p)"; make_construct_parameter_list(out, m.size_dependent().raw()); make_construct_parameter_list(out, m.independent().raw()); make_construct_parameter_list(out, m.independent().calculated()); out << "\n{\n" " if (ENV::run_mode != rPRE_MAIN) {\n" " ++_count;\n" " }else{\n" " }\n"; for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) { if (!((**p).final_default().empty())) { //out << " " << (**p).code_name() << " = NA;\n"; out << " set_default(&" << (**p).code_name() << ", NA);\n"; }else{ } if (!((**p).default_val().empty())) { //out << " " << (**p).code_name() << " = " // << (**p).default_val() << ";\n"; out << " set_default(&" << (**p).code_name() << ", " << (**p).default_val() << ");\n"; }else{ } } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_copy_constructor(std::ofstream& out, const Model& m) { out << "MODEL_" << m.name() << "::MODEL_" << m.name() << "(const MODEL_" << m.name() << "& p)\n" " :MODEL_" << m.inherit() << "(p)"; make_copy_construct_parameter_list(out, m.size_dependent().raw()); make_copy_construct_parameter_list(out, m.independent().raw()); make_copy_construct_parameter_list(out, m.independent().calculated()); out << "\n{\n" " if (ENV::run_mode != rPRE_MAIN) {\n" " ++_count;\n" " }else{untested();//194\n" " }\n"; #if 0 for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) {untested(); out << " itested();\n"; //out << ",\n " << (**p).code_name() << "(p." << (**p).code_name() << ")"; } #endif out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_dev_type(std::ofstream& out, const Model& m) { out << "std::string MODEL_" << m.name() << "::dev_type()const\n"; if (!m.public_key_list().is_empty() || !m.private_key_list().is_empty()) { out << "{\n" " "; Key_List::const_iterator k = (m.public_key_list().is_empty()) ? m.private_key_list().begin() : m.public_key_list().begin(); for (;;) { out << "if (" << (**k).var() << " == " << (**k).value() << ") {\n" " return \"" << (**k).name() << "\";\n"; ++k; if (k == m.public_key_list().end()) { k = m.private_key_list().begin(); }else{ } if (k == m.private_key_list().end()) { break; }else{ } out << " }else "; } out << " }else{untested();//235\n" " return MODEL_" << m.inherit() << "::dev_type();\n" " }\n"; }else{ out << "{untested();//240\n" " return MODEL_" << m.inherit() << "::dev_type();\n"; } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_set_dev_type(std::ofstream& out, const Model& m) { out << "void MODEL_" << m.name() << "::set_dev_type(const std::string& new_type)\n" "{\n" " "; if (!m.public_key_list().is_empty() || !m.private_key_list().is_empty()) { Key_List::const_iterator k = (m.public_key_list().is_empty()) ? m.private_key_list().begin() : m.public_key_list().begin(); for (;;) { out << "if (Umatch(new_type, \"" << (**k).name() << " \")) {\n" " " << (**k).var() << " = " << (**k).value() << ";\n"; ++k; if (k == m.public_key_list().end()) { k = m.private_key_list().begin(); }else{ } if (k == m.private_key_list().end()) { break; }else{ } out << " }else "; } out << " }else{\n"; }else{ out << "{\n"; } if (!m.hide_base()) { out << " MODEL_" << m.inherit() << "::set_dev_type(new_type);\n"; }else{ out << " MODEL_CARD::set_dev_type(new_type);\n"; } out << " }\n"; out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_precalc(std::ofstream& out, const Model& m) { out << "void MODEL_" << m.name() << "::precalc_first()\n" "{\n" " const CARD_LIST* par_scope = scope();\n" " assert(par_scope);\n"; if (!m.hide_base()) { out << " MODEL_" << m.inherit() << "::precalc_first();\n"; }else{ out << " MODEL_CARD::precalc_first();\n"; } make_final_adjust_eval_parameter_list(out, m.independent().raw()); make_final_adjust(out, m.independent()); out << "}\n" "/*--------------------------------------------------------------------------*/\n"; out << "void MODEL_" << m.name() << "::precalc_last()\n" "{\n"; if (!m.hide_base()) { out << " MODEL_" << m.inherit() << "::precalc_last();\n"; }else{ out << " MODEL_CARD::precalc_last();\n"; } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_new_sdp(std::ofstream& out, const Model& m) { out << "SDP_CARD* MODEL_" << m.name() << "::new_sdp(COMMON_COMPONENT* c)const\n" "{\n" " assert(c);\n" " if (COMMON_" << m.dev_type() << "* cc = dynamic_cast(c)) {\n" " if (cc->_sdp) {\n" " cc->_sdp->init(cc);\n" " return cc->_sdp;\n" " }else{\n" " delete cc->_sdp;\n" " return new SDP_" << m.name() << "(c);\n" " }\n" " }else{\n" " return MODEL_" << m.inherit() << "::new_sdp(c);\n" " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_set_param_by_index(std::ofstream& out, const Model& m) { out << "void MODEL_" << m.name() << "::set_param_by_index(int i, std::string& value, int offset)\n" "{\n" " switch (MODEL_" << m.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; if (m.level() != "") { out << " case " << i++ << ": level = value; break; //" << m.level() << "\n"; }else{ out << " case " << i++ << ": untested(); break;\n"; } for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": " << (**p).code_name() << " = value; break;\n"; }else{ out << " case " << i++ << ": unreachable(); break;\n"; } } assert(i == 1 + m.independent().override().size()); for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { out << " case " << i++ << ": " << (**p).code_name() << ".set_nom(value); break;\n"; out << " case " << i++ << ": " << (**p).code_name() << ".set_w(value); break;\n"; out << " case " << i++ << ": " << (**p).code_name() << ".set_l(value); break;\n"; out << " case " << i++ << ": " << (**p).code_name() << ".set_p(value); break;\n"; } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size()); for (Parameter_List::const_iterator p = m.independent().raw().begin(); p != m.independent().raw().end(); ++p) { out << " case " << i++ << ": " << (**p).code_name() << " = value; break;\n"; } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size() + m.independent().raw().size()); if (!m.hide_base()) { out << " default: MODEL_" << m.inherit() << "::set_param_by_index(i, value, offset); break;\n"; }else{ out << " default: throw Exception_Too_Many(i, " << i-1 << ", offset); break;\n"; } out << " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_model_param_is_printable(std::ofstream& out, const Model& m) { make_tag(); out << "bool MODEL_" << m.name() << "::param_is_printable(int i)const\n" "{\n" " switch (MODEL_" << m.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; if (m.level() != "") { out << " case " << i++ << ": return (true);\n"; }else{ out << " case " << i++ << ": return (false);\n"; } for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return ("; if (!((**p).print_test().empty())) { out << (**p).print_test() << ");\n"; //}else if ((**p).default_val() == "NA" && (**p).final_default().empty()) {untested(); //out << (**p).code_name() << ".has_hard_value());\n"; //" != NA);\n"; }else if ((**p).default_val() == "NA") { out << (**p).code_name() << ".has_hard_value());\n"; }else{ out << "true);\n"; } }else{ out << " case " << i++ << ": return (false);\n"; } } assert(i == 1 + m.independent().override().size()); for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { out << " case " << i++ << ": return ("; if (!((**p).print_test().empty())) { out << (**p).print_test() << ");\n"; }else if ((**p).default_val() == "NA") { out << (**p).code_name() << ".has_value());\n"; }else{ out << "true);\n"; } out << " case " << i++ << ": return (" << (**p).code_name() << ".w_has_value());\n"; out << " case " << i++ << ": return (" << (**p).code_name() << ".l_has_value());\n"; out << " case " << i++ << ": return (" << (**p).code_name() << ".p_has_value());\n"; } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size()); for (Parameter_List::const_iterator p = m.independent().raw().begin(); p != m.independent().raw().end(); ++p) { out << " case " << i++ << ": return ("; if (!((**p).print_test().empty())) { out << (**p).print_test() << ");\n"; //}else if ((**p).default_val() == "NA" && (**p).final_default().empty()) { //out << (**p).code_name() << ".has_hard_value());\n"; //" != NA);\n"; }else if ((**p).default_val() == "NA") { out << (**p).code_name() << ".has_hard_value());\n"; }else{ out << "true);\n"; } } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size() + m.independent().raw().size()); if (!m.hide_base()) { out << " default: return MODEL_" << m.inherit() << "::param_is_printable(i);\n"; }else{ out << " default: return false;\n"; } out << " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_model_param_name(std::ofstream& out, const Model& m) { make_tag(); out << "std::string MODEL_" << m.name() << "::param_name(int i)const\n" "{\n" " switch (MODEL_" << m.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; if (m.level() != "") { out << " case " << i++ << ": return \"level\";\n"; }else{ out << " case " << i++ << ": return \"=====\";\n"; } for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).user_name()) << "\";\n"; }else{ out << " case " << i++ << ": return \"=====\";\n"; } } assert(i == 1 + m.independent().override().size()); for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).user_name()) << "\";\n"; out << " case " << i++ << ": return \"w" << to_lower((**p).user_name()) << "\";\n"; out << " case " << i++ << ": return \"l" << to_lower((**p).user_name()) << "\";\n"; out << " case " << i++ << ": return \"p" << to_lower((**p).user_name()) << "\";\n"; }else{unreachable(); out << " case " << i++ << ": return \"=====\";\n"; } } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size()); for (Parameter_List::const_iterator p = m.independent().raw().begin(); p != m.independent().raw().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).user_name()) << "\";\n"; }else{unreachable(); out << " case " << i++ << ": return \"=====\";\n"; } } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size() + m.independent().raw().size()); if (!m.hide_base()) { out << " default: return MODEL_" << m.inherit() << "::param_name(i);\n"; }else{ out << " default: return \"\";\n"; } out << " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_model_param_name_or_alias(std::ofstream& out, const Model& m) { make_tag(); out << "std::string MODEL_" << m.name() << "::param_name(int i, int j)const\n" "{\n" " if (j == 0) {\n" " return param_name(i);\n" " }else if (j == 1) {\n" " switch (MODEL_" << m.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; if (m.level() != "") { out << " case " << i++ << ": return \"\";\n"; }else{ out << " case " << i++ << ": return \"\";\n"; } for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) { out << " case " << i++ << ": return \"" << to_lower((**p).alt_name()) << "\";\n"; } assert(i == 1 + m.independent().override().size()); for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { if (!((**p).user_name().empty())) { if (!((**p).alt_name().empty())) { out << " case " << i++ << ": return \"" << to_lower((**p).alt_name()) << "\";\n"; out << " case " << i++ << ": return \"w" << to_lower((**p).alt_name()) << "\";\n"; out << " case " << i++ << ": return \"l" << to_lower((**p).alt_name()) << "\";\n"; out << " case " << i++ << ": return \"p" << to_lower((**p).alt_name()) << "\";\n"; }else{ out << " case " << i++ << ": return \"\";\n"; out << " case " << i++ << ": return \"\";\n"; out << " case " << i++ << ": return \"\";\n"; out << " case " << i++ << ": return \"\";\n"; } }else{unreachable(); out << " case " << i++ << ": return \"\";\n"; out << " case " << i++ << ": return \"\";\n"; out << " case " << i++ << ": return \"\";\n"; out << " case " << i++ << ": return \"\";\n"; } } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size()); for (Parameter_List::const_iterator p = m.independent().raw().begin(); p != m.independent().raw().end(); ++p) { out << " case " << i++ << ": return \"" << to_lower((**p).alt_name()) << "\";\n"; } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size() + m.independent().raw().size()); if (!m.hide_base()) { out << " default: return MODEL_" << m.inherit() << "::param_name(i, j);\n"; }else{ out << " default: return \"\";\n"; } out << " }\n"; if (!m.hide_base()) { out << " }else if (i < " << i << ") {\n" " return \"\";\n" " }else{\n" " return MODEL_" << m.inherit() << "::param_name(i, j);\n"; }else{ out << " }else{\n" " return \"\";\n"; } out << " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_model_param_value(std::ofstream& out, const Model& m) { make_tag(); out << "std::string MODEL_" << m.name() << "::param_value(int i)const\n" "{\n" " switch (MODEL_" << m.name() << "::param_count() - 1 - i) {\n"; size_t i = 0; if (m.level() != "") { out << " case " << i++ << ": return \"" << m.level() << "\";\n"; }else{ out << " case " << i++ << ": unreachable(); return \"\";\n"; } for (Parameter_List::const_iterator p = m.independent().override().begin(); p != m.independent().override().end(); ++p) { if (!((**p).user_name().empty())) { out << " case " << i++ << ": return " << (**p).code_name() << ".string();\n"; }else{ out << " case " << i++ << ": unreachable(); return \"\";\n"; } } assert(i == 1 + m.independent().override().size()); for (Parameter_List::const_iterator p = m.size_dependent().raw().begin(); p != m.size_dependent().raw().end(); ++p) { out << " case " << i++ << ": return " << (**p).code_name() << ".string();\n"; out << " case " << i++ << ": return " << (**p).code_name() << ".w_string();\n"; out << " case " << i++ << ": return " << (**p).code_name() << ".l_string();\n"; out << " case " << i++ << ": return " << (**p).code_name() << ".p_string();\n"; } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size()); for (Parameter_List::const_iterator p = m.independent().raw().begin(); p != m.independent().raw().end(); ++p) { out << " case " << i++ << ": return " << (**p).code_name() << ".string();\n"; } assert(i == 1 + m.independent().override().size() + 4 * m.size_dependent().raw().size() + m.independent().raw().size()); if (!m.hide_base()) { out << " default: return MODEL_" << m.inherit() << "::param_value(i);\n"; }else{ out << " default: return \"\";\n"; } out << " }\n" "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_model_is_valid(std::ofstream& out, const Model& m) { out << "bool MODEL_" << m.name() << "::is_valid(const COMPONENT* d)const\n" "{\n" " assert(d);\n"; if (m.validate().is_empty()) { out << " return MODEL_" << m.inherit() << "::is_valid(d);\n"; }else{ out << " const COMMON_" << m.dev_type() << "* c = dynamic_cast(d->common());\n" " if (!c) {\n" " return MODEL_" << m.inherit() << "::is_valid(d);\n" " }else{\n" " const MODEL_" << m.name() << "* m = this;" << m.validate() << " }\n"; } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_tr_eval(std::ofstream& out, const Model& m) { out << "void MODEL_" << m.name() << "::tr_eval(COMPONENT*"; if (m.tr_eval().is_empty() && m.temperature().is_empty()) { out << ")const\n{untested();//425\n"; }else{ out << " brh)const\n{\n" " DEV_" << m.dev_type() << "* d = prechecked_cast(brh);\n" " assert(d);\n" " const COMMON_" << m.dev_type() << "* c = prechecked_cast(d->common());\n" " assert(c);\n" " const SDP_" << m.name() << "* s = prechecked_cast(c->sdp());\n" " assert(s);\n" " const MODEL_" << m.name() << "* m = this;\n"; if (!m.temperature().is_empty()) { out << " const TDP_" << m.name() << " T(d);\n" " const TDP_" << m.name() << "* t = &T;\n"; }else{ } out << m.tr_eval(); } out << "}\n" "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ void make_cc_model(std::ofstream& out, const Model& m) { out << "int MODEL_" << m.name() << "::_count = 0;\n" "/*--------------------------------------------------------------------------*/\n"; make_model_dispatcher(out, m); make_sdp_constructor(out, m); make_tdp_constructor(out, m); make_model_default_constructor(out, m); make_model_copy_constructor(out, m); make_model_dev_type(out, m); make_model_set_dev_type(out, m); make_model_precalc(out, m); make_model_new_sdp(out, m); make_model_set_param_by_index(out, m); make_model_param_is_printable(out, m); make_model_param_name(out, m); make_model_param_name_or_alias(out, m); make_model_param_value(out, m); make_model_is_valid(out, m); make_tr_eval(out, m); out << "/*--------------------------------------------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ modelgen/mg_out_root.cc000066400000000000000000000071351316501211100155110ustar00rootroot00000000000000/*$Id: mg_out_root.cc,v 26.81 2008/05/27 05:33:43 al Exp $ -*- C++ -*- * Copyright (C) 2001 Albert Davis * Author: Albert Davis * * This file is part of "Gnucap", the Gnu Circuit Analysis Package * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include "md.h" #include "mg_out.h" /*--------------------------------------------------------------------------*/ static void make_header(std::ofstream& out, const File& in, const std::string& dump_name) { out << in.head() << "/* This file is automatically generated. DO NOT EDIT */\n" << in.cc_headers() << "#include \"globals.h\"\n" "#include \"e_elemnt.h\"\n" "#include \"" << dump_name << ".h\"\n" "/*--------------------------------------" "------------------------------------*/\n" "const double NA(NOT_INPUT);\n" "const double INF(BIGBIG);\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ static void make_tail(std::ofstream& out, const File& in) { out << in.cc_direct() << "/*--------------------------------------" "------------------------------------*/\n" "/*--------------------------------------" "------------------------------------*/\n"; } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ void make_cc_file(const File& in) { std::string dump_name = in.name(); { // chop suffix .model std::string::size_type loc = dump_name.rfind(".model"); if (loc == std::string::npos) { untested(); loc = dump_name.rfind(".vams"); }else{ } if (loc != std::string::npos) { dump_name.erase(loc); }else{ untested(); } } { // chop prefix path std::string::size_type loc = dump_name.find_last_of(ENDDIR); if (loc != std::string::npos) { dump_name.erase(0, loc+1); }else{ itested(); } } // open file std::ofstream out((dump_name+".cc").c_str()); if (!out) { untested(); os_error(dump_name); } make_header(out, in, dump_name); for (Model_List::const_iterator m = in.models().begin(); m != in.models().end(); ++m) { make_cc_model(out, **m); } for (Device_List::const_iterator m = in.devices().begin(); m != in.devices().end(); ++m) { out << "int DEV_" << (**m).name() << "::_count = -1;\n" "int COMMON_" << (**m).name() << "::_count = -1;\n" "static COMMON_" << (**m).name() << " Default_" << (**m).name() << "(CC_STATIC);\n" "/*--------------------------------------" "------------------------------------*/\n"; make_cc_common(out, **m); make_cc_dev(out, **m); } make_tail(out, in); } /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ tests/000077500000000000000000000000001316501211100122075ustar00rootroot00000000000000tests/1lin.ckt000066400000000000000000000012661316501211100135620ustar00rootroot00000000000000nmos n gate lambda not specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(1) v(2) v(3) v(4) i(vds) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/==out/000077500000000000000000000000001316501211100132105ustar00rootroot00000000000000tests/==out/1lin.ckt.out000066400000000000000000000026711316501211100153720ustar00rootroot00000000000000nmos n gate lambda not specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) i(Vds) 27. 3.2367 0.0099992 0.01 -1.2349 -833.91n # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099997 0.01 -287.33n 3. 3. 0.0099993 0.01 -729.29n 4. 4. 0.0099988 0.01 -1.1712u 5. 5. 0.0099984 0.01 -1.6131u 6. 6. 0.0099979 0.01 -2.0549u 7. 7. 0.0099975 0.01 -2.4967u 8. 8. 0.0099971 0.01 -2.9385u 9. 9. 0.0099966 0.01 -3.3802u 10. 10. 0.0099962 0.01 -3.8219u tests/==out/ap_ctof.2.ckt.out000066400000000000000000000006531316501211100163000ustar00rootroot00000000000000' test file for ap_ctof.cc V1 ( 1 0 ) DC 1. R0102 ( 1 2 ) -21.33E+12 R0200 ( 2 0 ) 7.3G R0203 ( 2 3 ) 2.3K R0300 ( 3 0 ) 3.4f R0304 ( 3 4 ) -3.4443323223p R0400 ( 4 0 ) 0.0045344453 R0405 ( 4 5 ) 234.23n R0500 ( 5 0 ) -4.343f R0506 ( 5 6 ) 345.345345E+12 R0600 ( 6 0 ) 595.1728u R0607 ( 6 7 ) 0.00455 R0700 ( 7 0 ) -3.44E+30 R0708 ( 7 8 ) 473.7E+78 R0800 ( 8 0 ) -3.44E+30 R0809 ( 8 9 ) 3.44E+30 R0900 ( 9 0 ) foo tests/==out/ap_ctof.ckt.out000066400000000000000000000006531316501211100161400ustar00rootroot00000000000000' test file for ap_ctof.cc V1 ( 1 0 ) DC 1. R0102 ( 1 2 ) -21.33E+12 R0200 ( 2 0 ) 7.3G R0203 ( 2 3 ) 2.3K R0300 ( 3 0 ) 3.4f R0304 ( 3 4 ) -3.4443323223p R0400 ( 4 0 ) 0.0045344453 R0405 ( 4 5 ) 234.23n R0500 ( 5 0 ) -4.343f R0506 ( 5 6 ) 345.345345E+12 R0600 ( 6 0 ) 595.1728u R0607 ( 6 7 ) 0.00455 R0700 ( 7 0 ) -3.44E+30 R0708 ( 7 8 ) 473.7E+78 R0800 ( 8 0 ) -3.44E+30 R0809 ( 8 9 ) 3.44E+30 R0900 ( 9 0 ) foo tests/==out/basic.ckt.out000066400000000000000000000010721316501211100156020ustar00rootroot00000000000000# test "basic" formatting # v(1) v(2) v(3) v(4) v(5) i(r4) i(r5) v(1) 27. 1. 10.K 1.E+30 0.001 1.n 100.p 100.E-18 1. # v(1) v(2) v(3) v(4) v(5) i(r4) i(r5) v(1) 27. 1. 10.E+3 1.E+30 0.001 1.E-9 100.E-12 100.E-18 1. v1 ( 1 0 ) DC 1. v2 ( 2 0 ) DC 10.K v3 ( 3 0 ) DC 1.E+30 v4 ( 4 0 ) DC 0.001 r4 ( 4 0 ) 10.Meg v5 ( 5 0 ) DC 1.n r5 ( 5 0 ) 10.Meg tests/==out/bm_complex.1.ckt.out000066400000000000000000000040521316501211100170060ustar00rootroot00000000000000' #Freq vm(2) vdb(2) vp(2) 1.p 1. 54.575p 0. 10.p 1. 545.76p 0. 100.p 1. 5.4576n 0. 1.n 1. 54.576n 0. 10.n 1. 545.76n 0. 100.n 1. 5.4576u 0. 1.u 1. 54.576u 0. 10.u 1.0001 545.77u 0. 100.u 1.0006 0.0054593 0. 0.001 1.0063 0.054748 0. 0.01 1.067 0.56366 0. 0.1 2.6905 8.5967 0. 1. 0.18928 -14.458 -180. 10. 0.016173 -35.824 -180. 100. 0.0015941 -55.95 -180. 1.K 159.18u -75.962 -180. 10.K 15.916u -95.964 -180. 100.K 1.5915u -115.96 -180. 1.Meg 159.15n -135.96 -180. 10.Meg 15.915n -155.96 -180. 100.Meg 1.5915n -175.96 -180. 1.G 159.15p -195.96 -180. #Freq vm(2) vdb(2) vp(2) 0.1 2.6905 8.5967 0. 0.105 2.9389 9.3638 0. 0.11 3.2379 10.205 0. 0.115 3.6046 11.137 0. 0.12 4.0649 12.181 0. 0.125 4.66 13.368 0. 0.13 5.4592 14.743 0. 0.135 6.5893 16.377 0. 0.14 8.3094 18.391 0. 0.145 11.245 21.019 0. 0.15 17.387 24.805 0. 0.155 38.319 31.668 0. 0.16 187.98 45.482 -180. 0.165 27.221 28.698 -180. 0.17 14.673 23.33 -180. 0.175 10.043 20.038 -180. 0.18 7.6345 17.656 -180. 0.185 6.1576 15.788 -180. 0.19 5.1595 14.252 -180. 0.195 4.4398 12.947 -180. 0.2 3.8964 11.813 -180. V1 ( 1 0 ) AC 1. R2 ( 1 2 ) 1. C3 ( 2 0 ) complex( 0., 1.) tests/==out/bm_complex.1a.ckt.out000066400000000000000000000041021316501211100171430ustar00rootroot00000000000000' # 27. #Freq vm(2) vdb(2) vp(2) 1.p 1. 54.575p 0. 10.p 1. 545.76p 0. 100.p 1. 5.4576n 0. 1.n 1. 54.576n 0. 10.n 1. 545.76n 0. 100.n 1. 5.4576u 0. 1.u 1. 54.576u 0. 10.u 1.0001 545.77u 0. 100.u 1.0006 0.0054593 0. 0.001 1.0063 0.054748 0. 0.01 1.067 0.56366 0. 0.1 2.6905 8.5967 0. 1. 0.18928 -14.458 -180. 10. 0.016173 -35.824 -180. 100. 0.0015941 -55.95 -180. 1.K 159.18u -75.962 -180. 10.K 15.916u -95.964 -180. 100.K 1.5915u -115.96 -180. 1.Meg 159.15n -135.96 -180. 10.Meg 15.915n -155.96 -180. 100.Meg 1.5915n -175.96 -180. 1.G 159.15p -195.96 -180. #Freq vm(2) vdb(2) vp(2) 0.1 2.6905 8.5967 0. 0.105 2.9389 9.3638 0. 0.11 3.2379 10.205 0. 0.115 3.6046 11.137 0. 0.12 4.0649 12.181 0. 0.125 4.66 13.368 0. 0.13 5.4592 14.743 0. 0.135 6.5893 16.377 0. 0.14 8.3094 18.391 0. 0.145 11.245 21.019 0. 0.15 17.387 24.805 0. 0.155 38.319 31.668 0. 0.16 187.98 45.482 -180. 0.165 27.221 28.698 -180. 0.17 14.673 23.33 -180. 0.175 10.043 20.038 -180. 0.18 7.6345 17.656 -180. 0.185 6.1576 15.788 -180. 0.19 5.1595 14.252 -180. 0.195 4.4398 12.947 -180. 0.2 3.8964 11.813 -180. V1 ( 1 0 ) AC 1. R2 ( 1 2 ) 1. C3 ( 2 0 ) complex( 0., 1.) tests/==out/bm_complex.2.ckt.out000066400000000000000000000041541316501211100170120ustar00rootroot00000000000000' C3 2 0 complex( 0. 1. ^ ? need ) #Freq vm(2) vdb(2) vp(2) 1.p 1. 54.575p 0. 10.p 1. 545.76p 0. 100.p 1. 5.4576n 0. 1.n 1. 54.576n 0. 10.n 1. 545.76n 0. 100.n 1. 5.4576u 0. 1.u 1. 54.576u 0. 10.u 1.0001 545.77u 0. 100.u 1.0006 0.0054593 0. 0.001 1.0063 0.054748 0. 0.01 1.067 0.56366 0. 0.1 2.6905 8.5967 0. 1. 0.18928 -14.458 -180. 10. 0.016173 -35.824 -180. 100. 0.0015941 -55.95 -180. 1.K 159.18u -75.962 -180. 10.K 15.916u -95.964 -180. 100.K 1.5915u -115.96 -180. 1.Meg 159.15n -135.96 -180. 10.Meg 15.915n -155.96 -180. 100.Meg 1.5915n -175.96 -180. 1.G 159.15p -195.96 -180. #Freq vm(2) vdb(2) vp(2) 0.1 2.6905 8.5967 0. 0.105 2.9389 9.3638 0. 0.11 3.2379 10.205 0. 0.115 3.6046 11.137 0. 0.12 4.0649 12.181 0. 0.125 4.66 13.368 0. 0.13 5.4592 14.743 0. 0.135 6.5893 16.377 0. 0.14 8.3094 18.391 0. 0.145 11.245 21.019 0. 0.15 17.387 24.805 0. 0.155 38.319 31.668 0. 0.16 187.98 45.482 -180. 0.165 27.221 28.698 -180. 0.17 14.673 23.33 -180. 0.175 10.043 20.038 -180. 0.18 7.6345 17.656 -180. 0.185 6.1576 15.788 -180. 0.19 5.1595 14.252 -180. 0.195 4.4398 12.947 -180. 0.2 3.8964 11.813 -180. V1 ( 1 0 ) AC 1. R2 ( 1 2 ) 1. C3 ( 2 0 ) complex( 0., 1.) tests/==out/bm_complex.3.ckt.out000066400000000000000000000041451316501211100170130ustar00rootroot00000000000000' C3 2 0 complex 0. 1. ) ^ ? need ( #Freq vm(2) vdb(2) vp(2) 1.p 1. 54.575p 0. 10.p 1. 545.76p 0. 100.p 1. 5.4576n 0. 1.n 1. 54.576n 0. 10.n 1. 545.76n 0. 100.n 1. 5.4576u 0. 1.u 1. 54.576u 0. 10.u 1.0001 545.77u 0. 100.u 1.0006 0.0054593 0. 0.001 1.0063 0.054748 0. 0.01 1.067 0.56366 0. 0.1 2.6905 8.5967 0. 1. 0.18928 -14.458 -180. 10. 0.016173 -35.824 -180. 100. 0.0015941 -55.95 -180. 1.K 159.18u -75.962 -180. 10.K 15.916u -95.964 -180. 100.K 1.5915u -115.96 -180. 1.Meg 159.15n -135.96 -180. 10.Meg 15.915n -155.96 -180. 100.Meg 1.5915n -175.96 -180. 1.G 159.15p -195.96 -180. #Freq vm(2) vdb(2) vp(2) 0.1 2.6905 8.5967 0. 0.105 2.9389 9.3638 0. 0.11 3.2379 10.205 0. 0.115 3.6046 11.137 0. 0.12 4.0649 12.181 0. 0.125 4.66 13.368 0. 0.13 5.4592 14.743 0. 0.135 6.5893 16.377 0. 0.14 8.3094 18.391 0. 0.145 11.245 21.019 0. 0.15 17.387 24.805 0. 0.155 38.319 31.668 0. 0.16 187.98 45.482 -180. 0.165 27.221 28.698 -180. 0.17 14.673 23.33 -180. 0.175 10.043 20.038 -180. 0.18 7.6345 17.656 -180. 0.185 6.1576 15.788 -180. 0.19 5.1595 14.252 -180. 0.195 4.4398 12.947 -180. 0.2 3.8964 11.813 -180. V1 ( 1 0 ) AC 1. R2 ( 1 2 ) 1. C3 ( 2 0 ) complex( 0., 1.) tests/==out/bm_complex.4.ckt.out000066400000000000000000000040521316501211100170110ustar00rootroot00000000000000' #Freq vm(2) vdb(2) vp(2) 1.p 1. 54.575p 0. 10.p 1. 545.76p 0. 100.p 1. 5.4576n 0. 1.n 1. 54.576n 0. 10.n 1. 545.76n 0. 100.n 1. 5.4576u 0. 1.u 1. 54.576u 0. 10.u 1.0001 545.77u 0. 100.u 1.0006 0.0054593 0. 0.001 1.0063 0.054748 0. 0.01 1.067 0.56366 0. 0.1 2.6905 8.5967 0. 1. 0.18928 -14.458 -180. 10. 0.016173 -35.824 -180. 100. 0.0015941 -55.95 -180. 1.K 159.18u -75.962 -180. 10.K 15.916u -95.964 -180. 100.K 1.5915u -115.96 -180. 1.Meg 159.15n -135.96 -180. 10.Meg 15.915n -155.96 -180. 100.Meg 1.5915n -175.96 -180. 1.G 159.15p -195.96 -180. #Freq vm(2) vdb(2) vp(2) 0.1 2.6905 8.5967 0. 0.105 2.9389 9.3638 0. 0.11 3.2379 10.205 0. 0.115 3.6046 11.137 0. 0.12 4.0649 12.181 0. 0.125 4.66 13.368 0. 0.13 5.4592 14.743 0. 0.135 6.5893 16.377 0. 0.14 8.3094 18.391 0. 0.145 11.245 21.019 0. 0.15 17.387 24.805 0. 0.155 38.319 31.668 0. 0.16 187.98 45.482 -180. 0.165 27.221 28.698 -180. 0.17 14.673 23.33 -180. 0.175 10.043 20.038 -180. 0.18 7.6345 17.656 -180. 0.185 6.1576 15.788 -180. 0.19 5.1595 14.252 -180. 0.195 4.4398 12.947 -180. 0.2 3.8964 11.813 -180. V1 ( 1 0 ) AC 1. R2 ( 1 2 ) 1. C3 ( 2 0 ) complex( 0., 1.) tests/==out/bm_cond.1.ckt.out000066400000000000000000000004511316501211100162610ustar00rootroot00000000000000# conditional test # v(1) v(2) 0. 1. 0.33333 #Freq v(1) v(2) 0. 10. 5. # v(1) v(2) 0. 1. 0.33333 v1 ( 1 0 ) DC 1. AC 10. r1 ( 1 2 ) DC 2.K AC 1.K r2 ( 2 0 ) 1.K tests/==out/bm_cond.2.ckt.out000066400000000000000000000024511316501211100162640ustar00rootroot00000000000000'dctran test #Time iter(0) v(1) v(2) v(3) 0. 3. 0. 0. 0. 0.1 68. 1. 0.095216 0.095216 0.2 4. 1. 0.18139 0.18139 0.3 4. 1. 0.25935 0.25935 0.4 4. 1. 0.32989 0.32989 0.5 4. 1. 0.39371 0.39371 0.6 4. 1. 0.45145 0.45145 0.7 4. 1. 0.50369 0.50369 0.8 4. 1. 0.55096 0.55096 0.9 4. 1. 0.59373 0.59372 1. 4. 1. 0.63242 0.63242 #Freq v(1) v(2) v(3) 0.001 1. 0.99998 0.99998 0.01 1. 0.99803 0.99803 0.1 1. 0.84673 0.84673 1. 1. 0.15718 0.15718 10. 1. 0.015913 0.015913 V1 ( 1 0 ) DC generator scale= 1. AC 1. L3 ( 1 2 ) DC 1. AC 1. R4 ( 2 0 ) DC 1. AC 1. R5 ( 1 3 ) DC 1. AC 1. C6 ( 3 0 ) DC 1. AC 1. Gnucap System status iterations: op=0, dc=0, tran=107, fourier=0, total=139 transient timesteps: accepted=20, rejected=7, total=27 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_cond.3.ckt.out000066400000000000000000000047351316501211100162740ustar00rootroot00000000000000'dctran test #Time iter(0) v(1) v(2) v(3) control(0) 0. 3. 0. 0. 0. 1. 0.001 4. 1. 975.61u 999.u 9. 83.333u 4. 1. 83.326u 83.326u 16. 6.9444u 4. 1. 6.9444u 6.9444u 16. 578.7n 4. 1. 578.7n 578.7n 16. 48.225n 4. 1. 48.225n 48.225n 16. 4.0188n 4. 1. 4.0188n 4.0188n 16. 334.9p 4. 1. 334.9p 334.9p 16. 167.45p 4. 1. 167.45p 167.45p 16. 277.45p 4. 1. 277.45p 277.45p 6. 454.14p 4. 1. 454.14p 454.14p 6. 630.83p 4. 1. 630.83p 630.83p 6. 807.53p 4. 1. 807.53p 807.53p 6. 1.3647u 4. 1. 1.3647u 1.3647u 6. 13.65u 4. 1. 13.649u 13.649u 6. 0.0012793 4. 1. 0.0012785 0.0012785 6. 0.011151 4. 1. 0.01109 0.01109 6. 0.1 4. 1. 0.095216 0.095216 1. 0.2 4. 1. 0.18139 0.18139 1. 0.3 4. 1. 0.25935 0.25935 1. 0.4 4. 1. 0.32989 0.32989 1. 0.5 4. 1. 0.39371 0.39371 1. 0.6 4. 1. 0.45145 0.45145 1. 0.7 4. 1. 0.50369 0.50369 1. 0.8 4. 1. 0.55096 0.55096 1. 0.9 4. 1. 0.59373 0.59372 1. 1. 4. 1. 0.63242 0.63242 1. #Freq v(1) v(2) v(3) 0.001 1. 0.99998 0.99998 0.01 1. 0.99803 0.99803 0.1 1. 0.84673 0.84673 1. 1. 0.15718 0.15718 10. 1. 0.015913 0.015913 V1 ( 1 0 ) DC generator scale= 1. AC 1. L3 ( 1 2 ) DC 1. AC 1. R4 ( 2 0 ) DC 1. AC 1. R5 ( 1 3 ) DC 1. AC 1. C6 ( 3 0 ) DC 1. AC 1. Gnucap System status iterations: op=0, dc=0, tran=107, fourier=0, total=139 transient timesteps: accepted=20, rejected=7, total=27 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_exp.1.ckt.out000066400000000000000000000221561316501211100161400ustar00rootroot00000000000000' exp test #Time v(1) 0. 0. 50.p 0. 100.p 0. 150.p 0. 200.p 0. 250.p 0. 300.p 0. 350.p 0. 400.p 0. 450.p 0. 500.p 0. 550.p 0. 600.p 0. 650.p 0. 700.p 0. 750.p 0. 800.p 0. 850.p 0. 900.p 0. 950.p 0. 1.n 0. 1.05n 0.0099502 1.1n 0.019801 1.15n 0.029554 1.2n 0.039211 1.25n 0.048771 1.3n 0.058235 1.35n 0.067606 1.4n 0.076884 1.45n 0.086069 1.5n 0.095163 1.55n 0.10417 1.6n 0.11308 1.65n 0.1219 1.7n 0.13064 1.75n 0.13929 1.8n 0.14786 1.85n 0.15634 1.9n 0.16473 1.95n 0.17304 2.n 0.18127 2.05n 0.18942 2.1n 0.19748 2.15n 0.20547 2.2n 0.21337 2.25n 0.2212 2.3n 0.22895 2.35n 0.23662 2.4n 0.24422 2.45n 0.25174 2.5n 0.25918 2.55n 0.26655 2.6n 0.27385 2.65n 0.28108 2.7n 0.28823 2.75n 0.29531 2.8n 0.30232 2.85n 0.30927 2.9n 0.31614 2.95n 0.32294 3.n 0.32968 3.05n 0.33635 3.1n 0.34295 3.15n 0.34949 3.2n 0.35596 3.25n 0.36237 3.3n 0.36872 3.35n 0.375 3.4n 0.38122 3.45n 0.38737 3.5n 0.39347 3.55n 0.3995 3.6n 0.40548 3.65n 0.4114 3.7n 0.41725 3.75n 0.42305 3.8n 0.42879 3.85n 0.43447 3.9n 0.4401 3.95n 0.44567 4.n 0.45119 4.05n 0.45665 4.1n 0.46206 4.15n 0.46741 4.2n 0.47271 4.25n 0.47795 4.3n 0.48315 4.35n 0.48829 4.4n 0.49338 4.45n 0.49842 4.5n 0.50341 4.55n 0.50836 4.6n 0.51325 4.65n 0.51809 4.7n 0.52289 4.75n 0.52763 4.8n 0.53233 4.85n 0.53699 4.9n 0.54159 4.95n 0.54616 5.n 0.55067 5.05n 0.55514 5.1n 0.55957 5.15n 0.56395 5.2n 0.56829 5.25n 0.57259 5.3n 0.57684 5.35n 0.58105 5.4n 0.58522 5.45n 0.58934 5.5n 0.59343 5.55n 0.59748 5.6n 0.60148 5.65n 0.60545 5.7n 0.60937 5.75n 0.61326 5.8n 0.61711 5.85n 0.62092 5.9n 0.62469 5.95n 0.62842 6.n 0.63212 6.05n 0.63578 6.1n 0.63941 6.15n 0.64299 6.2n 0.64655 6.25n 0.65006 6.3n 0.65354 6.35n 0.65699 6.4n 0.6604 6.45n 0.66378 6.5n 0.66713 6.55n 0.67044 6.6n 0.67372 6.65n 0.67697 6.7n 0.68018 6.75n 0.68336 6.8n 0.68651 6.85n 0.68963 6.9n 0.69272 6.95n 0.69578 7.n 0.69881 7.05n 0.7018 7.1n 0.70477 7.15n 0.70771 7.2n 0.71062 7.25n 0.7135 7.3n 0.71635 7.35n 0.71917 7.4n 0.72196 7.45n 0.72473 7.5n 0.72747 7.55n 0.73018 7.6n 0.73286 7.65n 0.73552 7.7n 0.73815 7.75n 0.74076 7.8n 0.74334 7.85n 0.74589 7.9n 0.74842 7.95n 0.75092 8.n 0.7534 8.05n 0.75586 8.1n 0.75829 8.15n 0.76069 8.2n 0.76307 8.25n 0.76543 8.3n 0.76776 8.35n 0.77007 8.4n 0.77236 8.45n 0.77463 8.5n 0.77687 8.55n 0.77909 8.6n 0.78129 8.65n 0.78346 8.7n 0.78562 8.75n 0.78775 8.8n 0.78986 8.85n 0.79195 8.9n 0.79402 8.95n 0.79607 9.n 0.7981 9.05n 0.80011 9.1n 0.8021 9.15n 0.80407 9.2n 0.80602 9.25n 0.80795 9.3n 0.80986 9.35n 0.81175 9.4n 0.81363 9.45n 0.81548 9.5n 0.81732 9.55n 0.81913 9.6n 0.82093 9.65n 0.82272 9.7n 0.82448 9.75n 0.82623 9.8n 0.82796 9.85n 0.82967 9.9n 0.83136 9.95n 0.83304 10.n 0.8347 10.05n 0.8264 10.1n 0.81817 10.15n 0.81003 10.2n 0.80197 10.25n 0.79399 10.3n 0.78609 10.35n 0.77827 10.4n 0.77053 10.45n 0.76286 10.5n 0.75527 10.55n 0.74775 10.6n 0.74031 10.65n 0.73295 10.7n 0.72565 10.75n 0.71843 10.8n 0.71129 10.85n 0.70421 10.9n 0.6972 10.95n 0.69026 11.n 0.6834 11.05n 0.6766 11.1n 0.66986 11.15n 0.6632 11.2n 0.6566 11.25n 0.65007 11.3n 0.6436 11.35n 0.63719 11.4n 0.63085 11.45n 0.62458 11.5n 0.61836 11.55n 0.61221 11.6n 0.60612 11.65n 0.60009 11.7n 0.59412 11.75n 0.5882 11.8n 0.58235 11.85n 0.57656 11.9n 0.57082 11.95n 0.56514 12.n 0.55952 12.05n 0.55395 12.1n 0.54844 12.15n 0.54298 12.2n 0.53758 12.25n 0.53223 12.3n 0.52693 12.35n 0.52169 12.4n 0.5165 12.45n 0.51136 12.5n 0.50627 12.55n 0.50123 12.6n 0.49625 12.65n 0.49131 12.7n 0.48642 12.75n 0.48158 12.8n 0.47679 12.85n 0.47204 12.9n 0.46735 12.95n 0.4627 13.n 0.45809 13.05n 0.45354 13.1n 0.44902 13.15n 0.44455 13.2n 0.44013 13.25n 0.43575 13.3n 0.43142 13.35n 0.42712 13.4n 0.42287 13.45n 0.41867 13.5n 0.4145 13.55n 0.41038 13.6n 0.40629 13.65n 0.40225 13.7n 0.39825 13.75n 0.39428 13.8n 0.39036 13.85n 0.38648 13.9n 0.38263 13.95n 0.37882 14.n 0.37506 14.05n 0.37132 14.1n 0.36763 14.15n 0.36397 14.2n 0.36035 14.25n 0.35676 14.3n 0.35321 14.35n 0.3497 14.4n 0.34622 14.45n 0.34277 14.5n 0.33936 14.55n 0.33599 14.6n 0.33264 14.65n 0.32933 14.7n 0.32606 14.75n 0.32281 14.8n 0.3196 14.85n 0.31642 14.9n 0.31327 14.95n 0.31016 15.n 0.30707 15.05n 0.30401 15.1n 0.30099 15.15n 0.29799 15.2n 0.29503 15.25n 0.29209 15.3n 0.28919 15.35n 0.28631 15.4n 0.28346 15.45n 0.28064 15.5n 0.27785 15.55n 0.27508 15.6n 0.27235 15.65n 0.26964 15.7n 0.26695 15.75n 0.2643 15.8n 0.26167 15.85n 0.25906 15.9n 0.25649 15.95n 0.25393 16.n 0.25141 16.05n 0.24891 16.1n 0.24643 16.15n 0.24398 16.2n 0.24155 16.25n 0.23915 16.3n 0.23677 16.35n 0.23441 16.4n 0.23208 16.45n 0.22977 16.5n 0.22748 16.55n 0.22522 16.6n 0.22298 16.65n 0.22076 16.7n 0.21856 16.75n 0.21639 16.8n 0.21424 16.85n 0.2121 16.9n 0.20999 16.95n 0.2079 17.n 0.20583 17.05n 0.20379 17.1n 0.20176 17.15n 0.19975 17.2n 0.19776 17.25n 0.1958 17.3n 0.19385 17.35n 0.19192 17.4n 0.19001 17.45n 0.18812 17.5n 0.18625 17.55n 0.18439 17.6n 0.18256 17.65n 0.18074 17.7n 0.17894 17.75n 0.17716 17.8n 0.1754 17.85n 0.17366 17.9n 0.17193 17.95n 0.17022 18.n 0.16852 18.05n 0.16685 18.1n 0.16519 18.15n 0.16354 18.2n 0.16192 18.25n 0.1603 18.3n 0.15871 18.35n 0.15713 18.4n 0.15557 18.45n 0.15402 18.5n 0.15249 18.55n 0.15097 18.6n 0.14947 18.65n 0.14798 18.7n 0.14651 18.75n 0.14505 18.8n 0.14361 18.85n 0.14218 18.9n 0.14076 18.95n 0.13936 19.n 0.13798 19.05n 0.1366 19.1n 0.13524 19.15n 0.1339 19.2n 0.13257 19.25n 0.13125 19.3n 0.12994 19.35n 0.12865 19.4n 0.12737 19.45n 0.1261 19.5n 0.12485 19.55n 0.1236 19.6n 0.12237 19.65n 0.12116 19.7n 0.11995 19.75n 0.11876 19.8n 0.11757 19.85n 0.1164 19.9n 0.11525 19.95n 0.1141 20.n 0.11296 v1 ( 1 0 ) exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n tests/==out/bm_exp.1p.ckt.out000066400000000000000000000221701316501211100163140ustar00rootroot00000000000000' exp test #Time v(1) 0. 0. 50.p 0. 100.p 0. 150.p 0. 200.p 0. 250.p 0. 300.p 0. 350.p 0. 400.p 0. 450.p 0. 500.p 0. 550.p 0. 600.p 0. 650.p 0. 700.p 0. 750.p 0. 800.p 0. 850.p 0. 900.p 0. 950.p 0. 1.n 0. 1.05n 0.0099502 1.1n 0.019801 1.15n 0.029554 1.2n 0.039211 1.25n 0.048771 1.3n 0.058235 1.35n 0.067606 1.4n 0.076884 1.45n 0.086069 1.5n 0.095163 1.55n 0.10417 1.6n 0.11308 1.65n 0.1219 1.7n 0.13064 1.75n 0.13929 1.8n 0.14786 1.85n 0.15634 1.9n 0.16473 1.95n 0.17304 2.n 0.18127 2.05n 0.18942 2.1n 0.19748 2.15n 0.20547 2.2n 0.21337 2.25n 0.2212 2.3n 0.22895 2.35n 0.23662 2.4n 0.24422 2.45n 0.25174 2.5n 0.25918 2.55n 0.26655 2.6n 0.27385 2.65n 0.28108 2.7n 0.28823 2.75n 0.29531 2.8n 0.30232 2.85n 0.30927 2.9n 0.31614 2.95n 0.32294 3.n 0.32968 3.05n 0.33635 3.1n 0.34295 3.15n 0.34949 3.2n 0.35596 3.25n 0.36237 3.3n 0.36872 3.35n 0.375 3.4n 0.38122 3.45n 0.38737 3.5n 0.39347 3.55n 0.3995 3.6n 0.40548 3.65n 0.4114 3.7n 0.41725 3.75n 0.42305 3.8n 0.42879 3.85n 0.43447 3.9n 0.4401 3.95n 0.44567 4.n 0.45119 4.05n 0.45665 4.1n 0.46206 4.15n 0.46741 4.2n 0.47271 4.25n 0.47795 4.3n 0.48315 4.35n 0.48829 4.4n 0.49338 4.45n 0.49842 4.5n 0.50341 4.55n 0.50836 4.6n 0.51325 4.65n 0.51809 4.7n 0.52289 4.75n 0.52763 4.8n 0.53233 4.85n 0.53699 4.9n 0.54159 4.95n 0.54616 5.n 0.55067 5.05n 0.55514 5.1n 0.55957 5.15n 0.56395 5.2n 0.56829 5.25n 0.57259 5.3n 0.57684 5.35n 0.58105 5.4n 0.58522 5.45n 0.58934 5.5n 0.59343 5.55n 0.59748 5.6n 0.60148 5.65n 0.60545 5.7n 0.60937 5.75n 0.61326 5.8n 0.61711 5.85n 0.62092 5.9n 0.62469 5.95n 0.62842 6.n 0.63212 6.05n 0.63578 6.1n 0.63941 6.15n 0.64299 6.2n 0.64655 6.25n 0.65006 6.3n 0.65354 6.35n 0.65699 6.4n 0.6604 6.45n 0.66378 6.5n 0.66713 6.55n 0.67044 6.6n 0.67372 6.65n 0.67697 6.7n 0.68018 6.75n 0.68336 6.8n 0.68651 6.85n 0.68963 6.9n 0.69272 6.95n 0.69578 7.n 0.69881 7.05n 0.7018 7.1n 0.70477 7.15n 0.70771 7.2n 0.71062 7.25n 0.7135 7.3n 0.71635 7.35n 0.71917 7.4n 0.72196 7.45n 0.72473 7.5n 0.72747 7.55n 0.73018 7.6n 0.73286 7.65n 0.73552 7.7n 0.73815 7.75n 0.74076 7.8n 0.74334 7.85n 0.74589 7.9n 0.74842 7.95n 0.75092 8.n 0.7534 8.05n 0.75586 8.1n 0.75829 8.15n 0.76069 8.2n 0.76307 8.25n 0.76543 8.3n 0.76776 8.35n 0.77007 8.4n 0.77236 8.45n 0.77463 8.5n 0.77687 8.55n 0.77909 8.6n 0.78129 8.65n 0.78346 8.7n 0.78562 8.75n 0.78775 8.8n 0.78986 8.85n 0.79195 8.9n 0.79402 8.95n 0.79607 9.n 0.7981 9.05n 0.80011 9.1n 0.8021 9.15n 0.80407 9.2n 0.80602 9.25n 0.80795 9.3n 0.80986 9.35n 0.81175 9.4n 0.81363 9.45n 0.81548 9.5n 0.81732 9.55n 0.81913 9.6n 0.82093 9.65n 0.82272 9.7n 0.82448 9.75n 0.82623 9.8n 0.82796 9.85n 0.82967 9.9n 0.83136 9.95n 0.83304 10.n 0.8347 10.05n 0.8264 10.1n 0.81817 10.15n 0.81003 10.2n 0.80197 10.25n 0.79399 10.3n 0.78609 10.35n 0.77827 10.4n 0.77053 10.45n 0.76286 10.5n 0.75527 10.55n 0.74775 10.6n 0.74031 10.65n 0.73295 10.7n 0.72565 10.75n 0.71843 10.8n 0.71129 10.85n 0.70421 10.9n 0.6972 10.95n 0.69026 11.n 0.6834 11.05n 0.6766 11.1n 0.66986 11.15n 0.6632 11.2n 0.6566 11.25n 0.65007 11.3n 0.6436 11.35n 0.63719 11.4n 0.63085 11.45n 0.62458 11.5n 0.61836 11.55n 0.61221 11.6n 0.60612 11.65n 0.60009 11.7n 0.59412 11.75n 0.5882 11.8n 0.58235 11.85n 0.57656 11.9n 0.57082 11.95n 0.56514 12.n 0.55952 12.05n 0.55395 12.1n 0.54844 12.15n 0.54298 12.2n 0.53758 12.25n 0.53223 12.3n 0.52693 12.35n 0.52169 12.4n 0.5165 12.45n 0.51136 12.5n 0.50627 12.55n 0.50123 12.6n 0.49625 12.65n 0.49131 12.7n 0.48642 12.75n 0.48158 12.8n 0.47679 12.85n 0.47204 12.9n 0.46735 12.95n 0.4627 13.n 0.45809 13.05n 0.45354 13.1n 0.44902 13.15n 0.44455 13.2n 0.44013 13.25n 0.43575 13.3n 0.43142 13.35n 0.42712 13.4n 0.42287 13.45n 0.41867 13.5n 0.4145 13.55n 0.41038 13.6n 0.40629 13.65n 0.40225 13.7n 0.39825 13.75n 0.39428 13.8n 0.39036 13.85n 0.38648 13.9n 0.38263 13.95n 0.37882 14.n 0.37506 14.05n 0.37132 14.1n 0.36763 14.15n 0.36397 14.2n 0.36035 14.25n 0.35676 14.3n 0.35321 14.35n 0.3497 14.4n 0.34622 14.45n 0.34277 14.5n 0.33936 14.55n 0.33599 14.6n 0.33264 14.65n 0.32933 14.7n 0.32606 14.75n 0.32281 14.8n 0.3196 14.85n 0.31642 14.9n 0.31327 14.95n 0.31016 15.n 0.30707 15.05n 0.30401 15.1n 0.30099 15.15n 0.29799 15.2n 0.29503 15.25n 0.29209 15.3n 0.28919 15.35n 0.28631 15.4n 0.28346 15.45n 0.28064 15.5n 0.27785 15.55n 0.27508 15.6n 0.27235 15.65n 0.26964 15.7n 0.26695 15.75n 0.2643 15.8n 0.26167 15.85n 0.25906 15.9n 0.25649 15.95n 0.25393 16.n 0.25141 16.05n 0.24891 16.1n 0.24643 16.15n 0.24398 16.2n 0.24155 16.25n 0.23915 16.3n 0.23677 16.35n 0.23441 16.4n 0.23208 16.45n 0.22977 16.5n 0.22748 16.55n 0.22522 16.6n 0.22298 16.65n 0.22076 16.7n 0.21856 16.75n 0.21639 16.8n 0.21424 16.85n 0.2121 16.9n 0.20999 16.95n 0.2079 17.n 0.20583 17.05n 0.20379 17.1n 0.20176 17.15n 0.19975 17.2n 0.19776 17.25n 0.1958 17.3n 0.19385 17.35n 0.19192 17.4n 0.19001 17.45n 0.18812 17.5n 0.18625 17.55n 0.18439 17.6n 0.18256 17.65n 0.18074 17.7n 0.17894 17.75n 0.17716 17.8n 0.1754 17.85n 0.17366 17.9n 0.17193 17.95n 0.17022 18.n 0.16852 18.05n 0.16685 18.1n 0.16519 18.15n 0.16354 18.2n 0.16192 18.25n 0.1603 18.3n 0.15871 18.35n 0.15713 18.4n 0.15557 18.45n 0.15402 18.5n 0.15249 18.55n 0.15097 18.6n 0.14947 18.65n 0.14798 18.7n 0.14651 18.75n 0.14505 18.8n 0.14361 18.85n 0.14218 18.9n 0.14076 18.95n 0.13936 19.n 0.13798 19.05n 0.1366 19.1n 0.13524 19.15n 0.1339 19.2n 0.13257 19.25n 0.13125 19.3n 0.12994 19.35n 0.12865 19.4n 0.12737 19.45n 0.1261 19.5n 0.12485 19.55n 0.1236 19.6n 0.12237 19.65n 0.12116 19.7n 0.11995 19.75n 0.11876 19.8n 0.11757 19.85n 0.1164 19.9n 0.11525 19.95n 0.1141 20.n 0.11296 v1 ( 1 0 ) exp iv= 0. pv= 1. td1=delay/10 tau1=delay/2 td2=delay tau2=delay/2 tests/==out/bm_exp.2.ckt.out000066400000000000000000000046211316501211100161360ustar00rootroot00000000000000' exp test, periodic #Time v(1) 0. 0. 1.n 0. 2.n 0.18127 3.n 0.32968 4.n 0.45119 5.n 0.55067 6.n 0.63212 7.n 0.69881 8.n 0.7534 9.n 0.7981 10.n 0.8347 11.n 0.6834 12.n 0.55952 13.n 0.45809 14.n 0.37506 15.n 0.30707 16.n 0.25141 17.n 0.20583 18.n 0.16852 19.n 0.13798 20.n 0.11296 21.n 0.092488 22.n 0.25699 23.n 0.39168 24.n 0.50195 25.n 0.59223 26.n 0.66614 27.n 0.72666 28.n 0.77621 29.n 0.81678 30.n 0.84999 31.n 0.69591 32.n 0.56976 33.n 0.46648 34.n 0.38192 35.n 0.31269 36.n 0.25601 37.n 0.2096 38.n 0.17161 39.n 0.1405 40.n 0.11503 41.n 0.094181 42.n 0.25838 43.n 0.39281 44.n 0.50288 45.n 0.59299 46.n 0.66677 47.n 0.72717 48.n 0.77663 49.n 0.81712 50.n 0.85027 51.n 0.69614 52.n 0.56995 53.n 0.46664 54.n 0.38205 55.n 0.3128 56.n 0.2561 57.n 0.20967 58.n 0.17167 59.n 0.14055 60.n 0.11507 61.n 0.094213 62.n 0.2584 63.n 0.39283 64.n 0.50289 65.n 0.593 66.n 0.66678 67.n 0.72718 68.n 0.77664 69.n 0.81712 70.n 0.85027 71.n 0.69615 72.n 0.56996 73.n 0.46664 74.n 0.38205 75.n 0.3128 76.n 0.2561 77.n 0.20968 78.n 0.17167 79.n 0.14055 80.n 0.11507 81.n 0.094213 82.n 0.2584 83.n 0.39283 84.n 0.50289 85.n 0.593 86.n 0.66678 87.n 0.72718 88.n 0.77664 89.n 0.81712 90.n 0.85027 91.n 0.69615 92.n 0.56996 93.n 0.46664 94.n 0.38205 95.n 0.3128 96.n 0.2561 97.n 0.20968 98.n 0.17167 99.n 0.14055 100.n 0.11507 v1 ( 1 0 ) exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n tests/==out/bm_exp.3.ckt.out000066400000000000000000000044471316501211100161450ustar00rootroot00000000000000' exp test, periodic #Time v(1) next(v1) event(v1) control(0) 0. 0. 0. 1.n 1. 1.n 0. 6.n 10.n 9. 5.95n 0.62842 10.399n 10.n 6. 10.n 0.8347 15.n 20.n 7. 14.05n 0.37132 18.802n 20.n 6. 18.1n 0.16519 21.383n 20.n 6. 20.n 0.11296 23.229n 21.n 7. 21.n 0.092488 26.n 30.n 7. 25.937n 0.66195 29.502n 30.n 6. 29.464n 0.83302 32.697n 30.n 6. 30.n 0.84999 33.684n 40.n 7. 33.5n 0.42209 36.753n 40.n 6. 37.n 0.2096 39.241n 40.n 6. 39.172n 0.13574 41.313n 40.n 6. 40.n 0.11503 45.n 41.n 7. 41.n 0.094181 46.n 50.n 7. 45.917n 0.66117 49.099n 50.n 6. 49.098n 0.82067 52.067n 50.n 6. 50.n 0.85027 53.505n 60.n 7. 53.333n 0.43654 56.615n 60.n 6. 56.667n 0.22413 58.915n 60.n 6. 58.833n 0.14531 60.98n 60.n 6. 60.n 0.11507 65.n 61.n 7. 61.n 0.094213 66.n 70.n 7. 65.875n 0.65834 69.103n 70.n 6. 68.977n 0.81629 71.939n 70.n 6. 70.n 0.85027 73.435n 80.n 7. 73.333n 0.43655 76.652n 80.n 6. 76.667n 0.22413 78.934n 80.n 6. 78.788n 0.14664 80.938n 80.n 6. 80.n 0.11507 84.997n 81.n 7. 81.n 0.094213 86.n 90.n 7. 85.75n 0.6497 88.92n 90.n 6. 88.6n 0.80189 91.467n 90.n 6. 90.n 0.85027 93.351n 100.n 7. 93.333n 0.43655 96.738n 100.n 6. 96.667n 0.22413 99.001n 100.n 6. 98.333n 0.1606 100.52n 100.n 6. 100.n 0.11507 104.98n 101.n 1. v1 ( 1 0 ) exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n tests/==out/bm_exp.3p.ckt.out000066400000000000000000000044371316501211100163240ustar00rootroot00000000000000' exp test, periodic #Time v(1) next(v1) event(v1) control(0) 0. 0. 0. 1.n 1. 1.n 0. 6.n 10.n 9. 5.95n 0.62842 10.399n 10.n 6. 10.n 0.8347 15.n 20.n 7. 14.05n 0.37132 18.802n 20.n 6. 18.1n 0.16519 21.383n 20.n 6. 20.n 0.11296 23.229n 21.n 7. 21.n 0.092488 26.n 30.n 7. 25.937n 0.66195 29.502n 30.n 6. 29.464n 0.83302 32.697n 30.n 6. 30.n 0.84999 33.684n 40.n 7. 33.5n 0.42209 36.753n 40.n 6. 37.n 0.2096 39.241n 40.n 6. 39.172n 0.13574 41.313n 40.n 6. 40.n 0.11503 45.n 41.n 7. 41.n 0.094181 46.n 50.n 7. 45.917n 0.66117 49.099n 50.n 6. 49.098n 0.82067 52.067n 50.n 6. 50.n 0.85027 53.505n 60.n 7. 53.333n 0.43654 56.615n 60.n 6. 56.667n 0.22413 58.915n 60.n 6. 58.833n 0.14531 60.98n 60.n 6. 60.n 0.11507 65.n 61.n 7. 61.n 0.094213 66.n 70.n 7. 65.875n 0.65834 69.103n 70.n 6. 68.977n 0.81629 71.939n 70.n 6. 70.n 0.85027 73.435n 80.n 7. 73.333n 0.43655 76.652n 80.n 6. 76.667n 0.22413 78.934n 80.n 6. 78.788n 0.14664 80.938n 80.n 6. 80.n 0.11507 84.997n 81.n 7. 81.n 0.094213 86.n 90.n 7. 85.75n 0.6497 88.92n 90.n 6. 88.6n 0.80189 91.467n 90.n 6. 90.n 0.85027 93.351n 100.n 7. 93.333n 0.43655 96.738n 100.n 6. 96.667n 0.22413 99.001n 100.n 6. 98.333n 0.1606 100.52n 100.n 6. 100.n 0.11507 104.98n 101.n 1. v1 ( 1 0 ) exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p tests/==out/bm_exp.4p.ckt.out000066400000000000000000000071441316501211100163230ustar00rootroot00000000000000' exp test, periodic "v1 1 0 exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p " ".print tran v(1) next(v1) event(v1) control(0) " ".param p=20n " ".tran 0 100n 100n trace all " #Time v(1) next(v1) event(v1) control(0) 0. 0. 0. 1.n 1. 1.n 0. 6.n 10.n 9. 5.95n 0.62842 10.399n 10.n 6. 10.n 0.8347 15.n 20.n 7. 14.05n 0.37132 18.802n 20.n 6. 18.1n 0.16519 21.383n 20.n 6. 20.n 0.11296 23.229n 21.n 7. 21.n 0.092488 26.n 30.n 7. 25.937n 0.66195 29.502n 30.n 6. 29.464n 0.83302 32.697n 30.n 6. 30.n 0.84999 33.684n 40.n 7. 33.5n 0.42209 36.753n 40.n 6. 37.n 0.2096 39.241n 40.n 6. 39.172n 0.13574 41.313n 40.n 6. 40.n 0.11503 45.n 41.n 7. 41.n 0.094181 46.n 50.n 7. 45.917n 0.66117 49.099n 50.n 6. 49.098n 0.82067 52.067n 50.n 6. 50.n 0.85027 53.505n 60.n 7. 53.333n 0.43654 56.615n 60.n 6. 56.667n 0.22413 58.915n 60.n 6. 58.833n 0.14531 60.98n 60.n 6. 60.n 0.11507 65.n 61.n 7. 61.n 0.094213 66.n 70.n 7. 65.875n 0.65834 69.103n 70.n 6. 68.977n 0.81629 71.939n 70.n 6. 70.n 0.85027 73.435n 80.n 7. 73.333n 0.43655 76.652n 80.n 6. 76.667n 0.22413 78.934n 80.n 6. 78.788n 0.14664 80.938n 80.n 6. 80.n 0.11507 84.997n 81.n 7. 81.n 0.094213 86.n 90.n 7. 85.75n 0.6497 88.92n 90.n 6. 88.6n 0.80189 91.467n 90.n 6. 90.n 0.85027 93.351n 100.n 7. 93.333n 0.43655 96.738n 100.n 6. 96.667n 0.22413 99.001n 100.n 6. 98.333n 0.1606 100.52n 100.n 6. 100.n 0.11507 104.98n 101.n 1. ".param p=50n " ".tran trace all " #Time v(1) next(v1) event(v1) control(0) 100.n 0.11503 104.99n 102.5n 1. 101.n 0.10619 103.57n 102.5n 9. 102.5n 0.094181 104.44n 125.n 7. 104.n 0.19661 105.68n 125.n 6. 105.5n 0.28746 107.14n 125.n 6. 107.n 0.36803 109.14n 125.n 6. 108.5n 0.43949 121.n 125.n 6. 119.94n 0.77551 132.44n 125.n 6. 125.n 0.85027 137.5n 150.n 7. 137.5n 0.3128 148.07n 150.n 6. 150.n 0.11507 157.55n 152.5n 6. 152.5n 0.094213 158.74n 175.n 7. 158.44n 0.4367 165.31n 175.n 6. 164.38n 0.64969 170.02n 175.n 6. 170.31n 0.78215 176.44n 175.n 6. 175.n 0.85027 187.5n 200.n 7. 187.5n 0.3128 197.41n 200.n 6. 193.75n 0.18972 200.18n 200.n 6. 200.n 0.11507 206.32n 202.5n 1. ".list " v1 ( 1 0 ) exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p ".end " tests/==out/bm_exp.5p.ckt.out000066400000000000000000000040051316501211100163150ustar00rootroot00000000000000' exp test, periodic ".param ppp=50n " ".subckt esource (a b) " "*v1 (a b) exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n " "v1 (a b) exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p " ".ends " "x1 (1 0) esource p=ppp " "*x2 (2 0) esource p=20n " ".print tran v(1) " ".param ppp=20n " ".tran 0 100n 100n trace all " #Time v(1) 0. 0. 1.n 0. 5.95n 0.62842 10.n 0.8347 14.05n 0.37132 18.1n 0.16519 20.n 0.11296 21.n 0.092488 25.937n 0.66195 29.464n 0.83302 30.n 0.84999 33.5n 0.42209 37.n 0.2096 39.172n 0.13574 40.n 0.11503 41.n 0.094181 45.917n 0.66117 49.098n 0.82067 50.n 0.85027 53.333n 0.43654 56.667n 0.22413 58.833n 0.14531 60.n 0.11507 61.n 0.094213 65.875n 0.65834 68.977n 0.81629 70.n 0.85027 73.333n 0.43655 76.667n 0.22413 78.788n 0.14664 80.n 0.11507 81.n 0.094213 85.75n 0.6497 88.6n 0.80189 90.n 0.85027 93.333n 0.43655 96.667n 0.22413 98.333n 0.1606 100.n 0.11507 ".param ppp=50n " ".tran trace all " #Time v(1) 100.n 0.11503 101.n 0.10619 102.5n 0.094181 104.n 0.19661 105.5n 0.28746 107.n 0.36803 108.5n 0.43949 119.94n 0.77551 125.n 0.85027 137.5n 0.3128 150.n 0.11507 152.5n 0.094213 158.44n 0.4367 164.38n 0.64969 170.31n 0.78215 175.n 0.85027 187.5n 0.3128 193.75n 0.18972 200.n 0.11507 ".list " .subckt esource ( a b ) *v1 (a b) exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n v1 ( a b ) exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p .ends esource x1 ( 1 0 ) esource p=ppp *x2 (2 0) esource p=20n ".end " tests/==out/bm_fit.0.1.ckt.out000066400000000000000000000006531316501211100162620ustar00rootroot00000000000000# FIT mimicing PWL v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 2 0 ) 1.K e1 ( 3 0 2 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 9., 3. 16., 4. 25., 5. ) order=1 r3 ( 3 0 ) 10.K g1 ( 4 0 2 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=1 r4 ( 4 0 ) 10.K duplicate points in spline: 9., 9. duplicate points in spline: 9., 9. duplicate points in spline: 9., 9. duplicate points in spline: 9., 9. tests/==out/bm_fit.1.1.ckt.out000066400000000000000000000050771316501211100162700ustar00rootroot00000000000000# FIT mimicing PWL v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 2 0 ) 1.K e1 ( 3 0 2 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=1 r3 ( 3 0 ) 10.K g1 ( 4 0 2 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=1 r4 ( 4 0 ) 10.K # v(1) v(2) v(3) v(4) 27. 1. 0.5 0.5 -5.K # v(1) v(2) v(3) v(4) -10. -10. -5. -5. 50.K -9. -9. -4.5 -4.5 45.K -8. -8. -4. -4. 40.K -7. -7. -3.5 -3.5 35.K -6. -6. -3. -3. 30.K -5. -5. -2.5 -2.5 25.K -4. -4. -2. -2. 20.K -3. -3. -1.5 -1.5 15.K -2. -2. -1. -1. 10.K -1. -1. -0.5 -0.5 5.K 0. 0. 0. 0. 0. 1. 1. 0.5 0.5 -5.K 2. 2. 1. 1. -10.K 3. 3. 1.5 1.1667 -11.667K 4. 4. 2. 1.3333 -13.333K 5. 5. 2.5 1.5 -15.K 6. 6. 3. 1.6667 -16.667K 7. 7. 3.5 1.8333 -18.333K 8. 8. 4. 2. -20.K 9. 9. 4.5 2.1 -21.K 10. 10. 5. 2.2 -22.K # v(1) v(2) v(3) v(4) 1. 1. 0.5 0.5 -5.K 1.5849 1.5849 0.79245 0.79245 -7.9245K 2.5119 2.5119 1.2559 1.0853 -10.853K 3.9811 3.9811 1.9905 1.3302 -13.302K 6.3096 6.3096 3.1548 1.7183 -17.183K 10. 10. 5. 2.2 -22.K 15.849 15.849 7.9245 2.7849 -27.849K 25.119 25.119 12.559 3.5085 -35.085K 39.811 39.811 19.905 4.4339 -44.339K 63.096 63.096 31.548 5.7275 -57.275K 100. 100. 50. 7.7778 -77.778K # v(1) v(2) v(3) v(4) 32. 32. 16. 4. -40.K 41. 41. 20.5 4.5 -45.K 50. 50. 25. 5. -50.K 59. 59. 29.5 5.5 -55.K 68. 68. 34. 6. -60.K tests/==out/bm_fit.2.1.ckt.out000066400000000000000000000173271316501211100162720ustar00rootroot00000000000000# FIT as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 e3 ( 7 0 2 1 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 e1 ( 4 0 5 1 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -155.87 -155.87 -100. -10. -10. -9.75 1.u -9.75 -148.18 -148.18 -95.063 -9.75 -9.75 -9.5 1.u -9.5 -140.68 -140.68 -90.25 -9.5 -9.5 -9.25 1.u -9.25 -133.37 -133.37 -85.563 -9.25 -9.25 -9. 1.u -9. -126.26 -126.26 -81. -9. -9. -8.75 1.u -8.75 -119.34 -119.34 -76.562 -8.75 -8.75 -8.5 1.u -8.5 -112.62 -112.62 -72.25 -8.5 -8.5 -8.25 1.u -8.25 -106.09 -106.09 -68.062 -8.25 -8.25 -8. 1.u -8. -99.759 -99.759 -64. -8. -8. -7.75 1.u -7.75 -93.621 -93.621 -60.062 -7.75 -7.75 -7.5 1.u -7.5 -87.679 -87.679 -56.25 -7.5 -7.5 -7.25 1.u -7.25 -81.931 -81.931 -52.562 -7.25 -7.25 -7. 1.u -7. -76.378 -76.378 -49. -7. -7. -6.75 1.u -6.75 -71.02 -71.02 -45.563 -6.75 -6.75 -6.5 1.u -6.5 -65.856 -65.856 -42.25 -6.5 -6.5 -6.25 1.u -6.25 -60.888 -60.888 -39.063 -6.25 -6.25 -6. 1.u -6. -56.114 -56.114 -36. -6. -6. -5.75 1.u -5.75 -51.536 -51.536 -33.063 -5.75 -5.75 -5.5 1.u -5.5 -47.152 -47.152 -30.25 -5.5 -5.5 -5.25 1.u -5.25 -42.963 -42.963 -27.562 -5.25 -5.25 -5. 1.u -5. -38.968 -38.968 -25. -5. -5. -4.75 1.u -4.75 -35.169 -35.169 -22.562 -4.75 -4.75 -4.5 1.u -4.5 -31.564 -31.564 -20.25 -4.5 -4.5 -4.25 1.u -4.25 -28.155 -28.155 -18.062 -4.25 -4.25 -4. 1.u -4. -24.94 -24.94 -16. -4. -4. -3.75 1.u -3.75 -21.92 -21.92 -14.062 -3.75 -3.75 -3.5 1.u -3.5 -19.094 -19.094 -12.25 -3.5 -3.5 -3.25 1.u -3.25 -16.464 -16.464 -10.563 -3.25 -3.25 -3. 1.u -3. -14.029 -14.029 -9. -3. -3. -2.75 1.u -2.75 -11.788 -11.788 -7.5625 -2.75 -2.75 -2.5 1.u -2.5 -9.7421 -9.7421 -6.25 -2.5 -2.5 -2.25 1.u -2.25 -7.8911 -7.8911 -5.0625 -2.25 -2.25 -2. 1.u -2. -6.2349 -6.2349 -4. -2. -2. -1.75 1.u -1.75 -4.7736 -4.7736 -3.0625 -1.75 -1.75 -1.5 1.u -1.5 -3.5071 -3.5071 -2.25 -1.5 -1.5 -1.25 1.u -1.25 -2.4355 -2.4355 -1.5625 -1.25 -1.25 -1. 1.u -1. -1.5587 -1.5587 -1. -1. -1. -0.75 1.u -0.75 -0.87679 -0.87679 -0.5625 -0.75 -0.75 -0.5 1.u -0.5 -0.38968 -0.38968 -0.25 -0.5 -0.5 -0.25 1.u -0.25 -0.097421 -0.097422 -0.0625 -0.25 -0.25 0. 1.u 0. 0. -1.5587u 0. 0. -1.u 0.25 1.u 0.25 0.095238 0.095237 0.0625 0.25 0.25 0.5 1.u 0.5 0.35476 0.35476 0.25 0.5 0.5 0.75 1.u 0.75 0.7 0.7 0.5625 0.75 0.75 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2368 1.2368 1.5625 1.375 1.375 1.5 1.u 1.5 1.4954 1.4954 2.25 2. 2. 1.75 1.u 1.75 1.7571 1.7571 3.0625 2.875 2.875 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.2338 2.2337 5.0625 5.25 5.25 2.5 1.u 2.5 2.4814 2.4814 6.25 6.5 6.5 2.75 1.u 2.75 2.7385 2.7385 7.5625 7.75 7.75 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2617 3.2617 10.563 10.375 10.375 3.5 1.u 3.5 3.5196 3.5196 12.25 12. 12. 3.75 1.u 3.75 3.7677 3.7677 14.063 13.875 13.875 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2292 4.2292 18.063 18.25 18.25 4.5 1.u 4.5 4.4722 4.4722 20.25 20.5 20.5 4.75 1.u 4.75 4.7292 4.7292 22.563 22.75 22.75 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2847 5.2847 27.563 27.25 27.25 5.5 1.u 5.5 5.5833 5.5833 30.25 29.5 29.5 5.75 1.u 5.75 5.8958 5.8958 33.063 31.75 31.75 6. 1.u 6. 6.2222 6.2222 36. 34. 34. 6.25 1.u 6.25 6.5625 6.5625 39.063 36.25 36.25 6.5 1.u 6.5 6.9167 6.9167 42.25 38.5 38.5 6.75 1.u 6.75 7.2847 7.2847 45.563 40.75 40.75 7. 1.u 7. 7.6667 7.6667 49. 43. 43. 7.25 1.u 7.25 8.0625 8.0625 52.563 45.25 45.25 7.5 1.u 7.5 8.4722 8.4722 56.25 47.5 47.5 7.75 1.u 7.75 8.8958 8.8958 60.063 49.75 49.75 8. 1.u 8. 9.3333 9.3333 64. 52. 52. 8.25 1.u 8.25 9.7847 9.7847 68.063 54.25 54.25 8.5 1.u 8.5 10.25 10.25 72.25 56.5 56.5 8.75 1.u 8.75 10.729 10.729 76.563 58.75 58.75 9. 1.u 9. 11.222 11.222 81. 61. 61. 9.25 1.u 9.25 11.729 11.729 85.563 63.25 63.25 9.5 1.u 9.5 12.25 12.25 90.25 65.5 65.5 9.75 1.u 9.75 12.785 12.785 95.063 67.75 67.75 10. 1.u 10. 13.333 13.333 100. 70. 70. tests/==out/bm_fit.2.2.ckt.out000066400000000000000000000174111316501211100162650ustar00rootroot00000000000000# FIT as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 below= 0. e3 ( 7 0 2 1 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 below= 0. e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 below= 1.56984 e1 ( 4 0 5 1 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 below= 1.56984 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -156.98 -156.98 -100. 0. 0. -9.75 1.u -9.75 -149.23 -149.23 -95.063 0. 0. -9.5 1.u -9.5 -141.68 -141.68 -90.25 0. 0. -9.25 1.u -9.25 -134.32 -134.32 -85.563 0. 0. -9. 1.u -9. -127.16 -127.16 -81. 0. 0. -8.75 1.u -8.75 -120.19 -120.19 -76.562 0. 0. -8.5 1.u -8.5 -113.42 -113.42 -72.25 0. 0. -8.25 1.u -8.25 -106.85 -106.85 -68.062 0. 0. -8. 1.u -8. -100.47 -100.47 -64. 0. 0. -7.75 1.u -7.75 -94.289 -94.289 -60.062 0. 0. -7.5 1.u -7.5 -88.304 -88.304 -56.25 0. 0. -7.25 1.u -7.25 -82.515 -82.515 -52.562 0. 0. -7. 1.u -7. -76.922 -76.922 -49. 0. 0. -6.75 1.u -6.75 -71.526 -71.526 -45.563 0. 0. -6.5 1.u -6.5 -66.326 -66.326 -42.25 0. 0. -6.25 1.u -6.25 -61.322 -61.322 -39.063 0. 0. -6. 1.u -6. -56.514 -56.514 -36. 0. 0. -5.75 1.u -5.75 -51.903 -51.903 -33.063 0. 0. -5.5 1.u -5.5 -47.488 -47.488 -30.25 0. 0. -5.25 1.u -5.25 -43.269 -43.269 -27.562 0. 0. -5. 1.u -5. -39.246 -39.246 -25. 0. 0. -4.75 1.u -4.75 -35.42 -35.42 -22.562 0. 0. -4.5 1.u -4.5 -31.789 -31.789 -20.25 0. 0. -4.25 1.u -4.25 -28.355 -28.355 -18.062 0. 0. -4. 1.u -4. -25.117 -25.117 -16. 0. 0. -3.75 1.u -3.75 -22.076 -22.076 -14.062 0. 0. -3.5 1.u -3.5 -19.231 -19.231 -12.25 0. 0. -3.25 1.u -3.25 -16.581 -16.581 -10.563 0. 0. -3. 1.u -3. -14.129 -14.129 -9. 0. 0. -2.75 1.u -2.75 -11.872 -11.872 -7.5625 0. 0. -2.5 1.u -2.5 -9.8115 -9.8115 -6.25 0. 0. -2.25 1.u -2.25 -7.9473 -7.9473 -5.0625 0. 0. -2. 1.u -2. -6.2794 -6.2794 -4. 0. 0. -1.75 1.u -1.75 -4.8076 -4.8076 -3.0625 0. 0. -1.5 1.u -1.5 -3.5321 -3.5321 -2.25 0. 0. -1.25 1.u -1.25 -2.4529 -2.4529 -1.5625 0. 0. -1. 1.u -1. -1.5698 -1.5698 -1. 0. 0. -0.75 1.u -0.75 -0.88303 -0.88304 -0.5625 0. 0. -0.5 1.u -0.5 -0.39246 -0.39246 -0.25 0. 0. -0.25 1.u -0.25 -0.098115 -0.098117 -0.0625 0. 0. 0. 1.u 0. 0. -1.5698u 0. 0. 0. 0.25 1.u 0.25 0.095889 0.095888 0.0625 0.0625 0.0625 0.5 1.u 0.5 0.35685 0.35684 0.25 0.25 0.25 0.75 1.u 0.75 0.70273 0.70273 0.5625 0.5625 0.5625 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2318 1.2318 1.5625 1.5625 1.5625 1.5 1.u 1.5 1.4873 1.4873 2.25 2.25 2.25 1.75 1.u 1.75 1.7499 1.7499 3.0625 3.0625 3.0625 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.243 2.243 5.0625 5.0625 5.0625 2.5 1.u 2.5 2.4952 2.4952 6.25 6.25 6.25 2.75 1.u 2.75 2.7499 2.7499 7.5625 7.5625 7.5625 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2483 3.2483 10.563 10.563 10.562 3.5 1.u 3.5 3.5002 3.5002 12.25 12.25 12.25 3.75 1.u 3.75 3.7521 3.7521 14.063 14.063 14.062 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2468 4.2468 18.063 18.063 18.062 4.5 1.u 4.5 4.4971 4.4971 20.25 20.25 20.25 4.75 1.u 4.75 4.7489 4.7489 22.563 22.563 22.562 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2563 5.2563 27.563 27.5 27.5 5.5 1.u 5.5 5.525 5.525 30.25 30. 30. 5.75 1.u 5.75 5.8063 5.8063 33.063 32.5 32.5 6. 1.u 6. 6.1 6.1 36. 35. 35. 6.25 1.u 6.25 6.4063 6.4063 39.063 37.5 37.5 6.5 1.u 6.5 6.725 6.725 42.25 40. 40. 6.75 1.u 6.75 7.0563 7.0563 45.563 42.5 42.5 7. 1.u 7. 7.4 7.4 49. 45. 45. 7.25 1.u 7.25 7.7563 7.7563 52.563 47.5 47.5 7.5 1.u 7.5 8.125 8.125 56.25 50. 50. 7.75 1.u 7.75 8.5063 8.5063 60.063 52.5 52.5 8. 1.u 8. 8.9 8.9 64. 55. 55. 8.25 1.u 8.25 9.3063 9.3063 68.063 57.5 57.5 8.5 1.u 8.5 9.7251 9.7251 72.25 60. 60. 8.75 1.u 8.75 10.156 10.156 76.563 62.5 62.5 9. 1.u 9. 10.6 10.6 81. 65. 65. 9.25 1.u 9.25 11.056 11.056 85.563 67.5 67.5 9.5 1.u 9.5 11.525 11.525 90.25 70. 70. 9.75 1.u 9.75 12.006 12.006 95.063 72.5 72.5 10. 1.u 10. 12.5 12.5 100. 75. 75. tests/==out/bm_fit.2.3.ckt.out000066400000000000000000000174031316501211100162670ustar00rootroot00000000000000# FIT as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 above= 10. e3 ( 7 0 2 1 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 above= 10. e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 above= 0.1 e1 ( 4 0 5 1 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 above= 0.1 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -156.98 -156.98 -100. 0. 0. -9.75 1.u -9.75 -149.23 -149.23 -95.063 0. 0. -9.5 1.u -9.5 -141.68 -141.68 -90.25 0. 0. -9.25 1.u -9.25 -134.32 -134.32 -85.563 0. 0. -9. 1.u -9. -127.16 -127.16 -81. 0. 0. -8.75 1.u -8.75 -120.19 -120.19 -76.562 0. 0. -8.5 1.u -8.5 -113.42 -113.42 -72.25 0. 0. -8.25 1.u -8.25 -106.85 -106.85 -68.062 0. 0. -8. 1.u -8. -100.47 -100.47 -64. 0. 0. -7.75 1.u -7.75 -94.289 -94.289 -60.062 0. 0. -7.5 1.u -7.5 -88.304 -88.304 -56.25 0. 0. -7.25 1.u -7.25 -82.515 -82.515 -52.562 0. 0. -7. 1.u -7. -76.922 -76.922 -49. 0. 0. -6.75 1.u -6.75 -71.526 -71.526 -45.563 0. 0. -6.5 1.u -6.5 -66.326 -66.326 -42.25 0. 0. -6.25 1.u -6.25 -61.322 -61.322 -39.063 0. 0. -6. 1.u -6. -56.514 -56.514 -36. 0. 0. -5.75 1.u -5.75 -51.903 -51.903 -33.063 0. 0. -5.5 1.u -5.5 -47.488 -47.488 -30.25 0. 0. -5.25 1.u -5.25 -43.269 -43.269 -27.562 0. 0. -5. 1.u -5. -39.246 -39.246 -25. 0. 0. -4.75 1.u -4.75 -35.42 -35.42 -22.562 0. 0. -4.5 1.u -4.5 -31.789 -31.789 -20.25 0. 0. -4.25 1.u -4.25 -28.355 -28.355 -18.062 0. 0. -4. 1.u -4. -25.117 -25.117 -16. 0. 0. -3.75 1.u -3.75 -22.076 -22.076 -14.062 0. 0. -3.5 1.u -3.5 -19.231 -19.231 -12.25 0. 0. -3.25 1.u -3.25 -16.581 -16.581 -10.563 0. 0. -3. 1.u -3. -14.129 -14.129 -9. 0. 0. -2.75 1.u -2.75 -11.872 -11.872 -7.5625 0. 0. -2.5 1.u -2.5 -9.8115 -9.8115 -6.25 0. 0. -2.25 1.u -2.25 -7.9473 -7.9473 -5.0625 0. 0. -2. 1.u -2. -6.2794 -6.2794 -4. 0. 0. -1.75 1.u -1.75 -4.8076 -4.8076 -3.0625 0. 0. -1.5 1.u -1.5 -3.5321 -3.5321 -2.25 0. 0. -1.25 1.u -1.25 -2.4529 -2.4529 -1.5625 0. 0. -1. 1.u -1. -1.5698 -1.5698 -1. 0. 0. -0.75 1.u -0.75 -0.88304 -0.88304 -0.5625 0. 0. -0.5 1.u -0.5 -0.39246 -0.39246 -0.25 0. 0. -0.25 1.u -0.25 -0.098115 -0.098117 -0.0625 0. 0. 0. 1.u 0. 0. -1.5698u 0. 0. 0. 0.25 1.u 0.25 0.095889 0.095888 0.0625 0.0625 0.0625 0.5 1.u 0.5 0.35685 0.35684 0.25 0.25 0.25 0.75 1.u 0.75 0.70273 0.70273 0.5625 0.5625 0.5625 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2318 1.2318 1.5625 1.5625 1.5625 1.5 1.u 1.5 1.4873 1.4873 2.25 2.25 2.25 1.75 1.u 1.75 1.7499 1.7499 3.0625 3.0625 3.0625 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.243 2.243 5.0625 5.0625 5.0625 2.5 1.u 2.5 2.4952 2.4952 6.25 6.25 6.25 2.75 1.u 2.75 2.7499 2.7499 7.5625 7.5625 7.5625 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2483 3.2483 10.563 10.563 10.562 3.5 1.u 3.5 3.5002 3.5002 12.25 12.25 12.25 3.75 1.u 3.75 3.7521 3.7521 14.063 14.063 14.062 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2468 4.2468 18.063 18.063 18.062 4.5 1.u 4.5 4.4971 4.4971 20.25 20.25 20.25 4.75 1.u 4.75 4.7489 4.7489 22.563 22.563 22.562 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2563 5.2562 27.563 27.5 27.5 5.5 1.u 5.5 5.525 5.525 30.25 30. 30. 5.75 1.u 5.75 5.8063 5.8062 33.063 32.5 32.5 6. 1.u 6. 6.1 6.1 36. 35. 35. 6.25 1.u 6.25 6.4063 6.4062 39.063 37.5 37.5 6.5 1.u 6.5 6.725 6.725 42.25 40. 40. 6.75 1.u 6.75 7.0563 7.0562 45.563 42.5 42.5 7. 1.u 7. 7.4 7.4 49. 45. 45. 7.25 1.u 7.25 7.7563 7.7562 52.563 47.5 47.5 7.5 1.u 7.5 8.125 8.125 56.25 50. 50. 7.75 1.u 7.75 8.5063 8.5062 60.063 52.5 52.5 8. 1.u 8. 8.9 8.9 64. 55. 55. 8.25 1.u 8.25 9.3063 9.3062 68.063 57.5 57.5 8.5 1.u 8.5 9.725 9.725 72.25 60. 60. 8.75 1.u 8.75 10.156 10.156 76.563 62.5 62.5 9. 1.u 9. 10.6 10.6 81. 65. 65. 9.25 1.u 9.25 11.056 11.056 85.563 67.5 67.5 9.5 1.u 9.5 11.525 11.525 90.25 70. 70. 9.75 1.u 9.75 12.006 12.006 95.063 72.5 72.5 10. 1.u 10. 12.5 12.5 100. 75. 75. tests/==out/bm_fit.2.4.ckt.out000066400000000000000000000174631316501211100162760ustar00rootroot00000000000000# FIT as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 below= 100. above= 10. e3 ( 7 0 2 1 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=2 below= 100. above= 10. e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 below= 100. above= 0.1 e1 ( 4 0 5 1 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=2 below= 100. above= 0.1 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -10.K -10.K -100. -1.K -1.K -9.75 1.u -9.75 -9.5062K -9.5063K -95.063 -975. -975. -9.5 1.u -9.5 -9.025K -9.025K -90.25 -950. -950. -9.25 1.u -9.25 -8.5563K -8.5563K -85.563 -925. -925. -9. 1.u -9. -8.1K -8.1K -81. -900. -900. -8.75 1.u -8.75 -7.6562K -7.6563K -76.562 -875. -875. -8.5 1.u -8.5 -7.225K -7.225K -72.25 -850. -850. -8.25 1.u -8.25 -6.8062K -6.8063K -68.062 -825. -825. -8. 1.u -8. -6.4K -6.4K -64. -800. -800. -7.75 1.u -7.75 -6.0062K -6.0063K -60.062 -775. -775. -7.5 1.u -7.5 -5.625K -5.625K -56.25 -750. -750. -7.25 1.u -7.25 -5.2563K -5.2563K -52.562 -725. -725. -7. 1.u -7. -4.9K -4.9K -49. -700. -700. -6.75 1.u -6.75 -4.5563K -4.5563K -45.563 -675. -675. -6.5 1.u -6.5 -4.225K -4.225K -42.25 -650. -650. -6.25 1.u -6.25 -3.9063K -3.9063K -39.063 -625. -625. -6. 1.u -6. -3.6K -3.6K -36. -600. -600. -5.75 1.u -5.75 -3.3062K -3.3063K -33.063 -575. -575. -5.5 1.u -5.5 -3.025K -3.025K -30.25 -550. -550. -5.25 1.u -5.25 -2.7562K -2.7563K -27.562 -525. -525. -5. 1.u -5. -2.5K -2.5K -25. -500. -500. -4.75 1.u -4.75 -2.2562K -2.2563K -22.562 -475. -475. -4.5 1.u -4.5 -2.025K -2.025K -20.25 -450. -450. -4.25 1.u -4.25 -1.8062K -1.8063K -18.062 -425. -425. -4. 1.u -4. -1.6K -1.6K -16. -400. -400. -3.75 1.u -3.75 -1.4062K -1.4063K -14.062 -375. -375. -3.5 1.u -3.5 -1.225K -1.225K -12.25 -350. -350. -3.25 1.u -3.25 -1.0562K -1.0563K -10.563 -325. -325. -3. 1.u -3. -900. -900. -9. -300. -300. -2.75 1.u -2.75 -756.25 -756.25 -7.5625 -275. -275. -2.5 1.u -2.5 -625. -625. -6.25 -250. -250. -2.25 1.u -2.25 -506.25 -506.25 -5.0625 -225. -225. -2. 1.u -2. -400. -400. -4. -200. -200. -1.75 1.u -1.75 -306.25 -306.25 -3.0625 -175. -175. -1.5 1.u -1.5 -225. -225. -2.25 -150. -150. -1.25 1.u -1.25 -156.25 -156.25 -1.5625 -125. -125. -1. 1.u -1. -100. -100. -1. -100. -100. -0.75 1.u -0.75 -56.25 -56.25 -0.5625 -75. -75. -0.5 1.u -0.5 -25. -25. -0.25 -50. -50. -0.25 1.u -0.25 -6.25 -6.2501 -0.0625 -25. -25. 0. 1.u 0. -1.f -100.u 0. 0. -100.u 0.25 1.u 0.25 0.095889 0.095888 0.0625 0.0625 0.0625 0.5 1.u 0.5 0.35685 0.35684 0.25 0.25 0.25 0.75 1.u 0.75 0.70273 0.70273 0.5625 0.5625 0.5625 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2318 1.2318 1.5625 1.5625 1.5625 1.5 1.u 1.5 1.4873 1.4873 2.25 2.25 2.25 1.75 1.u 1.75 1.7499 1.7499 3.0625 3.0625 3.0625 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.243 2.243 5.0625 5.0625 5.0625 2.5 1.u 2.5 2.4952 2.4952 6.25 6.25 6.25 2.75 1.u 2.75 2.7499 2.7499 7.5625 7.5625 7.5625 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2483 3.2483 10.563 10.563 10.562 3.5 1.u 3.5 3.5002 3.5002 12.25 12.25 12.25 3.75 1.u 3.75 3.7521 3.7521 14.063 14.063 14.062 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2468 4.2468 18.063 18.063 18.062 4.5 1.u 4.5 4.4971 4.4971 20.25 20.25 20.25 4.75 1.u 4.75 4.7489 4.7489 22.563 22.563 22.562 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2563 5.2562 27.563 27.5 27.5 5.5 1.u 5.5 5.525 5.525 30.25 30. 30. 5.75 1.u 5.75 5.8063 5.8062 33.063 32.5 32.5 6. 1.u 6. 6.1 6.1 36. 35. 35. 6.25 1.u 6.25 6.4063 6.4062 39.063 37.5 37.5 6.5 1.u 6.5 6.725 6.725 42.25 40. 40. 6.75 1.u 6.75 7.0563 7.0562 45.563 42.5 42.5 7. 1.u 7. 7.4 7.4 49. 45. 45. 7.25 1.u 7.25 7.7563 7.7562 52.563 47.5 47.5 7.5 1.u 7.5 8.125 8.125 56.25 50. 50. 7.75 1.u 7.75 8.5063 8.5062 60.063 52.5 52.5 8. 1.u 8. 8.9 8.9 64. 55. 55. 8.25 1.u 8.25 9.3063 9.3062 68.063 57.5 57.5 8.5 1.u 8.5 9.725 9.725 72.25 60. 60. 8.75 1.u 8.75 10.156 10.156 76.563 62.5 62.5 9. 1.u 9. 10.6 10.6 81. 65. 65. 9.25 1.u 9.25 11.056 11.056 85.563 67.5 67.5 9.5 1.u 9.5 11.525 11.525 90.25 70. 70. 9.75 1.u 9.75 12.006 12.006 95.063 72.5 72.5 10. 1.u 10. 12.5 12.5 100. 75. 75. tests/==out/bm_fit.3.1.ckt.out000066400000000000000000000067551316501211100162760ustar00rootroot00000000000000# FIT as cubic v1 ( 2 0 ) DC 1. AC 1. e1 ( 3 0 2 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=3 r3 ( 3 0 ) 10.K e2 ( 4 0 2 0 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=3 r4 ( 4 0 ) 10.K # v(2) v(3) v(4) 27. 1. 1. 1. # v(2) v(3) v(4) -10. -10. -10.868 -5.7895 -9.5 -9.5 -10.325 -5.5 -9. -9. -9.7814 -5.2105 -8.5 -8.5 -9.2379 -4.9211 -8. -8. -8.6945 -4.6316 -7.5 -7.5 -8.1511 -4.3421 -7. -7. -7.6077 -4.0526 -6.5 -6.5 -7.0643 -3.7632 -6. -6. -6.5209 -3.4737 -5.5 -5.5 -5.9775 -3.1842 -5. -5. -5.4341 -2.8947 -4.5 -4.5 -4.8907 -2.6053 -4. -4. -4.3473 -2.3158 -3.5 -3.5 -3.8039 -2.0263 -3. -3. -3.2605 -1.7368 -2.5 -2.5 -2.717 -1.4474 -2. -2. -2.1736 -1.1579 -1.5 -1.5 -1.6302 -0.86842 -1. -1. -1.0868 -0.57895 -0.5 -0.5 -0.54341 -0.28947 0. 0. 0. 0. 0.5 0.5 0.53256 0.34211 1. 1. 1. 1. 1.5 1.5 1.3521 2.2237 2. 2. 1.598 4. 2.5 2.5 1.7617 6.2632 3. 3. 1.8672 9. 3.5 3.5 1.9387 12.224 4. 4. 2. 16. 4.5 4.5 2.0709 20.342 5. 5. 2.1538 25. 5.5 5.5 2.2465 29.711 6. 6. 2.347 34.421 6.5 6.5 2.4532 39.132 7. 7. 2.5633 43.842 7.5 7.5 2.675 48.553 8. 8. 2.7864 53.263 8.5 8.5 2.8954 57.974 9. 9. 3. 62.684 9.5 9.5 3.0986 67.395 10. 10. 3.1911 72.105 # v(2) v(3) v(4) 1. 1. 1. 1. 1.5849 1.5849 1.4006 2.4885 2.5119 2.5119 1.7647 6.3227 3.9811 3.9811 1.9976 15.846 6.3096 6.3096 2.4122 37.338 10. 10. 3.1911 72.105 15.849 15.849 3.9831 127.21 25.119 25.119 5.0132 214.54 39.811 39.811 6.6388 352.95 63.096 63.096 9.2153 572.32 100. 100. 13.299 920. 158.49 158.49 19.771 1.471K 251.19 251.19 30.028 2.3444K 398.11 398.11 46.285 3.7285K 630.96 630.96 72.05 5.9222K 1.K 1.K 112.88 9.3989K # v(2) v(3) v(4) 16. 16. 4. 128.63 20.5 20.5 4.5016 171.03 25. 25. 5. 213.42 29.5 29.5 5.4979 255.82 34. 34. 5.9959 298.21 38.5 38.5 6.4938 340.61 43. 43. 6.9917 383. 47.5 47.5 7.4896 425.39 52. 52. 7.9876 467.79 56.5 56.5 8.4855 510.18 61. 61. 8.9834 552.58 65.5 65.5 9.4813 594.97 tests/==out/bm_fit.3.2.ckt.out000066400000000000000000000070011316501211100162600ustar00rootroot00000000000000# FIT as cubic v1 ( 2 0 ) DC 1. AC 1. e1 ( 3 0 2 0 ) fit( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) order=3 below= 0. r3 ( 3 0 ) 10.K e2 ( 4 0 2 0 ) fit( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. ) order=3 above= 0. r4 ( 4 0 ) 10.K # v(2) v(3) v(4) 27. 1. 1. 1. # v(2) v(3) v(4) -10. -10. 0. -6.0497 -9.5 -9.5 0. -5.7472 -9. -9. 0. -5.4448 -8.5 -8.5 0. -5.1423 -8. -8. 0. -4.8398 -7.5 -7.5 0. -4.5373 -7. -7. 0. -4.2348 -6.5 -6.5 0. -3.9323 -6. -6. 0. -3.6298 -5.5 -5.5 0. -3.3273 -5. -5. 0. -3.0249 -4.5 -4.5 0. -2.7224 -4. -4. 0. -2.4199 -3.5 -3.5 0. -2.1174 -3. -3. 0. -1.8149 -2.5 -2.5 0. -1.5124 -2. -2. 0. -1.2099 -1.5 -1.5 0. -0.90746 -1. -1. 0. -0.60497 -0.5 -0.5 0. -0.30249 0. 0. 0. 0. 0.5 0.5 0.34355 0.35186 1. 1. 1. 1. 1.5 1.5 1.5095 2.1944 2. 2. 1.8183 4. 2.5 2.5 1.974 6.3705 3. 3. 2.0244 9. 3.5 3.5 2.0172 11.824 4. 4. 2. 16. 4.5 4.5 2.0118 21.835 5. 5. 2.0564 25. 5.5 5.5 2.1288 25. 6. 6. 2.2242 25. 6.5 6.5 2.3375 25. 7. 7. 2.4638 25. 7.5 7.5 2.5981 25. 8. 8. 2.7356 25. 8.5 8.5 2.8712 25. 9. 9. 3. 25. 9.5 9.5 3.118 25. 10. 10. 3.2252 25. # v(2) v(3) v(4) 1. 1. 1. 1. 1.5849 1.5849 1.5748 2.4574 2.5119 2.5119 1.9763 6.4315 3.9811 3.9811 2.0003 15.8 6.3096 6.3096 2.2925 25. 10. 10. 3.2252 25. 15.849 15.849 3.9852 25. 25.119 25.119 5.014 25. 39.811 39.811 6.7419 25. 63.096 63.096 9.4804 25. 100. 100. 13.821 25. 158.49 158.49 20.699 25. 251.19 251.19 31.602 25. 398.11 398.11 48.88 25. 630.96 630.96 76.265 25. 1.K 1.K 119.67 25. # v(2) v(3) v(4) 16. 16. 4. 25. 20.5 20.5 4.4781 25. 25. 25. 5. 25. 29.5 29.5 5.5292 25. 34. 34. 6.0585 25. 38.5 38.5 6.5877 25. 43. 43. 7.1169 25. 47.5 47.5 7.6462 25. 52. 52. 8.1754 25. 56.5 56.5 8.7047 25. 61. 61. 9.2339 25. 65.5 65.5 9.7631 25. tests/==out/bm_fit.3.3.ckt.out000066400000000000000000000045561316501211100162750ustar00rootroot00000000000000# FIT, vsrc test, with BC mismatch at start #Time v(1) 0. 3. 1.p 3. 100.p 3. 200.p 3. 300.p 3. 400.p 3. 500.p 3. 600.p 3. 700.p 3. 800.p 3. 900.p 3. 1.n 3. 1.1n 3.0083 1.2n 3.0316 1.3n 3.0678 1.4n 3.1147 1.5n 3.1702 1.6n 3.2321 1.7n 3.2981 1.8n 3.3663 1.9n 3.4343 2.n 3.5 2.1n 3.5617 2.2n 3.6194 2.3n 3.6737 2.4n 3.7251 2.5n 3.774 2.6n 3.821 2.7n 3.8666 2.8n 3.9113 2.9n 3.9556 3.n 4. 3.1n 4.045 3.2n 4.0907 3.3n 4.1373 3.4n 4.1849 3.5n 4.2337 3.6n 4.2838 3.7n 4.3354 3.8n 4.3885 3.9n 4.4433 4.n 4.5 4.1n 4.5585 4.2n 4.6179 4.3n 4.6772 4.4n 4.7353 4.5n 4.7911 4.6n 4.8437 4.7n 4.892 4.8n 4.9348 4.9n 4.9711 5.n 5. 5.1n 5.0206 5.2n 5.0338 5.3n 5.0405 5.4n 5.042 5.5n 5.0392 5.6n 5.0333 5.7n 5.0253 5.8n 5.0164 5.9n 5.0076 6.n 5. 6.1n 4.9945 6.2n 4.991 6.3n 4.9891 6.4n 4.9888 6.5n 4.9895 6.6n 4.9911 6.7n 4.9932 6.8n 4.9956 6.9n 4.998 7.n 5. 7.1n 5.0015 7.2n 5.0024 7.3n 5.0029 7.4n 5.003 7.5n 5.0028 7.6n 5.0023 7.7n 5.0018 7.8n 5.0011 7.9n 5.0005 8.n 5. 8.1n 4.9996 8.2n 4.9994 8.3n 4.9994 8.4n 4.9994 8.5n 4.9994 8.6n 4.9996 8.7n 4.9997 8.8n 4.9999 8.9n 5. 9.n 5. 9.1n 5. 9.2n 5. 9.3n 5. 9.4n 5. 9.5n 5. 9.6n 5. 9.7n 5. 9.8n 5. 9.9n 5. 10.n 5. tests/==out/bm_poly.1.ckt.out000066400000000000000000000110101316501211100163120ustar00rootroot00000000000000# HSPICE style POLY(1) v1 ( 1 0 ) DC 1. AC 1. e2 ( 2 0 1 0 ) poly( 10. 0. 0. 0. ) r2 ( 2 0 ) 10.K e3 ( 3 0 1 0 ) poly( 0. 10. 0. 0. ) r3 ( 3 0 ) 10.K e4 ( 4 0 1 0 ) poly( 0. 0. 10. 0. ) r4 ( 4 0 ) 10.K e5 ( 5 0 1 0 ) poly( 0. 0. 0. 10. ) r5 ( 5 0 ) 10.K e6 ( 6 0 1 0 ) poly( 0. 10. ) r6 ( 6 0 ) 10.K e7 ( 7 0 1 0 ) 10. r7 ( 7 0 ) 10.K g8 ( 8 0 1 0 ) poly( 0. 0. 10. 0. ) r8 ( 8 0 ) 10.K # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) 27. 1. 10. 10. 10. 10. 10. 10. -100.K # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) -10. -10. 10. -100. 1.K -10.K -100. -100. -10.Meg -9. -9. 10. -90. 810. -7.29K -90. -90. -8.1Meg -8. -8. 10. -80. 640. -5.12K -80. -80. -6.4Meg -7. -7. 10. -70. 490. -3.43K -70. -70. -4.9Meg -6. -6. 10. -60. 360. -2.16K -60. -60. -3.6Meg -5. -5. 10. -50. 250. -1.25K -50. -50. -2.5Meg -4. -4. 10. -40. 160. -640. -40. -40. -1.6Meg -3. -3. 10. -30. 90. -270. -30. -30. -900.K -2. -2. 10. -20. 40. -80. -20. -20. -400.K -1. -1. 10. -10. 10. -10. -10. -10. -100.K 0. 0. 10. 0. -6.f -54.f 0. 0. 0. 1. 1. 10. 10. 10. 10. 10. 10. -100.K 2. 2. 10. 20. 40. 80. 20. 20. -400.K 3. 3. 10. 30. 90. 270. 30. 30. -900.K 4. 4. 10. 40. 160. 640. 40. 40. -1.6Meg 5. 5. 10. 50. 250. 1.25K 50. 50. -2.5Meg 6. 6. 10. 60. 360. 2.16K 60. 60. -3.6Meg 7. 7. 10. 70. 490. 3.43K 70. 70. -4.9Meg 8. 8. 10. 80. 640. 5.12K 80. 80. -6.4Meg 9. 9. 10. 90. 810. 7.29K 90. 90. -8.1Meg 10. 10. 10. 100. 1.K 10.K 100. 100. -10.Meg # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) 1. 1. 10. 10. 10. 10. 10. 10. -100.K 1.5849 1.5849 10. 15.849 25.119 39.811 15.849 15.849 -251.19K 2.5119 2.5119 10. 25.119 63.096 158.49 25.119 25.119 -630.96K 3.9811 3.9811 10. 39.811 158.49 630.96 39.811 39.811 -1.5849Meg 6.3096 6.3096 10. 63.096 398.11 2.5119K 63.096 63.096 -3.9811Meg 10. 10. 10. 100. 1.K 10.K 100. 100. -10.Meg 15.849 15.849 10. 158.49 2.5119K 39.811K 158.49 158.49 -25.119Meg 25.119 25.119 10. 251.19 6.3096K 158.49K 251.19 251.19 -63.096Meg 39.811 39.811 10. 398.11 15.849K 630.96K 398.11 398.11 -158.49Meg 63.096 63.096 10. 630.96 39.811K 2.5119Meg 630.96 630.96 -398.11Meg 100. 100. 10. 1.K 100.K 10.Meg 1.K 1.K -1.G # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) 32. 32. 10. 320. 10.24K 327.68K 320. 320. -102.4Meg 41. 41. 10. 410. 16.81K 689.21K 410. 410. -168.1Meg 50. 50. 10. 500. 25.K 1.25Meg 500. 500. -250.Meg 59. 59. 10. 590. 34.81K 2.0538Meg 590. 590. -348.1Meg 68. 68. 10. 680. 46.24K 3.1443Meg 680. 680. -462.4Meg tests/==out/bm_poly.2.ckt.out000066400000000000000000000121241316501211100163220ustar00rootroot00000000000000# HSPICE style POLY(1) v1 ( 1 0 ) DC 1. AC 1. e2 ( 2 0 1 0 ) poly( 10. 0. 0. 0. ) min=-200. max= 100. r2 ( 2 0 ) 10.K e3 ( 3 0 1 0 ) poly( 0. 10. 0. 0. ) min=-200. max= 100. r3 ( 3 0 ) 10.K e4 ( 4 0 1 0 ) poly( 0. 0. 10. 0. ) min=-200. max= 100. r4 ( 4 0 ) 10.K e5 ( 5 0 1 0 ) poly( 0. 0. 0. 10. ) min=-200. max= 100. abs=1 r5 ( 5 0 ) 10.K e6 ( 6 0 1 0 ) poly( 0. 10. ) min=-200. max= 100. r6 ( 6 0 ) 10.K e7 ( 7 0 1 0 ) 10. r7 ( 7 0 ) 10.K g8 ( 8 0 1 0 ) poly( 0. 0. 0. 10. ) min=-200. max= 100. r8 ( 8 0 ) 10.K # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) i(g8) 27. 1. 10. 10. 10. 10. 10. 10. -100.K 10. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) i(g8) -10. -10. 10. -100. 100. 100. -100. -100. 2.Meg -200. -9. -9. 10. -90. 100. 100. -90. -90. 2.Meg -200. -8. -8. 10. -80. 100. 100. -80. -80. 2.Meg -200. -7. -7. 10. -70. 100. 100. -70. -70. 2.Meg -200. -6. -6. 10. -60. 100. 100. -60. -60. 2.Meg -200. -5. -5. 10. -50. 100. 100. -50. -50. 2.Meg -200. -4. -4. 10. -40. 100. 100. -40. -40. 2.Meg -200. -3. -3. 10. -30. 90. 100. -30. -30. 2.Meg -200. -2. -2. 10. -20. 40. 80. -20. -20. 800.K -80. -1. -1. 10. -10. 10. 10. -10. -10. 100.K -10. 0. 0. 10. 0. -6.f -2.f 0. 0. 0. 0. 1. 1. 10. 10. 10. 10. 10. 10. -100.K 10. 2. 2. 10. 20. 40. 80. 20. 20. -800.K 80. 3. 3. 10. 30. 90. 100. 30. 30. -1.Meg 100. 4. 4. 10. 40. 100. 100. 40. 40. -1.Meg 100. 5. 5. 10. 50. 100. 100. 50. 50. -1.Meg 100. 6. 6. 10. 60. 100. 100. 60. 60. -1.Meg 100. 7. 7. 10. 70. 100. 100. 70. 70. -1.Meg 100. 8. 8. 10. 80. 100. 100. 80. 80. -1.Meg 100. 9. 9. 10. 90. 100. 100. 90. 90. -1.Meg 100. 10. 10. 10. 100. 100. 100. 100. 100. -1.Meg 100. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) i(g8) 1. 1. 10. 10. 10. 10. 10. 10. -100.K 10. 1.5849 1.5849 10. 15.849 25.119 39.811 15.849 15.849 -398.11K 39.811 2.5119 2.5119 10. 25.119 63.096 100. 25.119 25.119 -1.Meg 100. 3.9811 3.9811 10. 39.811 100. 100. 39.811 39.811 -1.Meg 100. 6.3096 6.3096 10. 63.096 100. 100. 63.096 63.096 -1.Meg 100. 10. 10. 10. 100. 100. 100. 100. 100. -1.Meg 100. 15.849 15.849 10. 100. 100. 100. 100. 158.49 -1.Meg 100. 25.119 25.119 10. 100. 100. 100. 100. 251.19 -1.Meg 100. 39.811 39.811 10. 100. 100. 100. 100. 398.11 -1.Meg 100. 63.096 63.096 10. 100. 100. 100. 100. 630.96 -1.Meg 100. 100. 100. 10. 100. 100. 100. 100. 1.K -1.Meg 100. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) i(g8) 32. 32. 10. 100. 100. 100. 100. 320. -1.Meg 100. 41. 41. 10. 100. 100. 100. 100. 410. -1.Meg 100. 50. 50. 10. 100. 100. 100. 100. 500. -1.Meg 100. 59. 59. 10. 100. 100. 100. 100. 590. -1.Meg 100. 68. 68. 10. 100. 100. 100. 100. 680. -1.Meg 100. tests/==out/bm_posy.1.ckt.out000066400000000000000000000014031316501211100163260ustar00rootroot00000000000000square root circuit?? # v(1) v(2) -10. -10. 0. -9. -9. 0. -8. -8. 0. -7. -7. 0. -6. -6. 0. -5. -5. 0. -4. -4. 0. -3. -3. 0. -2. -2. 0. -1. -1. 0. 0. 0. 0. 1. 1. 1. 2. 2. 1.4142 3. 3. 1.7321 4. 4. 2. 5. 5. 2.2361 6. 6. 2.4495 7. 7. 2.6458 8. 8. 2.8284 9. 9. 3. 10. 10. 3.1623 tests/==out/bm_pulse.1.ckt.out000066400000000000000000000545251316501211100165010ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k #Time v(1) v(2) v(3) 0. 0. 0. 0. 100.n 0.062791 0.039142 0.023649 200.n 0.12533 0.070472 0.054862 300.n 0.18738 0.10143 0.085954 400.n 0.24869 0.13198 0.11671 500.n 0.30902 0.16202 0.147 600.n 0.36812 0.20611 0.081008 700.n 0.42578 0.26376 0.0099487 800.n 0.48175 0.31974 0.0010681 900.n 0.53583 0.37381 133.52u 1.u 0.58779 0.42577 16.69u 1.1u 0.63742 0.47541 2.0862u 1.2u 0.68455 0.52253 260.78n 1.3u 0.72897 0.56695 32.597n 1.4u 0.77051 0.6085 3.6219n 1.5u 0.80902 0.647 0. 1.6u 0.84433 0.68231 0. 1.7u 0.87631 0.71429 0. 1.8u 0.90483 0.74281 0. 1.9u 0.92978 0.76776 0. 2.u 0.95106 0.78904 0. 2.1u 0.96858 0.80657 0. 2.2u 0.98229 0.82027 0. 2.3u 0.99211 0.8301 0. 2.4u 0.99803 0.83601 0. 2.5u 1. 0.83798 0. 2.6u 0.99803 0.83601 0. 2.7u 0.99211 0.8301 0. 2.8u 0.98229 0.82027 0. 2.9u 0.96858 0.80656 0. 3.u 0.95106 0.78904 0. 3.1u 0.92978 0.76776 0. 3.2u 0.90483 0.74281 0. 3.3u 0.87631 0.71429 0. 3.4u 0.84433 0.68231 0. 3.5u 0.80902 0.647 0. 3.6u 0.77051 0.60849 0. 3.7u 0.72897 0.56695 0. 3.8u 0.68455 0.52253 0. 3.9u 0.63742 0.47541 0. 4.u 0.58779 0.42577 0. 4.1u 0.53583 0.37381 0. 4.2u 0.48175 0.31973 0. 4.3u 0.42578 0.26376 0. 4.4u 0.36812 0.20611 0. 4.5u 0.30902 0.147 0. 4.6u 0.24869 0.086671 0. 4.7u 0.18738 0.025362 0. 4.8u 0.12533 -0.036686 0. 4.9u 0.062791 -0.099229 0. 5.u 2.f -0.16202 0. 5.1u -0.062791 -0.22481 0. 5.2u -0.12533 -0.28735 0. 5.3u -0.18738 -0.3494 0. 5.4u -0.24869 -0.41071 0. 5.5u -0.30902 -0.47104 0. 5.6u -0.36812 -0.53014 0. 5.7u -0.42578 -0.5878 0. 5.8u -0.48175 -0.64377 0. 5.9u -0.53583 -0.69785 0. 6.u -0.58779 -0.7498 0. 6.1u -0.63742 -0.79944 0. 6.2u -0.68455 -0.84657 0. 6.3u -0.72897 -0.89099 0. 6.4u -0.77051 -0.93253 0. 6.5u -0.80902 -0.97104 0. 6.6u -0.84433 -1.0063 0. 6.7u -0.87631 -1.0383 0. 6.8u -0.90483 -1.0668 0. 6.9u -0.92978 -1.0918 0. 7.u -0.95106 -1.1131 0. 7.1u -0.96858 -1.1306 0. 7.2u -0.98229 -1.1443 0. 7.3u -0.99211 -1.1541 0. 7.4u -0.99803 -1.16 0. 7.5u -1. -1.162 0. 7.6u -0.99803 -1.16 0. 7.7u -0.99211 -1.1541 0. 7.8u -0.98229 -1.1443 0. 7.9u -0.96858 -1.1306 0. 8.u -0.95106 -1.1131 0. 8.1u -0.92978 -1.0918 0. 8.2u -0.90483 -1.0668 0. 8.3u -0.87631 -1.0383 0. 8.4u -0.84433 -1.0063 0. 8.5u -0.80902 -0.97103 0. 8.6u -0.77051 -0.93253 0. 8.7u -0.72897 -0.89098 0. 8.8u -0.68455 -0.84656 0. 8.9u -0.63742 -0.79944 0. 9.u -0.58779 -0.7498 0. 9.1u -0.53583 -0.69784 0. 9.2u -0.48175 -0.64377 0. 9.3u -0.42578 -0.58779 0. 9.4u -0.36812 -0.53014 0. 9.5u -0.30902 -0.47103 0. 9.6u -0.24869 -0.41071 0. 9.7u -0.18738 -0.3494 0. 9.8u -0.12533 -0.28735 0. 9.9u -0.062791 -0.22481 0. 10.u 6.f -0.16202 0. 10.1u 0.062791 -0.099225 0. 10.2u 0.12533 -0.036682 0. 10.3u 0.18738 0.025366 0. 10.4u 0.24869 0.086675 0. 10.5u 0.30902 0.147 0. 10.6u 0.36812 0.20611 0. 10.7u 0.42578 0.26376 0. 10.8u 0.48175 0.31974 0. 10.9u 0.53583 0.37381 0. 11.u 0.58779 0.42577 0. 11.1u 0.63742 0.47541 0. 11.2u 0.68455 0.52253 0. 11.3u 0.72897 0.56695 0. 11.4u 0.77051 0.6085 0. 11.5u 0.80902 0.647 0. 11.6u 0.84433 0.68231 0. 11.7u 0.87631 0.71429 0. 11.8u 0.90483 0.74281 0. 11.9u 0.92978 0.76776 0. 12.u 0.95106 0.78904 0. 12.1u 0.96858 0.80657 0. 12.2u 0.98229 0.82027 0. 12.3u 0.99211 0.8301 0. 12.4u 0.99803 0.83601 0. 12.5u 1. 0.83798 0. 12.6u 0.99803 0.83601 0. 12.7u 0.99211 0.8301 0. 12.8u 0.98229 0.82027 0. 12.9u 0.96858 0.80657 0. 13.u 0.95106 0.78904 0. 13.1u 0.92978 0.76776 0. 13.2u 0.90483 0.74281 0. 13.3u 0.87631 0.71429 0. 13.4u 0.84433 0.68231 0. 13.5u 0.80902 0.647 0. 13.6u 0.77051 0.6085 0. 13.7u 0.72897 0.56695 0. 13.8u 0.68455 0.52253 0. 13.9u 0.63742 0.47541 0. 14.u 0.58779 0.42577 0. 14.1u 0.53583 0.37381 0. 14.2u 0.48175 0.31974 0. 14.3u 0.42578 0.26376 0. 14.4u 0.36812 0.20611 0. 14.5u 0.30902 0.147 0. 14.6u 0.24869 0.086672 0. 14.7u 0.18738 0.025364 0. 14.8u 0.12533 -0.036684 0. 14.9u 0.062791 -0.099227 0. 15.u -30.f -0.16202 0. 15.1u -0.062791 -0.22481 0. 15.2u -0.12533 -0.28735 0. 15.3u -0.18738 -0.3494 0. 15.4u -0.24869 -0.41071 0. 15.5u -0.30902 -0.47103 0. 15.6u -0.36812 -0.53014 0. 15.7u -0.42578 -0.5878 0. 15.8u -0.48175 -0.64377 0. 15.9u -0.53583 -0.69784 0. 16.u -0.58779 -0.7498 0. 16.1u -0.63742 -0.79944 0. 16.2u -0.68455 -0.84656 0. 16.3u -0.72897 -0.89099 0. 16.4u -0.77051 -0.93253 0. 16.5u -0.80902 -0.97103 0. 16.6u -0.84433 -1.0063 0. 16.7u -0.87631 -1.0383 0. 16.8u -0.90483 -1.0668 0. 16.9u -0.92978 -1.0918 0. 17.u -0.95106 -1.1131 0. 17.1u -0.96858 -1.1306 0. 17.2u -0.98229 -1.1443 0. 17.3u -0.99211 -1.1541 0. 17.4u -0.99803 -1.16 0. 17.5u -1. -1.162 0. 17.6u -0.99803 -1.16 0. 17.7u -0.99211 -1.1541 0. 17.8u -0.98229 -1.1443 0. 17.9u -0.96858 -1.1306 0. 18.u -0.95106 -1.1131 0. 18.1u -0.92978 -1.0918 0. 18.2u -0.90483 -1.0668 0. 18.3u -0.87631 -1.0383 0. 18.4u -0.84433 -1.0063 0. 18.5u -0.80902 -0.97103 0. 18.6u -0.77051 -0.93253 0. 18.7u -0.72897 -0.89098 0. 18.8u -0.68455 -0.84656 0. 18.9u -0.63742 -0.79944 0. 19.u -0.58779 -0.7498 0. 19.1u -0.53583 -0.69784 0. 19.2u -0.48175 -0.64377 0. 19.3u -0.42578 -0.58779 0. 19.4u -0.36812 -0.53014 0. 19.5u -0.30902 -0.47103 0. 19.6u -0.24869 -0.4107 0. 19.7u -0.18738 -0.34939 0. 19.8u -0.12533 -0.28735 0. 19.9u -0.062791 -0.2248 0. 20.u 2.f -0.16201 0. 20.1u 0.062791 -0.099223 0. 20.2u 0.12533 -0.03668 0. 20.3u 0.18738 0.025368 0. 20.4u 0.24869 0.086676 0. 20.5u 0.30902 0.147 0. 20.6u 0.36812 0.20611 0. 20.7u 0.42578 0.26377 0. 20.8u 0.48175 0.31974 0. 20.9u 0.53583 0.37381 0. 21.u 0.58779 0.42577 0. 21.1u 0.63742 0.47541 0. 21.2u 0.68455 0.52253 0. 21.3u 0.72897 0.56695 0. 21.4u 0.77051 0.6085 0. 21.5u 0.80902 0.647 0. 21.6u 0.84433 0.68231 0. 21.7u 0.87631 0.71429 0. 21.8u 0.90483 0.74281 0. 21.9u 0.92978 0.76776 0. 22.u 0.95106 0.78904 0. 22.1u 0.96858 0.80657 0. 22.2u 0.98229 0.82027 0. 22.3u 0.99211 0.8301 0. 22.4u 0.99803 0.83601 0. 22.5u 1. 0.83799 0. 22.6u 0.99803 0.83601 0. 22.7u 0.99211 0.8301 0. 22.8u 0.98229 0.82027 0. 22.9u 0.96858 0.80657 0. 23.u 0.95106 0.78904 0. 23.1u 0.92978 0.76776 0. 23.2u 0.90483 0.74281 0. 23.3u 0.87631 0.71429 0. 23.4u 0.84433 0.68231 0. 23.5u 0.80902 0.647 0. 23.6u 0.77051 0.6085 0. 23.7u 0.72897 0.56695 0. 23.8u 0.68455 0.52253 0. 23.9u 0.63742 0.47541 0. 24.u 0.58779 0.42577 0. 24.1u 0.53583 0.37381 0. 24.2u 0.48175 0.31974 0. 24.3u 0.42578 0.26376 0. 24.4u 0.36812 0.20611 0. 24.5u 0.30902 0.147 0. 24.6u 0.24869 0.086674 0. 24.7u 0.18738 0.025366 0. 24.8u 0.12533 -0.036683 0. 24.9u 0.062791 -0.099225 0. 25.u 29.f -0.16202 0. 25.1u -0.062791 -0.22481 0. 25.2u -0.12533 -0.28735 0. 25.3u -0.18738 -0.3494 0. 25.4u -0.24869 -0.41071 0. 25.5u -0.30902 -0.47103 0. 25.6u -0.36812 -0.53014 0. 25.7u -0.42578 -0.58779 0. 25.8u -0.48175 -0.64377 0. 25.9u -0.53583 -0.69784 0. 26.u -0.58779 -0.7498 0. 26.1u -0.63742 -0.79944 0. 26.2u -0.68455 -0.84656 0. 26.3u -0.72897 -0.89098 0. 26.4u -0.77051 -0.93253 0. 26.5u -0.80902 -0.97103 0. 26.6u -0.84433 -1.0063 0. 26.7u -0.87631 -1.0383 0. 26.8u -0.90483 -1.0668 0. 26.9u -0.92978 -1.0918 0. 27.u -0.95106 -1.1131 0. 27.1u -0.96858 -1.1306 0. 27.2u -0.98229 -1.1443 0. 27.3u -0.99211 -1.1541 0. 27.4u -0.99803 -1.16 0. 27.5u -1. -1.162 0. 27.6u -0.99803 -1.16 0. 27.7u -0.99211 -1.1541 0. 27.8u -0.98229 -1.1443 0. 27.9u -0.96858 -1.1306 0. 28.u -0.95106 -1.1131 0. 28.1u -0.92978 -1.0918 0. 28.2u -0.90483 -1.0668 0. 28.3u -0.87631 -1.0383 0. 28.4u -0.84433 -1.0063 0. 28.5u -0.80902 -0.97103 0. 28.6u -0.77051 -0.93253 0. 28.7u -0.72897 -0.89098 0. 28.8u -0.68455 -0.84656 0. 28.9u -0.63742 -0.79944 0. 29.u -0.58779 -0.7498 0. 29.1u -0.53583 -0.69784 0. 29.2u -0.48175 -0.64377 0. 29.3u -0.42578 -0.58779 0. 29.4u -0.36812 -0.53014 0. 29.5u -0.30902 -0.47103 0. 29.6u -0.24869 -0.4107 0. 29.7u -0.18738 -0.34939 0. 29.8u -0.12533 -0.28735 0. 29.9u -0.062791 -0.2248 0. 30.u -57.f -0.16201 0. 30.1u 0.062791 -0.099221 0. 30.2u 0.12533 -0.036679 0. 30.3u 0.18738 0.02537 0. 30.4u 0.24869 0.086678 0. 30.5u 0.30902 0.14701 0. 30.6u 0.36812 0.20611 0. 30.7u 0.42578 0.26377 0. 30.8u 0.48175 0.31974 0. 30.9u 0.53583 0.37381 0. 31.u 0.58779 0.42577 0. 31.1u 0.63742 0.47541 0. 31.2u 0.68455 0.52254 0. 31.3u 0.72897 0.56696 0. 31.4u 0.77051 0.6085 0. 31.5u 0.80902 0.647 0. 31.6u 0.84433 0.68232 0. 31.7u 0.87631 0.71429 0. 31.8u 0.90483 0.74281 0. 31.9u 0.92978 0.76776 0. 32.u 0.95106 0.78904 0. 32.1u 0.96858 0.80657 0. 32.2u 0.98229 0.82027 0. 32.3u 0.99211 0.8301 0. 32.4u 0.99803 0.83601 0. 32.5u 1. 0.83799 0. 32.6u 0.99803 0.83601 0. 32.7u 0.99211 0.8301 0. 32.8u 0.98229 0.82027 0. 32.9u 0.96858 0.80657 0. 33.u 0.95106 0.78904 0. 33.1u 0.92978 0.76776 0. 33.2u 0.90483 0.74281 0. 33.3u 0.87631 0.71429 0. 33.4u 0.84433 0.68231 0. 33.5u 0.80902 0.647 0. 33.6u 0.77051 0.6085 0. 33.7u 0.72897 0.56695 0. 33.8u 0.68455 0.52253 0. 33.9u 0.63742 0.47541 0. 34.u 0.58779 0.42577 0. 34.1u 0.53583 0.37381 0. 34.2u 0.48175 0.31974 0. 34.3u 0.42578 0.26377 0. 34.4u 0.36812 0.20611 0. 34.5u 0.30902 0.147 0. 34.6u 0.24869 0.086676 0. 34.7u 0.18738 0.025367 0. 34.8u 0.12533 -0.036681 0. 34.9u 0.062791 -0.099224 0. 35.u -2.f -0.16201 0. 35.1u -0.062791 -0.2248 0. 35.2u -0.12533 -0.28735 0. 35.3u -0.18738 -0.3494 0. 35.4u -0.24869 -0.4107 0. 35.5u -0.30902 -0.47103 0. 35.6u -0.36812 -0.53014 0. 35.7u -0.42578 -0.58779 0. 35.8u -0.48175 -0.64377 0. 35.9u -0.53583 -0.69784 0. 36.u -0.58779 -0.7498 0. 36.1u -0.63742 -0.79944 0. 36.2u -0.68455 -0.84656 0. 36.3u -0.72897 -0.89098 0. 36.4u -0.77051 -0.93253 0. 36.5u -0.80902 -0.97103 0. 36.6u -0.84433 -1.0063 0. 36.7u -0.87631 -1.0383 0. 36.8u -0.90483 -1.0668 0. 36.9u -0.92978 -1.0918 0. 37.u -0.95106 -1.1131 0. 37.1u -0.96858 -1.1306 0. 37.2u -0.98229 -1.1443 0. 37.3u -0.99211 -1.1541 0. 37.4u -0.99803 -1.16 0. 37.5u -1. -1.162 0. 37.6u -0.99803 -1.16 0. 37.7u -0.99211 -1.1541 0. 37.8u -0.98229 -1.1443 0. 37.9u -0.96858 -1.1306 0. 38.u -0.95106 -1.1131 0. 38.1u -0.92978 -1.0918 0. 38.2u -0.90483 -1.0668 0. 38.3u -0.87631 -1.0383 0. 38.4u -0.84433 -1.0063 0. 38.5u -0.80902 -0.97103 0. 38.6u -0.77051 -0.93252 0. 38.7u -0.72897 -0.89098 0. 38.8u -0.68455 -0.84656 0. 38.9u -0.63742 -0.79943 0. 39.u -0.58779 -0.7498 0. 39.1u -0.53583 -0.69784 0. 39.2u -0.48175 -0.64376 0. 39.3u -0.42578 -0.58779 0. 39.4u -0.36812 -0.53013 0. 39.5u -0.30902 -0.47103 0. 39.6u -0.24869 -0.4107 0. 39.7u -0.18738 -0.34939 0. 39.8u -0.12533 -0.28734 0. 39.9u -0.062791 -0.2248 0. 40.u 82.f -0.16201 0. 40.1u 0.062791 -0.09922 0. 40.2u 0.12533 -0.036677 0. 40.3u 0.18738 0.025371 0. 40.4u 0.24869 0.08668 0. 40.5u 0.30902 0.14701 0. 40.6u 0.36812 0.20611 0. 40.7u 0.42578 0.26377 0. 40.8u 0.48175 0.31974 0. 40.9u 0.53583 0.37382 0. 41.u 0.58779 0.42577 0. 41.1u 0.63742 0.47541 0. 41.2u 0.68455 0.52254 0. 41.3u 0.72897 0.56696 0. 41.4u 0.77051 0.6085 0. 41.5u 0.80902 0.64701 0. 41.6u 0.84433 0.68232 0. 41.7u 0.87631 0.7143 0. 41.8u 0.90483 0.74282 0. 41.9u 0.92978 0.76777 0. 42.u 0.95106 0.78905 0. 42.1u 0.96858 0.80657 0. 42.2u 0.98229 0.82028 0. 42.3u 0.99211 0.8301 0. 42.4u 0.99803 0.83602 0. 42.5u 1. 0.83799 0. 42.6u 0.99803 0.83602 0. 42.7u 0.99211 0.8301 0. 42.8u 0.98229 0.82028 0. 42.9u 0.96858 0.80657 0. 43.u 0.95106 0.78904 0. 43.1u 0.92978 0.76776 0. 43.2u 0.90483 0.74282 0. 43.3u 0.87631 0.71429 0. 43.4u 0.84433 0.68232 0. 43.5u 0.80902 0.647 0. 43.6u 0.77051 0.6085 0. 43.7u 0.72897 0.56696 0. 43.8u 0.68455 0.52253 0. 43.9u 0.63742 0.47541 0. 44.u 0.58779 0.42577 0. 44.1u 0.53583 0.37381 0. 44.2u 0.48175 0.31974 0. 44.3u 0.42578 0.26377 0. 44.4u 0.36812 0.20611 0. 44.5u 0.30902 0.147 0. 44.6u 0.24869 0.086677 0. 44.7u 0.18738 0.025369 0. 44.8u 0.12533 -0.036679 0. 44.9u 0.062791 -0.099222 0. 45.u -154.f -0.16201 0. 45.1u -0.062791 -0.2248 0. 45.2u -0.12533 -0.28735 0. 45.3u -0.18738 -0.34939 0. 45.4u -0.24869 -0.4107 0. 45.5u -0.30902 -0.47103 0. 45.6u -0.36812 -0.53014 0. 45.7u -0.42578 -0.58779 0. 45.8u -0.48175 -0.64377 0. 45.9u -0.53583 -0.69784 0. 46.u -0.58779 -0.7498 0. 46.1u -0.63742 -0.79944 0. 46.2u -0.68455 -0.84656 0. 46.3u -0.72897 -0.89098 0. 46.4u -0.77051 -0.93252 0. 46.5u -0.80902 -0.97103 0. 46.6u -0.84433 -1.0063 0. 46.7u -0.87631 -1.0383 0. 46.8u -0.90483 -1.0668 0. 46.9u -0.92978 -1.0918 0. 47.u -0.95106 -1.1131 0. 47.1u -0.96858 -1.1306 0. 47.2u -0.98229 -1.1443 0. 47.3u -0.99211 -1.1541 0. 47.4u -0.99803 -1.16 0. 47.5u -1. -1.162 0. 47.6u -0.99803 -1.16 0. 47.7u -0.99211 -1.1541 0. 47.8u -0.98229 -1.1443 0. 47.9u -0.96858 -1.1306 0. 48.u -0.95106 -1.1131 0. 48.1u -0.92978 -1.0918 0. 48.2u -0.90483 -1.0668 0. 48.3u -0.87631 -1.0383 0. 48.4u -0.84433 -1.0063 0. 48.5u -0.80902 -0.97103 0. 48.6u -0.77051 -0.93252 0. 48.7u -0.72897 -0.89098 0. 48.8u -0.68455 -0.84656 0. 48.9u -0.63742 -0.79943 0. 49.u -0.58779 -0.74979 0. 49.1u -0.53583 -0.69784 0. 49.2u -0.48175 -0.64376 0. 49.3u -0.42578 -0.58779 0. 49.4u -0.36812 -0.53013 0. 49.5u -0.30902 -0.47103 0. 49.6u -0.24869 -0.4107 0. 49.7u -0.18738 -0.34939 0. 49.8u -0.12533 -0.28734 0. 49.9u -0.062791 -0.2248 0. 50.u 235.f -0.16201 0. Gnucap System status iterations: op=0, dc=0, tran=2115, fourier=0, total=2644 transient timesteps: accepted=528, rejected=1, total=529 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_pulse.1a.ckt.out000066400000000000000000000545301316501211100166360ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k #Time v(1) v(2) v(3) 0. 0. 0. 0. 100.n 0.062791 0.039142 0.023649 200.n 0.12533 0.070472 0.054862 300.n 0.18738 0.10143 0.085954 400.n 0.24869 0.13198 0.11671 500.n 0.30902 0.16202 0.147 600.n 0.36812 0.20611 0.081008 700.n 0.42578 0.26376 0.0099487 800.n 0.48175 0.31974 0.0010681 900.n 0.53583 0.37381 133.52u 1.u 0.58779 0.42577 16.69u 1.1u 0.63742 0.25181 0.22361 1.2u 0.68455 0.26719 0.25535 1.3u 0.72897 0.28895 0.27802 1.4u 0.77051 0.30936 0.29915 1.5u 0.80902 0.32822 0.31879 1.6u 0.84433 0.3541 0.16411 1.7u 0.87631 0.38608 0.020345 1.8u 0.90483 0.4146 0.0021628 1.9u 0.92978 0.43955 270.35u 2.u 0.95106 0.46083 33.793u 2.1u 0.96858 0.25022 0.22815 2.2u 0.98229 0.24776 0.24432 2.3u 0.99211 0.25206 0.24985 2.4u 0.99803 0.25453 0.25329 2.5u 1. 0.25502 0.25477 2.6u 0.99803 0.2528 0.12751 2.7u 0.99211 0.24689 0.015554 2.8u 0.98229 0.23706 0.0018665 2.9u 0.96858 0.22336 233.31u 3.u 0.95106 0.20583 29.164u 3.1u 0.92978 0.093557 0.091012 3.2u 0.90483 0.076634 0.082985 3.3u 0.87631 0.061875 0.069224 3.4u 0.84433 0.045457 0.053664 3.5u 0.80902 0.027388 0.036422 3.6u 0.77051 -0.0020816 0.013694 3.7u 0.72897 -0.043626 0.0010638 3.8u 0.68455 -0.088048 127.66u 3.9u 0.63742 -0.13517 15.826u 4.u 0.58779 -0.18481 1.9618u 4.1u 0.53583 -0.12766 -0.10911 4.2u 0.48175 -0.15228 -0.13856 4.3u 0.42578 -0.18046 -0.16635 4.4u 0.36812 -0.20949 -0.19498 4.5u 0.30902 -0.23922 -0.22436 4.6u 0.24869 -0.28468 -0.11961 4.7u 0.18738 -0.34599 -0.01469 4.8u 0.12533 -0.40804 -0.0015771 4.9u 0.062791 -0.47058 -197.14u 5.u 3.f -0.53337 -24.643u 5.1u -0.062791 -0.31634 -0.27984 5.2u -0.12533 -0.33729 -0.32143 5.3u -0.18738 -0.36812 -0.35265 5.4u -0.24869 -0.39868 -0.3834 5.5u -0.30902 -0.42871 -0.41369 5.6u -0.36812 -0.4728 -0.21436 5.7u -0.42578 -0.53046 -0.026325 5.8u -0.48175 -0.58643 -0.0028264 5.9u -0.53583 -0.6405 -353.3u 6.u -0.58779 -0.69246 -44.162u 6.1u -0.63742 -0.39063 -0.3515 6.2u -0.68455 -0.40059 -0.38866 6.3u -0.72897 -0.4223 -0.41137 6.4u -0.77051 -0.44271 -0.43251 6.5u -0.80902 -0.46158 -0.45214 6.6u -0.84433 -0.48746 -0.23079 6.7u -0.87631 -0.51943 -0.028611 6.8u -0.90483 -0.54795 -0.0030415 6.9u -0.92978 -0.5729 -380.19u 7.u -0.95106 -0.59418 -47.524u 7.1u -0.96858 -0.31951 -0.29223 7.2u -0.98229 -0.31448 -0.31096 7.3u -0.99211 -0.31875 -0.31653 7.4u -0.99803 -0.32121 -0.31998 7.5u -1. -0.3217 -0.32146 7.6u -0.99803 -0.31948 -0.16085 7.7u -0.99211 -0.31357 -0.019621 7.8u -0.98229 -0.30374 -0.0021801 7.9u -0.96858 -0.29004 -261.62u 8.u -0.95106 -0.27251 -32.702u 8.1u -0.92978 -0.1282 -0.12305 8.2u -0.90483 -0.11 -0.1163 8.3u -0.87631 -0.095218 -0.10257 8.4u -0.84433 -0.078797 -0.087008 8.5u -0.80902 -0.051697 -0.039399 8.6u -0.77051 -0.013193 -0.0031064 8.7u -0.72897 0.028352 -372.76u 8.8u -0.68455 0.072773 -46.21u 8.9u -0.63742 0.1199 -5.7286u 9.u -0.58779 0.13563 0.033906 9.1u -0.53583 0.11786 0.10363 9.2u -0.48175 0.14461 0.13096 9.3u -0.42578 0.17282 0.15872 9.4u -0.36812 0.20186 0.18734 9.5u -0.30902 0.24645 0.10093 9.6u -0.24869 0.30677 0.012412 9.7u -0.18738 0.36808 0.0013309 9.8u -0.12533 0.43013 166.36u 9.9u -0.062791 0.49267 20.795u 10.u -66.649p 0.44437 0.1111 10.1u 0.062791 0.31896 0.2993 10.2u 0.12533 0.34823 0.33257 10.3u 0.18738 0.37916 0.36369 10.4u 0.24869 0.40972 0.39444 10.5u 0.30902 0.45477 0.20486 10.6u 0.36812 0.51387 0.025159 10.7u 0.42578 0.57153 0.0027012 10.8u 0.48175 0.6275 337.65u 10.9u 0.53583 0.68158 42.206u 11.u 0.58779 0.58683 0.14671 11.1u 0.63742 0.40112 0.38206 11.2u 0.68455 0.42101 0.40929 11.3u 0.72897 0.44283 0.4319 11.4u 0.77051 0.46323 0.45303 11.5u 0.80902 0.49154 0.23162 11.6u 0.84433 0.52685 0.02838 11.7u 0.87631 0.55883 0.0030535 11.8u 0.90483 0.58735 381.68u 11.9u 0.92978 0.6123 47.71u 12.u 0.95106 0.50686 0.12672 12.1u 0.96858 0.33061 0.3205 12.2u 0.98229 0.33404 0.33077 12.3u 0.99211 0.33843 0.33621 12.4u 0.99803 0.34089 0.33966 12.5u 1. 0.34163 0.17045 12.6u 0.99803 0.33966 0.017472 12.7u 0.99211 0.33375 0.0017472 12.8u 0.98229 0.32392 218.4u 12.9u 0.96858 0.31022 27.299u 13.u 0.95106 0.23415 0.058542 13.1u 0.92978 0.13437 0.13705 13.2u 0.90483 0.12002 0.12644 13.3u 0.87631 0.1053 0.11265 13.4u 0.84433 0.08888 0.097087 13.5u 0.80902 0.061776 0.04444 13.6u 0.77051 0.023272 0.0054696 13.7u 0.72897 -0.018272 586.03u 13.8u 0.68455 -0.062694 73.254u 13.9u 0.63742 -0.10982 9.1567u 14.u 0.58779 -0.12756 -0.03189 14.1u 0.53583 -0.11279 -0.098623 14.2u 0.48175 -0.13957 -0.12592 14.3u 0.42578 -0.16778 -0.15368 14.4u 0.36812 -0.19682 -0.1823 14.5u 0.30902 -0.24141 -0.098408 14.6u 0.24869 -0.30173 -0.012102 14.7u 0.18738 -0.36304 -0.0012976 14.8u 0.12533 -0.42509 -162.21u 14.9u 0.062791 -0.48763 -20.276u 15.u 66.021p -0.44034 -0.11009 15.1u -0.062791 -0.31642 -0.2968 15.2u -0.12533 -0.34571 -0.33005 15.3u -0.18738 -0.37664 -0.36117 15.4u -0.24869 -0.4072 -0.39192 15.5u -0.30902 -0.45225 -0.2036 15.6u -0.36812 -0.51135 -0.025004 15.7u -0.42578 -0.56901 -0.0026846 15.8u -0.48175 -0.62498 -335.57u 15.9u -0.53583 -0.67906 -41.946u 16.u -0.58779 -0.58481 -0.14621 16.1u -0.63742 -0.39984 -0.38082 16.2u -0.68455 -0.41975 -0.40803 16.3u -0.72897 -0.44157 -0.43064 16.4u -0.77051 -0.46197 -0.45177 16.5u -0.80902 -0.49028 -0.23099 16.6u -0.84433 -0.52559 -0.028303 16.7u -0.87631 -0.55757 -0.0030452 16.8u -0.90483 -0.58609 -380.64u 16.9u -0.92978 -0.61104 -47.581u 17.u -0.95106 -0.50586 -0.12647 17.1u -0.96858 -0.32997 -0.31988 17.2u -0.98229 -0.33341 -0.33014 17.3u -0.99211 -0.3378 -0.33558 17.4u -0.99803 -0.34026 -0.33903 17.5u -1. -0.341 -0.17013 17.6u -0.99803 -0.33903 -0.017439 17.7u -0.99211 -0.33312 -0.0017439 17.8u -0.98229 -0.32329 -217.99u 17.9u -0.96858 -0.30959 -27.249u 18.u -0.95106 -0.23365 -0.058416 18.1u -0.92978 -0.13405 -0.13674 18.2u -0.90483 -0.11971 -0.12613 18.3u -0.87631 -0.10498 -0.11233 18.4u -0.84433 -0.088565 -0.096772 18.5u -0.80902 -0.061461 -0.044282 18.6u -0.77051 -0.022957 -0.0054502 18.7u -0.72897 0.018587 -583.95u 18.8u -0.68455 0.063009 -72.994u 18.9u -0.63742 0.11013 -9.1243u 19.u -0.58779 0.12782 0.031953 19.1u -0.53583 0.11295 0.09878 19.2u -0.48175 0.13973 0.12607 19.3u -0.42578 0.16794 0.15383 19.4u -0.36812 0.19697 0.18246 19.5u -0.30902 0.24156 0.098487 19.6u -0.24869 0.30189 0.012111 19.7u -0.18738 0.3632 0.0012987 19.8u -0.12533 0.42525 162.33u 19.9u -0.062791 0.48779 20.292u 20.u -66.068p 0.44047 0.11012 20.1u 0.062791 0.3165 0.29688 20.2u 0.12533 0.34579 0.33013 20.3u 0.18738 0.37672 0.36125 20.4u 0.24869 0.40728 0.392 20.5u 0.30902 0.45232 0.20364 20.6u 0.36812 0.51143 0.025009 20.7u 0.42578 0.56909 0.0026851 20.8u 0.48175 0.62506 335.63u 20.9u 0.53583 0.67913 41.954u 21.u 0.58779 0.73109 5.2443u 21.1u 0.63742 0.4074 0.37334 21.2u 0.68455 0.41989 0.40797 21.3u 0.72897 0.44161 0.43067 21.4u 0.77051 0.46201 0.45181 21.5u 0.80902 0.48088 0.47145 21.6u 0.84433 0.50676 0.24044 21.7u 0.87631 0.53874 0.029808 21.8u 0.90483 0.56726 0.0031687 21.9u 0.92978 0.59221 396.09u 22.u 0.95106 0.61349 49.511u 22.1u 0.96858 0.3293 0.30175 22.2u 0.98229 0.32413 0.32062 22.3u 0.99211 0.3284 0.32618 22.4u 0.99803 0.33086 0.32963 22.5u 1. 0.33135 0.33111 22.6u 0.99803 0.32913 0.16568 22.7u 0.99211 0.32322 0.02021 22.8u 0.98229 0.31339 0.0022455 22.9u 0.96858 0.29969 269.46u 23.u 0.95106 0.28216 33.683u 23.1u 0.92978 0.13322 0.12769 23.2u 0.90483 0.11483 0.12112 23.3u 0.87631 0.10004 0.10739 23.4u 0.84433 0.083625 0.091832 23.5u 0.80902 0.065556 0.074591 23.6u 0.77051 0.036087 0.032778 23.7u 0.72897 -0.0054577 0.0025464 23.8u 0.68455 -0.049879 305.57u 23.9u 0.63742 -0.097002 37.881u 24.u 0.58779 -0.14664 4.6959u 24.1u 0.53583 -0.10856 -0.090039 24.2u 0.48175 -0.13319 -0.11948 24.3u 0.42578 -0.16137 -0.14727 24.4u 0.36812 -0.19041 -0.17589 24.5u 0.30902 -0.22014 -0.20527 24.6u 0.24869 -0.2656 -0.11007 24.7u 0.18738 -0.32691 -0.013518 24.8u 0.12533 -0.38895 -0.0014513 24.9u 0.062791 -0.4515 -181.41u 25.u 29.f -0.51429 -22.677u 25.1u -0.062791 -0.30642 -0.27067 25.2u -0.12533 -0.32774 -0.31189 25.3u -0.18738 -0.35858 -0.3431 25.4u -0.24869 -0.38913 -0.37386 25.5u -0.30902 -0.41917 -0.40415 25.6u -0.36812 -0.46326 -0.20958 25.7u -0.42578 -0.52091 -0.025739 25.8u -0.48175 -0.57689 -0.0027635 25.9u -0.53583 -0.63096 -345.43u 26.u -0.58779 -0.68292 -43.179u 26.1u -0.63742 -0.38567 -0.34692 26.2u -0.68455 -0.39582 -0.38389 26.3u -0.72897 -0.41753 -0.4066 26.4u -0.77051 -0.43794 -0.42774 26.5u -0.80902 -0.45681 -0.44737 26.6u -0.84433 -0.48268 -0.2284 26.7u -0.87631 -0.51466 -0.028315 26.8u -0.90483 -0.54318 -0.0030101 26.9u -0.92978 -0.56813 -376.26u 27.u -0.95106 -0.58941 -47.032u 27.1u -0.96858 -0.31703 -0.28994 27.2u -0.98229 -0.31209 -0.30858 27.3u -0.99211 -0.31636 -0.31414 27.4u -0.99803 -0.31882 -0.31759 27.5u -1. -0.31932 -0.31907 27.6u -0.99803 -0.3171 -0.15966 27.7u -0.99211 -0.31118 -0.019476 27.8u -0.98229 -0.30136 -0.002164 27.9u -0.96858 -0.28765 -259.68u 28.u -0.95106 -0.27013 -32.459u 28.1u -0.92978 -0.12696 -0.12191 28.2u -0.90483 -0.10881 -0.11511 28.3u -0.87631 -0.094025 -0.10137 28.4u -0.84433 -0.077604 -0.085814 28.5u -0.80902 -0.059537 -0.068571 28.6u -0.77051 -0.030067 -0.029769 28.7u -0.72897 0.011478 -0.0036904 28.8u -0.68455 0.055899 -392.31u 28.9u -0.63742 0.10302 -49.039u 29.u -0.58779 0.15266 -6.1299u 29.1u -0.53583 0.11168 0.092934 29.2u -0.48175 0.1362 0.12249 29.3u -0.42578 0.16438 0.15028 29.4u -0.36812 0.19341 0.1789 29.5u -0.30902 0.22315 0.20828 29.6u -0.24869 0.26861 0.11157 29.7u -0.18738 0.32992 0.013671 29.8u -0.12533 0.39196 0.0014709 29.9u -0.062791 0.45451 183.86u 30.u -58.f 0.5173 22.983u 30.1u 0.062791 0.30799 0.27212 30.2u 0.12533 0.32925 0.31339 30.3u 0.18738 0.36008 0.34461 30.4u 0.24869 0.39064 0.37536 30.5u 0.30902 0.42067 0.40566 30.6u 0.36812 0.46476 0.21034 30.7u 0.42578 0.52242 0.025832 30.8u 0.48175 0.57839 0.0027734 30.9u 0.53583 0.63246 346.67u 31.u 0.58779 0.68442 43.334u 31.1u 0.63742 0.38645 0.34764 31.2u 0.68455 0.39657 0.38464 31.3u 0.72897 0.41828 0.40735 31.4u 0.77051 0.43869 0.42849 31.5u 0.80902 0.45756 0.44812 31.6u 0.84433 0.48344 0.22878 31.7u 0.87631 0.51541 0.028362 31.8u 0.90483 0.54393 0.003015 31.9u 0.92978 0.56888 376.88u 32.u 0.95106 0.59016 47.11u 32.1u 0.96858 0.31742 0.2903 32.2u 0.98229 0.31247 0.30896 32.3u 0.99211 0.31674 0.31452 32.4u 0.99803 0.3192 0.31797 32.5u 1. 0.31969 0.31945 32.6u 0.99803 0.31747 0.15985 32.7u 0.99211 0.31156 0.019499 32.8u 0.98229 0.30173 0.0021665 32.9u 0.96858 0.28803 259.98u 33.u 0.95106 0.2705 32.498u 33.1u 0.92978 0.12716 0.12209 33.2u 0.90483 0.109 0.1153 33.3u 0.87631 0.094213 0.10156 33.4u 0.84433 0.077792 0.086003 33.5u 0.80902 0.059725 0.068759 33.6u 0.77051 0.030255 0.029863 33.7u 0.72897 -0.011289 0.0037021 33.8u 0.68455 -0.055711 393.55u 33.9u 0.63742 -0.10283 49.194u 34.u 0.58779 -0.15247 6.1493u 34.1u 0.53583 -0.11158 -0.092844 34.2u 0.48175 -0.13611 -0.12239 34.3u 0.42578 -0.16429 -0.15018 34.4u 0.36812 -0.19332 -0.17881 34.5u 0.30902 -0.23792 -0.09666 34.6u 0.24869 -0.29824 -0.011741 34.7u 0.18738 -0.35955 -0.0012722 34.8u 0.12533 -0.4216 -159.03u 34.9u 0.062791 -0.48414 -19.878u 35.u 65.629p -0.43755 -0.10939 35.1u -0.062791 -0.31466 -0.29507 35.2u -0.12533 -0.34396 -0.32831 35.3u -0.18738 -0.3749 -0.35942 35.4u -0.24869 -0.40545 -0.39017 35.5u -0.30902 -0.4505 -0.20273 35.6u -0.36812 -0.50961 -0.024897 35.7u -0.42578 -0.56726 -0.0026731 35.8u -0.48175 -0.62324 -334.13u 35.9u -0.53583 -0.67731 -41.766u 36.u -0.58779 -0.58342 -0.14586 36.1u -0.63742 -0.39896 -0.37995 36.2u -0.68455 -0.41888 -0.40716 36.3u -0.72897 -0.44069 -0.42976 36.4u -0.77051 -0.4611 -0.4509 36.5u -0.80902 -0.4894 -0.23055 36.6u -0.84433 -0.52472 -0.02825 36.7u -0.87631 -0.55669 -0.0030394 36.8u -0.90483 -0.58521 -379.93u 36.9u -0.92978 -0.61016 -47.491u 37.u -0.95106 -0.50516 -0.1263 37.1u -0.96858 -0.32953 -0.31944 37.2u -0.98229 -0.33298 -0.32971 37.3u -0.99211 -0.33736 -0.33515 37.4u -0.99803 -0.33983 -0.33859 37.5u -1. -0.34057 -0.16991 37.6u -0.99803 -0.33859 -0.017417 37.7u -0.99211 -0.33268 -0.0017417 37.8u -0.98229 -0.32286 -222.16u 37.9u -0.96858 -0.30915 -27.769u 38.u -0.95106 -0.21872 -0.07291 38.1u -0.92978 -0.13357 -0.13678 38.2u -0.90483 -0.11948 -0.12592 38.3u -0.87631 -0.10476 -0.11211 38.4u -0.84433 -0.088347 -0.096554 38.5u -0.80902 -0.061243 -0.044173 38.6u -0.77051 -0.022739 -0.0054368 38.7u -0.72897 0.018806 -582.51u 38.8u -0.68455 0.063227 -72.814u 38.9u -0.63742 0.11035 -9.1018u 39.u -0.58779 0.12799 0.031997 39.1u -0.53583 0.11306 0.098888 39.2u -0.48175 0.13984 0.12618 39.3u -0.42578 0.16805 0.15394 39.4u -0.36812 0.19708 0.18257 39.5u -0.30902 0.24167 0.098541 39.6u -0.24869 0.302 0.012118 39.7u -0.18738 0.36331 0.0012994 39.8u -0.12533 0.42536 162.42u 39.9u -0.062791 0.4879 20.303u 40.u -66.002p 0.44055 0.11014 40.1u 0.062791 0.31655 0.29693 40.2u 0.12533 0.34584 0.33018 40.3u 0.18738 0.37677 0.3613 40.4u 0.24869 0.40733 0.39205 40.5u 0.30902 0.45238 0.20367 40.6u 0.36812 0.51149 0.025012 40.7u 0.42578 0.56914 0.0026854 40.8u 0.48175 0.62512 335.68u 40.9u 0.53583 0.67919 41.96u 41.u 0.58779 0.58492 0.14624 41.1u 0.63742 0.39991 0.38088 41.2u 0.68455 0.41982 0.4081 41.3u 0.72897 0.44163 0.4307 41.4u 0.77051 0.46204 0.45184 41.5u 0.80902 0.49034 0.23102 41.6u 0.84433 0.52566 0.028307 41.7u 0.87631 0.55763 0.0030456 41.8u 0.90483 0.58615 380.7u 41.9u 0.92978 0.6111 47.587u 42.u 0.95106 0.50591 0.12648 42.1u 0.96858 0.33001 0.31991 42.2u 0.98229 0.33345 0.33018 42.3u 0.99211 0.33783 0.33562 42.4u 0.99803 0.3403 0.33906 42.5u 1. 0.34104 0.17015 42.6u 0.99803 0.33906 0.017441 42.7u 0.99211 0.33315 0.0017441 42.8u 0.98229 0.32332 222.46u 42.9u 0.96858 0.30962 27.808u 43.u 0.95106 0.21907 0.073027 43.1u 0.92978 0.13381 0.13701 43.2u 0.90483 0.11972 0.12615 43.3u 0.87631 0.105 0.11235 43.4u 0.84433 0.088581 0.096789 43.5u 0.80902 0.061478 0.044291 43.6u 0.77051 0.022974 0.0054513 43.7u 0.72897 -0.018571 584.06u 43.8u 0.68455 -0.062992 73.008u 43.9u 0.63742 -0.11012 9.126u 44.u 0.58779 -0.1278 -0.03195 44.1u 0.53583 -0.11294 -0.098771 44.2u 0.48175 -0.13972 -0.12607 44.3u 0.42578 -0.16793 -0.15383 44.4u 0.36812 -0.19696 -0.18245 44.5u 0.30902 -0.24156 -0.098482 44.6u 0.24869 -0.30188 -0.012111 44.7u 0.18738 -0.36319 -0.0012986 44.8u 0.12533 -0.42524 -162.33u 44.9u 0.062791 -0.48778 -20.291u 45.u 65.913p -0.44046 -0.11012 45.1u -0.062791 -0.31649 -0.29687 45.2u -0.12533 -0.34578 -0.33012 45.3u -0.18738 -0.37672 -0.36124 45.4u -0.24869 -0.40727 -0.39199 45.5u -0.30902 -0.45232 -0.20364 45.6u -0.36812 -0.51143 -0.025009 45.7u -0.42578 -0.56908 -0.002685 45.8u -0.48175 -0.62506 -335.63u 45.9u -0.53583 -0.67913 -41.954u 46.u -0.58779 -0.58487 -0.14622 46.1u -0.63742 -0.39988 -0.38085 46.2u -0.68455 -0.41979 -0.40807 46.3u -0.72897 -0.4416 -0.43067 46.4u -0.77051 -0.46201 -0.45181 46.5u -0.80902 -0.49031 -0.23101 46.6u -0.84433 -0.52563 -0.028305 46.7u -0.87631 -0.5576 -0.0030454 46.8u -0.90483 -0.58612 -380.68u 46.9u -0.92978 -0.61107 -47.584u 47.u -0.95106 -0.50588 -0.12648 47.1u -0.96858 -0.32999 -0.3199 47.2u -0.98229 -0.33343 -0.33016 47.3u -0.99211 -0.33782 -0.3356 47.4u -0.99803 -0.34028 -0.33905 47.5u -1. -0.34102 -0.17014 47.6u -0.99803 -0.33905 -0.01744 47.7u -0.99211 -0.33314 -0.001744 47.8u -0.98229 -0.32331 -222.45u 47.9u -0.96858 -0.30961 -27.807u 48.u -0.95106 -0.21906 -0.073023 48.1u -0.92978 -0.1338 -0.137 48.2u -0.90483 -0.11971 -0.12615 48.3u -0.87631 -0.10499 -0.11234 48.4u -0.84433 -0.088574 -0.096781 48.5u -0.80902 -0.06147 -0.044287 48.6u -0.77051 -0.022966 -0.0054508 48.7u -0.72897 0.018578 -584.01u 48.8u -0.68455 0.063 -73.002u 48.9u -0.63742 0.11012 -9.1252u 49.u -0.58779 0.12781 0.031951 49.1u -0.53583 0.11294 0.098775 49.2u -0.48175 0.13972 0.12607 49.3u -0.42578 0.16794 0.15383 49.4u -0.36812 0.19697 0.18245 49.5u -0.30902 0.24156 0.098484 49.6u -0.24869 0.30189 0.012111 49.7u -0.18738 0.3632 0.0012986 49.8u -0.12533 0.42524 162.33u 49.9u -0.062791 0.48779 20.291u 50.u -65.836p 0.44046 0.11012 Gnucap System status iterations: op=0, dc=0, tran=6727, fourier=0, total=8409 transient timesteps: accepted=1597, rejected=85, total=1682 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_pulse.2.ckt.out000066400000000000000000000545251316501211100165020ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k #Time v(1) v(2) v(3) 0. 0. 0. 0. 100.n 0.062791 0.039142 0.023649 200.n 0.12533 0.070472 0.054862 300.n 0.18738 0.10143 0.085954 400.n 0.24869 0.13198 0.11671 500.n 0.30902 0.16202 0.147 600.n 0.36812 0.20611 0.081008 700.n 0.42578 0.26376 0.0099487 800.n 0.48175 0.31974 0.0010681 900.n 0.53583 0.37381 133.52u 1.u 0.58779 0.42577 16.69u 1.1u 0.63742 0.47541 2.0862u 1.2u 0.68455 0.52253 260.78n 1.3u 0.72897 0.56695 32.597n 1.4u 0.77051 0.6085 3.6219n 1.5u 0.80902 0.647 0. 1.6u 0.84433 0.68231 0. 1.7u 0.87631 0.71429 0. 1.8u 0.90483 0.74281 0. 1.9u 0.92978 0.76776 0. 2.u 0.95106 0.78904 0. 2.1u 0.96858 0.80657 0. 2.2u 0.98229 0.82027 0. 2.3u 0.99211 0.8301 0. 2.4u 0.99803 0.83601 0. 2.5u 1. 0.83798 0. 2.6u 0.99803 0.83601 0. 2.7u 0.99211 0.8301 0. 2.8u 0.98229 0.82027 0. 2.9u 0.96858 0.80656 0. 3.u 0.95106 0.78904 0. 3.1u 0.92978 0.76776 0. 3.2u 0.90483 0.74281 0. 3.3u 0.87631 0.71429 0. 3.4u 0.84433 0.68231 0. 3.5u 0.80902 0.647 0. 3.6u 0.77051 0.60849 0. 3.7u 0.72897 0.56695 0. 3.8u 0.68455 0.52253 0. 3.9u 0.63742 0.47541 0. 4.u 0.58779 0.42577 0. 4.1u 0.53583 0.37381 0. 4.2u 0.48175 0.31973 0. 4.3u 0.42578 0.26376 0. 4.4u 0.36812 0.20611 0. 4.5u 0.30902 0.147 0. 4.6u 0.24869 0.086671 0. 4.7u 0.18738 0.025362 0. 4.8u 0.12533 -0.036686 0. 4.9u 0.062791 -0.099229 0. 5.u 2.f -0.16202 0. 5.1u -0.062791 -0.22481 0. 5.2u -0.12533 -0.28735 0. 5.3u -0.18738 -0.3494 0. 5.4u -0.24869 -0.41071 0. 5.5u -0.30902 -0.47104 0. 5.6u -0.36812 -0.53014 0. 5.7u -0.42578 -0.5878 0. 5.8u -0.48175 -0.64377 0. 5.9u -0.53583 -0.69785 0. 6.u -0.58779 -0.7498 0. 6.1u -0.63742 -0.79944 0. 6.2u -0.68455 -0.84657 0. 6.3u -0.72897 -0.89099 0. 6.4u -0.77051 -0.93253 0. 6.5u -0.80902 -0.97104 0. 6.6u -0.84433 -1.0063 0. 6.7u -0.87631 -1.0383 0. 6.8u -0.90483 -1.0668 0. 6.9u -0.92978 -1.0918 0. 7.u -0.95106 -1.1131 0. 7.1u -0.96858 -1.1306 0. 7.2u -0.98229 -1.1443 0. 7.3u -0.99211 -1.1541 0. 7.4u -0.99803 -1.16 0. 7.5u -1. -1.162 0. 7.6u -0.99803 -1.16 0. 7.7u -0.99211 -1.1541 0. 7.8u -0.98229 -1.1443 0. 7.9u -0.96858 -1.1306 0. 8.u -0.95106 -1.1131 0. 8.1u -0.92978 -1.0918 0. 8.2u -0.90483 -1.0668 0. 8.3u -0.87631 -1.0383 0. 8.4u -0.84433 -1.0063 0. 8.5u -0.80902 -0.97103 0. 8.6u -0.77051 -0.93253 0. 8.7u -0.72897 -0.89098 0. 8.8u -0.68455 -0.84656 0. 8.9u -0.63742 -0.79944 0. 9.u -0.58779 -0.7498 0. 9.1u -0.53583 -0.69784 0. 9.2u -0.48175 -0.64377 0. 9.3u -0.42578 -0.58779 0. 9.4u -0.36812 -0.53014 0. 9.5u -0.30902 -0.47103 0. 9.6u -0.24869 -0.41071 0. 9.7u -0.18738 -0.3494 0. 9.8u -0.12533 -0.28735 0. 9.9u -0.062791 -0.22481 0. 10.u 6.f -0.16202 0. 10.1u 0.062791 -0.099225 0. 10.2u 0.12533 -0.036682 0. 10.3u 0.18738 0.025366 0. 10.4u 0.24869 0.086675 0. 10.5u 0.30902 0.147 0. 10.6u 0.36812 0.20611 0. 10.7u 0.42578 0.26376 0. 10.8u 0.48175 0.31974 0. 10.9u 0.53583 0.37381 0. 11.u 0.58779 0.42577 0. 11.1u 0.63742 0.47541 0. 11.2u 0.68455 0.52253 0. 11.3u 0.72897 0.56695 0. 11.4u 0.77051 0.6085 0. 11.5u 0.80902 0.647 0. 11.6u 0.84433 0.68231 0. 11.7u 0.87631 0.71429 0. 11.8u 0.90483 0.74281 0. 11.9u 0.92978 0.76776 0. 12.u 0.95106 0.78904 0. 12.1u 0.96858 0.80657 0. 12.2u 0.98229 0.82027 0. 12.3u 0.99211 0.8301 0. 12.4u 0.99803 0.83601 0. 12.5u 1. 0.83798 0. 12.6u 0.99803 0.83601 0. 12.7u 0.99211 0.8301 0. 12.8u 0.98229 0.82027 0. 12.9u 0.96858 0.80657 0. 13.u 0.95106 0.78904 0. 13.1u 0.92978 0.76776 0. 13.2u 0.90483 0.74281 0. 13.3u 0.87631 0.71429 0. 13.4u 0.84433 0.68231 0. 13.5u 0.80902 0.647 0. 13.6u 0.77051 0.6085 0. 13.7u 0.72897 0.56695 0. 13.8u 0.68455 0.52253 0. 13.9u 0.63742 0.47541 0. 14.u 0.58779 0.42577 0. 14.1u 0.53583 0.37381 0. 14.2u 0.48175 0.31974 0. 14.3u 0.42578 0.26376 0. 14.4u 0.36812 0.20611 0. 14.5u 0.30902 0.147 0. 14.6u 0.24869 0.086672 0. 14.7u 0.18738 0.025364 0. 14.8u 0.12533 -0.036684 0. 14.9u 0.062791 -0.099227 0. 15.u -30.f -0.16202 0. 15.1u -0.062791 -0.22481 0. 15.2u -0.12533 -0.28735 0. 15.3u -0.18738 -0.3494 0. 15.4u -0.24869 -0.41071 0. 15.5u -0.30902 -0.47103 0. 15.6u -0.36812 -0.53014 0. 15.7u -0.42578 -0.5878 0. 15.8u -0.48175 -0.64377 0. 15.9u -0.53583 -0.69784 0. 16.u -0.58779 -0.7498 0. 16.1u -0.63742 -0.79944 0. 16.2u -0.68455 -0.84656 0. 16.3u -0.72897 -0.89099 0. 16.4u -0.77051 -0.93253 0. 16.5u -0.80902 -0.97103 0. 16.6u -0.84433 -1.0063 0. 16.7u -0.87631 -1.0383 0. 16.8u -0.90483 -1.0668 0. 16.9u -0.92978 -1.0918 0. 17.u -0.95106 -1.1131 0. 17.1u -0.96858 -1.1306 0. 17.2u -0.98229 -1.1443 0. 17.3u -0.99211 -1.1541 0. 17.4u -0.99803 -1.16 0. 17.5u -1. -1.162 0. 17.6u -0.99803 -1.16 0. 17.7u -0.99211 -1.1541 0. 17.8u -0.98229 -1.1443 0. 17.9u -0.96858 -1.1306 0. 18.u -0.95106 -1.1131 0. 18.1u -0.92978 -1.0918 0. 18.2u -0.90483 -1.0668 0. 18.3u -0.87631 -1.0383 0. 18.4u -0.84433 -1.0063 0. 18.5u -0.80902 -0.97103 0. 18.6u -0.77051 -0.93253 0. 18.7u -0.72897 -0.89098 0. 18.8u -0.68455 -0.84656 0. 18.9u -0.63742 -0.79944 0. 19.u -0.58779 -0.7498 0. 19.1u -0.53583 -0.69784 0. 19.2u -0.48175 -0.64377 0. 19.3u -0.42578 -0.58779 0. 19.4u -0.36812 -0.53014 0. 19.5u -0.30902 -0.47103 0. 19.6u -0.24869 -0.4107 0. 19.7u -0.18738 -0.34939 0. 19.8u -0.12533 -0.28735 0. 19.9u -0.062791 -0.2248 0. 20.u 2.f -0.16201 0. 20.1u 0.062791 -0.099223 0. 20.2u 0.12533 -0.03668 0. 20.3u 0.18738 0.025368 0. 20.4u 0.24869 0.086676 0. 20.5u 0.30902 0.147 0. 20.6u 0.36812 0.20611 0. 20.7u 0.42578 0.26377 0. 20.8u 0.48175 0.31974 0. 20.9u 0.53583 0.37381 0. 21.u 0.58779 0.42577 0. 21.1u 0.63742 0.47541 0. 21.2u 0.68455 0.52253 0. 21.3u 0.72897 0.56695 0. 21.4u 0.77051 0.6085 0. 21.5u 0.80902 0.647 0. 21.6u 0.84433 0.68231 0. 21.7u 0.87631 0.71429 0. 21.8u 0.90483 0.74281 0. 21.9u 0.92978 0.76776 0. 22.u 0.95106 0.78904 0. 22.1u 0.96858 0.80657 0. 22.2u 0.98229 0.82027 0. 22.3u 0.99211 0.8301 0. 22.4u 0.99803 0.83601 0. 22.5u 1. 0.83799 0. 22.6u 0.99803 0.83601 0. 22.7u 0.99211 0.8301 0. 22.8u 0.98229 0.82027 0. 22.9u 0.96858 0.80657 0. 23.u 0.95106 0.78904 0. 23.1u 0.92978 0.76776 0. 23.2u 0.90483 0.74281 0. 23.3u 0.87631 0.71429 0. 23.4u 0.84433 0.68231 0. 23.5u 0.80902 0.647 0. 23.6u 0.77051 0.6085 0. 23.7u 0.72897 0.56695 0. 23.8u 0.68455 0.52253 0. 23.9u 0.63742 0.47541 0. 24.u 0.58779 0.42577 0. 24.1u 0.53583 0.37381 0. 24.2u 0.48175 0.31974 0. 24.3u 0.42578 0.26376 0. 24.4u 0.36812 0.20611 0. 24.5u 0.30902 0.147 0. 24.6u 0.24869 0.086674 0. 24.7u 0.18738 0.025366 0. 24.8u 0.12533 -0.036683 0. 24.9u 0.062791 -0.099225 0. 25.u 29.f -0.16202 0. 25.1u -0.062791 -0.22481 0. 25.2u -0.12533 -0.28735 0. 25.3u -0.18738 -0.3494 0. 25.4u -0.24869 -0.41071 0. 25.5u -0.30902 -0.47103 0. 25.6u -0.36812 -0.53014 0. 25.7u -0.42578 -0.58779 0. 25.8u -0.48175 -0.64377 0. 25.9u -0.53583 -0.69784 0. 26.u -0.58779 -0.7498 0. 26.1u -0.63742 -0.79944 0. 26.2u -0.68455 -0.84656 0. 26.3u -0.72897 -0.89098 0. 26.4u -0.77051 -0.93253 0. 26.5u -0.80902 -0.97103 0. 26.6u -0.84433 -1.0063 0. 26.7u -0.87631 -1.0383 0. 26.8u -0.90483 -1.0668 0. 26.9u -0.92978 -1.0918 0. 27.u -0.95106 -1.1131 0. 27.1u -0.96858 -1.1306 0. 27.2u -0.98229 -1.1443 0. 27.3u -0.99211 -1.1541 0. 27.4u -0.99803 -1.16 0. 27.5u -1. -1.162 0. 27.6u -0.99803 -1.16 0. 27.7u -0.99211 -1.1541 0. 27.8u -0.98229 -1.1443 0. 27.9u -0.96858 -1.1306 0. 28.u -0.95106 -1.1131 0. 28.1u -0.92978 -1.0918 0. 28.2u -0.90483 -1.0668 0. 28.3u -0.87631 -1.0383 0. 28.4u -0.84433 -1.0063 0. 28.5u -0.80902 -0.97103 0. 28.6u -0.77051 -0.93253 0. 28.7u -0.72897 -0.89098 0. 28.8u -0.68455 -0.84656 0. 28.9u -0.63742 -0.79944 0. 29.u -0.58779 -0.7498 0. 29.1u -0.53583 -0.69784 0. 29.2u -0.48175 -0.64377 0. 29.3u -0.42578 -0.58779 0. 29.4u -0.36812 -0.53014 0. 29.5u -0.30902 -0.47103 0. 29.6u -0.24869 -0.4107 0. 29.7u -0.18738 -0.34939 0. 29.8u -0.12533 -0.28735 0. 29.9u -0.062791 -0.2248 0. 30.u -57.f -0.16201 0. 30.1u 0.062791 -0.099221 0. 30.2u 0.12533 -0.036679 0. 30.3u 0.18738 0.02537 0. 30.4u 0.24869 0.086678 0. 30.5u 0.30902 0.14701 0. 30.6u 0.36812 0.20611 0. 30.7u 0.42578 0.26377 0. 30.8u 0.48175 0.31974 0. 30.9u 0.53583 0.37381 0. 31.u 0.58779 0.42577 0. 31.1u 0.63742 0.47541 0. 31.2u 0.68455 0.52254 0. 31.3u 0.72897 0.56696 0. 31.4u 0.77051 0.6085 0. 31.5u 0.80902 0.647 0. 31.6u 0.84433 0.68232 0. 31.7u 0.87631 0.71429 0. 31.8u 0.90483 0.74281 0. 31.9u 0.92978 0.76776 0. 32.u 0.95106 0.78904 0. 32.1u 0.96858 0.80657 0. 32.2u 0.98229 0.82027 0. 32.3u 0.99211 0.8301 0. 32.4u 0.99803 0.83601 0. 32.5u 1. 0.83799 0. 32.6u 0.99803 0.83601 0. 32.7u 0.99211 0.8301 0. 32.8u 0.98229 0.82027 0. 32.9u 0.96858 0.80657 0. 33.u 0.95106 0.78904 0. 33.1u 0.92978 0.76776 0. 33.2u 0.90483 0.74281 0. 33.3u 0.87631 0.71429 0. 33.4u 0.84433 0.68231 0. 33.5u 0.80902 0.647 0. 33.6u 0.77051 0.6085 0. 33.7u 0.72897 0.56695 0. 33.8u 0.68455 0.52253 0. 33.9u 0.63742 0.47541 0. 34.u 0.58779 0.42577 0. 34.1u 0.53583 0.37381 0. 34.2u 0.48175 0.31974 0. 34.3u 0.42578 0.26377 0. 34.4u 0.36812 0.20611 0. 34.5u 0.30902 0.147 0. 34.6u 0.24869 0.086676 0. 34.7u 0.18738 0.025367 0. 34.8u 0.12533 -0.036681 0. 34.9u 0.062791 -0.099224 0. 35.u -2.f -0.16201 0. 35.1u -0.062791 -0.2248 0. 35.2u -0.12533 -0.28735 0. 35.3u -0.18738 -0.3494 0. 35.4u -0.24869 -0.4107 0. 35.5u -0.30902 -0.47103 0. 35.6u -0.36812 -0.53014 0. 35.7u -0.42578 -0.58779 0. 35.8u -0.48175 -0.64377 0. 35.9u -0.53583 -0.69784 0. 36.u -0.58779 -0.7498 0. 36.1u -0.63742 -0.79944 0. 36.2u -0.68455 -0.84656 0. 36.3u -0.72897 -0.89098 0. 36.4u -0.77051 -0.93253 0. 36.5u -0.80902 -0.97103 0. 36.6u -0.84433 -1.0063 0. 36.7u -0.87631 -1.0383 0. 36.8u -0.90483 -1.0668 0. 36.9u -0.92978 -1.0918 0. 37.u -0.95106 -1.1131 0. 37.1u -0.96858 -1.1306 0. 37.2u -0.98229 -1.1443 0. 37.3u -0.99211 -1.1541 0. 37.4u -0.99803 -1.16 0. 37.5u -1. -1.162 0. 37.6u -0.99803 -1.16 0. 37.7u -0.99211 -1.1541 0. 37.8u -0.98229 -1.1443 0. 37.9u -0.96858 -1.1306 0. 38.u -0.95106 -1.1131 0. 38.1u -0.92978 -1.0918 0. 38.2u -0.90483 -1.0668 0. 38.3u -0.87631 -1.0383 0. 38.4u -0.84433 -1.0063 0. 38.5u -0.80902 -0.97103 0. 38.6u -0.77051 -0.93252 0. 38.7u -0.72897 -0.89098 0. 38.8u -0.68455 -0.84656 0. 38.9u -0.63742 -0.79943 0. 39.u -0.58779 -0.7498 0. 39.1u -0.53583 -0.69784 0. 39.2u -0.48175 -0.64376 0. 39.3u -0.42578 -0.58779 0. 39.4u -0.36812 -0.53013 0. 39.5u -0.30902 -0.47103 0. 39.6u -0.24869 -0.4107 0. 39.7u -0.18738 -0.34939 0. 39.8u -0.12533 -0.28734 0. 39.9u -0.062791 -0.2248 0. 40.u 82.f -0.16201 0. 40.1u 0.062791 -0.09922 0. 40.2u 0.12533 -0.036677 0. 40.3u 0.18738 0.025371 0. 40.4u 0.24869 0.08668 0. 40.5u 0.30902 0.14701 0. 40.6u 0.36812 0.20611 0. 40.7u 0.42578 0.26377 0. 40.8u 0.48175 0.31974 0. 40.9u 0.53583 0.37382 0. 41.u 0.58779 0.42577 0. 41.1u 0.63742 0.47541 0. 41.2u 0.68455 0.52254 0. 41.3u 0.72897 0.56696 0. 41.4u 0.77051 0.6085 0. 41.5u 0.80902 0.64701 0. 41.6u 0.84433 0.68232 0. 41.7u 0.87631 0.7143 0. 41.8u 0.90483 0.74282 0. 41.9u 0.92978 0.76777 0. 42.u 0.95106 0.78905 0. 42.1u 0.96858 0.80657 0. 42.2u 0.98229 0.82028 0. 42.3u 0.99211 0.8301 0. 42.4u 0.99803 0.83602 0. 42.5u 1. 0.83799 0. 42.6u 0.99803 0.83602 0. 42.7u 0.99211 0.8301 0. 42.8u 0.98229 0.82028 0. 42.9u 0.96858 0.80657 0. 43.u 0.95106 0.78904 0. 43.1u 0.92978 0.76776 0. 43.2u 0.90483 0.74282 0. 43.3u 0.87631 0.71429 0. 43.4u 0.84433 0.68232 0. 43.5u 0.80902 0.647 0. 43.6u 0.77051 0.6085 0. 43.7u 0.72897 0.56696 0. 43.8u 0.68455 0.52253 0. 43.9u 0.63742 0.47541 0. 44.u 0.58779 0.42577 0. 44.1u 0.53583 0.37381 0. 44.2u 0.48175 0.31974 0. 44.3u 0.42578 0.26377 0. 44.4u 0.36812 0.20611 0. 44.5u 0.30902 0.147 0. 44.6u 0.24869 0.086677 0. 44.7u 0.18738 0.025369 0. 44.8u 0.12533 -0.036679 0. 44.9u 0.062791 -0.099222 0. 45.u -154.f -0.16201 0. 45.1u -0.062791 -0.2248 0. 45.2u -0.12533 -0.28735 0. 45.3u -0.18738 -0.34939 0. 45.4u -0.24869 -0.4107 0. 45.5u -0.30902 -0.47103 0. 45.6u -0.36812 -0.53014 0. 45.7u -0.42578 -0.58779 0. 45.8u -0.48175 -0.64377 0. 45.9u -0.53583 -0.69784 0. 46.u -0.58779 -0.7498 0. 46.1u -0.63742 -0.79944 0. 46.2u -0.68455 -0.84656 0. 46.3u -0.72897 -0.89098 0. 46.4u -0.77051 -0.93252 0. 46.5u -0.80902 -0.97103 0. 46.6u -0.84433 -1.0063 0. 46.7u -0.87631 -1.0383 0. 46.8u -0.90483 -1.0668 0. 46.9u -0.92978 -1.0918 0. 47.u -0.95106 -1.1131 0. 47.1u -0.96858 -1.1306 0. 47.2u -0.98229 -1.1443 0. 47.3u -0.99211 -1.1541 0. 47.4u -0.99803 -1.16 0. 47.5u -1. -1.162 0. 47.6u -0.99803 -1.16 0. 47.7u -0.99211 -1.1541 0. 47.8u -0.98229 -1.1443 0. 47.9u -0.96858 -1.1306 0. 48.u -0.95106 -1.1131 0. 48.1u -0.92978 -1.0918 0. 48.2u -0.90483 -1.0668 0. 48.3u -0.87631 -1.0383 0. 48.4u -0.84433 -1.0063 0. 48.5u -0.80902 -0.97103 0. 48.6u -0.77051 -0.93252 0. 48.7u -0.72897 -0.89098 0. 48.8u -0.68455 -0.84656 0. 48.9u -0.63742 -0.79943 0. 49.u -0.58779 -0.74979 0. 49.1u -0.53583 -0.69784 0. 49.2u -0.48175 -0.64376 0. 49.3u -0.42578 -0.58779 0. 49.4u -0.36812 -0.53013 0. 49.5u -0.30902 -0.47103 0. 49.6u -0.24869 -0.4107 0. 49.7u -0.18738 -0.34939 0. 49.8u -0.12533 -0.28734 0. 49.9u -0.062791 -0.2248 0. 50.u 235.f -0.16201 0. Gnucap System status iterations: op=0, dc=0, tran=2115, fourier=0, total=2644 transient timesteps: accepted=528, rejected=1, total=529 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_pulse.2a.ckt.out000066400000000000000000000545301316501211100166370ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k #Time v(1) v(2) v(3) 0. 0. 0. 0. 100.n 0.062791 0.039142 0.023649 200.n 0.12533 0.070472 0.054862 300.n 0.18738 0.10143 0.085954 400.n 0.24869 0.13198 0.11671 500.n 0.30902 0.16202 0.147 600.n 0.36812 0.20611 0.081008 700.n 0.42578 0.26376 0.0099487 800.n 0.48175 0.31974 0.0010681 900.n 0.53583 0.37381 133.52u 1.u 0.58779 0.42577 16.69u 1.1u 0.63742 0.25181 0.22361 1.2u 0.68455 0.26719 0.25535 1.3u 0.72897 0.28895 0.27802 1.4u 0.77051 0.30936 0.29915 1.5u 0.80902 0.32822 0.31879 1.6u 0.84433 0.3541 0.16411 1.7u 0.87631 0.38608 0.020345 1.8u 0.90483 0.4146 0.0021628 1.9u 0.92978 0.43955 270.35u 2.u 0.95106 0.46083 33.793u 2.1u 0.96858 0.25022 0.22815 2.2u 0.98229 0.24776 0.24432 2.3u 0.99211 0.25206 0.24985 2.4u 0.99803 0.25453 0.25329 2.5u 1. 0.25502 0.25477 2.6u 0.99803 0.2528 0.12751 2.7u 0.99211 0.24689 0.015554 2.8u 0.98229 0.23706 0.0018665 2.9u 0.96858 0.22336 233.31u 3.u 0.95106 0.20583 29.164u 3.1u 0.92978 0.093557 0.091012 3.2u 0.90483 0.076634 0.082985 3.3u 0.87631 0.061875 0.069224 3.4u 0.84433 0.045457 0.053664 3.5u 0.80902 0.027388 0.036422 3.6u 0.77051 -0.0020816 0.013694 3.7u 0.72897 -0.043626 0.0010638 3.8u 0.68455 -0.088048 127.66u 3.9u 0.63742 -0.13517 15.826u 4.u 0.58779 -0.18481 1.9618u 4.1u 0.53583 -0.12766 -0.10911 4.2u 0.48175 -0.15228 -0.13856 4.3u 0.42578 -0.18046 -0.16635 4.4u 0.36812 -0.20949 -0.19498 4.5u 0.30902 -0.23922 -0.22436 4.6u 0.24869 -0.28468 -0.11961 4.7u 0.18738 -0.34599 -0.01469 4.8u 0.12533 -0.40804 -0.0015771 4.9u 0.062791 -0.47058 -197.14u 5.u 3.f -0.53337 -24.643u 5.1u -0.062791 -0.31634 -0.27984 5.2u -0.12533 -0.33729 -0.32143 5.3u -0.18738 -0.36812 -0.35265 5.4u -0.24869 -0.39868 -0.3834 5.5u -0.30902 -0.42871 -0.41369 5.6u -0.36812 -0.4728 -0.21436 5.7u -0.42578 -0.53046 -0.026325 5.8u -0.48175 -0.58643 -0.0028264 5.9u -0.53583 -0.6405 -353.3u 6.u -0.58779 -0.69246 -44.162u 6.1u -0.63742 -0.39063 -0.3515 6.2u -0.68455 -0.40059 -0.38866 6.3u -0.72897 -0.4223 -0.41137 6.4u -0.77051 -0.44271 -0.43251 6.5u -0.80902 -0.46158 -0.45214 6.6u -0.84433 -0.48746 -0.23079 6.7u -0.87631 -0.51943 -0.028611 6.8u -0.90483 -0.54795 -0.0030415 6.9u -0.92978 -0.5729 -380.19u 7.u -0.95106 -0.59418 -47.524u 7.1u -0.96858 -0.31951 -0.29223 7.2u -0.98229 -0.31448 -0.31096 7.3u -0.99211 -0.31875 -0.31653 7.4u -0.99803 -0.32121 -0.31998 7.5u -1. -0.3217 -0.32146 7.6u -0.99803 -0.31948 -0.16085 7.7u -0.99211 -0.31357 -0.019621 7.8u -0.98229 -0.30374 -0.0021801 7.9u -0.96858 -0.29004 -261.62u 8.u -0.95106 -0.27251 -32.702u 8.1u -0.92978 -0.1282 -0.12305 8.2u -0.90483 -0.11 -0.1163 8.3u -0.87631 -0.095218 -0.10257 8.4u -0.84433 -0.078797 -0.087008 8.5u -0.80902 -0.051697 -0.039399 8.6u -0.77051 -0.013193 -0.0031064 8.7u -0.72897 0.028352 -372.76u 8.8u -0.68455 0.072773 -46.21u 8.9u -0.63742 0.1199 -5.7286u 9.u -0.58779 0.13563 0.033906 9.1u -0.53583 0.11786 0.10363 9.2u -0.48175 0.14461 0.13096 9.3u -0.42578 0.17282 0.15872 9.4u -0.36812 0.20186 0.18734 9.5u -0.30902 0.24645 0.10093 9.6u -0.24869 0.30677 0.012412 9.7u -0.18738 0.36808 0.0013309 9.8u -0.12533 0.43013 166.36u 9.9u -0.062791 0.49267 20.795u 10.u -66.649p 0.44437 0.1111 10.1u 0.062791 0.31896 0.2993 10.2u 0.12533 0.34823 0.33257 10.3u 0.18738 0.37916 0.36369 10.4u 0.24869 0.40972 0.39444 10.5u 0.30902 0.45477 0.20486 10.6u 0.36812 0.51387 0.025159 10.7u 0.42578 0.57153 0.0027012 10.8u 0.48175 0.6275 337.65u 10.9u 0.53583 0.68158 42.206u 11.u 0.58779 0.58683 0.14671 11.1u 0.63742 0.40112 0.38206 11.2u 0.68455 0.42101 0.40929 11.3u 0.72897 0.44283 0.4319 11.4u 0.77051 0.46323 0.45303 11.5u 0.80902 0.49154 0.23162 11.6u 0.84433 0.52685 0.02838 11.7u 0.87631 0.55883 0.0030535 11.8u 0.90483 0.58735 381.68u 11.9u 0.92978 0.6123 47.71u 12.u 0.95106 0.50686 0.12672 12.1u 0.96858 0.33061 0.3205 12.2u 0.98229 0.33404 0.33077 12.3u 0.99211 0.33843 0.33621 12.4u 0.99803 0.34089 0.33966 12.5u 1. 0.34163 0.17045 12.6u 0.99803 0.33966 0.017472 12.7u 0.99211 0.33375 0.0017472 12.8u 0.98229 0.32392 218.4u 12.9u 0.96858 0.31022 27.299u 13.u 0.95106 0.23415 0.058542 13.1u 0.92978 0.13437 0.13705 13.2u 0.90483 0.12002 0.12644 13.3u 0.87631 0.1053 0.11265 13.4u 0.84433 0.08888 0.097087 13.5u 0.80902 0.061776 0.04444 13.6u 0.77051 0.023272 0.0054696 13.7u 0.72897 -0.018272 586.03u 13.8u 0.68455 -0.062694 73.254u 13.9u 0.63742 -0.10982 9.1567u 14.u 0.58779 -0.12756 -0.03189 14.1u 0.53583 -0.11279 -0.098623 14.2u 0.48175 -0.13957 -0.12592 14.3u 0.42578 -0.16778 -0.15368 14.4u 0.36812 -0.19682 -0.1823 14.5u 0.30902 -0.24141 -0.098408 14.6u 0.24869 -0.30173 -0.012102 14.7u 0.18738 -0.36304 -0.0012976 14.8u 0.12533 -0.42509 -162.21u 14.9u 0.062791 -0.48763 -20.276u 15.u 66.021p -0.44034 -0.11009 15.1u -0.062791 -0.31642 -0.2968 15.2u -0.12533 -0.34571 -0.33005 15.3u -0.18738 -0.37664 -0.36117 15.4u -0.24869 -0.4072 -0.39192 15.5u -0.30902 -0.45225 -0.2036 15.6u -0.36812 -0.51135 -0.025004 15.7u -0.42578 -0.56901 -0.0026846 15.8u -0.48175 -0.62498 -335.57u 15.9u -0.53583 -0.67906 -41.946u 16.u -0.58779 -0.58481 -0.14621 16.1u -0.63742 -0.39984 -0.38082 16.2u -0.68455 -0.41975 -0.40803 16.3u -0.72897 -0.44157 -0.43064 16.4u -0.77051 -0.46197 -0.45177 16.5u -0.80902 -0.49028 -0.23099 16.6u -0.84433 -0.52559 -0.028303 16.7u -0.87631 -0.55757 -0.0030452 16.8u -0.90483 -0.58609 -380.64u 16.9u -0.92978 -0.61104 -47.581u 17.u -0.95106 -0.50586 -0.12647 17.1u -0.96858 -0.32997 -0.31988 17.2u -0.98229 -0.33341 -0.33014 17.3u -0.99211 -0.3378 -0.33558 17.4u -0.99803 -0.34026 -0.33903 17.5u -1. -0.341 -0.17013 17.6u -0.99803 -0.33903 -0.017439 17.7u -0.99211 -0.33312 -0.0017439 17.8u -0.98229 -0.32329 -217.99u 17.9u -0.96858 -0.30959 -27.249u 18.u -0.95106 -0.23365 -0.058416 18.1u -0.92978 -0.13405 -0.13674 18.2u -0.90483 -0.11971 -0.12613 18.3u -0.87631 -0.10498 -0.11233 18.4u -0.84433 -0.088565 -0.096772 18.5u -0.80902 -0.061461 -0.044282 18.6u -0.77051 -0.022957 -0.0054502 18.7u -0.72897 0.018587 -583.95u 18.8u -0.68455 0.063009 -72.994u 18.9u -0.63742 0.11013 -9.1243u 19.u -0.58779 0.12782 0.031953 19.1u -0.53583 0.11295 0.09878 19.2u -0.48175 0.13973 0.12607 19.3u -0.42578 0.16794 0.15383 19.4u -0.36812 0.19697 0.18246 19.5u -0.30902 0.24156 0.098487 19.6u -0.24869 0.30189 0.012111 19.7u -0.18738 0.3632 0.0012987 19.8u -0.12533 0.42525 162.33u 19.9u -0.062791 0.48779 20.292u 20.u -66.068p 0.44047 0.11012 20.1u 0.062791 0.3165 0.29688 20.2u 0.12533 0.34579 0.33013 20.3u 0.18738 0.37672 0.36125 20.4u 0.24869 0.40728 0.392 20.5u 0.30902 0.45232 0.20364 20.6u 0.36812 0.51143 0.025009 20.7u 0.42578 0.56909 0.0026851 20.8u 0.48175 0.62506 335.63u 20.9u 0.53583 0.67913 41.954u 21.u 0.58779 0.73109 5.2443u 21.1u 0.63742 0.4074 0.37334 21.2u 0.68455 0.41989 0.40797 21.3u 0.72897 0.44161 0.43067 21.4u 0.77051 0.46201 0.45181 21.5u 0.80902 0.48088 0.47145 21.6u 0.84433 0.50676 0.24044 21.7u 0.87631 0.53874 0.029808 21.8u 0.90483 0.56726 0.0031687 21.9u 0.92978 0.59221 396.09u 22.u 0.95106 0.61349 49.511u 22.1u 0.96858 0.3293 0.30175 22.2u 0.98229 0.32413 0.32062 22.3u 0.99211 0.3284 0.32618 22.4u 0.99803 0.33086 0.32963 22.5u 1. 0.33135 0.33111 22.6u 0.99803 0.32913 0.16568 22.7u 0.99211 0.32322 0.02021 22.8u 0.98229 0.31339 0.0022455 22.9u 0.96858 0.29969 269.46u 23.u 0.95106 0.28216 33.683u 23.1u 0.92978 0.13322 0.12769 23.2u 0.90483 0.11483 0.12112 23.3u 0.87631 0.10004 0.10739 23.4u 0.84433 0.083625 0.091832 23.5u 0.80902 0.065556 0.074591 23.6u 0.77051 0.036087 0.032778 23.7u 0.72897 -0.0054577 0.0025464 23.8u 0.68455 -0.049879 305.57u 23.9u 0.63742 -0.097002 37.881u 24.u 0.58779 -0.14664 4.6959u 24.1u 0.53583 -0.10856 -0.090039 24.2u 0.48175 -0.13319 -0.11948 24.3u 0.42578 -0.16137 -0.14727 24.4u 0.36812 -0.19041 -0.17589 24.5u 0.30902 -0.22014 -0.20527 24.6u 0.24869 -0.2656 -0.11007 24.7u 0.18738 -0.32691 -0.013518 24.8u 0.12533 -0.38895 -0.0014513 24.9u 0.062791 -0.4515 -181.41u 25.u 29.f -0.51429 -22.677u 25.1u -0.062791 -0.30642 -0.27067 25.2u -0.12533 -0.32774 -0.31189 25.3u -0.18738 -0.35858 -0.3431 25.4u -0.24869 -0.38913 -0.37386 25.5u -0.30902 -0.41917 -0.40415 25.6u -0.36812 -0.46326 -0.20958 25.7u -0.42578 -0.52091 -0.025739 25.8u -0.48175 -0.57689 -0.0027635 25.9u -0.53583 -0.63096 -345.43u 26.u -0.58779 -0.68292 -43.179u 26.1u -0.63742 -0.38567 -0.34692 26.2u -0.68455 -0.39582 -0.38389 26.3u -0.72897 -0.41753 -0.4066 26.4u -0.77051 -0.43794 -0.42774 26.5u -0.80902 -0.45681 -0.44737 26.6u -0.84433 -0.48268 -0.2284 26.7u -0.87631 -0.51466 -0.028315 26.8u -0.90483 -0.54318 -0.0030101 26.9u -0.92978 -0.56813 -376.26u 27.u -0.95106 -0.58941 -47.032u 27.1u -0.96858 -0.31703 -0.28994 27.2u -0.98229 -0.31209 -0.30858 27.3u -0.99211 -0.31636 -0.31414 27.4u -0.99803 -0.31882 -0.31759 27.5u -1. -0.31932 -0.31907 27.6u -0.99803 -0.3171 -0.15966 27.7u -0.99211 -0.31118 -0.019476 27.8u -0.98229 -0.30136 -0.002164 27.9u -0.96858 -0.28765 -259.68u 28.u -0.95106 -0.27013 -32.459u 28.1u -0.92978 -0.12696 -0.12191 28.2u -0.90483 -0.10881 -0.11511 28.3u -0.87631 -0.094025 -0.10137 28.4u -0.84433 -0.077604 -0.085814 28.5u -0.80902 -0.059537 -0.068571 28.6u -0.77051 -0.030067 -0.029769 28.7u -0.72897 0.011478 -0.0036904 28.8u -0.68455 0.055899 -392.31u 28.9u -0.63742 0.10302 -49.039u 29.u -0.58779 0.15266 -6.1299u 29.1u -0.53583 0.11168 0.092934 29.2u -0.48175 0.1362 0.12249 29.3u -0.42578 0.16438 0.15028 29.4u -0.36812 0.19341 0.1789 29.5u -0.30902 0.22315 0.20828 29.6u -0.24869 0.26861 0.11157 29.7u -0.18738 0.32992 0.013671 29.8u -0.12533 0.39196 0.0014709 29.9u -0.062791 0.45451 183.86u 30.u -58.f 0.5173 22.983u 30.1u 0.062791 0.30799 0.27212 30.2u 0.12533 0.32925 0.31339 30.3u 0.18738 0.36008 0.34461 30.4u 0.24869 0.39064 0.37536 30.5u 0.30902 0.42067 0.40566 30.6u 0.36812 0.46476 0.21034 30.7u 0.42578 0.52242 0.025832 30.8u 0.48175 0.57839 0.0027734 30.9u 0.53583 0.63246 346.67u 31.u 0.58779 0.68442 43.334u 31.1u 0.63742 0.38645 0.34764 31.2u 0.68455 0.39657 0.38464 31.3u 0.72897 0.41828 0.40735 31.4u 0.77051 0.43869 0.42849 31.5u 0.80902 0.45756 0.44812 31.6u 0.84433 0.48344 0.22878 31.7u 0.87631 0.51541 0.028362 31.8u 0.90483 0.54393 0.003015 31.9u 0.92978 0.56888 376.88u 32.u 0.95106 0.59016 47.11u 32.1u 0.96858 0.31742 0.2903 32.2u 0.98229 0.31247 0.30896 32.3u 0.99211 0.31674 0.31452 32.4u 0.99803 0.3192 0.31797 32.5u 1. 0.31969 0.31945 32.6u 0.99803 0.31747 0.15985 32.7u 0.99211 0.31156 0.019499 32.8u 0.98229 0.30173 0.0021665 32.9u 0.96858 0.28803 259.98u 33.u 0.95106 0.2705 32.498u 33.1u 0.92978 0.12716 0.12209 33.2u 0.90483 0.109 0.1153 33.3u 0.87631 0.094213 0.10156 33.4u 0.84433 0.077792 0.086003 33.5u 0.80902 0.059725 0.068759 33.6u 0.77051 0.030255 0.029863 33.7u 0.72897 -0.011289 0.0037021 33.8u 0.68455 -0.055711 393.55u 33.9u 0.63742 -0.10283 49.194u 34.u 0.58779 -0.15247 6.1493u 34.1u 0.53583 -0.11158 -0.092844 34.2u 0.48175 -0.13611 -0.12239 34.3u 0.42578 -0.16429 -0.15018 34.4u 0.36812 -0.19332 -0.17881 34.5u 0.30902 -0.23792 -0.09666 34.6u 0.24869 -0.29824 -0.011741 34.7u 0.18738 -0.35955 -0.0012722 34.8u 0.12533 -0.4216 -159.03u 34.9u 0.062791 -0.48414 -19.878u 35.u 65.629p -0.43755 -0.10939 35.1u -0.062791 -0.31466 -0.29507 35.2u -0.12533 -0.34396 -0.32831 35.3u -0.18738 -0.3749 -0.35942 35.4u -0.24869 -0.40545 -0.39017 35.5u -0.30902 -0.4505 -0.20273 35.6u -0.36812 -0.50961 -0.024897 35.7u -0.42578 -0.56726 -0.0026731 35.8u -0.48175 -0.62324 -334.13u 35.9u -0.53583 -0.67731 -41.766u 36.u -0.58779 -0.58342 -0.14586 36.1u -0.63742 -0.39896 -0.37995 36.2u -0.68455 -0.41888 -0.40716 36.3u -0.72897 -0.44069 -0.42976 36.4u -0.77051 -0.4611 -0.4509 36.5u -0.80902 -0.4894 -0.23055 36.6u -0.84433 -0.52472 -0.02825 36.7u -0.87631 -0.55669 -0.0030394 36.8u -0.90483 -0.58521 -379.93u 36.9u -0.92978 -0.61016 -47.491u 37.u -0.95106 -0.50516 -0.1263 37.1u -0.96858 -0.32953 -0.31944 37.2u -0.98229 -0.33298 -0.32971 37.3u -0.99211 -0.33736 -0.33515 37.4u -0.99803 -0.33983 -0.33859 37.5u -1. -0.34057 -0.16991 37.6u -0.99803 -0.33859 -0.017417 37.7u -0.99211 -0.33268 -0.0017417 37.8u -0.98229 -0.32286 -222.16u 37.9u -0.96858 -0.30915 -27.769u 38.u -0.95106 -0.21872 -0.07291 38.1u -0.92978 -0.13357 -0.13678 38.2u -0.90483 -0.11948 -0.12592 38.3u -0.87631 -0.10476 -0.11211 38.4u -0.84433 -0.088347 -0.096554 38.5u -0.80902 -0.061243 -0.044173 38.6u -0.77051 -0.022739 -0.0054368 38.7u -0.72897 0.018806 -582.51u 38.8u -0.68455 0.063227 -72.814u 38.9u -0.63742 0.11035 -9.1018u 39.u -0.58779 0.12799 0.031997 39.1u -0.53583 0.11306 0.098888 39.2u -0.48175 0.13984 0.12618 39.3u -0.42578 0.16805 0.15394 39.4u -0.36812 0.19708 0.18257 39.5u -0.30902 0.24167 0.098541 39.6u -0.24869 0.302 0.012118 39.7u -0.18738 0.36331 0.0012994 39.8u -0.12533 0.42536 162.42u 39.9u -0.062791 0.4879 20.303u 40.u -66.002p 0.44055 0.11014 40.1u 0.062791 0.31655 0.29693 40.2u 0.12533 0.34584 0.33018 40.3u 0.18738 0.37677 0.3613 40.4u 0.24869 0.40733 0.39205 40.5u 0.30902 0.45238 0.20367 40.6u 0.36812 0.51149 0.025012 40.7u 0.42578 0.56914 0.0026854 40.8u 0.48175 0.62512 335.68u 40.9u 0.53583 0.67919 41.96u 41.u 0.58779 0.58492 0.14624 41.1u 0.63742 0.39991 0.38088 41.2u 0.68455 0.41982 0.4081 41.3u 0.72897 0.44163 0.4307 41.4u 0.77051 0.46204 0.45184 41.5u 0.80902 0.49034 0.23102 41.6u 0.84433 0.52566 0.028307 41.7u 0.87631 0.55763 0.0030456 41.8u 0.90483 0.58615 380.7u 41.9u 0.92978 0.6111 47.587u 42.u 0.95106 0.50591 0.12648 42.1u 0.96858 0.33001 0.31991 42.2u 0.98229 0.33345 0.33018 42.3u 0.99211 0.33783 0.33562 42.4u 0.99803 0.3403 0.33906 42.5u 1. 0.34104 0.17015 42.6u 0.99803 0.33906 0.017441 42.7u 0.99211 0.33315 0.0017441 42.8u 0.98229 0.32332 222.46u 42.9u 0.96858 0.30962 27.808u 43.u 0.95106 0.21907 0.073027 43.1u 0.92978 0.13381 0.13701 43.2u 0.90483 0.11972 0.12615 43.3u 0.87631 0.105 0.11235 43.4u 0.84433 0.088581 0.096789 43.5u 0.80902 0.061478 0.044291 43.6u 0.77051 0.022974 0.0054513 43.7u 0.72897 -0.018571 584.06u 43.8u 0.68455 -0.062992 73.008u 43.9u 0.63742 -0.11012 9.126u 44.u 0.58779 -0.1278 -0.03195 44.1u 0.53583 -0.11294 -0.098771 44.2u 0.48175 -0.13972 -0.12607 44.3u 0.42578 -0.16793 -0.15383 44.4u 0.36812 -0.19696 -0.18245 44.5u 0.30902 -0.24156 -0.098482 44.6u 0.24869 -0.30188 -0.012111 44.7u 0.18738 -0.36319 -0.0012986 44.8u 0.12533 -0.42524 -162.33u 44.9u 0.062791 -0.48778 -20.291u 45.u 65.913p -0.44046 -0.11012 45.1u -0.062791 -0.31649 -0.29687 45.2u -0.12533 -0.34578 -0.33012 45.3u -0.18738 -0.37672 -0.36124 45.4u -0.24869 -0.40727 -0.39199 45.5u -0.30902 -0.45232 -0.20364 45.6u -0.36812 -0.51143 -0.025009 45.7u -0.42578 -0.56908 -0.002685 45.8u -0.48175 -0.62506 -335.63u 45.9u -0.53583 -0.67913 -41.954u 46.u -0.58779 -0.58487 -0.14622 46.1u -0.63742 -0.39988 -0.38085 46.2u -0.68455 -0.41979 -0.40807 46.3u -0.72897 -0.4416 -0.43067 46.4u -0.77051 -0.46201 -0.45181 46.5u -0.80902 -0.49031 -0.23101 46.6u -0.84433 -0.52563 -0.028305 46.7u -0.87631 -0.5576 -0.0030454 46.8u -0.90483 -0.58612 -380.68u 46.9u -0.92978 -0.61107 -47.584u 47.u -0.95106 -0.50588 -0.12648 47.1u -0.96858 -0.32999 -0.3199 47.2u -0.98229 -0.33343 -0.33016 47.3u -0.99211 -0.33782 -0.3356 47.4u -0.99803 -0.34028 -0.33905 47.5u -1. -0.34102 -0.17014 47.6u -0.99803 -0.33905 -0.01744 47.7u -0.99211 -0.33314 -0.001744 47.8u -0.98229 -0.32331 -222.45u 47.9u -0.96858 -0.30961 -27.807u 48.u -0.95106 -0.21906 -0.073023 48.1u -0.92978 -0.1338 -0.137 48.2u -0.90483 -0.11971 -0.12615 48.3u -0.87631 -0.10499 -0.11234 48.4u -0.84433 -0.088574 -0.096781 48.5u -0.80902 -0.06147 -0.044287 48.6u -0.77051 -0.022966 -0.0054508 48.7u -0.72897 0.018578 -584.01u 48.8u -0.68455 0.063 -73.002u 48.9u -0.63742 0.11012 -9.1252u 49.u -0.58779 0.12781 0.031951 49.1u -0.53583 0.11294 0.098775 49.2u -0.48175 0.13972 0.12607 49.3u -0.42578 0.16794 0.15383 49.4u -0.36812 0.19697 0.18245 49.5u -0.30902 0.24156 0.098484 49.6u -0.24869 0.30189 0.012111 49.7u -0.18738 0.3632 0.0012986 49.8u -0.12533 0.42524 162.33u 49.9u -0.062791 0.48779 20.291u 50.u -65.836p 0.44046 0.11012 Gnucap System status iterations: op=0, dc=0, tran=6727, fourier=0, total=8409 transient timesteps: accepted=1597, rejected=85, total=1682 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_pulse.3.ckt.out000066400000000000000000000723211316501211100164750ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k #Time v(1) v(2) v(3) stepcause(0) 0. 0. 0. 0. ?? 1.n 628.32u 616.24u 12.083u ?? 2.n 0.0012566 0.0012265 30.089u ?? 5.2667n 0.0033091 0.0031427 166.4u ?? 13.879n 0.0087202 0.0077189 0.0010013 ?? 22.491n 0.014131 0.011745 0.0023858 ?? 41.868n 0.026304 0.019604 0.0066998 ?? 70.934n 0.044554 0.029756 0.014798 ?? 100.n 0.062791 0.039142 0.023649 ?? 133.33n 0.083678 0.049654 0.034023 ?? 166.67n 0.10453 0.060083 0.044446 ?? 200.n 0.12533 0.070472 0.054862 ?? 250.n 0.15643 0.085993 0.070442 ?? 300.n 0.18738 0.10143 0.085954 ?? 400.n 0.24869 0.13198 0.11671 ?? 500.n 0.30902 0.16202 0.147 ?? 600.n 0.36812 0.20611 0.081008 ?? 605.88n 0.37156 0.20954 0.072007 ?? 611.76n 0.37499 0.21297 0.064007 ?? 615.6n 0.37722 0.2152 0.059277 ?? 619.44n 0.37945 0.21744 0.054897 ?? 659.72n 0.40274 0.24073 0.02337 ?? 700.n 0.42578 0.26376 0.0099487 ?? 740.28n 0.44854 0.28652 0.0042352 ?? 800.n 0.48175 0.31974 0.0010681 ?? 833.33n 0.5 0.33798 534.07u ?? 866.67n 0.51803 0.35601 267.03u ?? 900.n 0.53583 0.37381 133.52u ?? 933.33n 0.55339 0.39137 66.759u ?? 966.67n 0.57071 0.4087 33.379u ?? 1.u 0.58779 0.42577 16.69u ?? 1.0333u 0.6046 0.44258 8.3448u ?? 1.0667u 0.62115 0.45913 4.1724u ?? 1.1u 0.63742 0.47541 2.0862u ?? 1.1333u 0.65342 0.4914 1.0431u ?? 1.1667u 0.66913 0.50711 521.55n ?? 1.2u 0.68455 0.52253 260.78n ?? 1.2333u 0.69966 0.53765 130.39n ?? 1.2667u 0.71447 0.55246 65.194n ?? 1.3u 0.72897 0.56695 32.597n ?? 1.35u 0.75011 0.58809 10.866n ?? 1.4u 0.77051 0.6085 3.6219n ?? 1.5u 0.80902 0.647 0. ?? 1.6u 0.84433 0.68231 0. ?? 1.7u 0.87631 0.71429 0. ?? 1.8u 0.90483 0.74281 0. ?? 1.9u 0.92978 0.76776 0. ?? 2.u 0.95106 0.78904 0. ?? 2.1u 0.96858 0.80657 0. ?? 2.2u 0.98229 0.82027 0. ?? 2.3u 0.99211 0.8301 0. ?? 2.4u 0.99803 0.83601 0. ?? 2.5u 1. 0.83798 0. ?? 2.6u 0.99803 0.83601 0. ?? 2.7u 0.99211 0.8301 0. ?? 2.8u 0.98229 0.82027 0. ?? 2.9u 0.96858 0.80656 0. ?? 3.u 0.95106 0.78904 0. ?? 3.1u 0.92978 0.76776 0. ?? 3.2u 0.90483 0.74281 0. ?? 3.3u 0.87631 0.71429 0. ?? 3.4u 0.84433 0.68231 0. ?? 3.5u 0.80902 0.647 0. ?? 3.6u 0.77051 0.60849 0. ?? 3.7u 0.72897 0.56695 0. ?? 3.8u 0.68455 0.52253 0. ?? 3.9u 0.63742 0.47541 0. ?? 4.u 0.58779 0.42577 0. ?? 4.1u 0.53583 0.37381 0. ?? 4.2u 0.48175 0.31973 0. ?? 4.3u 0.42578 0.26376 0. ?? 4.4u 0.36812 0.20611 0. ?? 4.5u 0.30902 0.147 0. ?? 4.6u 0.24869 0.086671 0. ?? 4.7u 0.18738 0.025362 0. ?? 4.8u 0.12533 -0.036686 0. ?? 4.9u 0.062791 -0.099229 0. ?? 5.u 2.f -0.16202 0. ?? 5.1u -0.062791 -0.22481 0. ?? 5.2u -0.12533 -0.28735 0. ?? 5.3u -0.18738 -0.3494 0. ?? 5.4u -0.24869 -0.41071 0. ?? 5.5u -0.30902 -0.47104 0. ?? 5.6u -0.36812 -0.53014 0. ?? 5.7u -0.42578 -0.5878 0. ?? 5.8u -0.48175 -0.64377 0. ?? 5.9u -0.53583 -0.69785 0. ?? 6.u -0.58779 -0.7498 0. ?? 6.1u -0.63742 -0.79944 0. ?? 6.2u -0.68455 -0.84657 0. ?? 6.3u -0.72897 -0.89099 0. ?? 6.4u -0.77051 -0.93253 0. ?? 6.5u -0.80902 -0.97104 0. ?? 6.6u -0.84433 -1.0063 0. ?? 6.7u -0.87631 -1.0383 0. ?? 6.8u -0.90483 -1.0668 0. ?? 6.9u -0.92978 -1.0918 0. ?? 7.u -0.95106 -1.1131 0. ?? 7.1u -0.96858 -1.1306 0. ?? 7.2u -0.98229 -1.1443 0. ?? 7.3u -0.99211 -1.1541 0. ?? 7.4u -0.99803 -1.16 0. ?? 7.5u -1. -1.162 0. ?? 7.6u -0.99803 -1.16 0. ?? 7.7u -0.99211 -1.1541 0. ?? 7.8u -0.98229 -1.1443 0. ?? 7.9u -0.96858 -1.1306 0. ?? 8.u -0.95106 -1.1131 0. ?? 8.1u -0.92978 -1.0918 0. ?? 8.2u -0.90483 -1.0668 0. ?? 8.3u -0.87631 -1.0383 0. ?? 8.4u -0.84433 -1.0063 0. ?? 8.5u -0.80902 -0.97103 0. ?? 8.6u -0.77051 -0.93253 0. ?? 8.7u -0.72897 -0.89098 0. ?? 8.8u -0.68455 -0.84656 0. ?? 8.9u -0.63742 -0.79944 0. ?? 9.u -0.58779 -0.7498 0. ?? 9.1u -0.53583 -0.69784 0. ?? 9.2u -0.48175 -0.64377 0. ?? 9.3u -0.42578 -0.58779 0. ?? 9.4u -0.36812 -0.53014 0. ?? 9.5u -0.30902 -0.47103 0. ?? 9.6u -0.24869 -0.41071 0. ?? 9.7u -0.18738 -0.3494 0. ?? 9.8u -0.12533 -0.28735 0. ?? 9.9u -0.062791 -0.22481 0. ?? 10.u 6.f -0.16202 0. ?? 10.1u 0.062791 -0.099225 0. ?? 10.2u 0.12533 -0.036682 0. ?? 10.3u 0.18738 0.025366 0. ?? 10.4u 0.24869 0.086675 0. ?? 10.5u 0.30902 0.147 0. ?? 10.6u 0.36812 0.20611 0. ?? 10.7u 0.42578 0.26376 0. ?? 10.8u 0.48175 0.31974 0. ?? 10.9u 0.53583 0.37381 0. ?? 11.u 0.58779 0.42577 0. ?? 11.1u 0.63742 0.47541 0. ?? 11.2u 0.68455 0.52253 0. ?? 11.3u 0.72897 0.56695 0. ?? 11.4u 0.77051 0.6085 0. ?? 11.5u 0.80902 0.647 0. ?? 11.6u 0.84433 0.68231 0. ?? 11.7u 0.87631 0.71429 0. ?? 11.8u 0.90483 0.74281 0. ?? 11.9u 0.92978 0.76776 0. ?? 12.u 0.95106 0.78904 0. ?? 12.1u 0.96858 0.80657 0. ?? 12.2u 0.98229 0.82027 0. ?? 12.3u 0.99211 0.8301 0. ?? 12.4u 0.99803 0.83601 0. ?? 12.5u 1. 0.83798 0. ?? 12.6u 0.99803 0.83601 0. ?? 12.7u 0.99211 0.8301 0. ?? 12.8u 0.98229 0.82027 0. ?? 12.9u 0.96858 0.80657 0. ?? 13.u 0.95106 0.78904 0. ?? 13.1u 0.92978 0.76776 0. ?? 13.2u 0.90483 0.74281 0. ?? 13.3u 0.87631 0.71429 0. ?? 13.4u 0.84433 0.68231 0. ?? 13.5u 0.80902 0.647 0. ?? 13.6u 0.77051 0.6085 0. ?? 13.7u 0.72897 0.56695 0. ?? 13.8u 0.68455 0.52253 0. ?? 13.9u 0.63742 0.47541 0. ?? 14.u 0.58779 0.42577 0. ?? 14.1u 0.53583 0.37381 0. ?? 14.2u 0.48175 0.31974 0. ?? 14.3u 0.42578 0.26376 0. ?? 14.4u 0.36812 0.20611 0. ?? 14.5u 0.30902 0.147 0. ?? 14.6u 0.24869 0.086672 0. ?? 14.7u 0.18738 0.025364 0. ?? 14.8u 0.12533 -0.036684 0. ?? 14.9u 0.062791 -0.099227 0. ?? 15.u -30.f -0.16202 0. ?? 15.1u -0.062791 -0.22481 0. ?? 15.2u -0.12533 -0.28735 0. ?? 15.3u -0.18738 -0.3494 0. ?? 15.4u -0.24869 -0.41071 0. ?? 15.5u -0.30902 -0.47103 0. ?? 15.6u -0.36812 -0.53014 0. ?? 15.7u -0.42578 -0.5878 0. ?? 15.8u -0.48175 -0.64377 0. ?? 15.9u -0.53583 -0.69784 0. ?? 16.u -0.58779 -0.7498 0. ?? 16.1u -0.63742 -0.79944 0. ?? 16.2u -0.68455 -0.84656 0. ?? 16.3u -0.72897 -0.89099 0. ?? 16.4u -0.77051 -0.93253 0. ?? 16.5u -0.80902 -0.97103 0. ?? 16.6u -0.84433 -1.0063 0. ?? 16.7u -0.87631 -1.0383 0. ?? 16.8u -0.90483 -1.0668 0. ?? 16.9u -0.92978 -1.0918 0. ?? 17.u -0.95106 -1.1131 0. ?? 17.1u -0.96858 -1.1306 0. ?? 17.2u -0.98229 -1.1443 0. ?? 17.3u -0.99211 -1.1541 0. ?? 17.4u -0.99803 -1.16 0. ?? 17.5u -1. -1.162 0. ?? 17.6u -0.99803 -1.16 0. ?? 17.7u -0.99211 -1.1541 0. ?? 17.8u -0.98229 -1.1443 0. ?? 17.9u -0.96858 -1.1306 0. ?? 18.u -0.95106 -1.1131 0. ?? 18.1u -0.92978 -1.0918 0. ?? 18.2u -0.90483 -1.0668 0. ?? 18.3u -0.87631 -1.0383 0. ?? 18.4u -0.84433 -1.0063 0. ?? 18.5u -0.80902 -0.97103 0. ?? 18.6u -0.77051 -0.93253 0. ?? 18.7u -0.72897 -0.89098 0. ?? 18.8u -0.68455 -0.84656 0. ?? 18.9u -0.63742 -0.79944 0. ?? 19.u -0.58779 -0.7498 0. ?? 19.1u -0.53583 -0.69784 0. ?? 19.2u -0.48175 -0.64377 0. ?? 19.3u -0.42578 -0.58779 0. ?? 19.4u -0.36812 -0.53014 0. ?? 19.5u -0.30902 -0.47103 0. ?? 19.6u -0.24869 -0.4107 0. ?? 19.7u -0.18738 -0.34939 0. ?? 19.8u -0.12533 -0.28735 0. ?? 19.9u -0.062791 -0.2248 0. ?? 20.u 2.f -0.16201 0. ?? 20.1u 0.062791 -0.099223 0. ?? 20.2u 0.12533 -0.03668 0. ?? 20.3u 0.18738 0.025368 0. ?? 20.4u 0.24869 0.086676 0. ?? 20.5u 0.30902 0.147 0. ?? 20.6u 0.36812 0.20611 0. ?? 20.7u 0.42578 0.26377 0. ?? 20.8u 0.48175 0.31974 0. ?? 20.9u 0.53583 0.37381 0. ?? 21.u 0.58779 0.42577 0. ?? 21.1u 0.63742 0.47541 0. ?? 21.2u 0.68455 0.52253 0. ?? 21.3u 0.72897 0.56695 0. ?? 21.4u 0.77051 0.6085 0. ?? 21.5u 0.80902 0.647 0. ?? 21.6u 0.84433 0.68231 0. ?? 21.7u 0.87631 0.71429 0. ?? 21.8u 0.90483 0.74281 0. ?? 21.9u 0.92978 0.76776 0. ?? 22.u 0.95106 0.78904 0. ?? 22.1u 0.96858 0.80657 0. ?? 22.2u 0.98229 0.82027 0. ?? 22.3u 0.99211 0.8301 0. ?? 22.4u 0.99803 0.83601 0. ?? 22.5u 1. 0.83799 0. ?? 22.6u 0.99803 0.83601 0. ?? 22.7u 0.99211 0.8301 0. ?? 22.8u 0.98229 0.82027 0. ?? 22.9u 0.96858 0.80657 0. ?? 23.u 0.95106 0.78904 0. ?? 23.1u 0.92978 0.76776 0. ?? 23.2u 0.90483 0.74281 0. ?? 23.3u 0.87631 0.71429 0. ?? 23.4u 0.84433 0.68231 0. ?? 23.5u 0.80902 0.647 0. ?? 23.6u 0.77051 0.6085 0. ?? 23.7u 0.72897 0.56695 0. ?? 23.8u 0.68455 0.52253 0. ?? 23.9u 0.63742 0.47541 0. ?? 24.u 0.58779 0.42577 0. ?? 24.1u 0.53583 0.37381 0. ?? 24.2u 0.48175 0.31974 0. ?? 24.3u 0.42578 0.26376 0. ?? 24.4u 0.36812 0.20611 0. ?? 24.5u 0.30902 0.147 0. ?? 24.6u 0.24869 0.086674 0. ?? 24.7u 0.18738 0.025366 0. ?? 24.8u 0.12533 -0.036683 0. ?? 24.9u 0.062791 -0.099225 0. ?? 25.u 29.f -0.16202 0. ?? 25.1u -0.062791 -0.22481 0. ?? 25.2u -0.12533 -0.28735 0. ?? 25.3u -0.18738 -0.3494 0. ?? 25.4u -0.24869 -0.41071 0. ?? 25.5u -0.30902 -0.47103 0. ?? 25.6u -0.36812 -0.53014 0. ?? 25.7u -0.42578 -0.58779 0. ?? 25.8u -0.48175 -0.64377 0. ?? 25.9u -0.53583 -0.69784 0. ?? 26.u -0.58779 -0.7498 0. ?? 26.1u -0.63742 -0.79944 0. ?? 26.2u -0.68455 -0.84656 0. ?? 26.3u -0.72897 -0.89098 0. ?? 26.4u -0.77051 -0.93253 0. ?? 26.5u -0.80902 -0.97103 0. ?? 26.6u -0.84433 -1.0063 0. ?? 26.7u -0.87631 -1.0383 0. ?? 26.8u -0.90483 -1.0668 0. ?? 26.9u -0.92978 -1.0918 0. ?? 27.u -0.95106 -1.1131 0. ?? 27.1u -0.96858 -1.1306 0. ?? 27.2u -0.98229 -1.1443 0. ?? 27.3u -0.99211 -1.1541 0. ?? 27.4u -0.99803 -1.16 0. ?? 27.5u -1. -1.162 0. ?? 27.6u -0.99803 -1.16 0. ?? 27.7u -0.99211 -1.1541 0. ?? 27.8u -0.98229 -1.1443 0. ?? 27.9u -0.96858 -1.1306 0. ?? 28.u -0.95106 -1.1131 0. ?? 28.1u -0.92978 -1.0918 0. ?? 28.2u -0.90483 -1.0668 0. ?? 28.3u -0.87631 -1.0383 0. ?? 28.4u -0.84433 -1.0063 0. ?? 28.5u -0.80902 -0.97103 0. ?? 28.6u -0.77051 -0.93253 0. ?? 28.7u -0.72897 -0.89098 0. ?? 28.8u -0.68455 -0.84656 0. ?? 28.9u -0.63742 -0.79944 0. ?? 29.u -0.58779 -0.7498 0. ?? 29.1u -0.53583 -0.69784 0. ?? 29.2u -0.48175 -0.64377 0. ?? 29.3u -0.42578 -0.58779 0. ?? 29.4u -0.36812 -0.53014 0. ?? 29.5u -0.30902 -0.47103 0. ?? 29.6u -0.24869 -0.4107 0. ?? 29.7u -0.18738 -0.34939 0. ?? 29.8u -0.12533 -0.28735 0. ?? 29.9u -0.062791 -0.2248 0. ?? 30.u -57.f -0.16201 0. ?? 30.1u 0.062791 -0.099221 0. ?? 30.2u 0.12533 -0.036679 0. ?? 30.3u 0.18738 0.02537 0. ?? 30.4u 0.24869 0.086678 0. ?? 30.5u 0.30902 0.14701 0. ?? 30.6u 0.36812 0.20611 0. ?? 30.7u 0.42578 0.26377 0. ?? 30.8u 0.48175 0.31974 0. ?? 30.9u 0.53583 0.37381 0. ?? 31.u 0.58779 0.42577 0. ?? 31.1u 0.63742 0.47541 0. ?? 31.2u 0.68455 0.52254 0. ?? 31.3u 0.72897 0.56696 0. ?? 31.4u 0.77051 0.6085 0. ?? 31.5u 0.80902 0.647 0. ?? 31.6u 0.84433 0.68232 0. ?? 31.7u 0.87631 0.71429 0. ?? 31.8u 0.90483 0.74281 0. ?? 31.9u 0.92978 0.76776 0. ?? 32.u 0.95106 0.78904 0. ?? 32.1u 0.96858 0.80657 0. ?? 32.2u 0.98229 0.82027 0. ?? 32.3u 0.99211 0.8301 0. ?? 32.4u 0.99803 0.83601 0. ?? 32.5u 1. 0.83799 0. ?? 32.6u 0.99803 0.83601 0. ?? 32.7u 0.99211 0.8301 0. ?? 32.8u 0.98229 0.82027 0. ?? 32.9u 0.96858 0.80657 0. ?? 33.u 0.95106 0.78904 0. ?? 33.1u 0.92978 0.76776 0. ?? 33.2u 0.90483 0.74281 0. ?? 33.3u 0.87631 0.71429 0. ?? 33.4u 0.84433 0.68231 0. ?? 33.5u 0.80902 0.647 0. ?? 33.6u 0.77051 0.6085 0. ?? 33.7u 0.72897 0.56695 0. ?? 33.8u 0.68455 0.52253 0. ?? 33.9u 0.63742 0.47541 0. ?? 34.u 0.58779 0.42577 0. ?? 34.1u 0.53583 0.37381 0. ?? 34.2u 0.48175 0.31974 0. ?? 34.3u 0.42578 0.26377 0. ?? 34.4u 0.36812 0.20611 0. ?? 34.5u 0.30902 0.147 0. ?? 34.6u 0.24869 0.086676 0. ?? 34.7u 0.18738 0.025367 0. ?? 34.8u 0.12533 -0.036681 0. ?? 34.9u 0.062791 -0.099224 0. ?? 35.u -2.f -0.16201 0. ?? 35.1u -0.062791 -0.2248 0. ?? 35.2u -0.12533 -0.28735 0. ?? 35.3u -0.18738 -0.3494 0. ?? 35.4u -0.24869 -0.4107 0. ?? 35.5u -0.30902 -0.47103 0. ?? 35.6u -0.36812 -0.53014 0. ?? 35.7u -0.42578 -0.58779 0. ?? 35.8u -0.48175 -0.64377 0. ?? 35.9u -0.53583 -0.69784 0. ?? 36.u -0.58779 -0.7498 0. ?? 36.1u -0.63742 -0.79944 0. ?? 36.2u -0.68455 -0.84656 0. ?? 36.3u -0.72897 -0.89098 0. ?? 36.4u -0.77051 -0.93253 0. ?? 36.5u -0.80902 -0.97103 0. ?? 36.6u -0.84433 -1.0063 0. ?? 36.7u -0.87631 -1.0383 0. ?? 36.8u -0.90483 -1.0668 0. ?? 36.9u -0.92978 -1.0918 0. ?? 37.u -0.95106 -1.1131 0. ?? 37.1u -0.96858 -1.1306 0. ?? 37.2u -0.98229 -1.1443 0. ?? 37.3u -0.99211 -1.1541 0. ?? 37.4u -0.99803 -1.16 0. ?? 37.5u -1. -1.162 0. ?? 37.6u -0.99803 -1.16 0. ?? 37.7u -0.99211 -1.1541 0. ?? 37.8u -0.98229 -1.1443 0. ?? 37.9u -0.96858 -1.1306 0. ?? 38.u -0.95106 -1.1131 0. ?? 38.1u -0.92978 -1.0918 0. ?? 38.2u -0.90483 -1.0668 0. ?? 38.3u -0.87631 -1.0383 0. ?? 38.4u -0.84433 -1.0063 0. ?? 38.5u -0.80902 -0.97103 0. ?? 38.6u -0.77051 -0.93252 0. ?? 38.7u -0.72897 -0.89098 0. ?? 38.8u -0.68455 -0.84656 0. ?? 38.9u -0.63742 -0.79943 0. ?? 39.u -0.58779 -0.7498 0. ?? 39.1u -0.53583 -0.69784 0. ?? 39.2u -0.48175 -0.64376 0. ?? 39.3u -0.42578 -0.58779 0. ?? 39.4u -0.36812 -0.53013 0. ?? 39.5u -0.30902 -0.47103 0. ?? 39.6u -0.24869 -0.4107 0. ?? 39.7u -0.18738 -0.34939 0. ?? 39.8u -0.12533 -0.28734 0. ?? 39.9u -0.062791 -0.2248 0. ?? 40.u 82.f -0.16201 0. ?? 40.1u 0.062791 -0.09922 0. ?? 40.2u 0.12533 -0.036677 0. ?? 40.3u 0.18738 0.025371 0. ?? 40.4u 0.24869 0.08668 0. ?? 40.5u 0.30902 0.14701 0. ?? 40.6u 0.36812 0.20611 0. ?? 40.7u 0.42578 0.26377 0. ?? 40.8u 0.48175 0.31974 0. ?? 40.9u 0.53583 0.37382 0. ?? 41.u 0.58779 0.42577 0. ?? 41.1u 0.63742 0.47541 0. ?? 41.2u 0.68455 0.52254 0. ?? 41.3u 0.72897 0.56696 0. ?? 41.4u 0.77051 0.6085 0. ?? 41.5u 0.80902 0.64701 0. ?? 41.6u 0.84433 0.68232 0. ?? 41.7u 0.87631 0.7143 0. ?? 41.8u 0.90483 0.74282 0. ?? 41.9u 0.92978 0.76777 0. ?? 42.u 0.95106 0.78905 0. ?? 42.1u 0.96858 0.80657 0. ?? 42.2u 0.98229 0.82028 0. ?? 42.3u 0.99211 0.8301 0. ?? 42.4u 0.99803 0.83602 0. ?? 42.5u 1. 0.83799 0. ?? 42.6u 0.99803 0.83602 0. ?? 42.7u 0.99211 0.8301 0. ?? 42.8u 0.98229 0.82028 0. ?? 42.9u 0.96858 0.80657 0. ?? 43.u 0.95106 0.78904 0. ?? 43.1u 0.92978 0.76776 0. ?? 43.2u 0.90483 0.74282 0. ?? 43.3u 0.87631 0.71429 0. ?? 43.4u 0.84433 0.68232 0. ?? 43.5u 0.80902 0.647 0. ?? 43.6u 0.77051 0.6085 0. ?? 43.7u 0.72897 0.56696 0. ?? 43.8u 0.68455 0.52253 0. ?? 43.9u 0.63742 0.47541 0. ?? 44.u 0.58779 0.42577 0. ?? 44.1u 0.53583 0.37381 0. ?? 44.2u 0.48175 0.31974 0. ?? 44.3u 0.42578 0.26377 0. ?? 44.4u 0.36812 0.20611 0. ?? 44.5u 0.30902 0.147 0. ?? 44.6u 0.24869 0.086677 0. ?? 44.7u 0.18738 0.025369 0. ?? 44.8u 0.12533 -0.036679 0. ?? 44.9u 0.062791 -0.099222 0. ?? 45.u -154.f -0.16201 0. ?? 45.1u -0.062791 -0.2248 0. ?? 45.2u -0.12533 -0.28735 0. ?? 45.3u -0.18738 -0.34939 0. ?? 45.4u -0.24869 -0.4107 0. ?? 45.5u -0.30902 -0.47103 0. ?? 45.6u -0.36812 -0.53014 0. ?? 45.7u -0.42578 -0.58779 0. ?? 45.8u -0.48175 -0.64377 0. ?? 45.9u -0.53583 -0.69784 0. ?? 46.u -0.58779 -0.7498 0. ?? 46.1u -0.63742 -0.79944 0. ?? 46.2u -0.68455 -0.84656 0. ?? 46.3u -0.72897 -0.89098 0. ?? 46.4u -0.77051 -0.93252 0. ?? 46.5u -0.80902 -0.97103 0. ?? 46.6u -0.84433 -1.0063 0. ?? 46.7u -0.87631 -1.0383 0. ?? 46.8u -0.90483 -1.0668 0. ?? 46.9u -0.92978 -1.0918 0. ?? 47.u -0.95106 -1.1131 0. ?? 47.1u -0.96858 -1.1306 0. ?? 47.2u -0.98229 -1.1443 0. ?? 47.3u -0.99211 -1.1541 0. ?? 47.4u -0.99803 -1.16 0. ?? 47.5u -1. -1.162 0. ?? 47.6u -0.99803 -1.16 0. ?? 47.7u -0.99211 -1.1541 0. ?? 47.8u -0.98229 -1.1443 0. ?? 47.9u -0.96858 -1.1306 0. ?? 48.u -0.95106 -1.1131 0. ?? 48.1u -0.92978 -1.0918 0. ?? 48.2u -0.90483 -1.0668 0. ?? 48.3u -0.87631 -1.0383 0. ?? 48.4u -0.84433 -1.0063 0. ?? 48.5u -0.80902 -0.97103 0. ?? 48.6u -0.77051 -0.93252 0. ?? 48.7u -0.72897 -0.89098 0. ?? 48.8u -0.68455 -0.84656 0. ?? 48.9u -0.63742 -0.79943 0. ?? 49.u -0.58779 -0.74979 0. ?? 49.1u -0.53583 -0.69784 0. ?? 49.2u -0.48175 -0.64376 0. ?? 49.3u -0.42578 -0.58779 0. ?? 49.4u -0.36812 -0.53013 0. ?? 49.5u -0.30902 -0.47103 0. ?? 49.6u -0.24869 -0.4107 0. ?? 49.7u -0.18738 -0.34939 0. ?? 49.8u -0.12533 -0.28734 0. ?? 49.9u -0.062791 -0.2248 0. ?? 50.u 235.f -0.16201 0. ?? Gnucap System status iterations: op=0, dc=0, tran=2115, fourier=0, total=2644 transient timesteps: accepted=528, rejected=1, total=529 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_pulse.3a.ckt.out000066400000000000000000002572541316501211100166500ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k #Time v(1) v(2) v(3) stepcause(0) 0. 0. 0. 0. ?? 1.n 628.32u 616.24u 12.083u ?? 2.n 0.0012566 0.0012265 30.089u ?? 5.2667n 0.0033091 0.0031427 166.4u ?? 13.879n 0.0087202 0.0077189 0.0010013 ?? 22.491n 0.014131 0.011745 0.0023858 ?? 41.868n 0.026304 0.019604 0.0066998 ?? 70.934n 0.044554 0.029756 0.014798 ?? 100.n 0.062791 0.039142 0.023649 ?? 133.33n 0.083678 0.049654 0.034023 ?? 166.67n 0.10453 0.060083 0.044446 ?? 200.n 0.12533 0.070472 0.054862 ?? 250.n 0.15643 0.085993 0.070442 ?? 300.n 0.18738 0.10143 0.085954 ?? 400.n 0.24869 0.13198 0.11671 ?? 500.n 0.30902 0.16202 0.147 ?? 600.n 0.36812 0.20611 0.081008 ?? 605.88n 0.37156 0.20954 0.072007 ?? 611.76n 0.37499 0.21297 0.064007 ?? 615.6n 0.37722 0.2152 0.059277 ?? 619.44n 0.37945 0.21744 0.054897 ?? 659.72n 0.40274 0.24073 0.02337 ?? 700.n 0.42578 0.26376 0.0099487 ?? 740.28n 0.44854 0.28652 0.0042352 ?? 800.n 0.48175 0.31974 0.0010681 ?? 833.33n 0.5 0.33798 534.07u ?? 866.67n 0.51803 0.35601 267.03u ?? 900.n 0.53583 0.37381 133.52u ?? 933.33n 0.55339 0.39137 66.759u ?? 966.67n 0.57071 0.4087 33.379u ?? 1.u 0.58779 0.42577 16.69u ?? 1.0333u 0.6046 0.35407 0.088525 ?? 1.0444u 0.61015 0.31083 0.13731 ?? 1.0556u 0.61566 0.2843 0.16936 ?? 1.0667u 0.62115 0.26839 0.19076 ?? 1.0778u 0.6266 0.25923 0.20537 ?? 1.1u 0.63742 0.25181 0.22361 ?? 1.1222u 0.64812 0.25218 0.23393 ?? 1.1444u 0.65869 0.25551 0.24117 ?? 1.1667u 0.66913 0.25993 0.24719 ?? 1.1889u 0.67944 0.26474 0.2527 ?? 1.2u 0.68455 0.26719 0.25535 ?? 1.2333u 0.69966 0.27455 0.26311 ?? 1.2667u 0.71447 0.28182 0.27065 ?? 1.3u 0.72897 0.28895 0.27802 ?? 1.4u 0.77051 0.30936 0.29915 ?? 1.5u 0.80902 0.32822 0.31879 ?? 1.6u 0.84433 0.3541 0.16411 ?? 1.6067u 0.84656 0.35634 0.1436 ?? 1.6133u 0.84879 0.35856 0.12565 ?? 1.6177u 0.85022 0.36 0.11521 ?? 1.622u 0.85165 0.36143 0.10564 ?? 1.661u 0.86424 0.37401 0.04636 ?? 1.7u 0.87631 0.38608 0.020345 ?? 1.739u 0.88785 0.39762 0.0089284 ?? 1.8u 0.90483 0.4146 0.0021628 ?? 1.8333u 0.91355 0.42332 0.0010814 ?? 1.8667u 0.92186 0.43163 540.7u ?? 1.9u 0.92978 0.43955 270.35u ?? 1.9333u 0.93728 0.44705 135.17u ?? 1.9667u 0.94438 0.45415 67.587u ?? 2.u 0.95106 0.46083 33.793u ?? 2.0333u 0.95732 0.37368 0.093436 ?? 2.0417u 0.95882 0.33504 0.13358 ?? 2.05u 0.96029 0.30763 0.16246 ?? 2.0583u 0.96174 0.28823 0.1833 ?? 2.0667u 0.96316 0.27456 0.19839 ?? 2.0833u 0.96593 0.25794 0.21778 ?? 2.1u 0.96858 0.25022 0.22815 ?? 2.1167u 0.97113 0.24694 0.23399 ?? 2.1375u 0.97417 0.24572 0.23825 ?? 2.1583u 0.97705 0.24597 0.24087 ?? 2.1792u 0.97975 0.24678 0.24277 ?? 2.2u 0.98229 0.24776 0.24432 ?? 2.2208u 0.98466 0.24877 0.24568 ?? 2.2472u 0.98741 0.24998 0.24722 ?? 2.2736u 0.9899 0.25109 0.24861 ?? 2.3u 0.99211 0.25206 0.24985 ?? 2.35u 0.99556 0.25354 0.25182 ?? 2.4u 0.99803 0.25453 0.25329 ?? 2.5u 1. 0.25502 0.25477 ?? 2.6u 0.99803 0.2528 0.12751 ?? 2.6125u 0.9975 0.25228 0.099175 ?? 2.625u 0.99692 0.25169 0.077136 ?? 2.6375u 0.99627 0.25104 0.059995 ?? 2.65u 0.99556 0.25034 0.046662 ?? 2.7u 0.99211 0.24689 0.015554 ?? 2.75u 0.98769 0.24246 0.0051847 ?? 2.775u 0.98511 0.23988 0.0031108 ?? 2.8u 0.98229 0.23706 0.0018665 ?? 2.8333u 0.97815 0.23292 933.25u ?? 2.8667u 0.97358 0.22835 466.62u ?? 2.9u 0.96858 0.22336 233.31u ?? 2.9333u 0.96316 0.21794 116.66u ?? 2.9667u 0.95732 0.21209 58.328u ?? 3.u 0.95106 0.20583 29.164u ?? 3.0333u 0.94438 0.15932 0.039846 ?? 3.0417u 0.94264 0.14064 0.05679 ?? 3.05u 0.94088 0.12703 0.068643 ?? 3.0583u 0.93909 0.11703 0.076857 ?? 3.0667u 0.93728 0.10961 0.082466 ?? 3.0833u 0.93358 0.099584 0.088789 ?? 3.1u 0.92978 0.093557 0.091012 ?? 3.1167u 0.92587 0.089503 0.09116 ?? 3.1333u 0.92186 0.086411 0.090245 ?? 3.15u 0.91775 0.083774 0.088773 ?? 3.175u 0.9114 0.080148 0.086048 ?? 3.2u 0.90483 0.076634 0.082985 ?? 3.2333u 0.89571 0.071883 0.078622 ?? 3.2667u 0.8862 0.066972 0.074025 ?? 3.3u 0.87631 0.061875 0.069224 ?? 3.35u 0.86074 0.053876 0.061659 ?? 3.4u 0.84433 0.045457 0.053664 ?? 3.5u 0.80902 0.027388 0.036422 ?? 3.6u 0.77051 -0.0020816 0.013694 ?? 3.6062u 0.768 -0.0045906 0.012083 ?? 3.6125u 0.76548 -0.0071116 0.010661 ?? 3.6169u 0.76371 -0.0088833 0.0097675 ?? 3.6212u 0.76193 -0.010661 0.0089487 ?? 3.7u 0.72897 -0.043626 0.0010638 ?? 3.75u 0.70711 -0.065488 354.61u ?? 3.775u 0.69591 -0.076682 212.77u ?? 3.8u 0.68455 -0.088048 127.66u ?? 3.825u 0.67301 -0.099582 76.596u ?? 3.8625u 0.6554 -0.11719 34.816u ?? 3.9u 0.63742 -0.13517 15.826u ?? 3.9375u 0.61909 -0.1535 7.1934u ?? 3.975u 0.60042 -0.17217 3.2697u ?? 4.u 0.58779 -0.18481 1.9618u ?? 4.0333u 0.57071 -0.1615 -0.040375 ?? 4.0667u 0.55339 -0.12691 -0.092291 ?? 4.0833u 0.54464 -0.12591 -0.10204 ?? 4.1u 0.53583 -0.12766 -0.10911 ?? 4.1167u 0.52696 -0.13078 -0.11486 ?? 4.1333u 0.51803 -0.13461 -0.11995 ?? 4.1556u 0.50603 -0.14025 -0.12631 ?? 4.1778u 0.49394 -0.14619 -0.13246 ?? 4.2u 0.48175 -0.15228 -0.13856 ?? 4.25u 0.45399 -0.16624 -0.15236 ?? 4.3u 0.42578 -0.18046 -0.16635 ?? 4.35u 0.39715 -0.19488 -0.18056 ?? 4.4u 0.36812 -0.20949 -0.19498 ?? 4.5u 0.30902 -0.23922 -0.22436 ?? 4.6u 0.24869 -0.28468 -0.11961 ?? 4.6059u 0.24511 -0.28826 -0.10632 ?? 4.6118u 0.24152 -0.29185 -0.094507 ?? 4.6156u 0.23918 -0.29419 -0.087524 ?? 4.6194u 0.23684 -0.29653 -0.081056 ?? 4.6597u 0.21218 -0.32119 -0.034506 ?? 4.7u 0.18738 -0.34599 -0.01469 ?? 4.7403u 0.16246 -0.37091 -0.0062534 ?? 4.8u 0.12533 -0.40804 -0.0015771 ?? 4.8333u 0.10453 -0.42884 -788.56u ?? 4.8667u 0.083678 -0.44969 -394.28u ?? 4.9u 0.062791 -0.47058 -197.14u ?? 4.9333u 0.041876 -0.4915 -98.57u ?? 4.9667u 0.020942 -0.51243 -49.285u ?? 5.u 3.f -0.53337 -24.643u ?? 5.0333u -0.020942 -0.44346 -0.11088 ?? 5.0444u -0.027922 -0.38933 -0.17198 ?? 5.0556u -0.034899 -0.35616 -0.21213 ?? 5.063u -0.03955 -0.34192 -0.23102 ?? 5.0704u -0.044201 -0.33196 -0.24563 ?? 5.0852u -0.053498 -0.32046 -0.26642 ?? 5.1u -0.062791 -0.31634 -0.27984 ?? 5.12u -0.075327 -0.31666 -0.29206 ?? 5.1467u -0.092023 -0.32189 -0.30352 ?? 5.1733u -0.10869 -0.32927 -0.31281 ?? 5.2u -0.12533 -0.33729 -0.32143 ?? 5.2267u -0.14194 -0.34549 -0.32983 ?? 5.2633u -0.1647 -0.35682 -0.34127 ?? 5.3u -0.18738 -0.36812 -0.35265 ?? 5.35u -0.21814 -0.38346 -0.36808 ?? 5.4u -0.24869 -0.39868 -0.3834 ?? 5.5u -0.30902 -0.42871 -0.41369 ?? 5.6u -0.36812 -0.4728 -0.21436 ?? 5.6059u -0.37156 -0.47624 -0.19054 ?? 5.6118u -0.37499 -0.47966 -0.16937 ?? 5.6156u -0.37722 -0.4819 -0.15685 ?? 5.6194u -0.37945 -0.48413 -0.14526 ?? 5.6597u -0.40274 -0.50742 -0.061839 ?? 5.7u -0.42578 -0.53046 -0.026325 ?? 5.7403u -0.44854 -0.55322 -0.011207 ?? 5.8u -0.48175 -0.58643 -0.0028264 ?? 5.8333u -0.5 -0.60468 -0.0014132 ?? 5.8667u -0.51803 -0.6227 -706.6u ?? 5.9u -0.53583 -0.6405 -353.3u ?? 5.9333u -0.55339 -0.65807 -176.65u ?? 5.9667u -0.57071 -0.67539 -88.325u ?? 6.u -0.58779 -0.69246 -44.162u ?? 6.0333u -0.6046 -0.56743 -0.14188 ?? 6.0417u -0.60876 -0.5105 -0.20297 ?? 6.05u -0.61291 -0.47042 -0.2472 ?? 6.0583u -0.61704 -0.44236 -0.27938 ?? 6.0667u -0.62115 -0.4229 -0.30296 ?? 6.0833u -0.62932 -0.40006 -0.33396 ?? 6.1u -0.63742 -0.39063 -0.3515 ?? 6.1167u -0.64546 -0.38788 -0.36229 ?? 6.1444u -0.65869 -0.38961 -0.37379 ?? 6.1722u -0.67172 -0.39466 -0.38176 ?? 6.2u -0.68455 -0.40059 -0.38866 ?? 6.2278u -0.69717 -0.4067 -0.39518 ?? 6.2556u -0.70957 -0.41277 -0.4015 ?? 6.3u -0.72897 -0.4223 -0.41137 ?? 6.35u -0.75011 -0.43269 -0.42212 ?? 6.4u -0.77051 -0.44271 -0.43251 ?? 6.5u -0.80902 -0.46158 -0.45214 ?? 6.6u -0.84433 -0.48746 -0.23079 ?? 6.6067u -0.84656 -0.48969 -0.20194 ?? 6.6133u -0.84879 -0.49191 -0.1767 ?? 6.6177u -0.85022 -0.49335 -0.16202 ?? 6.622u -0.85165 -0.49478 -0.14856 ?? 6.661u -0.86424 -0.50737 -0.065196 ?? 6.7u -0.87631 -0.51943 -0.028611 ?? 6.739u -0.88785 -0.53097 -0.012556 ?? 6.8u -0.90483 -0.54795 -0.0030415 ?? 6.8333u -0.91355 -0.55667 -0.0015208 ?? 6.8667u -0.92186 -0.56499 -760.38u ?? 6.9u -0.92978 -0.5729 -380.19u ?? 6.9333u -0.93728 -0.58041 -190.09u ?? 6.9667u -0.94438 -0.5875 -95.047u ?? 7.u -0.95106 -0.59418 -47.524u ?? 7.0333u -0.95732 -0.48036 -0.12011 ?? 7.0417u -0.95882 -0.43029 -0.17169 ?? 7.05u -0.96029 -0.39472 -0.20873 ?? 7.0583u -0.96174 -0.36949 -0.23541 ?? 7.0667u -0.96316 -0.35166 -0.25466 ?? 7.0833u -0.96593 -0.32983 -0.27926 ?? 7.1u -0.96858 -0.31951 -0.29223 ?? 7.1167u -0.97113 -0.31492 -0.29937 ?? 7.1375u -0.97417 -0.31294 -0.30439 ?? 7.1583u -0.97705 -0.31288 -0.30733 ?? 7.1792u -0.97975 -0.31355 -0.30936 ?? 7.2u -0.98229 -0.31448 -0.31096 ?? 7.2208u -0.98466 -0.31547 -0.31235 ?? 7.2472u -0.98741 -0.31667 -0.3139 ?? 7.2736u -0.9899 -0.31777 -0.31529 ?? 7.3u -0.99211 -0.31875 -0.31653 ?? 7.35u -0.99556 -0.32022 -0.3185 ?? 7.4u -0.99803 -0.32121 -0.31998 ?? 7.5u -1. -0.3217 -0.32146 ?? 7.6u -0.99803 -0.31948 -0.16085 ?? 7.6125u -0.9975 -0.31896 -0.12511 ?? 7.625u -0.99692 -0.31837 -0.097305 ?? 7.6375u -0.99627 -0.31773 -0.075682 ?? 7.65u -0.99556 -0.31702 -0.058864 ?? 7.7u -0.99211 -0.31357 -0.019621 ?? 7.75u -0.98769 -0.30914 -0.0065404 ?? 7.8u -0.98229 -0.30374 -0.0021801 ?? 7.85u -0.97592 -0.29737 -726.71u ?? 7.875u -0.97237 -0.29383 -436.03u ?? 7.9u -0.96858 -0.29004 -261.62u ?? 7.9333u -0.96316 -0.28462 -130.81u ?? 7.9667u -0.95732 -0.27877 -65.404u ?? 8.u -0.95106 -0.27251 -32.702u ?? 8.0333u -0.94438 -0.21267 -0.053184 ?? 8.0417u -0.94264 -0.18828 -0.075844 ?? 8.05u -0.94088 -0.17058 -0.091779 ?? 8.0583u -0.93909 -0.15766 -0.10291 ?? 8.0667u -0.93728 -0.14816 -0.1106 ?? 8.0833u -0.93358 -0.13553 -0.11953 ?? 8.1u -0.92978 -0.1282 -0.12305 ?? 8.1167u -0.92587 -0.1235 -0.12385 ?? 8.1333u -0.92186 -0.12008 -0.12326 ?? 8.15u -0.91775 -0.11728 -0.12195 ?? 8.1667u -0.91355 -0.11476 -0.12026 ?? 8.1833u -0.90924 -0.11237 -0.11835 ?? 8.2u -0.90483 -0.11 -0.1163 ?? 8.2333u -0.89571 -0.10523 -0.11196 ?? 8.2667u -0.8862 -0.10032 -0.10737 ?? 8.3u -0.87631 -0.095218 -0.10257 ?? 8.4u -0.84433 -0.078797 -0.087008 ?? 8.5u -0.80902 -0.051697 -0.039399 ?? 8.5062u -0.8067 -0.049382 -0.034764 ?? 8.5125u -0.80438 -0.047055 -0.030674 ?? 8.5171u -0.80265 -0.045333 -0.027973 ?? 8.5217u -0.80092 -0.043604 -0.02551 ?? 8.6u -0.77051 -0.013193 -0.0031064 ?? 8.65u -0.75011 0.0072092 -0.0010355 ?? 8.675u -0.73963 0.017689 -621.27u ?? 8.7u -0.72897 0.028352 -372.76u ?? 8.725u -0.71813 0.039194 -223.66u ?? 8.7625u -0.70153 0.055789 -101.66u ?? 8.8u -0.68455 0.072773 -46.21u ?? 8.8375u -0.66718 0.090138 -21.005u ?? 8.875u -0.64945 0.10787 -9.5476u ?? 8.9u -0.63742 0.1199 -5.7286u ?? 8.9333u -0.62115 0.13617 -2.8643u ?? 8.9667u -0.6046 0.15272 -1.4321u ?? 9.u -0.58779 0.13563 0.033906 ?? 9.0333u -0.57071 0.1086 0.078009 ?? 9.0556u -0.55919 0.10893 0.089193 ?? 9.0704u -0.55145 0.11128 0.09459 ?? 9.0852u -0.54366 0.11436 0.099294 ?? 9.1u -0.53583 0.11786 0.10363 ?? 9.125u -0.5225 0.12422 0.1106 ?? 9.1625u -0.50227 0.13428 0.12077 ?? 9.2u -0.48175 0.14461 0.13096 ?? 9.25u -0.45399 0.15861 0.14472 ?? 9.3u -0.42578 0.17282 0.15872 ?? 9.4u -0.36812 0.20186 0.18734 ?? 9.5u -0.30902 0.24645 0.10093 ?? 9.5059u -0.3055 0.24996 0.089714 ?? 9.5118u -0.30198 0.25349 0.079745 ?? 9.5158u -0.29958 0.25589 0.073595 ?? 9.5198u -0.29717 0.25829 0.06792 ?? 9.5599u -0.27302 0.28245 0.029034 ?? 9.6u -0.24869 0.30677 0.012412 ?? 9.6401u -0.22421 0.33126 0.0053057 ?? 9.7u -0.18738 0.36808 0.0013309 ?? 9.7333u -0.16677 0.38869 665.43u ?? 9.7667u -0.14608 0.40938 332.72u ?? 9.8u -0.12533 0.43013 166.36u ?? 9.8333u -0.10453 0.45094 83.179u ?? 9.8667u -0.083678 0.47179 41.59u ?? 9.9u -0.062791 0.49267 20.795u ?? 9.9333u -0.041876 0.51359 10.397u ?? 9.9667u -0.020942 0.53452 5.1987u ?? 10.u -66.649p 0.44437 0.1111 ?? 10.033u 0.020942 0.32781 0.24859 ?? 10.05u 0.031411 0.31717 0.26971 ?? 10.067u 0.041876 0.31446 0.28288 ?? 10.083u 0.052336 0.31572 0.29208 ?? 10.1u 0.062791 0.31896 0.2993 ?? 10.125u 0.078459 0.32546 0.30846 ?? 10.15u 0.094108 0.33284 0.31674 ?? 10.175u 0.10973 0.34049 0.32471 ?? 10.2u 0.12533 0.34823 0.33257 ?? 10.25u 0.15643 0.36373 0.34818 ?? 10.3u 0.18738 0.37916 0.36369 ?? 10.4u 0.24869 0.40972 0.39444 ?? 10.5u 0.30902 0.45477 0.20486 ?? 10.506u 0.31253 0.45828 0.1821 ?? 10.512u 0.31604 0.46179 0.16186 ?? 10.516u 0.31832 0.46407 0.1499 ?? 10.519u 0.32061 0.46636 0.13883 ?? 10.56u 0.34448 0.49023 0.059099 ?? 10.6u 0.36812 0.51387 0.025159 ?? 10.64u 0.39154 0.53729 0.01071 ?? 10.7u 0.42578 0.57153 0.0027012 ?? 10.733u 0.44464 0.59038 0.0013506 ?? 10.767u 0.4633 0.60905 675.29u ?? 10.8u 0.48175 0.6275 337.65u ?? 10.833u 0.5 0.64575 168.82u ?? 10.867u 0.51803 0.66378 84.412u ?? 10.9u 0.53583 0.68158 42.206u ?? 10.933u 0.55339 0.69914 21.103u ?? 10.967u 0.57071 0.71646 10.551u ?? 11.u 0.58779 0.58683 0.14671 ?? 11.011u 0.59342 0.51193 0.22725 ?? 11.022u 0.59902 0.46526 0.27952 ?? 11.033u 0.6046 0.43656 0.3138 ?? 11.044u 0.61015 0.41928 0.33662 ?? 11.063u 0.61932 0.40488 0.3602 ?? 11.081u 0.62842 0.40067 0.3735 ?? 11.1u 0.63742 0.40112 0.38206 ?? 11.119u 0.64635 0.40368 0.38842 ?? 11.137u 0.65518 0.4072 0.39374 ?? 11.158u 0.66509 0.41166 0.39918 ?? 11.179u 0.67488 0.41631 0.40432 ?? 11.2u 0.68455 0.42101 0.40929 ?? 11.25u 0.70711 0.43207 0.42079 ?? 11.3u 0.72897 0.44283 0.4319 ?? 11.35u 0.75011 0.45322 0.44265 ?? 11.4u 0.77051 0.46323 0.45303 ?? 11.5u 0.80902 0.49154 0.23162 ?? 11.506u 0.81106 0.49358 0.20724 ?? 11.511u 0.8131 0.49562 0.18542 ?? 11.515u 0.81451 0.49703 0.17162 ?? 11.519u 0.81592 0.49844 0.15885 ?? 11.559u 0.83039 0.51291 0.067143 ?? 11.6u 0.84433 0.52685 0.02838 ?? 11.641u 0.85771 0.54023 0.011996 ?? 11.7u 0.87631 0.55883 0.0030535 ?? 11.733u 0.8862 0.56872 0.0015267 ?? 11.767u 0.89571 0.57823 763.37u ?? 11.8u 0.90483 0.58735 381.68u ?? 11.833u 0.91355 0.59607 190.84u ?? 11.867u 0.92186 0.60438 95.421u ?? 11.9u 0.92978 0.6123 47.71u ?? 11.933u 0.93728 0.6198 23.855u ?? 11.967u 0.94438 0.6269 11.928u ?? 12.u 0.95106 0.50686 0.12672 ?? 12.011u 0.95319 0.43969 0.19603 ?? 12.022u 0.95528 0.39728 0.24052 ?? 12.033u 0.95732 0.37064 0.26921 ?? 12.044u 0.95931 0.35401 0.28783 ?? 12.063u 0.96253 0.33891 0.30615 ?? 12.081u 0.96562 0.33273 0.31542 ?? 12.1u 0.96858 0.33061 0.3205 ?? 12.119u 0.97141 0.33032 0.32362 ?? 12.137u 0.97411 0.33084 0.32579 ?? 12.156u 0.97667 0.3317 0.3275 ?? 12.178u 0.97958 0.33286 0.32924 ?? 12.2u 0.98229 0.33404 0.33077 ?? 12.233u 0.986 0.3357 0.33282 ?? 12.267u 0.98927 0.33717 0.33463 ?? 12.3u 0.99211 0.33843 0.33621 ?? 12.35u 0.99556 0.33991 0.33818 ?? 12.4u 0.99803 0.34089 0.33966 ?? 12.5u 1. 0.34163 0.17045 ?? 12.51u 0.99998 0.34161 0.13946 ?? 12.52u 0.99992 0.34156 0.1141 ?? 12.527u 0.99986 0.34149 0.099838 ?? 12.533u 0.99978 0.34142 0.087358 ?? 12.6u 0.99803 0.33966 0.017472 ?? 12.667u 0.99452 0.33616 0.0034943 ?? 12.7u 0.99211 0.33375 0.0017472 ?? 12.733u 0.98927 0.33091 873.58u ?? 12.767u 0.986 0.32763 436.79u ?? 12.8u 0.98229 0.32392 218.4u ?? 12.833u 0.97815 0.31978 109.2u ?? 12.867u 0.97358 0.31521 54.599u ?? 12.9u 0.96858 0.31022 27.299u ?? 12.933u 0.96316 0.3048 13.65u ?? 12.967u 0.95732 0.29895 6.8249u ?? 13.u 0.95106 0.23415 0.058542 ?? 13.011u 0.94888 0.20024 0.090273 ?? 13.022u 0.94665 0.17822 0.11006 ?? 13.033u 0.94438 0.16376 0.12225 ?? 13.044u 0.94206 0.15411 0.12959 ?? 13.063u 0.93809 0.14405 0.13568 ?? 13.081u 0.934 0.13825 0.13739 ?? 13.1u 0.92978 0.13437 0.13705 ?? 13.119u 0.92543 0.13133 0.13574 ?? 13.137u 0.92096 0.12866 0.13394 ?? 13.158u 0.91574 0.12577 0.13161 ?? 13.179u 0.91036 0.12291 0.12909 ?? 13.2u 0.90483 0.12002 0.12644 ?? 13.25u 0.89101 0.11287 0.11978 ?? 13.3u 0.87631 0.1053 0.11265 ?? 13.35u 0.86074 0.097299 0.10508 ?? 13.4u 0.84433 0.08888 0.097087 ?? 13.5u 0.80902 0.061776 0.04444 ?? 13.505u 0.80717 0.059925 0.040208 ?? 13.51u 0.80531 0.058067 0.036378 ?? 13.515u 0.80344 0.0562 0.032914 ?? 13.52u 0.80157 0.054326 0.029779 ?? 13.56u 0.78629 0.039047 0.012762 ?? 13.6u 0.77051 0.023272 0.0054696 ?? 13.64u 0.75425 0.0070103 0.0023441 ?? 13.7u 0.72897 -0.018272 586.03u ?? 13.733u 0.71447 -0.032768 293.01u ?? 13.767u 0.69966 -0.047578 146.51u ?? 13.8u 0.68455 -0.062694 73.254u ?? 13.833u 0.66913 -0.07811 36.627u ?? 13.867u 0.65342 -0.09382 18.313u ?? 13.9u 0.63742 -0.10982 9.1567u ?? 13.933u 0.62115 -0.12609 4.5784u ?? 13.967u 0.6046 -0.14264 2.2892u ?? 14.u 0.58779 -0.12756 -0.03189 ?? 14.033u 0.57071 -0.10295 -0.073574 ?? 14.05u 0.56208 -0.10316 -0.081997 ?? 14.067u 0.55339 -0.10547 -0.088374 ?? 14.083u 0.54464 -0.10886 -0.093743 ?? 14.1u 0.53583 -0.11279 -0.098623 ?? 14.133u 0.51803 -0.12136 -0.10785 ?? 14.167u 0.5 -0.13038 -0.11686 ?? 14.2u 0.48175 -0.13957 -0.12592 ?? 14.25u 0.45399 -0.15357 -0.13968 ?? 14.3u 0.42578 -0.16778 -0.15368 ?? 14.4u 0.36812 -0.19682 -0.1823 ?? 14.5u 0.30902 -0.24141 -0.098408 ?? 14.506u 0.3055 -0.24492 -0.087474 ?? 14.512u 0.30198 -0.24845 -0.077754 ?? 14.516u 0.29958 -0.25085 -0.071758 ?? 14.52u 0.29717 -0.25325 -0.066224 ?? 14.56u 0.27302 -0.27741 -0.028309 ?? 14.6u 0.24869 -0.30173 -0.012102 ?? 14.64u 0.22421 -0.32622 -0.0051733 ?? 14.7u 0.18738 -0.36304 -0.0012976 ?? 14.733u 0.16677 -0.38365 -648.82u ?? 14.767u 0.14608 -0.40434 -324.41u ?? 14.8u 0.12533 -0.42509 -162.21u ?? 14.833u 0.10453 -0.4459 -81.103u ?? 14.867u 0.083678 -0.46675 -40.551u ?? 14.9u 0.062791 -0.48763 -20.276u ?? 14.933u 0.041876 -0.50855 -10.138u ?? 14.967u 0.020942 -0.52948 -5.0689u ?? 15.u 66.021p -0.44034 -0.11009 ?? 15.033u -0.020942 -0.32499 -0.24638 ?? 15.05u -0.031411 -0.3145 -0.26734 ?? 15.067u -0.041876 -0.31187 -0.28044 ?? 15.083u -0.052336 -0.31316 -0.2896 ?? 15.1u -0.062791 -0.31642 -0.2968 ?? 15.125u -0.078459 -0.32294 -0.30595 ?? 15.15u -0.094108 -0.33031 -0.31422 ?? 15.175u -0.10973 -0.33797 -0.32219 ?? 15.2u -0.12533 -0.34571 -0.33005 ?? 15.25u -0.15643 -0.36121 -0.34566 ?? 15.3u -0.18738 -0.37664 -0.36117 ?? 15.4u -0.24869 -0.4072 -0.39192 ?? 15.5u -0.30902 -0.45225 -0.2036 ?? 15.506u -0.31253 -0.45576 -0.18098 ?? 15.512u -0.31604 -0.45927 -0.16087 ?? 15.516u -0.31832 -0.46155 -0.14898 ?? 15.519u -0.32061 -0.46384 -0.13797 ?? 15.56u -0.34448 -0.48771 -0.058736 ?? 15.6u -0.36812 -0.51135 -0.025004 ?? 15.64u -0.39154 -0.53477 -0.010644 ?? 15.7u -0.42578 -0.56901 -0.0026846 ?? 15.733u -0.44464 -0.58786 -0.0013423 ?? 15.767u -0.4633 -0.60653 -671.14u ?? 15.8u -0.48175 -0.62498 -335.57u ?? 15.833u -0.5 -0.64323 -167.78u ?? 15.867u -0.51803 -0.66126 -83.892u ?? 15.9u -0.53583 -0.67906 -41.946u ?? 15.933u -0.55339 -0.69662 -20.973u ?? 15.967u -0.57071 -0.71394 -10.487u ?? 16.u -0.58779 -0.58481 -0.14621 ?? 16.011u -0.59342 -0.51019 -0.22647 ?? 16.022u -0.59902 -0.4637 -0.27856 ?? 16.033u -0.6046 -0.43511 -0.31273 ?? 16.044u -0.61015 -0.4179 -0.33548 ?? 16.063u -0.61932 -0.40356 -0.359 ?? 16.081u -0.62842 -0.39938 -0.37227 ?? 16.1u -0.63742 -0.39984 -0.38082 ?? 16.119u -0.64635 -0.40242 -0.38716 ?? 16.137u -0.65518 -0.40594 -0.39248 ?? 16.158u -0.66509 -0.4104 -0.39792 ?? 16.179u -0.67488 -0.41505 -0.40306 ?? 16.2u -0.68455 -0.41975 -0.40803 ?? 16.25u -0.70711 -0.43081 -0.41953 ?? 16.3u -0.72897 -0.44157 -0.43064 ?? 16.35u -0.75011 -0.45196 -0.44139 ?? 16.4u -0.77051 -0.46197 -0.45177 ?? 16.5u -0.80902 -0.49028 -0.23099 ?? 16.506u -0.81106 -0.49232 -0.20667 ?? 16.511u -0.8131 -0.49436 -0.18492 ?? 16.515u -0.81451 -0.49577 -0.17116 ?? 16.519u -0.81592 -0.49718 -0.15842 ?? 16.559u -0.83039 -0.51165 -0.066961 ?? 16.6u -0.84433 -0.52559 -0.028303 ?? 16.641u -0.85771 -0.53897 -0.011963 ?? 16.7u -0.87631 -0.55757 -0.0030452 ?? 16.733u -0.8862 -0.56746 -0.0015226 ?? 16.767u -0.89571 -0.57697 -761.29u ?? 16.8u -0.90483 -0.58609 -380.64u ?? 16.833u -0.91355 -0.59481 -190.32u ?? 16.867u -0.92186 -0.60312 -95.161u ?? 16.9u -0.92978 -0.61104 -47.581u ?? 16.933u -0.93728 -0.61854 -23.79u ?? 16.967u -0.94438 -0.62564 -11.895u ?? 17.u -0.95106 -0.50586 -0.12647 ?? 17.011u -0.95319 -0.43882 -0.19564 ?? 17.022u -0.95528 -0.3965 -0.24005 ?? 17.033u -0.95732 -0.36991 -0.26868 ?? 17.044u -0.95931 -0.35332 -0.28726 ?? 17.063u -0.96253 -0.33825 -0.30555 ?? 17.081u -0.96562 -0.33209 -0.31481 ?? 17.1u -0.96858 -0.32997 -0.31988 ?? 17.119u -0.97141 -0.32969 -0.32299 ?? 17.137u -0.97411 -0.33021 -0.32516 ?? 17.156u -0.97667 -0.33107 -0.32687 ?? 17.178u -0.97958 -0.33223 -0.32861 ?? 17.2u -0.98229 -0.33341 -0.33014 ?? 17.233u -0.986 -0.33507 -0.33219 ?? 17.267u -0.98927 -0.33654 -0.334 ?? 17.3u -0.99211 -0.3378 -0.33558 ?? 17.35u -0.99556 -0.33928 -0.33755 ?? 17.4u -0.99803 -0.34026 -0.33903 ?? 17.5u -1. -0.341 -0.17013 ?? 17.51u -0.99998 -0.34098 -0.1392 ?? 17.52u -0.99992 -0.34093 -0.11389 ?? 17.527u -0.99986 -0.34086 -0.099654 ?? 17.533u -0.99978 -0.34079 -0.087197 ?? 17.6u -0.99803 -0.33903 -0.017439 ?? 17.667u -0.99452 -0.33553 -0.0034879 ?? 17.7u -0.99211 -0.33312 -0.0017439 ?? 17.733u -0.98927 -0.33028 -871.97u ?? 17.767u -0.986 -0.327 -435.98u ?? 17.8u -0.98229 -0.32329 -217.99u ?? 17.833u -0.97815 -0.31915 -109.u ?? 17.867u -0.97358 -0.31458 -54.498u ?? 17.9u -0.96858 -0.30959 -27.249u ?? 17.933u -0.96316 -0.30417 -13.625u ?? 17.967u -0.95732 -0.29832 -6.8123u ?? 18.u -0.95106 -0.23365 -0.058416 ?? 18.011u -0.94888 -0.19981 -0.090078 ?? 18.022u -0.94665 -0.17783 -0.10983 ?? 18.033u -0.94438 -0.1634 -0.12198 ?? 18.044u -0.94206 -0.15376 -0.1293 ?? 18.063u -0.93809 -0.14372 -0.13538 ?? 18.081u -0.934 -0.13793 -0.13708 ?? 18.1u -0.92978 -0.13405 -0.13674 ?? 18.119u -0.92543 -0.13102 -0.13542 ?? 18.137u -0.92096 -0.12834 -0.13363 ?? 18.158u -0.91574 -0.12546 -0.13129 ?? 18.179u -0.91036 -0.1226 -0.12877 ?? 18.2u -0.90483 -0.11971 -0.12613 ?? 18.25u -0.89101 -0.11255 -0.11946 ?? 18.3u -0.87631 -0.10498 -0.11233 ?? 18.35u -0.86074 -0.096984 -0.10477 ?? 18.4u -0.84433 -0.088565 -0.096772 ?? 18.5u -0.80902 -0.061461 -0.044282 ?? 18.505u -0.80717 -0.05961 -0.040065 ?? 18.51u -0.80531 -0.057752 -0.036249 ?? 18.515u -0.80344 -0.055885 -0.032797 ?? 18.52u -0.80157 -0.054011 -0.029673 ?? 18.56u -0.78629 -0.038732 -0.012717 ?? 18.6u -0.77051 -0.022957 -0.0054502 ?? 18.64u -0.75425 -0.0066953 -0.0023358 ?? 18.7u -0.72897 0.018587 -583.95u ?? 18.733u -0.71447 0.033083 -291.98u ?? 18.767u -0.69966 0.047893 -145.99u ?? 18.8u -0.68455 0.063009 -72.994u ?? 18.833u -0.66913 0.078426 -36.497u ?? 18.867u -0.65342 0.094136 -18.249u ?? 18.9u -0.63742 0.11013 -9.1243u ?? 18.933u -0.62115 0.12641 -4.5621u ?? 18.967u -0.6046 0.14296 -2.2811u ?? 19.u -0.58779 0.12782 0.031953 ?? 19.033u -0.57071 0.10313 0.073713 ?? 19.05u -0.56208 0.10333 0.082145 ?? 19.067u -0.55339 0.10564 0.088527 ?? 19.083u -0.54464 0.10902 0.093898 ?? 19.1u -0.53583 0.11295 0.09878 ?? 19.133u -0.51803 0.12152 0.10801 ?? 19.167u -0.5 0.13054 0.11702 ?? 19.2u -0.48175 0.13973 0.12607 ?? 19.25u -0.45399 0.15372 0.13984 ?? 19.3u -0.42578 0.16794 0.15383 ?? 19.4u -0.36812 0.19697 0.18246 ?? 19.5u -0.30902 0.24156 0.098487 ?? 19.506u -0.3055 0.24508 0.087544 ?? 19.512u -0.30198 0.2486 0.077817 ?? 19.516u -0.29958 0.25101 0.071815 ?? 19.52u -0.29717 0.25341 0.066277 ?? 19.56u -0.27302 0.27756 0.028332 ?? 19.6u -0.24869 0.30189 0.012111 ?? 19.64u -0.22421 0.32638 0.0051774 ?? 19.7u -0.18738 0.3632 0.0012987 ?? 19.733u -0.16677 0.38381 649.34u ?? 19.767u -0.14608 0.4045 324.67u ?? 19.8u -0.12533 0.42525 162.33u ?? 19.833u -0.10453 0.44605 81.167u ?? 19.867u -0.083678 0.4669 40.584u ?? 19.9u -0.062791 0.48779 20.292u ?? 19.933u -0.041876 0.50871 10.146u ?? 19.967u -0.020942 0.52964 5.073u ?? 20.u -66.068p 0.44047 0.11012 ?? 20.033u 0.020942 0.32508 0.24645 ?? 20.05u 0.031411 0.31458 0.26741 ?? 20.067u 0.041876 0.31195 0.28051 ?? 20.083u 0.052336 0.31324 0.28968 ?? 20.1u 0.062791 0.3165 0.29688 ?? 20.125u 0.078459 0.32301 0.30603 ?? 20.15u 0.094108 0.33039 0.3143 ?? 20.175u 0.10973 0.33805 0.32227 ?? 20.2u 0.12533 0.34579 0.33013 ?? 20.25u 0.15643 0.36128 0.34573 ?? 20.3u 0.18738 0.37672 0.36125 ?? 20.4u 0.24869 0.40728 0.392 ?? 20.5u 0.30902 0.45232 0.20364 ?? 20.506u 0.31253 0.45584 0.18101 ?? 20.512u 0.31604 0.45935 0.1609 ?? 20.516u 0.31832 0.46163 0.14901 ?? 20.519u 0.32061 0.46392 0.138 ?? 20.56u 0.34448 0.48778 0.058747 ?? 20.6u 0.36812 0.51143 0.025009 ?? 20.64u 0.39154 0.53484 0.010647 ?? 20.7u 0.42578 0.56909 0.0026851 ?? 20.733u 0.44464 0.58794 0.0013425 ?? 20.767u 0.4633 0.6066 671.27u ?? 20.8u 0.48175 0.62506 335.63u ?? 20.833u 0.5 0.64331 167.82u ?? 20.867u 0.51803 0.66133 83.909u ?? 20.9u 0.53583 0.67913 41.954u ?? 20.933u 0.55339 0.6967 20.977u ?? 20.967u 0.57071 0.71402 10.489u ?? 21.u 0.58779 0.73109 5.2443u ?? 21.033u 0.6046 0.59833 0.14958 ?? 21.067u 0.62115 0.43207 0.33239 ?? 21.083u 0.62932 0.4143 0.35833 ?? 21.1u 0.63742 0.4074 0.37334 ?? 21.117u 0.64546 0.40591 0.38286 ?? 21.133u 0.65342 0.40712 0.38962 ?? 21.156u 0.66393 0.41062 0.39662 ?? 21.178u 0.6743 0.41509 0.40252 ?? 21.2u 0.68455 0.41989 0.40797 ?? 21.233u 0.69966 0.42721 0.41576 ?? 21.267u 0.71447 0.43448 0.4233 ?? 21.3u 0.72897 0.44161 0.43067 ?? 21.35u 0.75011 0.452 0.44143 ?? 21.4u 0.77051 0.46201 0.45181 ?? 21.5u 0.80902 0.48088 0.47145 ?? 21.6u 0.84433 0.50676 0.24044 ?? 21.607u 0.84656 0.50899 0.21039 ?? 21.613u 0.84879 0.51122 0.18409 ?? 21.618u 0.85022 0.51265 0.1688 ?? 21.622u 0.85165 0.51408 0.15477 ?? 21.661u 0.86424 0.52667 0.067923 ?? 21.7u 0.87631 0.53874 0.029808 ?? 21.739u 0.88785 0.55028 0.013081 ?? 21.8u 0.90483 0.56726 0.0031687 ?? 21.833u 0.91355 0.57598 0.0015844 ?? 21.867u 0.92186 0.58429 792.18u ?? 21.9u 0.92978 0.59221 396.09u ?? 21.933u 0.93728 0.59971 198.04u ?? 21.967u 0.94438 0.60681 99.022u ?? 22.u 0.95106 0.61349 49.511u ?? 22.033u 0.95732 0.49581 0.12398 ?? 22.042u 0.95882 0.44408 0.1772 ?? 22.05u 0.96029 0.40732 0.21543 ?? 22.056u 0.96138 0.38703 0.23681 ?? 22.062u 0.96246 0.37135 0.25356 ?? 22.081u 0.96559 0.34193 0.28612 ?? 22.1u 0.96858 0.3293 0.30175 ?? 22.119u 0.97145 0.32426 0.30965 ?? 22.137u 0.97417 0.32263 0.31401 ?? 22.156u 0.97677 0.32252 0.31671 ?? 22.175u 0.97922 0.32306 0.31863 ?? 22.2u 0.98229 0.32413 0.32062 ?? 22.225u 0.98511 0.32531 0.32226 ?? 22.25u 0.98769 0.32644 0.32371 ?? 22.275u 0.99002 0.32748 0.32501 ?? 22.3u 0.99211 0.3284 0.32618 ?? 22.35u 0.99556 0.32987 0.32815 ?? 22.4u 0.99803 0.33086 0.32963 ?? 22.5u 1. 0.33135 0.33111 ?? 22.6u 0.99803 0.32913 0.16568 ?? 22.612u 0.9975 0.32861 0.12886 ?? 22.625u 0.99692 0.32802 0.10022 ?? 22.637u 0.99627 0.32738 0.077952 ?? 22.65u 0.99556 0.32667 0.06063 ?? 22.7u 0.99211 0.32322 0.02021 ?? 22.75u 0.98769 0.3188 0.0067366 ?? 22.8u 0.98229 0.31339 0.0022455 ?? 22.85u 0.97592 0.30702 748.51u ?? 22.875u 0.97237 0.30348 449.11u ?? 22.9u 0.96858 0.29969 269.46u ?? 22.933u 0.96316 0.29427 134.73u ?? 22.967u 0.95732 0.28843 67.366u ?? 23.u 0.95106 0.28216 33.683u ?? 23.033u 0.94438 0.22039 0.055115 ?? 23.042u 0.94264 0.19517 0.078602 ?? 23.05u 0.94088 0.17688 0.095129 ?? 23.058u 0.93909 0.16354 0.10668 ?? 23.067u 0.93728 0.15374 0.11467 ?? 23.083u 0.93358 0.14073 0.12398 ?? 23.1u 0.92978 0.13322 0.12769 ?? 23.117u 0.92587 0.12842 0.12858 ?? 23.133u 0.92186 0.12495 0.12804 ?? 23.15u 0.91775 0.12213 0.12676 ?? 23.167u 0.91355 0.1196 0.12507 ?? 23.183u 0.90924 0.1172 0.12317 ?? 23.2u 0.90483 0.11483 0.12112 ?? 23.233u 0.89571 0.11006 0.11678 ?? 23.267u 0.8862 0.10514 0.11219 ?? 23.3u 0.87631 0.10004 0.10739 ?? 23.35u 0.86074 0.092045 0.099827 ?? 23.4u 0.84433 0.083625 0.091832 ?? 23.5u 0.80902 0.065556 0.074591 ?? 23.6u 0.77051 0.036087 0.032778 ?? 23.606u 0.768 0.033578 0.028922 ?? 23.612u 0.76548 0.031057 0.025519 ?? 23.617u 0.76371 0.029285 0.02338 ?? 23.621u 0.76193 0.027508 0.02142 ?? 23.7u 0.72897 -0.0054577 0.0025464 ?? 23.75u 0.70711 -0.02732 848.81u ?? 23.775u 0.69591 -0.038514 509.28u ?? 23.8u 0.68455 -0.049879 305.57u ?? 23.825u 0.67301 -0.061414 183.34u ?? 23.862u 0.6554 -0.079026 83.337u ?? 23.9u 0.63742 -0.097002 37.881u ?? 23.937u 0.61909 -0.11533 17.218u ?? 23.975u 0.60042 -0.13401 7.8266u ?? 24.u 0.58779 -0.14664 4.6959u ?? 24.033u 0.57071 -0.13097 -0.03274 ?? 24.044u 0.56497 -0.11833 -0.051122 ?? 24.056u 0.55919 -0.11136 -0.063868 ?? 24.067u 0.55339 -0.108 -0.07303 ?? 24.078u 0.54756 -0.10694 -0.079919 ?? 24.1u 0.53583 -0.10856 -0.090039 ?? 24.122u 0.52399 -0.11288 -0.097559 ?? 24.144u 0.51204 -0.11827 -0.10411 ?? 24.172u 0.49697 -0.12559 -0.11186 ?? 24.2u 0.48175 -0.13319 -0.11948 ?? 24.25u 0.45399 -0.14716 -0.13328 ?? 24.3u 0.42578 -0.16137 -0.14727 ?? 24.35u 0.39715 -0.1758 -0.16148 ?? 24.4u 0.36812 -0.19041 -0.17589 ?? 24.5u 0.30902 -0.22014 -0.20527 ?? 24.6u 0.24869 -0.2656 -0.11007 ?? 24.606u 0.24511 -0.26918 -0.097838 ?? 24.612u 0.24152 -0.27276 -0.086967 ?? 24.616u 0.23918 -0.2751 -0.080541 ?? 24.619u 0.23684 -0.27744 -0.07459 ?? 24.66u 0.21218 -0.30211 -0.031753 ?? 24.7u 0.18738 -0.32691 -0.013518 ?? 24.74u 0.16246 -0.35182 -0.0057545 ?? 24.8u 0.12533 -0.38895 -0.0014513 ?? 24.833u 0.10453 -0.40976 -725.65u ?? 24.867u 0.083678 -0.43061 -362.83u ?? 24.9u 0.062791 -0.4515 -181.41u ?? 24.933u 0.041876 -0.47241 -90.706u ?? 24.967u 0.020942 -0.49334 -45.353u ?? 25.u 29.f -0.51429 -22.677u ?? 25.033u -0.020942 -0.42819 -0.10706 ?? 25.044u -0.027922 -0.37614 -0.16608 ?? 25.056u -0.034899 -0.34429 -0.20491 ?? 25.063u -0.03955 -0.33066 -0.22319 ?? 25.07u -0.044201 -0.32114 -0.23736 ?? 25.085u -0.053498 -0.31023 -0.25757 ?? 25.1u -0.062791 -0.30642 -0.27067 ?? 25.12u -0.075327 -0.30695 -0.28268 ?? 25.147u -0.092023 -0.3123 -0.29402 ?? 25.173u -0.10869 -0.31972 -0.30328 ?? 25.2u -0.12533 -0.32774 -0.31189 ?? 25.227u -0.14194 -0.33595 -0.32029 ?? 25.263u -0.1647 -0.34727 -0.33173 ?? 25.3u -0.18738 -0.35858 -0.3431 ?? 25.35u -0.21814 -0.37391 -0.35853 ?? 25.4u -0.24869 -0.38913 -0.37386 ?? 25.5u -0.30902 -0.41917 -0.40415 ?? 25.6u -0.36812 -0.46326 -0.20958 ?? 25.606u -0.37156 -0.46669 -0.1863 ?? 25.612u -0.37499 -0.47012 -0.1656 ?? 25.616u -0.37722 -0.47235 -0.15336 ?? 25.619u -0.37945 -0.47459 -0.14203 ?? 25.66u -0.40274 -0.49788 -0.060463 ?? 25.7u -0.42578 -0.52091 -0.025739 ?? 25.74u -0.44854 -0.54367 -0.010957 ?? 25.8u -0.48175 -0.57689 -0.0027635 ?? 25.833u -0.5 -0.59513 -0.0013817 ?? 25.867u -0.51803 -0.61316 -690.87u ?? 25.9u -0.53583 -0.63096 -345.43u ?? 25.933u -0.55339 -0.64852 -172.72u ?? 25.967u -0.57071 -0.66585 -86.359u ?? 26.u -0.58779 -0.68292 -43.179u ?? 26.033u -0.6046 -0.55979 -0.13997 ?? 26.042u -0.60876 -0.50368 -0.20024 ?? 26.05u -0.61291 -0.46418 -0.24389 ?? 26.058u -0.61704 -0.43655 -0.27565 ?? 26.067u -0.62115 -0.41738 -0.29893 ?? 26.083u -0.62932 -0.39492 -0.32956 ?? 26.1u -0.63742 -0.38567 -0.34692 ?? 26.117u -0.64546 -0.38301 -0.35761 ?? 26.144u -0.65869 -0.38481 -0.36904 ?? 26.172u -0.67172 -0.38988 -0.377 ?? 26.2u -0.68455 -0.39582 -0.38389 ?? 26.228u -0.69717 -0.40192 -0.3904 ?? 26.256u -0.70957 -0.408 -0.39673 ?? 26.3u -0.72897 -0.41753 -0.4066 ?? 26.35u -0.75011 -0.42792 -0.41735 ?? 26.4u -0.77051 -0.43794 -0.42774 ?? 26.5u -0.80902 -0.45681 -0.44737 ?? 26.6u -0.84433 -0.48268 -0.2284 ?? 26.607u -0.84656 -0.48492 -0.19985 ?? 26.613u -0.84879 -0.48714 -0.17487 ?? 26.618u -0.85022 -0.48858 -0.16035 ?? 26.622u -0.85165 -0.49001 -0.14703 ?? 26.661u -0.86424 -0.50259 -0.064522 ?? 26.7u -0.87631 -0.51466 -0.028315 ?? 26.739u -0.88785 -0.5262 -0.012426 ?? 26.8u -0.90483 -0.54318 -0.0030101 ?? 26.833u -0.91355 -0.5519 -0.001505 ?? 26.867u -0.92186 -0.56022 -752.52u ?? 26.9u -0.92978 -0.56813 -376.26u ?? 26.933u -0.93728 -0.57564 -188.13u ?? 26.967u -0.94438 -0.58273 -94.065u ?? 27.u -0.95106 -0.58941 -47.032u ?? 27.033u -0.95732 -0.47655 -0.11916 ?? 27.042u -0.95882 -0.42688 -0.17032 ?? 27.05u -0.96029 -0.3916 -0.20708 ?? 27.058u -0.96174 -0.36658 -0.23354 ?? 27.067u -0.96316 -0.3489 -0.25265 ?? 27.083u -0.96593 -0.32725 -0.27706 ?? 27.1u -0.96858 -0.31703 -0.28994 ?? 27.117u -0.97113 -0.31249 -0.29703 ?? 27.137u -0.97417 -0.31054 -0.30202 ?? 27.158u -0.97705 -0.31048 -0.30495 ?? 27.179u -0.97975 -0.31116 -0.30697 ?? 27.2u -0.98229 -0.31209 -0.30858 ?? 27.221u -0.98466 -0.31308 -0.30996 ?? 27.247u -0.98741 -0.31428 -0.31152 ?? 27.274u -0.9899 -0.31538 -0.3129 ?? 27.3u -0.99211 -0.31636 -0.31414 ?? 27.35u -0.99556 -0.31784 -0.31611 ?? 27.4u -0.99803 -0.31882 -0.31759 ?? 27.5u -1. -0.31932 -0.31907 ?? 27.6u -0.99803 -0.3171 -0.15966 ?? 27.612u -0.9975 -0.31657 -0.12418 ?? 27.625u -0.99692 -0.31599 -0.096583 ?? 27.637u -0.99627 -0.31534 -0.07512 ?? 27.65u -0.99556 -0.31463 -0.058427 ?? 27.7u -0.99211 -0.31118 -0.019476 ?? 27.75u -0.98769 -0.30676 -0.0064919 ?? 27.8u -0.98229 -0.30136 -0.002164 ?? 27.85u -0.97592 -0.29499 -721.32u ?? 27.875u -0.97237 -0.29144 -432.79u ?? 27.9u -0.96858 -0.28765 -259.68u ?? 27.933u -0.96316 -0.28223 -129.84u ?? 27.967u -0.95732 -0.27639 -64.919u ?? 28.u -0.95106 -0.27013 -32.459u ?? 28.033u -0.94438 -0.21076 -0.052706 ?? 28.042u -0.94264 -0.18657 -0.075162 ?? 28.05u -0.94088 -0.16902 -0.090952 ?? 28.058u -0.93909 -0.15621 -0.10198 ?? 28.067u -0.93728 -0.14678 -0.10959 ?? 28.083u -0.93358 -0.13424 -0.11843 ?? 28.1u -0.92978 -0.12696 -0.12191 ?? 28.117u -0.92587 -0.12228 -0.12268 ?? 28.133u -0.92186 -0.11887 -0.12208 ?? 28.15u -0.91775 -0.11608 -0.12077 ?? 28.167u -0.91355 -0.11357 -0.11907 ?? 28.183u -0.90924 -0.11117 -0.11715 ?? 28.2u -0.90483 -0.10881 -0.11511 ?? 28.233u -0.89571 -0.10404 -0.11077 ?? 28.267u -0.8862 -0.099122 -0.10617 ?? 28.3u -0.87631 -0.094025 -0.10137 ?? 28.4u -0.84433 -0.077604 -0.085814 ?? 28.5u -0.80902 -0.059537 -0.068571 ?? 28.6u -0.77051 -0.030067 -0.029769 ?? 28.607u -0.76784 -0.02739 -0.026048 ?? 28.613u -0.76515 -0.0247 -0.022792 ?? 28.618u -0.76339 -0.022944 -0.020898 ?? 28.622u -0.76163 -0.021183 -0.019162 ?? 28.661u -0.74552 -0.0050763 -0.0084094 ?? 28.7u -0.72897 0.011478 -0.0036904 ?? 28.739u -0.71198 0.028469 -0.0016195 ?? 28.8u -0.68455 0.055899 -392.31u ?? 28.833u -0.66913 0.071316 -196.16u ?? 28.867u -0.65342 0.087026 -98.078u ?? 28.9u -0.63742 0.10302 -49.039u ?? 28.933u -0.62115 0.1193 -24.52u ?? 28.967u -0.6046 0.13585 -12.26u ?? 29.u -0.58779 0.15266 -6.1299u ?? 29.033u -0.57071 0.13579 0.033943 ?? 29.044u -0.56497 0.12249 0.052982 ?? 29.056u -0.55919 0.1151 0.066146 ?? 29.067u -0.55339 0.11148 0.075574 ?? 29.078u -0.54756 0.11025 0.082632 ?? 29.1u -0.53583 0.11168 0.092934 ?? 29.122u -0.52399 0.11593 0.10052 ?? 29.144u -0.51204 0.1213 0.1071 ?? 29.172u -0.49697 0.12861 0.11486 ?? 29.2u -0.48175 0.1362 0.12249 ?? 29.233u -0.4633 0.14548 0.13166 ?? 29.3u -0.42578 0.16438 0.15028 ?? 29.367u -0.38752 0.18366 0.16927 ?? 29.4u -0.36812 0.19341 0.1789 ?? 29.5u -0.30902 0.22315 0.20828 ?? 29.6u -0.24869 0.26861 0.11157 ?? 29.606u -0.24531 0.27199 0.099828 ?? 29.611u -0.24192 0.27537 0.08932 ?? 29.615u -0.23957 0.27773 0.082673 ?? 29.619u -0.23721 0.28009 0.07652 ?? 29.659u -0.21236 0.30493 0.032344 ?? 29.7u -0.18738 0.32992 0.013671 ?? 29.741u -0.16228 0.35502 0.0057785 ?? 29.8u -0.12533 0.39196 0.0014709 ?? 29.833u -0.10453 0.41277 735.44u ?? 29.867u -0.083678 0.43362 367.72u ?? 29.9u -0.062791 0.45451 183.86u ?? 29.933u -0.041876 0.47542 91.93u ?? 29.967u -0.020942 0.49635 45.965u ?? 30.u -58.f 0.5173 22.983u ?? 30.033u 0.020942 0.43059 0.10766 ?? 30.044u 0.027922 0.37822 0.16701 ?? 30.056u 0.034899 0.34616 0.20605 ?? 30.063u 0.03955 0.33244 0.22443 ?? 30.07u 0.044201 0.32285 0.23866 ?? 30.085u 0.053498 0.31184 0.25897 ?? 30.1u 0.062791 0.30799 0.27212 ?? 30.12u 0.075327 0.30848 0.28416 ?? 30.147u 0.092023 0.31381 0.29552 ?? 30.173u 0.10869 0.32122 0.30478 ?? 30.2u 0.12533 0.32925 0.31339 ?? 30.227u 0.14194 0.33745 0.3218 ?? 30.263u 0.1647 0.34878 0.33324 ?? 30.3u 0.18738 0.36008 0.34461 ?? 30.35u 0.21814 0.37542 0.36004 ?? 30.4u 0.24869 0.39064 0.37536 ?? 30.5u 0.30902 0.42067 0.40566 ?? 30.6u 0.36812 0.46476 0.21034 ?? 30.606u 0.37156 0.4682 0.18697 ?? 30.612u 0.37499 0.47163 0.16619 ?? 30.616u 0.37722 0.47386 0.15391 ?? 30.619u 0.37945 0.47609 0.14254 ?? 30.66u 0.40274 0.49938 0.06068 ?? 30.7u 0.42578 0.52242 0.025832 ?? 30.74u 0.44854 0.54518 0.010997 ?? 30.8u 0.48175 0.57839 0.0027734 ?? 30.833u 0.5 0.59664 0.0013867 ?? 30.867u 0.51803 0.61467 693.35u ?? 30.9u 0.53583 0.63246 346.67u ?? 30.933u 0.55339 0.65003 173.34u ?? 30.967u 0.57071 0.66735 86.669u ?? 31.u 0.58779 0.68442 43.334u ?? 31.033u 0.6046 0.561 0.14027 ?? 31.042u 0.60876 0.50476 0.20067 ?? 31.05u 0.61291 0.46517 0.24441 ?? 31.058u 0.61704 0.43746 0.27624 ?? 31.067u 0.62115 0.41825 0.29957 ?? 31.083u 0.62932 0.39573 0.33026 ?? 31.1u 0.63742 0.38645 0.34764 ?? 31.117u 0.64546 0.38378 0.35835 ?? 31.144u 0.65869 0.38556 0.36979 ?? 31.172u 0.67172 0.39064 0.37775 ?? 31.2u 0.68455 0.39657 0.38464 ?? 31.228u 0.69717 0.40268 0.39116 ?? 31.256u 0.70957 0.40875 0.39749 ?? 31.3u 0.72897 0.41828 0.40735 ?? 31.35u 0.75011 0.42867 0.4181 ?? 31.4u 0.77051 0.43869 0.42849 ?? 31.5u 0.80902 0.45756 0.44812 ?? 31.6u 0.84433 0.48344 0.22878 ?? 31.607u 0.84656 0.48567 0.20018 ?? 31.613u 0.84879 0.48789 0.17516 ?? 31.618u 0.85022 0.48933 0.16061 ?? 31.622u 0.85165 0.49076 0.14727 ?? 31.661u 0.86424 0.50335 0.064628 ?? 31.7u 0.87631 0.51541 0.028362 ?? 31.739u 0.88785 0.52696 0.012447 ?? 31.8u 0.90483 0.54393 0.003015 ?? 31.833u 0.91355 0.55265 0.0015075 ?? 31.867u 0.92186 0.56097 753.76u ?? 31.9u 0.92978 0.56888 376.88u ?? 31.933u 0.93728 0.57639 188.44u ?? 31.967u 0.94438 0.58348 94.22u ?? 32.u 0.95106 0.59016 47.11u ?? 32.033u 0.95732 0.47715 0.11931 ?? 32.042u 0.95882 0.42742 0.17054 ?? 32.05u 0.96029 0.39209 0.20734 ?? 32.058u 0.96174 0.36704 0.23384 ?? 32.067u 0.96316 0.34933 0.25297 ?? 32.083u 0.96593 0.32766 0.2774 ?? 32.1u 0.96858 0.31742 0.2903 ?? 32.117u 0.97113 0.31287 0.2974 ?? 32.137u 0.97417 0.31091 0.3024 ?? 32.158u 0.97705 0.31086 0.30532 ?? 32.179u 0.97975 0.31154 0.30735 ?? 32.2u 0.98229 0.31247 0.30896 ?? 32.221u 0.98466 0.31346 0.31034 ?? 32.247u 0.98741 0.31466 0.31189 ?? 32.274u 0.9899 0.31576 0.31328 ?? 32.3u 0.99211 0.31674 0.31452 ?? 32.35u 0.99556 0.31821 0.31649 ?? 32.4u 0.99803 0.3192 0.31797 ?? 32.5u 1. 0.31969 0.31945 ?? 32.6u 0.99803 0.31747 0.15985 ?? 32.612u 0.9975 0.31695 0.12432 ?? 32.625u 0.99692 0.31636 0.096697 ?? 32.637u 0.99627 0.31572 0.075209 ?? 32.65u 0.99556 0.31501 0.058496 ?? 32.7u 0.99211 0.31156 0.019499 ?? 32.75u 0.98769 0.30713 0.0064995 ?? 32.8u 0.98229 0.30173 0.0021665 ?? 32.85u 0.97592 0.29536 722.17u ?? 32.875u 0.97237 0.29182 433.3u ?? 32.9u 0.96858 0.28803 259.98u ?? 32.933u 0.96316 0.28261 129.99u ?? 32.967u 0.95732 0.27677 64.995u ?? 33.u 0.95106 0.2705 32.498u ?? 33.033u 0.94438 0.21106 0.052782 ?? 33.042u 0.94264 0.18684 0.075269 ?? 33.05u 0.94088 0.16927 0.091082 ?? 33.058u 0.93909 0.15644 0.10212 ?? 33.067u 0.93728 0.147 0.10975 ?? 33.083u 0.93358 0.13445 0.1186 ?? 33.1u 0.92978 0.12716 0.12209 ?? 33.117u 0.92587 0.12247 0.12287 ?? 33.133u 0.92186 0.11906 0.12227 ?? 33.15u 0.91775 0.11627 0.12095 ?? 33.167u 0.91355 0.11376 0.11926 ?? 33.183u 0.90924 0.11136 0.11734 ?? 33.2u 0.90483 0.109 0.1153 ?? 33.233u 0.89571 0.10423 0.11095 ?? 33.267u 0.8862 0.09931 0.10636 ?? 33.3u 0.87631 0.094213 0.10156 ?? 33.4u 0.84433 0.077792 0.086003 ?? 33.5u 0.80902 0.059725 0.068759 ?? 33.6u 0.77051 0.030255 0.029863 ?? 33.607u 0.76784 0.027578 0.02613 ?? 33.613u 0.76515 0.024888 0.022864 ?? 33.618u 0.76339 0.023132 0.020964 ?? 33.622u 0.76163 0.021371 0.019223 ?? 33.661u 0.74552 0.0052644 0.008436 ?? 33.7u 0.72897 -0.011289 0.0037021 ?? 33.739u 0.71198 -0.028281 0.0016247 ?? 33.8u 0.68455 -0.055711 393.55u ?? 33.833u 0.66913 -0.071128 196.78u ?? 33.867u 0.65342 -0.086838 98.388u ?? 33.9u 0.63742 -0.10283 49.194u ?? 33.933u 0.62115 -0.11911 24.597u ?? 33.967u 0.6046 -0.13566 12.299u ?? 34.u 0.58779 -0.15247 6.1493u ?? 34.033u 0.57071 -0.13563 -0.033906 ?? 34.044u 0.56497 -0.12236 -0.052924 ?? 34.056u 0.55919 -0.11499 -0.066074 ?? 34.067u 0.55339 -0.11137 -0.075495 ?? 34.078u 0.54756 -0.11014 -0.082547 ?? 34.1u 0.53583 -0.11158 -0.092844 ?? 34.122u 0.52399 -0.11584 -0.10043 ?? 34.144u 0.51204 -0.1212 -0.10701 ?? 34.172u 0.49697 -0.12851 -0.11477 ?? 34.2u 0.48175 -0.13611 -0.12239 ?? 34.233u 0.4633 -0.14539 -0.13157 ?? 34.3u 0.42578 -0.16429 -0.15018 ?? 34.367u 0.38752 -0.18356 -0.16918 ?? 34.4u 0.36812 -0.19332 -0.17881 ?? 34.5u 0.30902 -0.23792 -0.09666 ?? 34.504u 0.30653 -0.24041 -0.088927 ?? 34.508u 0.30403 -0.2429 -0.081813 ?? 34.513u 0.30154 -0.2454 -0.075268 ?? 34.517u 0.29904 -0.24789 -0.069247 ?? 34.558u 0.27396 -0.27297 -0.028513 ?? 34.6u 0.24869 -0.29824 -0.011741 ?? 34.642u 0.22325 -0.32368 -0.0048344 ?? 34.7u 0.18738 -0.35955 -0.0012722 ?? 34.733u 0.16677 -0.38016 -636.11u ?? 34.767u 0.14608 -0.40085 -318.06u ?? 34.8u 0.12533 -0.4216 -159.03u ?? 34.833u 0.10453 -0.4424 -79.514u ?? 34.867u 0.083678 -0.46326 -39.757u ?? 34.9u 0.062791 -0.48414 -19.878u ?? 34.933u 0.041876 -0.50506 -9.9392u ?? 34.967u 0.020942 -0.52599 -4.9696u ?? 35.u 65.629p -0.43755 -0.10939 ?? 35.033u -0.020942 -0.32304 -0.24484 ?? 35.05u -0.031411 -0.31265 -0.2657 ?? 35.067u -0.041876 -0.31007 -0.27874 ?? 35.083u -0.052336 -0.31139 -0.28788 ?? 35.1u -0.062791 -0.31466 -0.29507 ?? 35.125u -0.078459 -0.32119 -0.30421 ?? 35.15u -0.094108 -0.32857 -0.31248 ?? 35.175u -0.10973 -0.33623 -0.32044 ?? 35.2u -0.12533 -0.34396 -0.32831 ?? 35.25u -0.15643 -0.35946 -0.34391 ?? 35.3u -0.18738 -0.3749 -0.35942 ?? 35.4u -0.24869 -0.40545 -0.39017 ?? 35.5u -0.30902 -0.4505 -0.20273 ?? 35.506u -0.31253 -0.45401 -0.1802 ?? 35.512u -0.31604 -0.45752 -0.16018 ?? 35.516u -0.31832 -0.45981 -0.14834 ?? 35.519u -0.32061 -0.46209 -0.13738 ?? 35.56u -0.34448 -0.48596 -0.058484 ?? 35.6u -0.36812 -0.50961 -0.024897 ?? 35.64u -0.39154 -0.53302 -0.010599 ?? 35.7u -0.42578 -0.56726 -0.0026731 ?? 35.733u -0.44464 -0.58612 -0.0013365 ?? 35.767u -0.4633 -0.60478 -668.26u ?? 35.8u -0.48175 -0.62324 -334.13u ?? 35.833u -0.5 -0.64148 -167.07u ?? 35.867u -0.51803 -0.65951 -83.533u ?? 35.9u -0.53583 -0.67731 -41.766u ?? 35.933u -0.55339 -0.69488 -20.883u ?? 35.967u -0.57071 -0.7122 -10.442u ?? 36.u -0.58779 -0.58342 -0.14586 ?? 36.011u -0.59342 -0.50898 -0.22593 ?? 36.022u -0.59902 -0.46261 -0.2779 ?? 36.033u -0.6046 -0.4341 -0.31199 ?? 36.044u -0.61015 -0.41694 -0.3347 ?? 36.063u -0.61932 -0.40265 -0.35816 ?? 36.081u -0.62842 -0.39849 -0.37142 ?? 36.1u -0.63742 -0.39896 -0.37995 ?? 36.119u -0.64635 -0.40154 -0.3863 ?? 36.137u -0.65518 -0.40506 -0.39161 ?? 36.158u -0.66509 -0.40953 -0.39705 ?? 36.179u -0.67488 -0.41418 -0.40219 ?? 36.2u -0.68455 -0.41888 -0.40716 ?? 36.25u -0.70711 -0.42994 -0.41866 ?? 36.3u -0.72897 -0.44069 -0.42976 ?? 36.35u -0.75011 -0.45109 -0.44052 ?? 36.4u -0.77051 -0.4611 -0.4509 ?? 36.5u -0.80902 -0.4894 -0.23055 ?? 36.506u -0.81106 -0.49145 -0.20628 ?? 36.511u -0.8131 -0.49349 -0.18457 ?? 36.515u -0.81451 -0.4949 -0.17083 ?? 36.519u -0.81592 -0.49631 -0.15812 ?? 36.559u -0.83039 -0.51078 -0.066834 ?? 36.6u -0.84433 -0.52472 -0.02825 ?? 36.641u -0.85771 -0.5381 -0.011941 ?? 36.7u -0.87631 -0.55669 -0.0030394 ?? 36.733u -0.8862 -0.56659 -0.0015197 ?? 36.767u -0.89571 -0.5761 -759.85u ?? 36.8u -0.90483 -0.58521 -379.93u ?? 36.833u -0.91355 -0.59393 -189.96u ?? 36.867u -0.92186 -0.60225 -94.981u ?? 36.9u -0.92978 -0.61016 -47.491u ?? 36.933u -0.93728 -0.61767 -23.745u ?? 36.967u -0.94438 -0.62476 -11.873u ?? 37.u -0.95106 -0.50516 -0.1263 ?? 37.011u -0.95319 -0.43821 -0.19537 ?? 37.022u -0.95528 -0.39596 -0.23972 ?? 37.033u -0.95732 -0.36941 -0.26831 ?? 37.044u -0.95931 -0.35284 -0.28687 ?? 37.063u -0.96253 -0.33779 -0.30514 ?? 37.081u -0.96562 -0.33164 -0.31438 ?? 37.1u -0.96858 -0.32953 -0.31944 ?? 37.119u -0.97141 -0.32925 -0.32255 ?? 37.137u -0.97411 -0.32977 -0.32473 ?? 37.156u -0.97667 -0.33063 -0.32644 ?? 37.178u -0.97958 -0.3318 -0.32817 ?? 37.2u -0.98229 -0.33298 -0.32971 ?? 37.233u -0.986 -0.33464 -0.33176 ?? 37.267u -0.98927 -0.3361 -0.33356 ?? 37.3u -0.99211 -0.33736 -0.33515 ?? 37.35u -0.99556 -0.33884 -0.33712 ?? 37.4u -0.99803 -0.33983 -0.33859 ?? 37.5u -1. -0.34057 -0.16991 ?? 37.51u -0.99998 -0.34055 -0.13902 ?? 37.52u -0.99992 -0.34049 -0.11374 ?? 37.527u -0.99986 -0.34043 -0.099526 ?? 37.533u -0.99978 -0.34035 -0.087085 ?? 37.6u -0.99803 -0.33859 -0.017417 ?? 37.667u -0.99452 -0.33509 -0.0034834 ?? 37.7u -0.99211 -0.33268 -0.0017417 ?? 37.733u -0.98927 -0.32984 -870.85u ?? 37.767u -0.986 -0.32656 -435.43u ?? 37.783u -0.9842 -0.32476 -311.02u ?? 37.8u -0.98229 -0.32286 -222.16u ?? 37.833u -0.97815 -0.31872 -111.08u ?? 37.867u -0.97358 -0.31415 -55.539u ?? 37.9u -0.96858 -0.30915 -27.769u ?? 37.95u -0.96029 -0.30086 -9.2565u ?? 38.u -0.95106 -0.21872 -0.07291 ?? 38.017u -0.94777 -0.17939 -0.10895 ?? 38.033u -0.94438 -0.15881 -0.12614 ?? 38.05u -0.94088 -0.14758 -0.13387 ?? 38.067u -0.93728 -0.14101 -0.13685 ?? 38.083u -0.93358 -0.13673 -0.13742 ?? 38.1u -0.92978 -0.13357 -0.13678 ?? 38.117u -0.92587 -0.13096 -0.13549 ?? 38.138u -0.92085 -0.128 -0.13342 ?? 38.169u -0.91301 -0.12376 -0.12983 ?? 38.2u -0.90483 -0.11948 -0.12592 ?? 38.25u -0.89101 -0.11233 -0.11924 ?? 38.3u -0.87631 -0.10476 -0.11211 ?? 38.35u -0.86074 -0.096766 -0.10455 ?? 38.4u -0.84433 -0.088347 -0.096554 ?? 38.5u -0.80902 -0.061243 -0.044173 ?? 38.505u -0.80717 -0.059392 -0.039966 ?? 38.51u -0.80531 -0.057534 -0.03616 ?? 38.515u -0.80344 -0.055667 -0.032716 ?? 38.52u -0.80157 -0.053793 -0.0296 ?? 38.56u -0.78629 -0.038514 -0.012686 ?? 38.6u -0.77051 -0.022739 -0.0054368 ?? 38.64u -0.75425 -0.0064772 -0.0023301 ?? 38.7u -0.72897 0.018806 -582.51u ?? 38.733u -0.71447 0.033302 -291.26u ?? 38.767u -0.69966 0.048111 -145.63u ?? 38.8u -0.68455 0.063227 -72.814u ?? 38.833u -0.66913 0.078644 -36.407u ?? 38.867u -0.65342 0.094354 -18.204u ?? 38.9u -0.63742 0.11035 -9.1018u ?? 38.933u -0.62115 0.12663 -4.5509u ?? 38.967u -0.6046 0.14318 -2.2754u ?? 39.u -0.58779 0.12799 0.031997 ?? 39.033u -0.57071 0.10325 0.073809 ?? 39.05u -0.56208 0.10344 0.082248 ?? 39.067u -0.55339 0.10575 0.088633 ?? 39.083u -0.54464 0.10913 0.094006 ?? 39.1u -0.53583 0.11306 0.098888 ?? 39.133u -0.51803 0.12163 0.10812 ?? 39.167u -0.5 0.13065 0.11713 ?? 39.2u -0.48175 0.13984 0.12618 ?? 39.25u -0.45399 0.15383 0.13995 ?? 39.3u -0.42578 0.16805 0.15394 ?? 39.4u -0.36812 0.19708 0.18257 ?? 39.5u -0.30902 0.24167 0.098541 ?? 39.506u -0.3055 0.24519 0.087592 ?? 39.512u -0.30198 0.24871 0.07786 ?? 39.516u -0.29958 0.25112 0.071855 ?? 39.52u -0.29717 0.25352 0.066314 ?? 39.56u -0.27302 0.27767 0.028348 ?? 39.6u -0.24869 0.302 0.012118 ?? 39.64u -0.22421 0.32649 0.0051803 ?? 39.7u -0.18738 0.36331 0.0012994 ?? 39.733u -0.16677 0.38392 649.7u ?? 39.767u -0.14608 0.40461 324.85u ?? 39.8u -0.12533 0.42536 162.42u ?? 39.833u -0.10453 0.44616 81.212u ?? 39.867u -0.083678 0.46701 40.606u ?? 39.9u -0.062791 0.4879 20.303u ?? 39.933u -0.041876 0.50881 10.152u ?? 39.967u -0.020942 0.52975 5.0758u ?? 40.u -66.002p 0.44055 0.11014 ?? 40.033u 0.020942 0.32514 0.24649 ?? 40.05u 0.031411 0.31464 0.26746 ?? 40.067u 0.041876 0.312 0.28057 ?? 40.083u 0.052336 0.3133 0.28973 ?? 40.1u 0.062791 0.31655 0.29693 ?? 40.125u 0.078459 0.32307 0.30608 ?? 40.15u 0.094108 0.33045 0.31435 ?? 40.175u 0.10973 0.33811 0.32232 ?? 40.2u 0.12533 0.34584 0.33018 ?? 40.25u 0.15643 0.36134 0.34579 ?? 40.3u 0.18738 0.37677 0.3613 ?? 40.4u 0.24869 0.40733 0.39205 ?? 40.5u 0.30902 0.45238 0.20367 ?? 40.506u 0.31253 0.45589 0.18104 ?? 40.512u 0.31604 0.4594 0.16092 ?? 40.516u 0.31832 0.46169 0.14903 ?? 40.519u 0.32061 0.46397 0.13802 ?? 40.56u 0.34448 0.48784 0.058755 ?? 40.6u 0.36812 0.51149 0.025012 ?? 40.64u 0.39154 0.5349 0.010648 ?? 40.7u 0.42578 0.56914 0.0026854 ?? 40.733u 0.44464 0.588 0.0013427 ?? 40.767u 0.4633 0.60666 671.36u ?? 40.8u 0.48175 0.62512 335.68u ?? 40.833u 0.5 0.64336 167.84u ?? 40.867u 0.51803 0.66139 83.92u ?? 40.9u 0.53583 0.67919 41.96u ?? 40.933u 0.55339 0.69675 20.98u ?? 40.967u 0.57071 0.71408 10.49u ?? 41.u 0.58779 0.58492 0.14624 ?? 41.011u 0.59342 0.51028 0.22651 ?? 41.022u 0.59902 0.46378 0.27861 ?? 41.033u 0.6046 0.43518 0.31279 ?? 41.044u 0.61015 0.41797 0.33554 ?? 41.063u 0.61932 0.40363 0.35906 ?? 41.081u 0.62842 0.39945 0.37234 ?? 41.1u 0.63742 0.39991 0.38088 ?? 41.119u 0.64635 0.40248 0.38723 ?? 41.137u 0.65518 0.406 0.39255 ?? 41.158u 0.66509 0.41047 0.39799 ?? 41.179u 0.67488 0.41512 0.40312 ?? 41.2u 0.68455 0.41982 0.4081 ?? 41.25u 0.70711 0.43088 0.4196 ?? 41.3u 0.72897 0.44163 0.4307 ?? 41.35u 0.75011 0.45203 0.44145 ?? 41.4u 0.77051 0.46204 0.45184 ?? 41.5u 0.80902 0.49034 0.23102 ?? 41.506u 0.81106 0.49239 0.2067 ?? 41.511u 0.8131 0.49443 0.18494 ?? 41.515u 0.81451 0.49584 0.17118 ?? 41.519u 0.81592 0.49725 0.15844 ?? 41.559u 0.83039 0.51172 0.06697 ?? 41.6u 0.84433 0.52566 0.028307 ?? 41.641u 0.85771 0.53904 0.011965 ?? 41.7u 0.87631 0.55763 0.0030456 ?? 41.733u 0.8862 0.56753 0.0015228 ?? 41.767u 0.89571 0.57704 761.4u ?? 41.8u 0.90483 0.58615 380.7u ?? 41.833u 0.91355 0.59487 190.35u ?? 41.867u 0.92186 0.60319 95.175u ?? 41.9u 0.92978 0.6111 47.587u ?? 41.933u 0.93728 0.61861 23.794u ?? 41.967u 0.94438 0.6257 11.897u ?? 42.u 0.95106 0.50591 0.12648 ?? 42.011u 0.95319 0.43886 0.19566 ?? 42.022u 0.95528 0.39654 0.24007 ?? 42.033u 0.95732 0.36995 0.26871 ?? 42.044u 0.95931 0.35335 0.28729 ?? 42.063u 0.96253 0.33829 0.30558 ?? 42.081u 0.96562 0.33212 0.31484 ?? 42.1u 0.96858 0.33001 0.31991 ?? 42.119u 0.97141 0.32972 0.32302 ?? 42.137u 0.97411 0.33025 0.3252 ?? 42.156u 0.97667 0.3311 0.32691 ?? 42.178u 0.97958 0.33227 0.32864 ?? 42.2u 0.98229 0.33345 0.33018 ?? 42.233u 0.986 0.33511 0.33223 ?? 42.267u 0.98927 0.33657 0.33403 ?? 42.3u 0.99211 0.33783 0.33562 ?? 42.35u 0.99556 0.33931 0.33759 ?? 42.4u 0.99803 0.3403 0.33906 ?? 42.5u 1. 0.34104 0.17015 ?? 42.51u 0.99998 0.34102 0.13921 ?? 42.52u 0.99992 0.34096 0.1139 ?? 42.527u 0.99986 0.3409 0.099663 ?? 42.533u 0.99978 0.34082 0.087205 ?? 42.6u 0.99803 0.33906 0.017441 ?? 42.667u 0.99452 0.33556 0.0034882 ?? 42.7u 0.99211 0.33315 0.0017441 ?? 42.733u 0.98927 0.33031 872.05u ?? 42.767u 0.986 0.32703 436.03u ?? 42.783u 0.9842 0.32523 311.45u ?? 42.8u 0.98229 0.32332 222.46u ?? 42.833u 0.97815 0.31919 111.23u ?? 42.867u 0.97358 0.31462 55.616u ?? 42.9u 0.96858 0.30962 27.808u ?? 42.95u 0.96029 0.30133 9.2693u ?? 43.u 0.95106 0.21907 0.073027 ?? 43.017u 0.94777 0.17968 0.10913 ?? 43.033u 0.94438 0.15908 0.12634 ?? 43.05u 0.94088 0.14783 0.13409 ?? 43.067u 0.93728 0.14125 0.13708 ?? 43.083u 0.93358 0.13697 0.13766 ?? 43.1u 0.92978 0.13381 0.13701 ?? 43.117u 0.92587 0.13119 0.13572 ?? 43.138u 0.92085 0.12824 0.13365 ?? 43.169u 0.91301 0.12399 0.13006 ?? 43.2u 0.90483 0.11972 0.12615 ?? 43.25u 0.89101 0.11257 0.11948 ?? 43.3u 0.87631 0.105 0.11235 ?? 43.35u 0.86074 0.097001 0.10478 ?? 43.4u 0.84433 0.088581 0.096789 ?? 43.5u 0.80902 0.061478 0.044291 ?? 43.505u 0.80717 0.059627 0.040073 ?? 43.51u 0.80531 0.057768 0.036256 ?? 43.515u 0.80344 0.055902 0.032803 ?? 43.52u 0.80157 0.054028 0.029679 ?? 43.56u 0.78629 0.038749 0.01272 ?? 43.6u 0.77051 0.022974 0.0054513 ?? 43.64u 0.75425 0.006712 0.0023363 ?? 43.7u 0.72897 -0.018571 584.06u ?? 43.733u 0.71447 -0.033067 292.03u ?? 43.767u 0.69966 -0.047876 146.02u ?? 43.8u 0.68455 -0.062992 73.008u ?? 43.833u 0.66913 -0.078409 36.504u ?? 43.867u 0.65342 -0.094119 18.252u ?? 43.9u 0.63742 -0.11012 9.126u ?? 43.933u 0.62115 -0.12639 4.563u ?? 43.967u 0.6046 -0.14294 2.2815u ?? 44.u 0.58779 -0.1278 -0.03195 ?? 44.033u 0.57071 -0.10312 -0.073705 ?? 44.05u 0.56208 -0.10332 -0.082137 ?? 44.067u 0.55339 -0.10563 -0.088519 ?? 44.083u 0.54464 -0.10901 -0.09389 ?? 44.1u 0.53583 -0.11294 -0.098771 ?? 44.133u 0.51803 -0.12151 -0.108 ?? 44.167u 0.5 -0.13053 -0.11701 ?? 44.2u 0.48175 -0.13972 -0.12607 ?? 44.25u 0.45399 -0.15371 -0.13983 ?? 44.3u 0.42578 -0.16793 -0.15383 ?? 44.4u 0.36812 -0.19696 -0.18245 ?? 44.5u 0.30902 -0.24156 -0.098482 ?? 44.506u 0.3055 -0.24507 -0.08754 ?? 44.512u 0.30198 -0.24859 -0.077813 ?? 44.516u 0.29958 -0.251 -0.071812 ?? 44.52u 0.29717 -0.2534 -0.066274 ?? 44.56u 0.27302 -0.27756 -0.028331 ?? 44.6u 0.24869 -0.30188 -0.012111 ?? 44.64u 0.22421 -0.32637 -0.0051772 ?? 44.7u 0.18738 -0.36319 -0.0012986 ?? 44.733u 0.16677 -0.3838 -649.31u ?? 44.767u 0.14608 -0.40449 -324.66u ?? 44.8u 0.12533 -0.42524 -162.33u ?? 44.833u 0.10453 -0.44604 -81.164u ?? 44.867u 0.083678 -0.46689 -40.582u ?? 44.9u 0.062791 -0.48778 -20.291u ?? 44.933u 0.041876 -0.5087 -10.145u ?? 44.967u 0.020942 -0.52963 -5.0727u ?? 45.u 65.913p -0.44046 -0.11012 ?? 45.033u -0.020942 -0.32508 -0.24644 ?? 45.05u -0.031411 -0.31458 -0.26741 ?? 45.067u -0.041876 -0.31194 -0.28051 ?? 45.083u -0.052336 -0.31324 -0.28968 ?? 45.1u -0.062791 -0.31649 -0.29687 ?? 45.125u -0.078459 -0.32301 -0.30602 ?? 45.15u -0.094108 -0.33039 -0.31429 ?? 45.175u -0.10973 -0.33805 -0.32226 ?? 45.2u -0.12533 -0.34578 -0.33012 ?? 45.25u -0.15643 -0.36128 -0.34573 ?? 45.3u -0.18738 -0.37672 -0.36124 ?? 45.4u -0.24869 -0.40727 -0.39199 ?? 45.5u -0.30902 -0.45232 -0.20364 ?? 45.506u -0.31253 -0.45583 -0.18101 ?? 45.512u -0.31604 -0.45934 -0.1609 ?? 45.516u -0.31832 -0.46163 -0.14901 ?? 45.519u -0.32061 -0.46391 -0.138 ?? 45.56u -0.34448 -0.48778 -0.058747 ?? 45.6u -0.36812 -0.51143 -0.025009 ?? 45.64u -0.39154 -0.53484 -0.010646 ?? 45.7u -0.42578 -0.56908 -0.002685 ?? 45.733u -0.44464 -0.58794 -0.0013425 ?? 45.767u -0.4633 -0.6066 -671.26u ?? 45.8u -0.48175 -0.62506 -335.63u ?? 45.833u -0.5 -0.6433 -167.82u ?? 45.867u -0.51803 -0.66133 -83.908u ?? 45.9u -0.53583 -0.67913 -41.954u ?? 45.933u -0.55339 -0.6967 -20.977u ?? 45.967u -0.57071 -0.71402 -10.488u ?? 46.u -0.58779 -0.58487 -0.14622 ?? 46.011u -0.59342 -0.51024 -0.22649 ?? 46.022u -0.59902 -0.46374 -0.27859 ?? 46.033u -0.6046 -0.43515 -0.31276 ?? 46.044u -0.61015 -0.41794 -0.33552 ?? 46.063u -0.61932 -0.4036 -0.35903 ?? 46.081u -0.62842 -0.39942 -0.37231 ?? 46.1u -0.63742 -0.39988 -0.38085 ?? 46.119u -0.64635 -0.40246 -0.3872 ?? 46.137u -0.65518 -0.40597 -0.39252 ?? 46.158u -0.66509 -0.41044 -0.39796 ?? 46.179u -0.67488 -0.41509 -0.4031 ?? 46.2u -0.68455 -0.41979 -0.40807 ?? 46.25u -0.70711 -0.43085 -0.41957 ?? 46.3u -0.72897 -0.4416 -0.43067 ?? 46.35u -0.75011 -0.452 -0.44143 ?? 46.4u -0.77051 -0.46201 -0.45181 ?? 46.5u -0.80902 -0.49031 -0.23101 ?? 46.506u -0.81106 -0.49236 -0.20669 ?? 46.511u -0.8131 -0.4944 -0.18493 ?? 46.515u -0.81451 -0.49581 -0.17117 ?? 46.519u -0.81592 -0.49722 -0.15843 ?? 46.559u -0.83039 -0.51169 -0.066966 ?? 46.6u -0.84433 -0.52563 -0.028305 ?? 46.641u -0.85771 -0.53901 -0.011964 ?? 46.7u -0.87631 -0.5576 -0.0030454 ?? 46.733u -0.8862 -0.5675 -0.0015227 ?? 46.767u -0.89571 -0.57701 -761.35u ?? 46.8u -0.90483 -0.58612 -380.68u ?? 46.833u -0.91355 -0.59484 -190.34u ?? 46.867u -0.92186 -0.60316 -95.169u ?? 46.9u -0.92978 -0.61107 -47.584u ?? 46.933u -0.93728 -0.61858 -23.792u ?? 46.967u -0.94438 -0.62567 -11.896u ?? 47.u -0.95106 -0.50588 -0.12648 ?? 47.011u -0.95319 -0.43884 -0.19565 ?? 47.022u -0.95528 -0.39652 -0.24006 ?? 47.033u -0.95732 -0.36993 -0.26869 ?? 47.044u -0.95931 -0.35334 -0.28728 ?? 47.063u -0.96253 -0.33827 -0.30557 ?? 47.081u -0.96562 -0.3321 -0.31483 ?? 47.1u -0.96858 -0.32999 -0.3199 ?? 47.119u -0.97141 -0.32971 -0.32301 ?? 47.137u -0.97411 -0.33023 -0.32518 ?? 47.156u -0.97667 -0.33108 -0.32689 ?? 47.178u -0.97958 -0.33225 -0.32863 ?? 47.2u -0.98229 -0.33343 -0.33016 ?? 47.233u -0.986 -0.33509 -0.33221 ?? 47.267u -0.98927 -0.33656 -0.33402 ?? 47.3u -0.99211 -0.33782 -0.3356 ?? 47.35u -0.99556 -0.3393 -0.33757 ?? 47.4u -0.99803 -0.34028 -0.33905 ?? 47.5u -1. -0.34102 -0.17014 ?? 47.51u -0.99998 -0.341 -0.13921 ?? 47.52u -0.99992 -0.34094 -0.1139 ?? 47.527u -0.99986 -0.34088 -0.099659 ?? 47.533u -0.99978 -0.3408 -0.087202 ?? 47.6u -0.99803 -0.33905 -0.01744 ?? 47.667u -0.99452 -0.33554 -0.0034881 ?? 47.7u -0.99211 -0.33314 -0.001744 ?? 47.733u -0.98927 -0.3303 -872.02u ?? 47.767u -0.986 -0.32702 -436.01u ?? 47.783u -0.9842 -0.32522 -311.43u ?? 47.8u -0.98229 -0.32331 -222.45u ?? 47.833u -0.97815 -0.31917 -111.23u ?? 47.867u -0.97358 -0.3146 -55.613u ?? 47.9u -0.96858 -0.30961 -27.807u ?? 47.95u -0.96029 -0.30132 -9.2689u ?? 48.u -0.95106 -0.21906 -0.073023 ?? 48.017u -0.94777 -0.17967 -0.10912 ?? 48.033u -0.94438 -0.15907 -0.12634 ?? 48.05u -0.94088 -0.14783 -0.13408 ?? 48.067u -0.93728 -0.14124 -0.13707 ?? 48.083u -0.93358 -0.13696 -0.13765 ?? 48.1u -0.92978 -0.1338 -0.137 ?? 48.117u -0.92587 -0.13118 -0.13571 ?? 48.138u -0.92085 -0.12823 -0.13364 ?? 48.169u -0.91301 -0.12399 -0.13005 ?? 48.2u -0.90483 -0.11971 -0.12615 ?? 48.25u -0.89101 -0.11256 -0.11947 ?? 48.3u -0.87631 -0.10499 -0.11234 ?? 48.35u -0.86074 -0.096994 -0.10478 ?? 48.4u -0.84433 -0.088574 -0.096781 ?? 48.5u -0.80902 -0.06147 -0.044287 ?? 48.505u -0.80717 -0.05962 -0.040069 ?? 48.51u -0.80531 -0.057761 -0.036253 ?? 48.515u -0.80344 -0.055895 -0.0328 ?? 48.52u -0.80157 -0.05402 -0.029677 ?? 48.56u -0.78629 -0.038742 -0.012719 ?? 48.6u -0.77051 -0.022966 -0.0054508 ?? 48.64u -0.75425 -0.0067046 -0.0023361 ?? 48.7u -0.72897 0.018578 -584.01u ?? 48.733u -0.71447 0.033074 -292.01u ?? 48.767u -0.69966 0.047883 -146.u ?? 48.8u -0.68455 0.063 -73.002u ?? 48.833u -0.66913 0.078416 -36.501u ?? 48.867u -0.65342 0.094126 -18.25u ?? 48.9u -0.63742 0.11012 -9.1252u ?? 48.933u -0.62115 0.1264 -4.5626u ?? 48.967u -0.6046 0.14295 -2.2813u ?? 49.u -0.58779 0.12781 0.031951 ?? 49.033u -0.57071 0.10312 0.073709 ?? 49.05u -0.56208 0.10332 0.082141 ?? 49.067u -0.55339 0.10563 0.088522 ?? 49.083u -0.54464 0.10901 0.093894 ?? 49.1u -0.53583 0.11294 0.098775 ?? 49.133u -0.51803 0.12152 0.108 ?? 49.167u -0.5 0.13053 0.11701 ?? 49.2u -0.48175 0.13972 0.12607 ?? 49.25u -0.45399 0.15372 0.13984 ?? 49.3u -0.42578 0.16794 0.15383 ?? 49.4u -0.36812 0.19697 0.18245 ?? 49.5u -0.30902 0.24156 0.098484 ?? 49.506u -0.3055 0.24508 0.087542 ?? 49.512u -0.30198 0.2486 0.077815 ?? 49.516u -0.29958 0.251 0.071814 ?? 49.52u -0.29717 0.25341 0.066275 ?? 49.56u -0.27302 0.27756 0.028331 ?? 49.6u -0.24869 0.30189 0.012111 ?? 49.64u -0.22421 0.32637 0.0051773 ?? 49.7u -0.18738 0.3632 0.0012986 ?? 49.733u -0.16677 0.38381 649.32u ?? 49.767u -0.14608 0.40449 324.66u ?? 49.8u -0.12533 0.42524 162.33u ?? 49.833u -0.10453 0.44605 81.165u ?? 49.867u -0.083678 0.4669 40.583u ?? 49.9u -0.062791 0.48779 20.291u ?? 49.933u -0.041876 0.5087 10.146u ?? 49.967u -0.020942 0.52963 5.0728u ?? 50.u -65.836p 0.44046 0.11012 ?? Gnucap System status iterations: op=0, dc=0, tran=6727, fourier=0, total=8409 transient timesteps: accepted=1597, rejected=85, total=1682 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/bm_pulse.4.ckt.out000066400000000000000000000004741316501211100164760ustar00rootroot00000000000000* pulse test with 0 rise and fall time #Time v(1) 0. 0. 1. 10. 2. 10. 3. 10. 4. 10. 5. 10. 6. 10. 7. 10. 8. 10. 9. 10. 10. 10. tests/==out/bm_pulse.4a.ckt.out000066400000000000000000000004741316501211100166370ustar00rootroot00000000000000* pulse test with 0 rise and fall time #Time v(1) 0. 0. 1. 10. 2. 10. 3. 10. 4. 10. 5. 10. 6. 10. 7. 10. 8. 10. 9. 10. 10. 10. tests/==out/bm_pulse.4b.ckt.out000066400000000000000000000007121316501211100166330ustar00rootroot00000000000000* pulse test with 0 rise and fall time in subckt #Time v(1) v(2) 0. 0. 0. 1. 10. -10. 2. 10. -10. 3. 10. -10. 4. 10. -10. 5. 10. -10. 6. 10. -10. 7. 10. -10. 8. 10. -10. 9. 10. -10. 10. 10. -10. tests/==out/bm_pwl.1.ckt.out000066400000000000000000000050571316501211100161470ustar00rootroot00000000000000# HSPICE style PWL v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 2 0 ) 1.K e1 ( 3 0 2 0 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r3 ( 3 0 ) 10.K g1 ( 4 0 2 0 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r4 ( 4 0 ) 10.K # v(1) v(2) v(3) v(4) 27. 1. 0.5 0.5 -5.K # v(1) v(2) v(3) v(4) -10. -10. -5. -5. 50.K -9. -9. -4.5 -4.5 45.K -8. -8. -4. -4. 40.K -7. -7. -3.5 -3.5 35.K -6. -6. -3. -3. 30.K -5. -5. -2.5 -2.5 25.K -4. -4. -2. -2. 20.K -3. -3. -1.5 -1.5 15.K -2. -2. -1. -1. 10.K -1. -1. -0.5 -0.5 5.K 0. 0. 0. 0. 0. 1. 1. 0.5 0.5 -5.K 2. 2. 1. 1. -10.K 3. 3. 1.5 1.1667 -11.667K 4. 4. 2. 1.3333 -13.333K 5. 5. 2.5 1.5 -15.K 6. 6. 3. 1.6667 -16.667K 7. 7. 3.5 1.8333 -18.333K 8. 8. 4. 2. -20.K 9. 9. 4.5 2.1 -21.K 10. 10. 5. 2.2 -22.K # v(1) v(2) v(3) v(4) 1. 1. 0.5 0.5 -5.K 1.5849 1.5849 0.79245 0.79245 -7.9245K 2.5119 2.5119 1.2559 1.0853 -10.853K 3.9811 3.9811 1.9905 1.3302 -13.302K 6.3096 6.3096 3.1548 1.7183 -17.183K 10. 10. 5. 2.2 -22.K 15.849 15.849 7.9245 2.7849 -27.849K 25.119 25.119 12.559 3.5085 -35.085K 39.811 39.811 19.905 4.4339 -44.339K 63.096 63.096 31.548 5.7275 -57.275K 100. 100. 50. 7.7778 -77.778K # v(1) v(2) v(3) v(4) 32. 32. 16. 4. -40.K 41. 41. 20.5 4.5 -45.K 50. 50. 25. 5. -50.K 59. 59. 29.5 5.5 -55.K 68. 68. 34. 6. -60.K tests/==out/bm_pwl.2.ckt.out000066400000000000000000000047131316501211100161460ustar00rootroot00000000000000# HSPICE style PWL, out of order, bogus answers v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 2 0 ) 1.K e1 ( 3 0 2 0 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 160., 4. 25., 5. ) r3 ( 3 0 ) 10.K e1: PWL is out of order: ( 160., 25.) # v(1) v(2) v(3) e1: PWL is out of order: ( 160., 25.) 27. 1. 0.5 0.5 e1: PWL is out of order: ( 160., 25.) # v(1) v(2) v(3) -10. -10. -5. -5. -9. -9. -4.5 -4.5 -8. -8. -4. -4. -7. -7. -3.5 -3.5 -6. -6. -3. -3. -5. -5. -2.5 -2.5 -4. -4. -2. -2. -3. -3. -1.5 -1.5 -2. -2. -1. -1. -1. -1. -0.5 -0.5 0. 0. 0. 0. 1. 1. 0.5 0.5 2. 2. 1. 1. 3. 3. 1.5 1.1667 4. 4. 2. 1.3333 5. 5. 2.5 1.5 6. 6. 3. 1.6667 7. 7. 3.5 1.8333 8. 8. 4. 2. 9. 9. 4.5 2.1 10. 10. 5. 2.2 e1: PWL is out of order: ( 160., 25.) # v(1) v(2) v(3) 1. 1. 0.5 0.5 1.5849 1.5849 0.79245 0.79245 2.5119 2.5119 1.2559 1.0853 3.9811 3.9811 1.9905 1.3302 6.3096 6.3096 3.1548 1.7183 10. 10. 5. 2.2 15.849 15.849 7.9245 2.7849 25.119 25.119 12.559 3.0236 39.811 39.811 19.905 3.0722 63.096 63.096 31.548 3.1493 100. 100. 50. 3.2715 158.49 158.49 79.245 3.4652 251.19 251.19 125.59 3.7721 398.11 398.11 199.05 4.2586 630.96 630.96 315.48 5.0297 1.K 1.K 500. 6.2517 e1: PWL is out of order: ( 160., 25.) # v(1) v(2) v(3) 32. 32. 16. 3.0464 41. 41. 20.5 3.0762 50. 50. 25. 3.106 59. 59. 29.5 3.1358 68. 68. 34. 3.1656 tests/==out/bm_pwl.3.ckt.out000066400000000000000000000040261316501211100161440ustar00rootroot00000000000000# PWL sources v1 ( 1 0 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) i1 ( 2 0 ) pwl( 0., 0. 1.,-1. 4., 2. 9.,-3. 16., 4. 25.,-5. ) r4 ( 2 0 ) 10.K # v(1) v(2) 27. 0. 0. # v(1) v(2) -10. -10. 0. -9. -9. 0. -8. -8. 0. -7. -7. 0. -6. -6. 0. -5. -5. 0. -4. -4. 0. -3. -3. 0. -2. -2. 0. -1. -1. 0. 0. 0. 0. 1. 1. 0. 2. 2. 0. 3. 3. 0. 4. 4. 0. 5. 5. 0. 6. 6. 0. 7. 7. 0. 8. 8. 0. 9. 9. 0. 10. 10. 0. #Time v(1) v(2) 0. 0. 0. 1. 1. 10.K 2. 1.3333 0. 3. 1.6667 -10.K 4. 2. -20.K 5. 2.2 -10.K 6. 2.4 0. 7. 2.6 10.K 8. 2.8 20.K 9. 3. 30.K 10. 3.1429 20.K 11. 3.2857 10.K 12. 3.4286 0. 13. 3.5714 -10.K 14. 3.7143 -20.K 15. 3.8571 -30.K 16. 4. -40.K 17. 4.1111 -30.K 18. 4.2222 -20.K 19. 4.3333 -10.K 20. 4.4444 0. 21. 4.5556 10.K 22. 4.6667 20.K 23. 4.7778 30.K 24. 4.8889 40.K 25. 5. 50.K 26. 5. 50.K 27. 5. 50.K 28. 5. 50.K 29. 5. 50.K 30. 5. 50.K tests/==out/bm_pwl.4.ckt.out000066400000000000000000000120071316501211100161430ustar00rootroot00000000000000' # v(1) v(2) v(3) v(4) f(e1) f(e2) f(e3) ev(e1) ev(e2) ev(e3) -10. -10. -7. -7. -7. -7. -7. -7. 1. 1. 1. -9.5 -9.5 -6.5 -6.5 -6.5 -6.5 -6.5 -6.5 1. 1. 1. -9. -9. -6. -6. -6. -6. -6. -6. 1. 1. 1. -8.5 -8.5 -5.5 -5.5 -5.5 -5.5 -5.5 -5.5 1. 1. 1. -8. -8. -5. -5. -5. -5. -5. -5. 1. 1. 1. -7.5 -7.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 1. 1. 1. -7. -7. -4. -4. -4. -4. -4. -4. 1. 1. 1. -6.5 -6.5 -3.5 -3.5 -3.5 -3.5 -3.5 -3.5 1. 1. 1. -6. -6. -3. -3. -3. -3. -3. -3. 1. 1. 1. -5.5 -5.5 -2.5 -2.5 -2.5 -2.5 -2.5 -2.5 1. 1. 1. -5. -5. -2. -2. -2. -2. -2. -2. 1. 1. 1. -4.5 -4.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 1. 1. 1. -4. -4. -1. -1. -1. -1. -1. -1. 1. 1. 1. -3.5 -3.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 1. 1. 1. -3. -3. 0. 1. 0. 0. 1. 0. 0. -0.33333 -1. -2.5 -2.5 0. 0.83333 -0.5 0. 0.83333 -0.5 0. -0.33333 -1. -2. -2. 0. 0.66667 -1. 0. 0.66667 -1. 0. -0.33333 -1. -1.5 -1.5 0. 0.5 -1.5 0. 0.5 -1.5 0. -0.33333 -1. -1. -1. 0. 0.33333 -2. 0. 0.33333 -2. 0. -0.33333 -1. -0.5 -0.5 0. 0.16667 -2.5 0. 0.16667 -2.5 0. -0.33333 -1. 0. 0. 0. 0. -3. 0. 0. -3. 0.25 0.25 2. 0.5 0.5 0.125 0.125 -2. 0.125 0.125 -2. 0.25 0.25 2. 1. 1. 0.25 0.25 -1. 0.25 0.25 -1. 0.25 0.25 2. 1.5 1.5 0.375 0.375 0. 0.375 0.375 0. 0.25 0.25 2. 2. 2. 0.5 0.5 1. 0.5 0.5 1. 0.25 0.25 2. 2.5 2.5 0.625 0.625 2. 0.625 0.625 2. 0.25 0.25 2. 3. 3. 0.75 0.75 3. 0.75 0.75 3. 0.25 0.25 2. 3.5 3.5 0.875 0.875 4. 0.875 0.875 4. 0.25 0.25 2. 4. 4. 1. 1. 5. 1. 1. 5. 0.25 0.25 2. 4.5 4.5 1.125 1.125 6. 1.125 1.125 6. 0.25 0.25 2. 5. 5. 1.25 1.25 7. 1.25 1.25 7. 0.25 0.25 2. 5.5 5.5 1.375 1.375 8. 1.375 1.375 8. 0.25 0.25 2. 6. 6. 1.5 1.5 9. 1.5 1.5 9. 0.25 0.25 2. 6.5 6.5 1.625 1.625 10. 1.625 1.625 10. 0.25 0.25 2. 7. 7. 1.75 1.75 11. 1.75 1.75 11. 0.25 0.25 2. 7.5 7.5 1.875 1.875 12. 1.875 1.875 12. 0.25 0.25 2. 8. 8. 2. 2. 13. 2. 2. 13. 0.25 0.25 2. 8.5 8.5 2.125 2.125 14. 2.125 2.125 14. 0.25 0.25 2. 9. 9. 2.25 2.25 15. 2.25 2.25 15. 0.25 0.25 2. 9.5 9.5 2.375 2.375 16. 2.375 2.375 16. 0.25 0.25 2. 10. 10. 2.5 2.5 17. 2.5 2.5 17. 0.25 0.25 2. tests/==out/bm_pwl.5.ckt.out000066400000000000000000000012731316501211100161470ustar00rootroot00000000000000# PWL sources v1 ( 1 0 ) pwl( 0., 0. 1., 1. 4., 2. 9., 0. 16., 4. 25., 0. ) #Time v(1) next(v1) event(v1) 0. 0. 0. 1. 0.3 0.3 0. 1. 1. 1. 0. 4. 4. 2. 0. 9. 9. 0. 0. 16. 16. 4. 0. 25. 25. 1.f 0. 0. 30. 1.f 0. 0. Gnucap System status iterations: op=0, dc=0, tran=23, fourier=0, total=31 transient timesteps: accepted=8, rejected=0, total=8 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sffm.1.ckt.out000066400000000000000000000545301316501211100163000ustar00rootroot00000000000000' sin test #Time v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. 5.u 0.312 0.33873 0.30902 0.031411 10.u 0.59285 0.63739 0.58779 0.062791 15.u 0.81451 0.86067 0.80902 0.094108 20.u 0.95485 0.98223 0.95106 0.12533 25.u 0.99988 0.98779 1. 0.15643 30.u 0.9451 0.87684 0.95106 0.18738 35.u 0.796 0.66264 0.80902 0.21814 40.u 0.56749 0.37058 0.58779 0.24869 45.u 0.28237 0.035161 0.30902 0.27899 50.u -0.030897 -0.30412 0. 0.30902 55.u -0.34105 -0.60749 -0.30902 0.33874 60.u -0.61716 -0.83954 -0.58779 0.36812 65.u -0.83172 -0.9734 -0.80902 0.39715 70.u -0.96335 -0.99378 -0.95106 0.42578 75.u -0.99897 -0.8987 -1. 0.45399 80.u -0.93507 -0.69963 -0.95106 0.48175 85.u -0.77806 -0.41999 -0.80902 0.50904 90.u -0.54361 -0.09236 -0.58779 0.53583 95.u -0.2551 0.24539 -0.30902 0.56208 100.u 0.058745 0.55452 0. 0.58779 105.u 0.36669 0.79986 0.30902 0.61291 110.u 0.63813 0.95383 0.58779 0.63742 115.u 0.84609 0.99946 0.80902 0.66131 120.u 0.96997 0.93219 0.95106 0.68455 125.u 0.9975 0.76024 1. 0.70711 130.u 0.92602 0.50352 0.95106 0.72897 135.u 0.76269 0.19118 0.80902 0.75011 140.u 0.52377 -0.14172 0.58779 0.77051 145.u 0.23298 -0.45822 0.30902 0.79016 150.u -0.080813 -0.72361 0. 0.80902 155.u -0.38653 -0.90915 -0.30902 0.82708 160.u -0.65392 -0.99519 -0.58779 0.84433 165.u -0.85655 -0.97311 -0.80902 0.86074 170.u -0.97445 -0.84611 -0.95106 0.87631 175.u -0.99603 -0.62863 -1. 0.89101 180.u -0.91924 -0.3446 -0.95106 0.90483 185.u -0.75174 -0.024721 -0.80902 0.91775 190.u -0.51013 0.29691 -0.58779 0.92978 195.u -0.2183 0.58649 -0.30902 0.94088 200.u 0.094962 0.81403 0. 0.95106 205.u 0.39878 0.95641 0.30902 0.96029 210.u 0.66327 0.99966 0.58779 0.96858 215.u 0.86244 0.94019 0.80902 0.97592 220.u 0.97678 0.78498 0.95106 0.98229 225.u 0.99513 0.55062 1. 0.98769 230.u 0.91577 0.26145 0.95106 0.99211 235.u 0.74659 -0.053059 0.80902 0.99556 240.u 0.50425 -0.36134 0.58779 0.99803 245.u 0.21257 -0.63294 0.30902 0.99951 250.u -0.099833 -0.84147 0. 1. 255.u -0.40238 -0.96712 -0.30902 0.99951 260.u -0.66547 -0.99846 -0.58779 0.99803 265.u -0.86343 -0.93332 -0.80902 0.99556 270.u -0.97699 -0.77886 -0.95106 0.99211 275.u -0.99513 -0.55062 -1. 0.98769 280.u -0.91617 -0.27092 -0.95106 0.98229 285.u -0.7479 0.033433 -0.80902 0.97592 290.u -0.50679 0.33374 -0.58779 0.96858 295.u -0.2164 0.6021 -0.30902 0.96029 300.u 0.094962 0.81403 0. 0.95106 305.u 0.397 0.95056 0.30902 0.94088 310.u 0.66036 0.99992 0.58779 0.92978 315.u 0.85948 0.9584 0.80902 0.91775 320.u 0.97509 0.83057 0.95106 0.90483 325.u 0.99603 0.62863 1. 0.89101 330.u 0.92036 0.37123 0.95106 0.87631 335.u 0.75549 0.081645 0.80902 0.86074 340.u 0.51746 -0.21433 0.58779 0.84433 345.u 0.22939 -0.49072 0.30902 0.82708 350.u -0.080813 -0.72361 0. 0.80902 355.u -0.38312 -0.89316 -0.30902 0.79016 360.u -0.64832 -0.98525 -0.58779 0.77051 365.u -0.85079 -0.99259 -0.80902 0.75011 370.u -0.97104 -0.91519 -0.95106 0.72897 375.u -0.9975 -0.76024 -1. 0.70711 380.u -0.92769 -0.54139 -0.95106 0.68455 385.u -0.76841 -0.27748 -0.80902 0.66131 390.u -0.53506 0.0091053 -0.58779 0.63742 395.u -0.25018 0.29432 -0.30902 0.61291 400.u 0.058745 0.55452 0. 0.58779 405.u 0.36196 0.76834 0.30902 0.56208 410.u 0.63027 0.91845 0.58779 0.53583 415.u 0.83788 0.99289 0.80902 0.50904 420.u 0.96483 0.98599 0.95106 0.48175 425.u 0.99897 0.8987 1. 0.45399 430.u 0.93704 0.73851 0.95106 0.42578 435.u 0.78504 0.5187 0.80902 0.39715 440.u 0.55761 0.25727 0.58779 0.36812 445.u 0.27663 -0.024576 0.30902 0.33874 450.u -0.030897 -0.30412 0. 0.30902 455.u -0.33543 -0.55898 -0.30902 0.27899 460.u -0.60772 -0.76883 -0.58779 0.24869 465.u -0.82165 -0.91705 -0.80902 0.21814 470.u -0.95668 -0.99197 -0.95106 0.18738 475.u -0.99988 -0.98779 -1. 0.15643 480.u -0.94711 -0.90497 -0.95106 0.12533 485.u -0.80345 -0.7502 -0.80902 0.094108 490.u -0.58269 -0.53586 -0.58779 0.062791 495.u -0.30603 -0.279 -0.30902 0.031411 500.u 63.f 56.f 0. 0. 505.u 0.30603 0.279 0.30902 -0.031411 510.u 0.58269 0.53586 0.58779 -0.062791 515.u 0.80345 0.7502 0.80902 -0.094108 520.u 0.94711 0.90497 0.95106 -0.12533 525.u 0.99988 0.98779 1. -0.15643 530.u 0.95668 0.99197 0.95106 -0.18738 535.u 0.82165 0.91705 0.80902 -0.21814 540.u 0.60772 0.76883 0.58779 -0.24869 545.u 0.33543 0.55898 0.30902 -0.27899 550.u 0.030897 0.30412 0. -0.30902 555.u -0.27663 0.024576 -0.30902 -0.33874 560.u -0.55761 -0.25727 -0.58779 -0.36812 565.u -0.78504 -0.5187 -0.80902 -0.39715 570.u -0.93704 -0.73851 -0.95106 -0.42578 575.u -0.99897 -0.8987 -1. -0.45399 580.u -0.96483 -0.98599 -0.95106 -0.48175 585.u -0.83788 -0.99289 -0.80902 -0.50904 590.u -0.63027 -0.91845 -0.58779 -0.53583 595.u -0.36196 -0.76834 -0.30902 -0.56208 600.u -0.058745 -0.55452 0. -0.58779 605.u 0.25018 -0.29432 0.30902 -0.61291 610.u 0.53506 -0.0091053 0.58779 -0.63742 615.u 0.76841 0.27748 0.80902 -0.66131 620.u 0.92769 0.54139 0.95106 -0.68455 625.u 0.9975 0.76024 1. -0.70711 630.u 0.97104 0.91519 0.95106 -0.72897 635.u 0.85079 0.99259 0.80902 -0.75011 640.u 0.64832 0.98525 0.58779 -0.77051 645.u 0.38312 0.89316 0.30902 -0.79016 650.u 0.080813 0.72361 0. -0.80902 655.u -0.22939 0.49072 -0.30902 -0.82708 660.u -0.51746 0.21433 -0.58779 -0.84433 665.u -0.75549 -0.081645 -0.80902 -0.86074 670.u -0.92036 -0.37123 -0.95106 -0.87631 675.u -0.99603 -0.62863 -1. -0.89101 680.u -0.97509 -0.83057 -0.95106 -0.90483 685.u -0.85948 -0.9584 -0.80902 -0.91775 690.u -0.66036 -0.99992 -0.58779 -0.92978 695.u -0.397 -0.95056 -0.30902 -0.94088 700.u -0.094962 -0.81403 0. -0.95106 705.u 0.2164 -0.6021 0.30902 -0.96029 710.u 0.50679 -0.33374 0.58779 -0.96858 715.u 0.7479 -0.033433 0.80902 -0.97592 720.u 0.91617 0.27092 0.95106 -0.98229 725.u 0.99513 0.55062 1. -0.98769 730.u 0.97699 0.77886 0.95106 -0.99211 735.u 0.86343 0.93332 0.80902 -0.99556 740.u 0.66547 0.99846 0.58779 -0.99803 745.u 0.40238 0.96712 0.30902 -0.99951 750.u 0.099833 0.84147 -101.f -1. 755.u -0.21257 0.63294 -0.30902 -0.99951 760.u -0.50425 0.36134 -0.58779 -0.99803 765.u -0.74659 0.053059 -0.80902 -0.99556 770.u -0.91577 -0.26145 -0.95106 -0.99211 775.u -0.99513 -0.55062 -1. -0.98769 780.u -0.97678 -0.78498 -0.95106 -0.98229 785.u -0.86244 -0.94019 -0.80902 -0.97592 790.u -0.66327 -0.99966 -0.58779 -0.96858 795.u -0.39878 -0.95641 -0.30902 -0.96029 800.u -0.094962 -0.81403 111.f -0.95106 805.u 0.2183 -0.58649 0.30902 -0.94088 810.u 0.51013 -0.29691 0.58779 -0.92978 815.u 0.75174 0.024721 0.80902 -0.91775 820.u 0.91924 0.3446 0.95106 -0.90483 825.u 0.99603 0.62863 1. -0.89101 830.u 0.97445 0.84611 0.95106 -0.87631 835.u 0.85655 0.97311 0.80902 -0.86074 840.u 0.65392 0.99519 0.58779 -0.84433 845.u 0.38653 0.90915 0.30902 -0.82708 850.u 0.080813 0.72361 -123.f -0.80902 855.u -0.23298 0.45822 -0.30902 -0.79016 860.u -0.52377 0.14172 -0.58779 -0.77051 865.u -0.76269 -0.19118 -0.80902 -0.75011 870.u -0.92602 -0.50352 -0.95106 -0.72897 875.u -0.9975 -0.76024 -1. -0.70711 880.u -0.96997 -0.93219 -0.95106 -0.68455 885.u -0.84609 -0.99946 -0.80902 -0.66131 890.u -0.63813 -0.95383 -0.58779 -0.63742 895.u -0.36669 -0.79986 -0.30902 -0.61291 900.u -0.058745 -0.55452 125.f -0.58779 905.u 0.2551 -0.24539 0.30902 -0.56208 910.u 0.54361 0.09236 0.58779 -0.53583 915.u 0.77806 0.41999 0.80902 -0.50904 920.u 0.93507 0.69963 0.95106 -0.48175 925.u 0.99897 0.8987 1. -0.45399 930.u 0.96335 0.99378 0.95106 -0.42578 935.u 0.83172 0.9734 0.80902 -0.39715 940.u 0.61716 0.83954 0.58779 -0.36812 945.u 0.34105 0.60749 0.30902 -0.33874 950.u 0.030897 0.30412 -137.f -0.30902 955.u -0.28237 -0.035161 -0.30902 -0.27899 960.u -0.56749 -0.37058 -0.58779 -0.24869 965.u -0.796 -0.66264 -0.80902 -0.21814 970.u -0.9451 -0.87684 -0.95106 -0.18738 975.u -0.99988 -0.98779 -1. -0.15643 980.u -0.95485 -0.98223 -0.95106 -0.12533 985.u -0.81451 -0.86067 -0.80902 -0.094108 990.u -0.59285 -0.63739 -0.58779 -0.062791 995.u -0.312 -0.33873 -0.30902 -0.031411 0.001 140.f 154.f 139.f 0. 0.001005 0.312 0.33873 0.30902 0.031411 0.00101 0.59285 0.63739 0.58779 0.062791 0.001015 0.81451 0.86067 0.80902 0.094108 0.00102 0.95485 0.98223 0.95106 0.12533 0.001025 0.99988 0.98779 1. 0.15643 0.00103 0.9451 0.87684 0.95106 0.18738 0.001035 0.796 0.66264 0.80902 0.21814 0.00104 0.56749 0.37058 0.58779 0.24869 0.001045 0.28237 0.035161 0.30902 0.27899 0.00105 -0.030897 -0.30412 -143.f 0.30902 0.001055 -0.34105 -0.60749 -0.30902 0.33874 0.00106 -0.61716 -0.83954 -0.58779 0.36812 0.001065 -0.83172 -0.9734 -0.80902 0.39715 0.00107 -0.96335 -0.99378 -0.95106 0.42578 0.001075 -0.99897 -0.8987 -1. 0.45399 0.00108 -0.93507 -0.69963 -0.95106 0.48175 0.001085 -0.77806 -0.41999 -0.80902 0.50904 0.00109 -0.54361 -0.09236 -0.58779 0.53583 0.001095 -0.2551 0.24539 -0.30902 0.56208 0.0011 0.058745 0.55452 146.f 0.58779 0.001105 0.36669 0.79986 0.30902 0.61291 0.00111 0.63813 0.95383 0.58779 0.63742 0.001115 0.84609 0.99946 0.80902 0.66131 0.00112 0.96997 0.93219 0.95106 0.68455 0.001125 0.9975 0.76024 1. 0.70711 0.00113 0.92602 0.50352 0.95106 0.72897 0.001135 0.76269 0.19118 0.80902 0.75011 0.00114 0.52377 -0.14172 0.58779 0.77051 0.001145 0.23298 -0.45822 0.30902 0.79016 0.00115 -0.080813 -0.72361 -164.f 0.80902 0.001155 -0.38653 -0.90915 -0.30902 0.82708 0.00116 -0.65392 -0.99519 -0.58779 0.84433 0.001165 -0.85655 -0.97311 -0.80902 0.86074 0.00117 -0.97445 -0.84611 -0.95106 0.87631 0.001175 -0.99603 -0.62863 -1. 0.89101 0.00118 -0.91924 -0.3446 -0.95106 0.90483 0.001185 -0.75174 -0.024721 -0.80902 0.91775 0.00119 -0.51013 0.29691 -0.58779 0.92978 0.001195 -0.2183 0.58649 -0.30902 0.94088 0.0012 0.094962 0.81403 167.f 0.95106 0.001205 0.39878 0.95641 0.30902 0.96029 0.00121 0.66327 0.99966 0.58779 0.96858 0.001215 0.86244 0.94019 0.80902 0.97592 0.00122 0.97678 0.78498 0.95106 0.98229 0.001225 0.99513 0.55062 1. 0.98769 0.00123 0.91577 0.26145 0.95106 0.99211 0.001235 0.74659 -0.053059 0.80902 0.99556 0.00124 0.50425 -0.36134 0.58779 0.99803 0.001245 0.21257 -0.63294 0.30902 0.99951 0.00125 -0.099833 -0.84147 -171.f 1. 0.001255 -0.40238 -0.96712 -0.30902 0.99951 0.00126 -0.66547 -0.99846 -0.58779 0.99803 0.001265 -0.86343 -0.93332 -0.80902 0.99556 0.00127 -0.97699 -0.77886 -0.95106 0.99211 0.001275 -0.99513 -0.55062 -1. 0.98769 0.00128 -0.91617 -0.27092 -0.95106 0.98229 0.001285 -0.7479 0.033433 -0.80902 0.97592 0.00129 -0.50679 0.33374 -0.58779 0.96858 0.001295 -0.2164 0.6021 -0.30902 0.96029 0.0013 0.094962 0.81403 188.f 0.95106 0.001305 0.397 0.95056 0.30902 0.94088 0.00131 0.66036 0.99992 0.58779 0.92978 0.001315 0.85948 0.9584 0.80902 0.91775 0.00132 0.97509 0.83057 0.95106 0.90483 0.001325 0.99603 0.62863 1. 0.89101 0.00133 0.92036 0.37123 0.95106 0.87631 0.001335 0.75549 0.081645 0.80902 0.86074 0.00134 0.51746 -0.21433 0.58779 0.84433 0.001345 0.22939 -0.49072 0.30902 0.82708 0.00135 -0.080813 -0.72361 -192.f 0.80902 0.001355 -0.38312 -0.89316 -0.30902 0.79016 0.00136 -0.64832 -0.98525 -0.58779 0.77051 0.001365 -0.85079 -0.99259 -0.80902 0.75011 0.00137 -0.97104 -0.91519 -0.95106 0.72897 0.001375 -0.9975 -0.76024 -1. 0.70711 0.00138 -0.92769 -0.54139 -0.95106 0.68455 0.001385 -0.76841 -0.27748 -0.80902 0.66131 0.00139 -0.53506 0.0091053 -0.58779 0.63742 0.001395 -0.25018 0.29432 -0.30902 0.61291 0.0014 0.058745 0.55452 195.f 0.58779 0.001405 0.36196 0.76834 0.30902 0.56208 0.00141 0.63027 0.91845 0.58779 0.53583 0.001415 0.83788 0.99289 0.80902 0.50904 0.00142 0.96483 0.98599 0.95106 0.48175 0.001425 0.99897 0.8987 1. 0.45399 0.00143 0.93704 0.73851 0.95106 0.42578 0.001435 0.78504 0.5187 0.80902 0.39715 0.00144 0.55761 0.25727 0.58779 0.36812 0.001445 0.27663 -0.024576 0.30902 0.33874 0.00145 -0.030897 -0.30412 -213.f 0.30902 0.001455 -0.33543 -0.55898 -0.30902 0.27899 0.00146 -0.60772 -0.76883 -0.58779 0.24869 0.001465 -0.82165 -0.91705 -0.80902 0.21814 0.00147 -0.95668 -0.99197 -0.95106 0.18738 0.001475 -0.99988 -0.98779 -1. 0.15643 0.00148 -0.94711 -0.90497 -0.95106 0.12533 0.001485 -0.80345 -0.7502 -0.80902 0.094108 0.00149 -0.58269 -0.53586 -0.58779 0.062791 0.001495 -0.30603 -0.279 -0.30902 0.031411 0.0015 217.f 202.f 216.f 0. 0.001505 0.30603 0.279 0.30902 -0.031411 0.00151 0.58269 0.53586 0.58779 -0.062791 0.001515 0.80345 0.7502 0.80902 -0.094108 0.00152 0.94711 0.90497 0.95106 -0.12533 0.001525 0.99988 0.98779 1. -0.15643 0.00153 0.95668 0.99197 0.95106 -0.18738 0.001535 0.82165 0.91705 0.80902 -0.21814 0.00154 0.60772 0.76883 0.58779 -0.24869 0.001545 0.33543 0.55898 0.30902 -0.27899 0.00155 0.030897 0.30412 -220.f -0.30902 0.001555 -0.27663 0.024576 -0.30902 -0.33874 0.00156 -0.55761 -0.25727 -0.58779 -0.36812 0.001565 -0.78504 -0.5187 -0.80902 -0.39715 0.00157 -0.93704 -0.73851 -0.95106 -0.42578 0.001575 -0.99897 -0.8987 -1. -0.45399 0.00158 -0.96483 -0.98599 -0.95106 -0.48175 0.001585 -0.83788 -0.99289 -0.80902 -0.50904 0.00159 -0.63027 -0.91845 -0.58779 -0.53583 0.001595 -0.36196 -0.76834 -0.30902 -0.56208 0.0016 -0.058745 -0.55452 237.f -0.58779 0.001605 0.25018 -0.29432 0.30902 -0.61291 0.00161 0.53506 -0.0091053 0.58779 -0.63742 0.001615 0.76841 0.27748 0.80902 -0.66131 0.00162 0.92769 0.54139 0.95106 -0.68455 0.001625 0.9975 0.76024 1. -0.70711 0.00163 0.97104 0.91519 0.95106 -0.72897 0.001635 0.85079 0.99259 0.80902 -0.75011 0.00164 0.64832 0.98525 0.58779 -0.77051 0.001645 0.38312 0.89316 0.30902 -0.79016 0.00165 0.080813 0.72361 -241.f -0.80902 0.001655 -0.22939 0.49072 -0.30902 -0.82708 0.00166 -0.51746 0.21433 -0.58779 -0.84433 0.001665 -0.75549 -0.081645 -0.80902 -0.86074 0.00167 -0.92036 -0.37123 -0.95106 -0.87631 0.001675 -0.99603 -0.62863 -1. -0.89101 0.00168 -0.97509 -0.83057 -0.95106 -0.90483 0.001685 -0.85948 -0.9584 -0.80902 -0.91775 0.00169 -0.66036 -0.99992 -0.58779 -0.92978 0.001695 -0.397 -0.95056 -0.30902 -0.94088 0.0017 -0.094962 -0.81403 244.f -0.95106 0.001705 0.2164 -0.6021 0.30902 -0.96029 0.00171 0.50679 -0.33374 0.58779 -0.96858 0.001715 0.7479 -0.033433 0.80902 -0.97592 0.00172 0.91617 0.27092 0.95106 -0.98229 0.001725 0.99513 0.55062 1. -0.98769 0.00173 0.97699 0.77886 0.95106 -0.99211 0.001735 0.86343 0.93332 0.80902 -0.99556 0.00174 0.66547 0.99846 0.58779 -0.99803 0.001745 0.40238 0.96712 0.30902 -0.99951 0.00175 0.099833 0.84147 -262.f -1. 0.001755 -0.21257 0.63294 -0.30902 -0.99951 0.00176 -0.50425 0.36134 -0.58779 -0.99803 0.001765 -0.74659 0.053059 -0.80902 -0.99556 0.00177 -0.91577 -0.26145 -0.95106 -0.99211 0.001775 -0.99513 -0.55062 -1. -0.98769 0.00178 -0.97678 -0.78498 -0.95106 -0.98229 0.001785 -0.86244 -0.94019 -0.80902 -0.97592 0.00179 -0.66327 -0.99966 -0.58779 -0.96858 0.001795 -0.39878 -0.95641 -0.30902 -0.96029 0.0018 -0.094962 -0.81403 265.f -0.95106 0.001805 0.2183 -0.58649 0.30902 -0.94088 0.00181 0.51013 -0.29691 0.58779 -0.92978 0.001815 0.75174 0.024721 0.80902 -0.91775 0.00182 0.91924 0.3446 0.95106 -0.90483 0.001825 0.99603 0.62863 1. -0.89101 0.00183 0.97445 0.84611 0.95106 -0.87631 0.001835 0.85655 0.97311 0.80902 -0.86074 0.00184 0.65392 0.99519 0.58779 -0.84433 0.001845 0.38653 0.90915 0.30902 -0.82708 0.00185 0.080813 0.72361 -269.f -0.80902 0.001855 -0.23298 0.45822 -0.30902 -0.79016 0.00186 -0.52377 0.14172 -0.58779 -0.77051 0.001865 -0.76269 -0.19118 -0.80902 -0.75011 0.00187 -0.92602 -0.50352 -0.95106 -0.72897 0.001875 -0.9975 -0.76024 -1. -0.70711 0.00188 -0.96997 -0.93219 -0.95106 -0.68455 0.001885 -0.84609 -0.99946 -0.80902 -0.66131 0.00189 -0.63813 -0.95383 -0.58779 -0.63742 0.001895 -0.36669 -0.79986 -0.30902 -0.61291 0.0019 -0.058745 -0.55452 286.f -0.58779 0.001905 0.2551 -0.24539 0.30902 -0.56208 0.00191 0.54361 0.09236 0.58779 -0.53583 0.001915 0.77806 0.41999 0.80902 -0.50904 0.00192 0.93507 0.69963 0.95106 -0.48175 0.001925 0.99897 0.8987 1. -0.45399 0.00193 0.96335 0.99378 0.95106 -0.42578 0.001935 0.83172 0.9734 0.80902 -0.39715 0.00194 0.61716 0.83954 0.58779 -0.36812 0.001945 0.34105 0.60749 0.30902 -0.33874 0.00195 0.030897 0.30412 -291.f -0.30902 0.001955 -0.28237 -0.035161 -0.30902 -0.27899 0.00196 -0.56749 -0.37058 -0.58779 -0.24869 0.001965 -0.796 -0.66264 -0.80902 -0.21814 0.00197 -0.9451 -0.87684 -0.95106 -0.18738 0.001975 -0.99988 -0.98779 -1. -0.15643 0.00198 -0.95485 -0.98223 -0.95106 -0.12533 0.001985 -0.81451 -0.86067 -0.80902 -0.094108 0.00199 -0.59285 -0.63739 -0.58779 -0.062791 0.001995 -0.312 -0.33873 -0.30902 -0.031411 0.002 166.f 180.f 165.f 0. V1 ( 1 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 0.1 signal= 1.K V2 ( 2 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 1. signal= 1.K V3 ( 3 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 10.K delay=NA( 0.) damping=NA( 0.) V4 ( 4 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 1.K delay=NA( 0.) damping=NA( 0.) tests/==out/bm_sffm.2.ckt.out000066400000000000000000000361731316501211100163040ustar00rootroot00000000000000' sin test #Time v(1) v(3) v(4) next(V1) event(V1) next(V3) event(V3) 0. 0. 0. 0. 0. 20.843u 0. 0. 20.u 0.99799 0.95106 0.12533 46.88u 20.843u 46.88u 0. 20.843u 1. 0.96609 0.13059 97.405u 41.746u 48.396u 0. 37.905u 0.28415 0.68889 0.23592 50.258u 41.746u 52.445u 0. 41.746u 219.f 0.49567 0.2593 52.6u 62.769u 60.209u 0. 52.565u -0.72414 -0.16048 0.32431 65.52u 62.769u 65.672u 0. 62.769u -1. -0.71896 0.38424 78.755u 83.974u 78.167u 0. 78.144u -0.4171 -0.98055 0.4715 98.753u 83.974u 98.248u 0. 83.974u -77.f -0.84521 0.50348 96.352u 105.42u 113.49u 0. 96.335u 0.78811 -0.22824 0.569 110.86u 105.42u 113.64u 0. 105.42u 1. 0.33422 0.61501 124.6u 127.19u 118.7u 0. 114.51u 0.79057 0.79062 0.65901 133.42u 127.19u 132.17u 0. 127.19u 50.f 0.99059 0.71675 141.73u 149.33u 154.15u 0. 139.86u -0.78498 0.59497 0.76995 155.u 149.33u 160.09u 0. 149.33u -1. 0.042243 0.80653 170.19u 171.92u 164.85u 0. 164.75u -0.47499 -0.79968 0.85994 183.31u 171.92u 182.22u 0. 171.92u -263.f -0.98137 0.88206 185.2u 195.05u 195.11u 0. 185.17u 0.78615 -0.80269 0.91818 201.37u 195.05u 207.09u 0. 195.05u 1. -0.30617 0.94098 221.67u 218.78u 212.08u 0. 212.08u 0.42538 0.688 0.97174 230.22u 218.78u 228.65u 0. 218.78u 1.486p 0.92459 0.98082 232.3u 243.2u 239.68u 0. 232.27u -0.76679 0.89737 0.9938 249.44u 243.2u 256.6u 0. 243.2u -1. 0.41449 0.99909 276.85u 268.38u 261.07u 0. 260.94u -0.4428 -0.63469 0.99764 279.8u 268.38u 277.1u 0. 268.38u -910.f -0.91476 0.99334 282.82u 294.4u 288.78u 0. 282.81u 0.76924 -0.88196 0.97882 301.22u 294.4u 307.56u 0. 294.4u 1. -0.34467 0.96134 340.92u 321.31u 312.19u 0. 312.17u 0.50364 0.69213 0.92468 332.13u 321.31u 328.77u 0. 321.31u 694.f 0.97326 0.90129 337.2u 349.15u 343.13u 0. 337.15u -0.78336 0.72258 0.85379 357.02u 349.15u 359.33u 0. 349.15u -1. 0.053479 0.81215 419.42u 377.91u 365.75u 0. 361.15u -0.78907 -0.64462 0.76589 382.75u 377.91u 377.72u 0. 373.15u -0.25369 -0.99325 0.71528 391.98u 377.91u 397.91u 0. 377.91u -822.f -0.98337 0.69407 392.62u 407.53u 399.59u 0. 392.52u 0.70351 -0.45285 0.62514 415.29u 407.53u 410.34u 0. 407.53u 1. 0.45561 0.54887 440.61u 437.89u 422.27u 0. 422.54u 0.71041 0.98805 0.46772 445.23u 437.89u 444.1u 0. 437.89u 1.856p 0.68952 0.38041 457.46u 468.8u 461.4u 0. 453.24u -0.70541 -0.20247 0.28956 474.48u 468.8u 469.74u 0. 468.8u -1. -0.92507 0.19478 507.3u 500.u 487.7u 0. 484.35u -0.70804 -0.83217 0.098143 509.06u 500.u 517.17u 0. 500.u -1.067p -1.334p 134.f 520.27u 531.2u 517.74u 0. 515.65u 0.70804 0.83217 -0.098143 537.28u 531.2u 533.43u 0. 531.2u 1. 0.92507 -0.19478 566.99u 562.11u 561.58u 0. 561.18u 0.04776 -0.64589 -0.37498 585.64u 562.11u 579.75u 0. 562.11u 623.f -0.68952 -0.38041 572.51u 592.47u 579.19u 0. 572.45u -0.50677 -0.98723 -0.43968 592.21u 592.47u 599.6u 0. 592.01u -0.99971 -0.48127 -0.54644 630.03u 592.47u 611.38u 0. 592.47u -1. -0.45561 -0.54887 617.83u 622.09u 607.05u 0. 606.98u -0.72202 0.42474 -0.6227 628.99u 622.09u 621.94u 0. 621.49u -0.032296 0.97581 -0.69135 640.72u 622.09u 645.62u 0. 622.09u -1.181p 0.98337 -0.69407 631.17u 650.85u 645.u 0. 631.16u 0.47051 0.92607 -0.73393 650.65u 650.85u 649.86u 0. 649.66u 0.9978 0.021605 -0.80775 747.39u 650.85u 666.75u 0. 650.85u 1. -0.053479 -0.81215 675.17u 678.69u 659.57u 0. 659.56u 0.88442 -0.56498 -0.84283 680.63u 678.69u 677.37u 0. 677.19u 0.085654 -0.99052 -0.89718 696.21u 678.69u 706.05u 0. 678.69u 1.86p -0.97326 -0.90129 689.46u 705.6u 697.91u 0. 689.43u -0.58155 -0.61631 -0.92846 708.49u 705.6u 707.u 0. 705.6u -1. 0.34467 -0.96134 756.66u 731.62u 721.35u 0. 721.77u -0.56531 0.97947 -0.98431 742.69u 731.62u 743.63u 0. 731.62u 787.f 0.91476 -0.99334 747.92u 756.8u 756.53u 0. 747.88u 0.84608 0.1328 -0.99991 766.6u 756.8u 765.72u 0. 756.8u 1. -0.41449 -0.99909 787.65u 781.22u 771.34u 0. 771.26u 0.60242 -0.97248 -0.99109 790.99u 781.22u 794.39u 0. 781.22u -705.f -0.92459 -0.98082 796.6u 804.95u 803.27u 0. 796.46u -0.84334 -0.22089 -0.9577 814.18u 804.95u 813.99u 0. 804.95u -1. 0.30617 -0.94098 834.94u 828.08u 818.34u 0. 818.23u -0.62376 0.9109 -0.9095 836.78u 828.08u 839.73u 0. 828.08u 2.592p 0.98137 -0.88206 842.72u 850.67u 852.08u 0. 837.92u 0.62902 0.68806 -0.85125 853.31u 850.67u 856.11u 0. 850.67u 1. -0.042243 -0.80653 876.66u 872.81u 866.66u 0. 863.42u 0.62094 -0.74685 -0.75663 881.37u 872.81u 881.58u 0. 872.81u -1.906p -0.99059 -0.71675 886.85u 894.58u 913.53u 0. 882.21u -0.62485 -0.89919 -0.67437 896.89u 894.58u 902.06u 0. 894.58u -1. -0.33422 -0.61501 920.77u 916.03u 911.71u 0. 906.94u -0.61903 0.42264 -0.55193 924.09u 916.03u 921.58u 0. 916.03u -2.617p 0.84521 -0.50348 929.57u 937.23u 937.21u 0. 925.11u 0.6216 0.99998 -0.45339 939.38u 937.23u 950.09u 0. 937.23u 1. 0.71896 -0.38424 964.18u 958.25u 955.68u 0. 955.55u 0.20091 -0.34196 -0.27564 971.86u 958.25u 971.78u 0. 958.25u 1.747p -0.49567 -0.2593 968.28u 979.16u 974.35u 0. 968.27u -0.68302 -0.91194 -0.19804 983.06u 979.16u 996.77u 0. 979.16u -1. -0.96609 -0.13059 0.0010123 0.001 999.58u 0. 999.57u -0.032143 -0.026788 -0.0026791 0.0010151 0.001 0.0010171 0. 0.001 -5.282p -4.401p -441.f 0.0010063 0.0010208 0.0010072 0. 0.0010062 0.45397 0.38268 0.03926 0.0010195 0.0010208 0.0010219 0. 0.0010195 0.99489 0.94088 0.12222 0.0010584 0.0010208 0.0010879 0. 0.0010208 1. 0.96609 0.13059 0.0010372 0.0010417 0.0010413 0. 0.0010372 0.3371 0.72194 0.23138 0.001052 0.0010417 0.0010552 0. 0.0010417 -3.184p 0.49567 0.2593 0.001053 0.0010628 0.0010578 0. 0.0010529 -0.74059 -0.18051 0.32623 0.0010687 0.0010628 0.001068 0. 0.0010628 -1. -0.71896 0.38424 0.0010912 0.001084 0.0010822 0. 0.0010819 -0.15257 -0.90758 0.49216 0.0010975 0.001084 0.0011058 0. 0.001084 4.865p -0.84521 0.50348 0.0010934 0.0011054 0.0011024 0. 0.0010933 0.63422 -0.40745 0.55333 0.0011083 0.0011054 0.0011101 0. 0.0011054 1. 0.33422 0.61501 0.0011319 0.0011272 0.0011201 0. 0.0011175 0.6397 0.89176 0.67314 0.0011335 0.0011272 0.0011409 0. 0.0011272 4.668p 0.99059 0.71675 0.0011408 0.0011493 0.0011512 0. 0.0011368 -0.63563 0.73565 0.75772 0.0011518 0.0011493 0.0011552 0. 0.0011493 -1. 0.042243 0.80653 0.0011938 0.0011719 0.0011655 0. 0.0011618 -0.64326 -0.67584 0.85037 0.0011787 0.0011719 0.0011792 0. 0.0011719 -1.737p -0.98137 0.88206 0.0011861 0.001195 0.0012039 0. 0.001182 0.63779 -0.90389 0.9102 0.0011976 0.001195 0.0012022 0. 0.001195 1. -0.30617 0.94098 0.0012322 0.0012188 0.0012123 0. 0.0012081 0.64742 0.48506 0.96548 0.0012256 0.0012188 0.0012232 0. 0.0012188 5.116p 0.92459 0.98082 0.0012336 0.0012432 0.0012413 0. 0.0012295 -0.64062 0.96031 0.99172 0.001246 0.0012432 0.001252 0. 0.0012432 -1. 0.41449 0.99909 0.0012784 0.0012684 0.001261 0. 0.0012569 -0.65191 -0.41993 0.99906 0.0012754 0.0012684 0.0012713 0. 0.0012684 -650.f -0.91476 0.99334 0.0012841 0.0012944 0.0012895 0. 0.0012799 0.64403 -0.95365 0.98245 0.0012975 0.0012944 0.0013035 0. 0.0012944 1. -0.34467 0.96134 0.0013298 0.0013213 0.0013123 0. 0.0013089 0.65621 0.53234 0.93222 0.0013286 0.0013213 0.0013243 0. 0.0013213 1.343p 0.97326 0.90129 0.0013381 0.0013491 0.0013438 0. 0.0013337 -0.64795 0.85468 0.86491 0.0013526 0.0013491 0.0013555 0. 0.0013491 -1. 0.053479 0.81215 0.0013866 0.0013779 0.0013663 0. 0.0013646 -0.65954 -0.79434 0.75173 0.0013856 0.0013779 0.0013823 0. 0.0013779 -3.982p -0.98337 0.69407 0.0013959 0.0014075 0.0014107 0. 0.0013912 0.65223 -0.52492 0.63157 0.0014114 0.0014075 0.0014105 0. 0.0014075 1. 0.45561 0.54887 0.0014502 0.0014379 0.0014227 0. 0.0014239 0.66093 0.9974 0.4604 0.0014464 0.0014379 0.0014455 0. 0.0014379 2.359p 0.68952 0.38041 0.001457 0.0014688 0.00146 0. 0.0014519 -0.65648 -0.12091 0.29747 0.0014731 0.0014688 0.0014683 0. 0.001466 -0.98977 -0.84322 0.21221 0.0015279 0.0014688 0.0014844 0. 0.0014688 -1. -0.92507 0.19478 0.0014937 0.0015 0.0015039 0. 0.0014929 -0.34725 -0.42889 0.044311 0.0015149 0.0015 0.0015117 0. 0.0015 -2.341p -2.924p 293.f 0.001517 0.0015312 0.0015143 0. 0.0015139 0.64296 0.76604 -0.087156 0.0015363 0.0015312 0.001532 0. 0.0015312 1. 0.92507 -0.19478 0.001592 0.0015621 0.0015684 0. 0.0015621 1.827p -0.68952 -0.38041 0.0015855 0.0015925 0.0015801 0. 0.0015796 -0.78456 -0.95808 -0.47969 0.0016009 0.0015925 0.0015994 0. 0.0015925 -1. -0.45561 -0.54887 0.0016205 0.0016221 0.0016165 0. 0.0016164 -0.29839 0.85893 -0.66809 0.0016414 0.0016221 0.0016342 0. 0.0016221 -8.857p 0.98337 -0.69407 0.0016378 0.0016509 0.001645 0. 0.0016372 0.7308 0.7199 -0.75922 0.0016582 0.0016509 0.0016579 0. 0.0016509 1. -0.053479 -0.81215 0.0016948 0.0016787 0.0016672 0. 0.0016645 0.72261 -0.78991 -0.85912 0.0016868 0.0016787 0.0016827 0. 0.0016787 2.928p -0.97326 -0.90129 0.0016971 0.0017056 0.0017412 0. 0.0016929 -0.73244 -0.43236 -0.93629 0.0017121 0.0017056 0.0017116 0. 0.0017056 -1. 0.34467 -0.96134 0.0017362 0.0017316 0.00172 0. 0.0017183 -0.72403 0.91312 -0.98025 0.00174 0.0017316 0.0017388 0. 0.0017316 -6.349p 0.91476 -0.99334 0.0017488 0.0017568 0.001755 0. 0.0017449 0.73353 0.31372 -0.99949 0.0017628 0.0017568 0.0017626 0. 0.0017568 1. -0.41449 -0.99909 0.0017858 0.0017812 0.0017712 0. 0.0017687 0.72592 -0.92225 -0.99312 0.0017889 0.0017812 0.0017905 0. 0.0017812 -4.937p -0.92459 -0.98082 0.0017973 0.001805 0.0018033 0. 0.0017938 -0.73423 -0.3822 -0.96244 0.0018106 0.001805 0.0018114 0. 0.001805 -1. 0.30617 -0.94098 0.0018331 0.0018281 0.001819 0. 0.0018161 -0.72789 0.84922 -0.91487 0.0018351 0.0018281 0.0018367 0. 0.0018281 -2.818p 0.98137 -0.88206 0.0018433 0.0018507 0.0018524 0. 0.00184 0.73464 0.5874 -0.8443 0.0018561 0.0018507 0.0018582 0. 0.0018507 1. -0.042243 -0.80653 0.0018786 0.0018728 0.0018661 0. 0.0018613 0.72971 -0.65362 -0.76513 0.0018792 0.0018728 0.0018789 0. 0.0018728 3.241p -0.99059 -0.71675 0.0018874 0.0018946 0.0019437 0. 0.0018843 -0.73479 -0.83435 -0.66464 0.0018997 0.0018946 0.0019037 0. 0.0018946 -1. -0.33422 -0.61501 0.0019229 0.001916 0.0019114 0. 0.0019096 -0.45289 0.56917 -0.53775 0.0019265 0.001916 0.0019256 0. 0.001916 3.925p 0.84521 -0.50348 0.0019285 0.0019372 0.0019386 0. 0.001928 0.77501 0.98202 -0.43699 0.0019436 0.0019372 0.0019504 0. 0.0019372 1. 0.71896 -0.38424 0.0019788 0.0019583 0.0019553 0. 0.0019529 0.3888 -0.18264 -0.2915 0.0019688 0.0019583 0.0019691 0. 0.0019583 -11.417p -0.49567 -0.2593 0.00197 0.0019792 0.0019744 0. 0.0019687 -0.70572 -0.92244 -0.19546 0.0019837 0.0019792 0.0019998 0. 0.0019792 -1. -0.96609 -0.13059 0.0020139 0.002 0.0019995 0. 0.0019896 -0.70731 -0.60901 -0.065434 0.0020054 0.002 0.0020071 0. 0.002 24.f 0. 0. 0.0020135 0.0020208 0.0020155 0. V1 ( 1 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 2. signal= 1.K samples= 0. V3 ( 3 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 10.K delay=NA( 0.) damping=NA( 0.) samples= 0. V4 ( 4 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 1.K delay=NA( 0.) damping=NA( 0.) samples= 0. Gnucap System status iterations: op=0, dc=0, tran=500, fourier=0, total=667 transient timesteps: accepted=167, rejected=0, total=167 nodes: user=3, subckt=0, model=0, total=3 dctran density=33.3%, ac density=33.3% tests/==out/bm_sffm.3.ckt.out000066400000000000000000000672201316501211100163020ustar00rootroot00000000000000' sin test #Time v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. 5.u 0.312 0.33873 0.30902 0.37977 10.u 0.59285 0.63739 0.58779 0.70258 15.u 0.81451 0.86067 0.80902 0.9201 20.u 0.95485 0.98223 0.95106 0.99991 25.u 0.99988 0.98779 1. 0.93035 30.u 0.9451 0.87684 0.95106 0.72216 35.u 0.796 0.66264 0.80902 0.40679 40.u 0.56749 0.37058 0.58779 0.031458 45.u 0.28237 0.035161 0.30902 -0.34798 50.u -0.030897 -0.30412 0. -0.6755 55.u -0.34105 -0.60749 -0.30902 -0.90318 60.u -0.61716 -0.83954 -0.58779 -0.99826 65.u -0.83172 -0.9734 -0.80902 -0.9477 70.u -0.96335 -0.99378 -0.95106 -0.75985 75.u -0.99897 -0.8987 -1. -0.46286 80.u -0.93507 -0.69963 -0.95106 -0.10026 85.u -0.77806 -0.41999 -0.80902 0.27561 90.u -0.54361 -0.09236 -0.58779 0.61127 95.u -0.2551 0.24539 -0.30902 0.85978 100.u 0.058745 0.55452 0. 0.98721 105.u 0.36669 0.79986 0.30902 0.97712 110.u 0.63813 0.95383 0.58779 0.83242 115.u 0.84609 0.99946 0.80902 0.57448 120.u 0.96997 0.93219 0.95106 0.23969 125.u 0.9975 0.76024 1. -0.12592 130.u 0.92602 0.50352 0.95106 -0.47317 135.u 0.76269 0.19118 0.80902 -0.7564 140.u 0.52377 -0.14172 0.58779 -0.93941 145.u 0.23298 -0.45822 0.30902 -0.99993 150.u -0.080813 -0.72361 0. -0.93202 155.u -0.38653 -0.90915 -0.30902 -0.74627 160.u -0.65392 -0.99519 -0.58779 -0.46788 165.u -0.85655 -0.97311 -0.80902 -0.13294 170.u -0.97445 -0.84611 -0.95106 0.21645 175.u -0.99603 -0.62863 -1. 0.53763 180.u -0.91924 -0.3446 -0.95106 0.79253 185.u -0.75174 -0.024721 -0.80902 0.95213 190.u -0.51013 0.29691 -0.58779 0.99948 195.u -0.2183 0.58649 -0.30902 0.93118 200.u 0.094962 0.81403 0. 0.75723 205.u 0.39878 0.95641 0.30902 0.49925 210.u 0.66327 0.99966 0.58779 0.18756 215.u 0.86244 0.94019 0.80902 -0.1426 220.u 0.97678 0.78498 0.95106 -0.45514 225.u 0.99513 0.55062 1. -0.71712 230.u 0.91577 0.26145 0.95106 -0.90203 235.u 0.74659 -0.053059 0.80902 -0.99233 240.u 0.50425 -0.36134 0.58779 -0.98082 245.u 0.21257 -0.63294 0.30902 -0.87085 250.u -0.099833 -0.84147 0. -0.67546 255.u -0.40238 -0.96712 -0.30902 -0.41561 260.u -0.66547 -0.99846 -0.58779 -0.11774 265.u -0.86343 -0.93332 -0.80902 0.18909 270.u -0.97699 -0.77886 -0.95106 0.47602 275.u -0.99513 -0.55062 -1. 0.71712 280.u -0.91617 -0.27092 -0.95106 0.89159 285.u -0.7479 0.033433 -0.80902 0.9854 290.u -0.50679 0.33374 -0.58779 0.99214 295.u -0.2164 0.6021 -0.30902 0.91319 300.u 0.094962 0.81403 0. 0.75723 305.u 0.397 0.95056 0.30902 0.53906 310.u 0.66036 0.99992 0.58779 0.2781 315.u 0.85948 0.9584 0.80902 -0.0034962 320.u 0.97509 0.83057 0.95106 -0.28272 325.u 0.99603 0.62863 1. -0.53763 330.u 0.92036 0.37123 0.95106 -0.74897 335.u 0.75549 0.081645 0.80902 -0.90153 340.u 0.51746 -0.21433 0.58779 -0.98512 345.u 0.22939 -0.49072 0.30902 -0.995 350.u -0.080813 -0.72361 0. -0.93202 355.u -0.38312 -0.89316 -0.30902 -0.80225 360.u -0.64832 -0.98525 -0.58779 -0.61631 365.u -0.85079 -0.99259 -0.80902 -0.38836 370.u -0.97104 -0.91519 -0.95106 -0.13502 375.u -0.9975 -0.76024 -1. 0.12592 380.u -0.92769 -0.54139 -0.95106 0.37674 385.u -0.76841 -0.27748 -0.80902 0.60094 390.u -0.53506 0.0091053 -0.58779 0.78426 395.u -0.25018 0.29432 -0.30902 0.91553 400.u 0.058745 0.55452 0. 0.98721 405.u 0.36196 0.76834 0.30902 0.99574 410.u 0.63027 0.91845 0.58779 0.94158 415.u 0.83788 0.99289 0.80902 0.82905 420.u 0.96483 0.98599 0.95106 0.66594 425.u 0.99897 0.8987 1. 0.46286 430.u 0.93704 0.73851 0.95106 0.23262 435.u 0.78504 0.5187 0.80902 -0.010677 440.u 0.55761 0.25727 0.58779 -0.25242 445.u 0.27663 -0.024576 0.30902 -0.47838 450.u -0.030897 -0.30412 0. -0.6755 455.u -0.33543 -0.55898 -0.30902 -0.83257 460.u -0.60772 -0.76883 -0.58779 -0.94086 465.u -0.82165 -0.91705 -0.80902 -0.99452 470.u -0.95668 -0.99197 -0.95106 -0.99083 475.u -0.99988 -0.98779 -1. -0.93035 480.u -0.94711 -0.90497 -0.95106 -0.8168 485.u -0.80345 -0.7502 -0.80902 -0.65684 490.u -0.58269 -0.53586 -0.58779 -0.45967 495.u -0.30603 -0.279 -0.30902 -0.23651 500.u 63.f 56.f 0. 48.f 505.u 0.30603 0.279 0.30902 0.23651 510.u 0.58269 0.53586 0.58779 0.45967 515.u 0.80345 0.7502 0.80902 0.65684 520.u 0.94711 0.90497 0.95106 0.8168 525.u 0.99988 0.98779 1. 0.93035 530.u 0.95668 0.99197 0.95106 0.99083 535.u 0.82165 0.91705 0.80902 0.99452 540.u 0.60772 0.76883 0.58779 0.94086 545.u 0.33543 0.55898 0.30902 0.83257 550.u 0.030897 0.30412 0. 0.6755 555.u -0.27663 0.024576 -0.30902 0.47838 560.u -0.55761 -0.25727 -0.58779 0.25242 565.u -0.78504 -0.5187 -0.80902 0.010677 570.u -0.93704 -0.73851 -0.95106 -0.23262 575.u -0.99897 -0.8987 -1. -0.46286 580.u -0.96483 -0.98599 -0.95106 -0.66594 585.u -0.83788 -0.99289 -0.80902 -0.82905 590.u -0.63027 -0.91845 -0.58779 -0.94158 595.u -0.36196 -0.76834 -0.30902 -0.99574 600.u -0.058745 -0.55452 0. -0.98721 605.u 0.25018 -0.29432 0.30902 -0.91553 610.u 0.53506 -0.0091053 0.58779 -0.78426 615.u 0.76841 0.27748 0.80902 -0.60094 620.u 0.92769 0.54139 0.95106 -0.37674 625.u 0.9975 0.76024 1. -0.12592 630.u 0.97104 0.91519 0.95106 0.13502 635.u 0.85079 0.99259 0.80902 0.38836 640.u 0.64832 0.98525 0.58779 0.61631 645.u 0.38312 0.89316 0.30902 0.80225 650.u 0.080813 0.72361 0. 0.93202 655.u -0.22939 0.49072 -0.30902 0.995 660.u -0.51746 0.21433 -0.58779 0.98512 665.u -0.75549 -0.081645 -0.80902 0.90153 670.u -0.92036 -0.37123 -0.95106 0.74897 675.u -0.99603 -0.62863 -1. 0.53763 680.u -0.97509 -0.83057 -0.95106 0.28272 685.u -0.85948 -0.9584 -0.80902 0.0034962 690.u -0.66036 -0.99992 -0.58779 -0.2781 695.u -0.397 -0.95056 -0.30902 -0.53906 700.u -0.094962 -0.81403 0. -0.75723 705.u 0.2164 -0.6021 0.30902 -0.91319 710.u 0.50679 -0.33374 0.58779 -0.99214 715.u 0.7479 -0.033433 0.80902 -0.9854 720.u 0.91617 0.27092 0.95106 -0.89159 725.u 0.99513 0.55062 1. -0.71712 730.u 0.97699 0.77886 0.95106 -0.47602 735.u 0.86343 0.93332 0.80902 -0.18909 740.u 0.66547 0.99846 0.58779 0.11774 745.u 0.40238 0.96712 0.30902 0.41561 750.u 0.099833 0.84147 -101.f 0.67546 755.u -0.21257 0.63294 -0.30902 0.87085 760.u -0.50425 0.36134 -0.58779 0.98082 765.u -0.74659 0.053059 -0.80902 0.99233 770.u -0.91577 -0.26145 -0.95106 0.90203 775.u -0.99513 -0.55062 -1. 0.71712 780.u -0.97678 -0.78498 -0.95106 0.45514 785.u -0.86244 -0.94019 -0.80902 0.1426 790.u -0.66327 -0.99966 -0.58779 -0.18756 795.u -0.39878 -0.95641 -0.30902 -0.49925 800.u -0.094962 -0.81403 112.f -0.75723 805.u 0.2183 -0.58649 0.30902 -0.93118 810.u 0.51013 -0.29691 0.58779 -0.99948 815.u 0.75174 0.024721 0.80902 -0.95213 820.u 0.91924 0.3446 0.95106 -0.79253 825.u 0.99603 0.62863 1. -0.53763 830.u 0.97445 0.84611 0.95106 -0.21645 835.u 0.85655 0.97311 0.80902 0.13294 840.u 0.65392 0.99519 0.58779 0.46788 845.u 0.38653 0.90915 0.30902 0.74627 850.u 0.080813 0.72361 -122.f 0.93202 855.u -0.23298 0.45822 -0.30902 0.99993 860.u -0.52377 0.14172 -0.58779 0.93941 865.u -0.76269 -0.19118 -0.80902 0.7564 870.u -0.92602 -0.50352 -0.95106 0.47317 875.u -0.9975 -0.76024 -1. 0.12592 880.u -0.96997 -0.93219 -0.95106 -0.23969 885.u -0.84609 -0.99946 -0.80902 -0.57448 890.u -0.63813 -0.95383 -0.58779 -0.83242 895.u -0.36669 -0.79986 -0.30902 -0.97712 900.u -0.058745 -0.55452 126.f -0.98721 905.u 0.2551 -0.24539 0.30902 -0.85978 910.u 0.54361 0.09236 0.58779 -0.61127 915.u 0.77806 0.41999 0.80902 -0.27561 920.u 0.93507 0.69963 0.95106 0.10026 925.u 0.99897 0.8987 1. 0.46286 930.u 0.96335 0.99378 0.95106 0.75985 935.u 0.83172 0.9734 0.80902 0.9477 940.u 0.61716 0.83954 0.58779 0.99826 945.u 0.34105 0.60749 0.30902 0.90318 950.u 0.030897 0.30412 -136.f 0.6755 955.u -0.28237 -0.035161 -0.30902 0.34798 960.u -0.56749 -0.37058 -0.58779 -0.031458 965.u -0.796 -0.66264 -0.80902 -0.40679 970.u -0.9451 -0.87684 -0.95106 -0.72216 975.u -0.99988 -0.98779 -1. -0.93035 980.u -0.95485 -0.98223 -0.95106 -0.99991 985.u -0.81451 -0.86067 -0.80902 -0.9201 990.u -0.59285 -0.63739 -0.58779 -0.70258 995.u -0.312 -0.33873 -0.30902 -0.37977 0.001 140.f 154.f 140.f 168.f 0.001005 0.312 0.33873 0.30902 0.37977 0.00101 0.59285 0.63739 0.58779 0.70258 0.001015 0.81451 0.86067 0.80902 0.9201 0.00102 0.95485 0.98223 0.95106 0.99991 0.001025 0.99988 0.98779 1. 0.93035 0.00103 0.9451 0.87684 0.95106 0.72216 0.001035 0.796 0.66264 0.80902 0.40679 0.00104 0.56749 0.37058 0.58779 0.031458 0.001045 0.28237 0.035161 0.30902 -0.34798 0.00105 -0.030897 -0.30412 -143.f -0.6755 0.001055 -0.34105 -0.60749 -0.30902 -0.90318 0.00106 -0.61716 -0.83954 -0.58779 -0.99826 0.001065 -0.83172 -0.9734 -0.80902 -0.9477 0.00107 -0.96335 -0.99378 -0.95106 -0.75985 0.001075 -0.99897 -0.8987 -1. -0.46286 0.00108 -0.93507 -0.69963 -0.95106 -0.10026 0.001085 -0.77806 -0.41999 -0.80902 0.27561 0.00109 -0.54361 -0.09236 -0.58779 0.61127 0.001095 -0.2551 0.24539 -0.30902 0.85978 0.0011 0.058745 0.55452 146.f 0.98721 0.001105 0.36669 0.79986 0.30902 0.97712 0.00111 0.63813 0.95383 0.58779 0.83242 0.001115 0.84609 0.99946 0.80902 0.57448 0.00112 0.96997 0.93219 0.95106 0.23969 0.001125 0.9975 0.76024 1. -0.12592 0.00113 0.92602 0.50352 0.95106 -0.47317 0.001135 0.76269 0.19118 0.80902 -0.7564 0.00114 0.52377 -0.14172 0.58779 -0.93941 0.001145 0.23298 -0.45822 0.30902 -0.99993 0.00115 -0.080813 -0.72361 -164.f -0.93202 0.001155 -0.38653 -0.90915 -0.30902 -0.74627 0.00116 -0.65392 -0.99519 -0.58779 -0.46788 0.001165 -0.85655 -0.97311 -0.80902 -0.13294 0.00117 -0.97445 -0.84611 -0.95106 0.21645 0.001175 -0.99603 -0.62863 -1. 0.53763 0.00118 -0.91924 -0.3446 -0.95106 0.79253 0.001185 -0.75174 -0.024721 -0.80902 0.95213 0.00119 -0.51013 0.29691 -0.58779 0.99948 0.001195 -0.2183 0.58649 -0.30902 0.93118 0.0012 0.094962 0.81403 167.f 0.75723 0.001205 0.39878 0.95641 0.30902 0.49925 0.00121 0.66327 0.99966 0.58779 0.18756 0.001215 0.86244 0.94019 0.80902 -0.1426 0.00122 0.97678 0.78498 0.95106 -0.45514 0.001225 0.99513 0.55062 1. -0.71712 0.00123 0.91577 0.26145 0.95106 -0.90203 0.001235 0.74659 -0.053059 0.80902 -0.99233 0.00124 0.50425 -0.36134 0.58779 -0.98082 0.001245 0.21257 -0.63294 0.30902 -0.87085 0.00125 -0.099833 -0.84147 -171.f -0.67546 0.001255 -0.40238 -0.96712 -0.30902 -0.41561 0.00126 -0.66547 -0.99846 -0.58779 -0.11774 0.001265 -0.86343 -0.93332 -0.80902 0.18909 0.00127 -0.97699 -0.77886 -0.95106 0.47602 0.001275 -0.99513 -0.55062 -1. 0.71712 0.00128 -0.91617 -0.27092 -0.95106 0.89159 0.001285 -0.7479 0.033433 -0.80902 0.9854 0.00129 -0.50679 0.33374 -0.58779 0.99214 0.001295 -0.2164 0.6021 -0.30902 0.91319 0.0013 0.094962 0.81403 189.f 0.75723 0.001305 0.397 0.95056 0.30902 0.53906 0.00131 0.66036 0.99992 0.58779 0.2781 0.001315 0.85948 0.9584 0.80902 -0.0034962 0.00132 0.97509 0.83057 0.95106 -0.28272 0.001325 0.99603 0.62863 1. -0.53763 0.00133 0.92036 0.37123 0.95106 -0.74897 0.001335 0.75549 0.081645 0.80902 -0.90153 0.00134 0.51746 -0.21433 0.58779 -0.98512 0.001345 0.22939 -0.49072 0.30902 -0.995 0.00135 -0.080813 -0.72361 -192.f -0.93202 0.001355 -0.38312 -0.89316 -0.30902 -0.80225 0.00136 -0.64832 -0.98525 -0.58779 -0.61631 0.001365 -0.85079 -0.99259 -0.80902 -0.38836 0.00137 -0.97104 -0.91519 -0.95106 -0.13502 0.001375 -0.9975 -0.76024 -1. 0.12592 0.00138 -0.92769 -0.54139 -0.95106 0.37674 0.001385 -0.76841 -0.27748 -0.80902 0.60094 0.00139 -0.53506 0.0091053 -0.58779 0.78426 0.001395 -0.25018 0.29432 -0.30902 0.91553 0.0014 0.058745 0.55452 195.f 0.98721 0.001405 0.36196 0.76834 0.30902 0.99574 0.00141 0.63027 0.91845 0.58779 0.94158 0.001415 0.83788 0.99289 0.80902 0.82905 0.00142 0.96483 0.98599 0.95106 0.66594 0.001425 0.99897 0.8987 1. 0.46286 0.00143 0.93704 0.73851 0.95106 0.23262 0.001435 0.78504 0.5187 0.80902 -0.010677 0.00144 0.55761 0.25727 0.58779 -0.25242 0.001445 0.27663 -0.024576 0.30902 -0.47838 0.00145 -0.030897 -0.30412 -213.f -0.6755 0.001455 -0.33543 -0.55898 -0.30902 -0.83257 0.00146 -0.60772 -0.76883 -0.58779 -0.94086 0.001465 -0.82165 -0.91705 -0.80902 -0.99452 0.00147 -0.95668 -0.99197 -0.95106 -0.99083 0.001475 -0.99988 -0.98779 -1. -0.93035 0.00148 -0.94711 -0.90497 -0.95106 -0.8168 0.001485 -0.80345 -0.7502 -0.80902 -0.65684 0.00149 -0.58269 -0.53586 -0.58779 -0.45967 0.001495 -0.30603 -0.279 -0.30902 -0.23651 0.0015 217.f 203.f 216.f 160.f 0.001505 0.30603 0.279 0.30902 0.23651 0.00151 0.58269 0.53586 0.58779 0.45967 0.001515 0.80345 0.7502 0.80902 0.65684 0.00152 0.94711 0.90497 0.95106 0.8168 0.001525 0.99988 0.98779 1. 0.93035 0.00153 0.95668 0.99197 0.95106 0.99083 0.001535 0.82165 0.91705 0.80902 0.99452 0.00154 0.60772 0.76883 0.58779 0.94086 0.001545 0.33543 0.55898 0.30902 0.83257 0.00155 0.030897 0.30412 -220.f 0.6755 0.001555 -0.27663 0.024576 -0.30902 0.47838 0.00156 -0.55761 -0.25727 -0.58779 0.25242 0.001565 -0.78504 -0.5187 -0.80902 0.010677 0.00157 -0.93704 -0.73851 -0.95106 -0.23262 0.001575 -0.99897 -0.8987 -1. -0.46286 0.00158 -0.96483 -0.98599 -0.95106 -0.66594 0.001585 -0.83788 -0.99289 -0.80902 -0.82905 0.00159 -0.63027 -0.91845 -0.58779 -0.94158 0.001595 -0.36196 -0.76834 -0.30902 -0.99574 0.0016 -0.058745 -0.55452 238.f -0.98721 0.001605 0.25018 -0.29432 0.30902 -0.91553 0.00161 0.53506 -0.0091053 0.58779 -0.78426 0.001615 0.76841 0.27748 0.80902 -0.60094 0.00162 0.92769 0.54139 0.95106 -0.37674 0.001625 0.9975 0.76024 1. -0.12592 0.00163 0.97104 0.91519 0.95106 0.13502 0.001635 0.85079 0.99259 0.80902 0.38836 0.00164 0.64832 0.98525 0.58779 0.61631 0.001645 0.38312 0.89316 0.30902 0.80225 0.00165 0.080813 0.72361 -241.f 0.93202 0.001655 -0.22939 0.49072 -0.30902 0.995 0.00166 -0.51746 0.21433 -0.58779 0.98512 0.001665 -0.75549 -0.081645 -0.80902 0.90153 0.00167 -0.92036 -0.37123 -0.95106 0.74897 0.001675 -0.99603 -0.62863 -1. 0.53763 0.00168 -0.97509 -0.83057 -0.95106 0.28272 0.001685 -0.85948 -0.9584 -0.80902 0.0034962 0.00169 -0.66036 -0.99992 -0.58779 -0.2781 0.001695 -0.397 -0.95056 -0.30902 -0.53906 0.0017 -0.094962 -0.81403 244.f -0.75723 0.001705 0.2164 -0.6021 0.30902 -0.91319 0.00171 0.50679 -0.33374 0.58779 -0.99214 0.001715 0.7479 -0.033433 0.80902 -0.9854 0.00172 0.91617 0.27092 0.95106 -0.89159 0.001725 0.99513 0.55062 1. -0.71712 0.00173 0.97699 0.77886 0.95106 -0.47602 0.001735 0.86343 0.93332 0.80902 -0.18909 0.00174 0.66547 0.99846 0.58779 0.11774 0.001745 0.40238 0.96712 0.30902 0.41561 0.00175 0.099833 0.84147 -262.f 0.67546 0.001755 -0.21257 0.63294 -0.30902 0.87085 0.00176 -0.50425 0.36134 -0.58779 0.98082 0.001765 -0.74659 0.053059 -0.80902 0.99233 0.00177 -0.91577 -0.26145 -0.95106 0.90203 0.001775 -0.99513 -0.55062 -1. 0.71712 0.00178 -0.97678 -0.78498 -0.95106 0.45514 0.001785 -0.86244 -0.94019 -0.80902 0.1426 0.00179 -0.66327 -0.99966 -0.58779 -0.18756 0.001795 -0.39878 -0.95641 -0.30902 -0.49925 0.0018 -0.094962 -0.81403 265.f -0.75723 0.001805 0.2183 -0.58649 0.30902 -0.93118 0.00181 0.51013 -0.29691 0.58779 -0.99948 0.001815 0.75174 0.024721 0.80902 -0.95213 0.00182 0.91924 0.3446 0.95106 -0.79253 0.001825 0.99603 0.62863 1. -0.53763 0.00183 0.97445 0.84611 0.95106 -0.21645 0.001835 0.85655 0.97311 0.80902 0.13294 0.00184 0.65392 0.99519 0.58779 0.46788 0.001845 0.38653 0.90915 0.30902 0.74627 0.00185 0.080813 0.72361 -269.f 0.93202 0.001855 -0.23298 0.45822 -0.30902 0.99993 0.00186 -0.52377 0.14172 -0.58779 0.93941 0.001865 -0.76269 -0.19118 -0.80902 0.7564 0.00187 -0.92602 -0.50352 -0.95106 0.47317 0.001875 -0.9975 -0.76024 -1. 0.12592 0.00188 -0.96997 -0.93219 -0.95106 -0.23969 0.001885 -0.84609 -0.99946 -0.80902 -0.57448 0.00189 -0.63813 -0.95383 -0.58779 -0.83242 0.001895 -0.36669 -0.79986 -0.30902 -0.97712 0.0019 -0.058745 -0.55452 287.f -0.98721 0.001905 0.2551 -0.24539 0.30902 -0.85978 0.00191 0.54361 0.09236 0.58779 -0.61127 0.001915 0.77806 0.41999 0.80902 -0.27561 0.00192 0.93507 0.69963 0.95106 0.10026 0.001925 0.99897 0.8987 1. 0.46286 0.00193 0.96335 0.99378 0.95106 0.75985 0.001935 0.83172 0.9734 0.80902 0.9477 0.00194 0.61716 0.83954 0.58779 0.99826 0.001945 0.34105 0.60749 0.30902 0.90318 0.00195 0.030897 0.30412 -290.f 0.6755 0.001955 -0.28237 -0.035161 -0.30902 0.34798 0.00196 -0.56749 -0.37058 -0.58779 -0.031458 0.001965 -0.796 -0.66264 -0.80902 -0.40679 0.00197 -0.9451 -0.87684 -0.95106 -0.72216 0.001975 -0.99988 -0.98779 -1. -0.93035 0.00198 -0.95485 -0.98223 -0.95106 -0.99991 0.001985 -0.81451 -0.86067 -0.80902 -0.9201 0.00199 -0.59285 -0.63739 -0.58779 -0.70258 0.001995 -0.312 -0.33873 -0.30902 -0.37977 0.002 166.f 180.f 165.f 208.f #Time v(1) v(2) v(3) v(4) 0.002 166.f 180.f 166.f 208.f 0.0020313 0.91624 0.83217 0.92388 0.65174 0.0020625 -0.73364 -0.92 -0.70711 -0.99116 0.0020938 -0.33079 0.16215 -0.38268 0.80795 0.002125 0.9975 0.76024 1. -0.12592 0.0021563 -0.45809 -0.94052 -0.38268 -0.6841 0.0021875 -0.63886 0.13804 -0.70711 0.99037 0.0022188 0.95691 0.832 0.92388 -0.38055 0.00225 -0.099833 -0.84147 -169.f -0.67546 0.0022813 -0.88197 -0.19603 -0.92388 0.92299 0.0023125 0.76933 0.99043 0.70711 0.13844 0.0023438 0.30463 -0.42483 0.38268 -0.99949 0.002375 -0.9975 -0.76024 -1. 0.12592 0.0024063 0.43339 0.81241 0.38268 0.98797 0.0024375 0.67954 0.39192 0.70711 -0.13265 0.0024688 -0.93117 -0.98054 -0.92388 -0.99715 0.0025 200.f 171.f 200.f 172.f 0.0025313 0.93117 0.98054 0.92388 0.99715 0.0025625 -0.67954 -0.39192 -0.70711 0.13265 0.0025938 -0.43339 -0.81241 -0.38268 -0.98797 0.002625 0.9975 0.76024 1. -0.12592 0.0026563 -0.30463 0.42483 -0.38268 0.99949 0.0026875 -0.76933 -0.99043 -0.70711 -0.13844 0.0027188 0.88197 0.19603 0.92388 -0.92299 0.00275 0.099833 0.84147 -203.f 0.67546 0.0027813 -0.95691 -0.832 -0.92388 0.38055 0.0028125 0.63886 -0.13804 0.70711 -0.99037 0.0028438 0.45809 0.94052 0.38268 0.6841 0.002875 -0.9975 -0.76024 -1. 0.12592 0.0029063 0.33079 -0.16215 0.38268 -0.80795 0.0029375 0.73364 0.92 0.70711 0.99116 0.0029688 -0.91624 -0.83217 -0.92388 -0.65174 0.003 205.f 234.f 206.f 263.f # v(1) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.6031n -171.69 180.000 2.6096n -171.67 180.000 6.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 7.K 20.82u -93.63 180.000 20.872u -93.61 180.000 8.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 9.K 0.049938 -26.03 -180.000 0.050063 -26.01 180.000 10.K 0.9975 -0.02 0.000 1. 0.00 -0.000 11.K 0.049938 -26.03 0.000 0.050063 -26.01 0.000 12.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 13.K 20.82u -93.63 -0.000 20.872u -93.61 -0.000 14.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 15.K 2.6029n -171.69 -0.000 2.6094n -171.67 -0.000 # v(2) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 249.76u -72.05 180.000 326.4u -69.73 180.000 6.K 0.0024766 -52.12 0.000 0.0032366 -49.80 -0.000 7.K 0.019563 -34.17 -180.000 0.025566 -31.85 -180.000 8.K 0.1149 -18.79 0.000 0.15016 -16.47 -0.000 9.K 0.44005 -7.13 -180.000 0.57508 -4.81 180.000 10.K 0.7652 -2.32 0.000 1. 0.00 -0.000 11.K 0.44005 -7.13 0.000 0.57508 -4.81 0.000 12.K 0.1149 -18.79 0.000 0.15016 -16.47 0.000 13.K 0.019563 -34.17 0.000 0.025566 -31.85 -0.000 14.K 0.0024765 -52.12 -0.000 0.0032365 -49.80 -0.000 15.K 248.26u -72.10 -0.000 324.43u -69.78 -0.000 # v(3) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.717f -291.32 13.266 2.717f -291.32 13.266 6.K 2.137f -293.40 -20.748 2.137f -293.40 -20.748 7.K 3.7106f -288.61 -9.558 3.7106f -288.61 -9.558 8.K 3.6984f -288.64 -4.956 3.6984f -288.64 -4.956 9.K 10.005f -280.00 -12.537 10.005f -280.00 -12.537 10.K 1. 0.00 0.000 1. 0.00 -0.000 11.K 6.4833f -283.76 -166.176 6.4833f -283.76 -166.176 12.K 3.9698f -288.02 -160.549 3.9698f -288.02 -160.549 13.K 2.5874f -291.74 -129.190 2.5874f -291.74 -129.190 14.K 1.804f -294.88 -146.184 1.804f -294.88 -146.184 15.K 4.668f -286.62 -114.510 4.668f -286.62 -114.510 # v(4) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 0.016242 -35.79 -180.000 0.031223 -30.11 0.000 6.K 0.064307 -23.83 0.000 0.12362 -18.16 180.000 7.K 0.19811 -14.06 -180.000 0.38085 -8.38 -0.000 8.K 0.43098 -7.31 0.000 0.82851 -1.63 180.000 9.K 0.52019 -5.68 -180.000 1. 0.00 0.000 10.K 0.0025077 -52.01 0.000 0.0048207 -46.34 -180.000 11.K 0.52019 -5.68 0.000 1. -0.00 -180.000 12.K 0.43098 -7.31 0.000 0.82851 -1.63 -180.000 13.K 0.1981 -14.06 0.000 0.38083 -8.39 -180.000 14.K 0.064216 -23.85 0.000 0.12345 -18.17 -180.000 15.K 0.015649 -36.11 0.000 0.030083 -30.43 180.000 V1 ( 1 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 0.1 signal= 1.K zero=0 peak=0 V2 ( 2 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 1. signal= 1.K zero=0 peak=0 V3 ( 3 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 10.K delay=NA( 0.) damping=NA( 0.) zero=0 peak=0 V4 ( 4 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 2.4 signal= 1.K zero=0 peak=0 tests/==out/bm_sffm.4.ckt.out000066400000000000000000000671301316501211100163030ustar00rootroot00000000000000' sin test #Time v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. 5.u 0.312 0.33873 0.30902 0.37977 10.u 0.59285 0.63739 0.58779 0.70258 15.u 0.81451 0.86067 0.80902 0.9201 20.u 0.95485 0.98223 0.95106 0.99991 25.u 0.99988 0.98779 1. 0.93035 30.u 0.9451 0.87684 0.95106 0.72216 35.u 0.796 0.66264 0.80902 0.40679 40.u 0.56749 0.37058 0.58779 0.031458 45.u 0.28237 0.035161 0.30902 -0.34798 50.u -0.030897 -0.30412 0. -0.6755 55.u -0.34105 -0.60749 -0.30902 -0.90318 60.u -0.61716 -0.83954 -0.58779 -0.99826 65.u -0.83172 -0.9734 -0.80902 -0.9477 70.u -0.96335 -0.99378 -0.95106 -0.75985 75.u -0.99897 -0.8987 -1. -0.46286 80.u -0.93507 -0.69963 -0.95106 -0.10026 85.u -0.77806 -0.41999 -0.80902 0.27561 90.u -0.54361 -0.09236 -0.58779 0.61127 95.u -0.2551 0.24539 -0.30902 0.85978 100.u 0.058745 0.55452 0. 0.98721 105.u 0.36669 0.79986 0.30902 0.97712 110.u 0.63813 0.95383 0.58779 0.83242 115.u 0.84609 0.99946 0.80902 0.57448 120.u 0.96997 0.93219 0.95106 0.23969 125.u 0.9975 0.76024 1. -0.12592 130.u 0.92602 0.50352 0.95106 -0.47317 135.u 0.76269 0.19118 0.80902 -0.7564 140.u 0.52377 -0.14172 0.58779 -0.93941 145.u 0.23298 -0.45822 0.30902 -0.99993 150.u -0.080813 -0.72361 0. -0.93202 155.u -0.38653 -0.90915 -0.30902 -0.74627 160.u -0.65392 -0.99519 -0.58779 -0.46788 165.u -0.85655 -0.97311 -0.80902 -0.13294 170.u -0.97445 -0.84611 -0.95106 0.21645 175.u -0.99603 -0.62863 -1. 0.53763 180.u -0.91924 -0.3446 -0.95106 0.79253 185.u -0.75174 -0.024721 -0.80902 0.95213 190.u -0.51013 0.29691 -0.58779 0.99948 195.u -0.2183 0.58649 -0.30902 0.93118 200.u 0.094962 0.81403 0. 0.75723 205.u 0.39878 0.95641 0.30902 0.49925 210.u 0.66327 0.99966 0.58779 0.18756 215.u 0.86244 0.94019 0.80902 -0.1426 220.u 0.97678 0.78498 0.95106 -0.45514 225.u 0.99513 0.55062 1. -0.71712 230.u 0.91577 0.26145 0.95106 -0.90203 235.u 0.74659 -0.053059 0.80902 -0.99233 240.u 0.50425 -0.36134 0.58779 -0.98082 245.u 0.21257 -0.63294 0.30902 -0.87085 250.u -0.099833 -0.84147 0. -0.67546 255.u -0.40238 -0.96712 -0.30902 -0.41561 260.u -0.66547 -0.99846 -0.58779 -0.11774 265.u -0.86343 -0.93332 -0.80902 0.18909 270.u -0.97699 -0.77886 -0.95106 0.47602 275.u -0.99513 -0.55062 -1. 0.71712 280.u -0.91617 -0.27092 -0.95106 0.89159 285.u -0.7479 0.033433 -0.80902 0.9854 290.u -0.50679 0.33374 -0.58779 0.99214 295.u -0.2164 0.6021 -0.30902 0.91319 300.u 0.094962 0.81403 0. 0.75723 305.u 0.397 0.95056 0.30902 0.53906 310.u 0.66036 0.99992 0.58779 0.2781 315.u 0.85948 0.9584 0.80902 -0.0034962 320.u 0.97509 0.83057 0.95106 -0.28272 325.u 0.99603 0.62863 1. -0.53763 330.u 0.92036 0.37123 0.95106 -0.74897 335.u 0.75549 0.081645 0.80902 -0.90153 340.u 0.51746 -0.21433 0.58779 -0.98512 345.u 0.22939 -0.49072 0.30902 -0.995 350.u -0.080813 -0.72361 0. -0.93202 355.u -0.38312 -0.89316 -0.30902 -0.80225 360.u -0.64832 -0.98525 -0.58779 -0.61631 365.u -0.85079 -0.99259 -0.80902 -0.38836 370.u -0.97104 -0.91519 -0.95106 -0.13502 375.u -0.9975 -0.76024 -1. 0.12592 380.u -0.92769 -0.54139 -0.95106 0.37674 385.u -0.76841 -0.27748 -0.80902 0.60094 390.u -0.53506 0.0091053 -0.58779 0.78426 395.u -0.25018 0.29432 -0.30902 0.91553 400.u 0.058745 0.55452 0. 0.98721 405.u 0.36196 0.76834 0.30902 0.99574 410.u 0.63027 0.91845 0.58779 0.94158 415.u 0.83788 0.99289 0.80902 0.82905 420.u 0.96483 0.98599 0.95106 0.66594 425.u 0.99897 0.8987 1. 0.46286 430.u 0.93704 0.73851 0.95106 0.23262 435.u 0.78504 0.5187 0.80902 -0.010677 440.u 0.55761 0.25727 0.58779 -0.25242 445.u 0.27663 -0.024576 0.30902 -0.47838 450.u -0.030897 -0.30412 0. -0.6755 455.u -0.33543 -0.55898 -0.30902 -0.83257 460.u -0.60772 -0.76883 -0.58779 -0.94086 465.u -0.82165 -0.91705 -0.80902 -0.99452 470.u -0.95668 -0.99197 -0.95106 -0.99083 475.u -0.99988 -0.98779 -1. -0.93035 480.u -0.94711 -0.90497 -0.95106 -0.8168 485.u -0.80345 -0.7502 -0.80902 -0.65684 490.u -0.58269 -0.53586 -0.58779 -0.45967 495.u -0.30603 -0.279 -0.30902 -0.23651 500.u 63.f 56.f 0. 48.f 505.u 0.30603 0.279 0.30902 0.23651 510.u 0.58269 0.53586 0.58779 0.45967 515.u 0.80345 0.7502 0.80902 0.65684 520.u 0.94711 0.90497 0.95106 0.8168 525.u 0.99988 0.98779 1. 0.93035 530.u 0.95668 0.99197 0.95106 0.99083 535.u 0.82165 0.91705 0.80902 0.99452 540.u 0.60772 0.76883 0.58779 0.94086 545.u 0.33543 0.55898 0.30902 0.83257 550.u 0.030897 0.30412 0. 0.6755 555.u -0.27663 0.024576 -0.30902 0.47838 560.u -0.55761 -0.25727 -0.58779 0.25242 565.u -0.78504 -0.5187 -0.80902 0.010677 570.u -0.93704 -0.73851 -0.95106 -0.23262 575.u -0.99897 -0.8987 -1. -0.46286 580.u -0.96483 -0.98599 -0.95106 -0.66594 585.u -0.83788 -0.99289 -0.80902 -0.82905 590.u -0.63027 -0.91845 -0.58779 -0.94158 595.u -0.36196 -0.76834 -0.30902 -0.99574 600.u -0.058745 -0.55452 0. -0.98721 605.u 0.25018 -0.29432 0.30902 -0.91553 610.u 0.53506 -0.0091053 0.58779 -0.78426 615.u 0.76841 0.27748 0.80902 -0.60094 620.u 0.92769 0.54139 0.95106 -0.37674 625.u 0.9975 0.76024 1. -0.12592 630.u 0.97104 0.91519 0.95106 0.13502 635.u 0.85079 0.99259 0.80902 0.38836 640.u 0.64832 0.98525 0.58779 0.61631 645.u 0.38312 0.89316 0.30902 0.80225 650.u 0.080813 0.72361 0. 0.93202 655.u -0.22939 0.49072 -0.30902 0.995 660.u -0.51746 0.21433 -0.58779 0.98512 665.u -0.75549 -0.081645 -0.80902 0.90153 670.u -0.92036 -0.37123 -0.95106 0.74897 675.u -0.99603 -0.62863 -1. 0.53763 680.u -0.97509 -0.83057 -0.95106 0.28272 685.u -0.85948 -0.9584 -0.80902 0.0034962 690.u -0.66036 -0.99992 -0.58779 -0.2781 695.u -0.397 -0.95056 -0.30902 -0.53906 700.u -0.094962 -0.81403 0. -0.75723 705.u 0.2164 -0.6021 0.30902 -0.91319 710.u 0.50679 -0.33374 0.58779 -0.99214 715.u 0.7479 -0.033433 0.80902 -0.9854 720.u 0.91617 0.27092 0.95106 -0.89159 725.u 0.99513 0.55062 1. -0.71712 730.u 0.97699 0.77886 0.95106 -0.47602 735.u 0.86343 0.93332 0.80902 -0.18909 740.u 0.66547 0.99846 0.58779 0.11774 745.u 0.40238 0.96712 0.30902 0.41561 750.u 0.099833 0.84147 -101.f 0.67546 755.u -0.21257 0.63294 -0.30902 0.87085 760.u -0.50425 0.36134 -0.58779 0.98082 765.u -0.74659 0.053059 -0.80902 0.99233 770.u -0.91577 -0.26145 -0.95106 0.90203 775.u -0.99513 -0.55062 -1. 0.71712 780.u -0.97678 -0.78498 -0.95106 0.45514 785.u -0.86244 -0.94019 -0.80902 0.1426 790.u -0.66327 -0.99966 -0.58779 -0.18756 795.u -0.39878 -0.95641 -0.30902 -0.49925 800.u -0.094962 -0.81403 112.f -0.75723 805.u 0.2183 -0.58649 0.30902 -0.93118 810.u 0.51013 -0.29691 0.58779 -0.99948 815.u 0.75174 0.024721 0.80902 -0.95213 820.u 0.91924 0.3446 0.95106 -0.79253 825.u 0.99603 0.62863 1. -0.53763 830.u 0.97445 0.84611 0.95106 -0.21645 835.u 0.85655 0.97311 0.80902 0.13294 840.u 0.65392 0.99519 0.58779 0.46788 845.u 0.38653 0.90915 0.30902 0.74627 850.u 0.080813 0.72361 -122.f 0.93202 855.u -0.23298 0.45822 -0.30902 0.99993 860.u -0.52377 0.14172 -0.58779 0.93941 865.u -0.76269 -0.19118 -0.80902 0.7564 870.u -0.92602 -0.50352 -0.95106 0.47317 875.u -0.9975 -0.76024 -1. 0.12592 880.u -0.96997 -0.93219 -0.95106 -0.23969 885.u -0.84609 -0.99946 -0.80902 -0.57448 890.u -0.63813 -0.95383 -0.58779 -0.83242 895.u -0.36669 -0.79986 -0.30902 -0.97712 900.u -0.058745 -0.55452 126.f -0.98721 905.u 0.2551 -0.24539 0.30902 -0.85978 910.u 0.54361 0.09236 0.58779 -0.61127 915.u 0.77806 0.41999 0.80902 -0.27561 920.u 0.93507 0.69963 0.95106 0.10026 925.u 0.99897 0.8987 1. 0.46286 930.u 0.96335 0.99378 0.95106 0.75985 935.u 0.83172 0.9734 0.80902 0.9477 940.u 0.61716 0.83954 0.58779 0.99826 945.u 0.34105 0.60749 0.30902 0.90318 950.u 0.030897 0.30412 -136.f 0.6755 955.u -0.28237 -0.035161 -0.30902 0.34798 960.u -0.56749 -0.37058 -0.58779 -0.031458 965.u -0.796 -0.66264 -0.80902 -0.40679 970.u -0.9451 -0.87684 -0.95106 -0.72216 975.u -0.99988 -0.98779 -1. -0.93035 980.u -0.95485 -0.98223 -0.95106 -0.99991 985.u -0.81451 -0.86067 -0.80902 -0.9201 990.u -0.59285 -0.63739 -0.58779 -0.70258 995.u -0.312 -0.33873 -0.30902 -0.37977 0.001 140.f 154.f 140.f 168.f 0.001005 0.312 0.33873 0.30902 0.37977 0.00101 0.59285 0.63739 0.58779 0.70258 0.001015 0.81451 0.86067 0.80902 0.9201 0.00102 0.95485 0.98223 0.95106 0.99991 0.001025 0.99988 0.98779 1. 0.93035 0.00103 0.9451 0.87684 0.95106 0.72216 0.001035 0.796 0.66264 0.80902 0.40679 0.00104 0.56749 0.37058 0.58779 0.031458 0.001045 0.28237 0.035161 0.30902 -0.34798 0.00105 -0.030897 -0.30412 -143.f -0.6755 0.001055 -0.34105 -0.60749 -0.30902 -0.90318 0.00106 -0.61716 -0.83954 -0.58779 -0.99826 0.001065 -0.83172 -0.9734 -0.80902 -0.9477 0.00107 -0.96335 -0.99378 -0.95106 -0.75985 0.001075 -0.99897 -0.8987 -1. -0.46286 0.00108 -0.93507 -0.69963 -0.95106 -0.10026 0.001085 -0.77806 -0.41999 -0.80902 0.27561 0.00109 -0.54361 -0.09236 -0.58779 0.61127 0.001095 -0.2551 0.24539 -0.30902 0.85978 0.0011 0.058745 0.55452 147.f 0.98721 0.001105 0.36669 0.79986 0.30902 0.97712 0.00111 0.63813 0.95383 0.58779 0.83242 0.001115 0.84609 0.99946 0.80902 0.57448 0.00112 0.96997 0.93219 0.95106 0.23969 0.001125 0.9975 0.76024 1. -0.12592 0.00113 0.92602 0.50352 0.95106 -0.47317 0.001135 0.76269 0.19118 0.80902 -0.7564 0.00114 0.52377 -0.14172 0.58779 -0.93941 0.001145 0.23298 -0.45822 0.30902 -0.99993 0.00115 -0.080813 -0.72361 -164.f -0.93202 0.001155 -0.38653 -0.90915 -0.30902 -0.74627 0.00116 -0.65392 -0.99519 -0.58779 -0.46788 0.001165 -0.85655 -0.97311 -0.80902 -0.13294 0.00117 -0.97445 -0.84611 -0.95106 0.21645 0.001175 -0.99603 -0.62863 -1. 0.53763 0.00118 -0.91924 -0.3446 -0.95106 0.79253 0.001185 -0.75174 -0.024721 -0.80902 0.95213 0.00119 -0.51013 0.29691 -0.58779 0.99948 0.001195 -0.2183 0.58649 -0.30902 0.93118 0.0012 0.094962 0.81403 168.f 0.75723 0.001205 0.39878 0.95641 0.30902 0.49925 0.00121 0.66327 0.99966 0.58779 0.18756 0.001215 0.86244 0.94019 0.80902 -0.1426 0.00122 0.97678 0.78498 0.95106 -0.45514 0.001225 0.99513 0.55062 1. -0.71712 0.00123 0.91577 0.26145 0.95106 -0.90203 0.001235 0.74659 -0.053059 0.80902 -0.99233 0.00124 0.50425 -0.36134 0.58779 -0.98082 0.001245 0.21257 -0.63294 0.30902 -0.87085 0.00125 -0.099833 -0.84147 -171.f -0.67546 0.001255 -0.40238 -0.96712 -0.30902 -0.41561 0.00126 -0.66547 -0.99846 -0.58779 -0.11774 0.001265 -0.86343 -0.93332 -0.80902 0.18909 0.00127 -0.97699 -0.77886 -0.95106 0.47602 0.001275 -0.99513 -0.55062 -1. 0.71712 0.00128 -0.91617 -0.27092 -0.95106 0.89159 0.001285 -0.7479 0.033433 -0.80902 0.9854 0.00129 -0.50679 0.33374 -0.58779 0.99214 0.001295 -0.2164 0.6021 -0.30902 0.91319 0.0013 0.094962 0.81403 189.f 0.75723 0.001305 0.397 0.95056 0.30902 0.53906 0.00131 0.66036 0.99992 0.58779 0.2781 0.001315 0.85948 0.9584 0.80902 -0.0034962 0.00132 0.97509 0.83057 0.95106 -0.28272 0.001325 0.99603 0.62863 1. -0.53763 0.00133 0.92036 0.37123 0.95106 -0.74897 0.001335 0.75549 0.081645 0.80902 -0.90153 0.00134 0.51746 -0.21433 0.58779 -0.98512 0.001345 0.22939 -0.49072 0.30902 -0.995 0.00135 -0.080813 -0.72361 -192.f -0.93202 0.001355 -0.38312 -0.89316 -0.30902 -0.80225 0.00136 -0.64832 -0.98525 -0.58779 -0.61631 0.001365 -0.85079 -0.99259 -0.80902 -0.38836 0.00137 -0.97104 -0.91519 -0.95106 -0.13502 0.001375 -0.9975 -0.76024 -1. 0.12592 0.00138 -0.92769 -0.54139 -0.95106 0.37674 0.001385 -0.76841 -0.27748 -0.80902 0.60094 0.00139 -0.53506 0.0091053 -0.58779 0.78426 0.001395 -0.25018 0.29432 -0.30902 0.91553 0.0014 0.058745 0.55452 196.f 0.98721 0.001405 0.36196 0.76834 0.30902 0.99574 0.00141 0.63027 0.91845 0.58779 0.94158 0.001415 0.83788 0.99289 0.80902 0.82905 0.00142 0.96483 0.98599 0.95106 0.66594 0.001425 0.99897 0.8987 1. 0.46286 0.00143 0.93704 0.73851 0.95106 0.23262 0.001435 0.78504 0.5187 0.80902 -0.010677 0.00144 0.55761 0.25727 0.58779 -0.25242 0.001445 0.27663 -0.024576 0.30902 -0.47838 0.00145 -0.030897 -0.30412 -213.f -0.6755 0.001455 -0.33543 -0.55898 -0.30902 -0.83257 0.00146 -0.60772 -0.76883 -0.58779 -0.94086 0.001465 -0.82165 -0.91705 -0.80902 -0.99452 0.00147 -0.95668 -0.99197 -0.95106 -0.99083 0.001475 -0.99988 -0.98779 -1. -0.93035 0.00148 -0.94711 -0.90497 -0.95106 -0.8168 0.001485 -0.80345 -0.7502 -0.80902 -0.65684 0.00149 -0.58269 -0.53586 -0.58779 -0.45967 0.001495 -0.30603 -0.279 -0.30902 -0.23651 0.0015 216.f 202.f 217.f 159.f 0.001505 0.30603 0.279 0.30902 0.23651 0.00151 0.58269 0.53586 0.58779 0.45967 0.001515 0.80345 0.7502 0.80902 0.65684 0.00152 0.94711 0.90497 0.95106 0.8168 0.001525 0.99988 0.98779 1. 0.93035 0.00153 0.95668 0.99197 0.95106 0.99083 0.001535 0.82165 0.91705 0.80902 0.99452 0.00154 0.60772 0.76883 0.58779 0.94086 0.001545 0.33543 0.55898 0.30902 0.83257 0.00155 0.030897 0.30412 -220.f 0.6755 0.001555 -0.27663 0.024576 -0.30902 0.47838 0.00156 -0.55761 -0.25727 -0.58779 0.25242 0.001565 -0.78504 -0.5187 -0.80902 0.010677 0.00157 -0.93704 -0.73851 -0.95106 -0.23262 0.001575 -0.99897 -0.8987 -1. -0.46286 0.00158 -0.96483 -0.98599 -0.95106 -0.66594 0.001585 -0.83788 -0.99289 -0.80902 -0.82905 0.00159 -0.63027 -0.91845 -0.58779 -0.94158 0.001595 -0.36196 -0.76834 -0.30902 -0.99574 0.0016 -0.058745 -0.55452 238.f -0.98721 0.001605 0.25018 -0.29432 0.30902 -0.91553 0.00161 0.53506 -0.0091053 0.58779 -0.78426 0.001615 0.76841 0.27748 0.80902 -0.60094 0.00162 0.92769 0.54139 0.95106 -0.37674 0.001625 0.9975 0.76024 1. -0.12592 0.00163 0.97104 0.91519 0.95106 0.13502 0.001635 0.85079 0.99259 0.80902 0.38836 0.00164 0.64832 0.98525 0.58779 0.61631 0.001645 0.38312 0.89316 0.30902 0.80225 0.00165 0.080813 0.72361 -241.f 0.93202 0.001655 -0.22939 0.49072 -0.30902 0.995 0.00166 -0.51746 0.21433 -0.58779 0.98512 0.001665 -0.75549 -0.081645 -0.80902 0.90153 0.00167 -0.92036 -0.37123 -0.95106 0.74897 0.001675 -0.99603 -0.62863 -1. 0.53763 0.00168 -0.97509 -0.83057 -0.95106 0.28272 0.001685 -0.85948 -0.9584 -0.80902 0.0034962 0.00169 -0.66036 -0.99992 -0.58779 -0.2781 0.001695 -0.397 -0.95056 -0.30902 -0.53906 0.0017 -0.094962 -0.81403 245.f -0.75723 0.001705 0.2164 -0.6021 0.30902 -0.91319 0.00171 0.50679 -0.33374 0.58779 -0.99214 0.001715 0.7479 -0.033433 0.80902 -0.9854 0.00172 0.91617 0.27092 0.95106 -0.89159 0.001725 0.99513 0.55062 1. -0.71712 0.00173 0.97699 0.77886 0.95106 -0.47602 0.001735 0.86343 0.93332 0.80902 -0.18909 0.00174 0.66547 0.99846 0.58779 0.11774 0.001745 0.40238 0.96712 0.30902 0.41561 0.00175 0.099833 0.84147 -262.f 0.67546 0.001755 -0.21257 0.63294 -0.30902 0.87085 0.00176 -0.50425 0.36134 -0.58779 0.98082 0.001765 -0.74659 0.053059 -0.80902 0.99233 0.00177 -0.91577 -0.26145 -0.95106 0.90203 0.001775 -0.99513 -0.55062 -1. 0.71712 0.00178 -0.97678 -0.78498 -0.95106 0.45514 0.001785 -0.86244 -0.94019 -0.80902 0.1426 0.00179 -0.66327 -0.99966 -0.58779 -0.18756 0.001795 -0.39878 -0.95641 -0.30902 -0.49925 0.0018 -0.094962 -0.81403 266.f -0.75723 0.001805 0.2183 -0.58649 0.30902 -0.93118 0.00181 0.51013 -0.29691 0.58779 -0.99948 0.001815 0.75174 0.024721 0.80902 -0.95213 0.00182 0.91924 0.3446 0.95106 -0.79253 0.001825 0.99603 0.62863 1. -0.53763 0.00183 0.97445 0.84611 0.95106 -0.21645 0.001835 0.85655 0.97311 0.80902 0.13294 0.00184 0.65392 0.99519 0.58779 0.46788 0.001845 0.38653 0.90915 0.30902 0.74627 0.00185 0.080813 0.72361 -269.f 0.93202 0.001855 -0.23298 0.45822 -0.30902 0.99993 0.00186 -0.52377 0.14172 -0.58779 0.93941 0.001865 -0.76269 -0.19118 -0.80902 0.7564 0.00187 -0.92602 -0.50352 -0.95106 0.47317 0.001875 -0.9975 -0.76024 -1. 0.12592 0.00188 -0.96997 -0.93219 -0.95106 -0.23969 0.001885 -0.84609 -0.99946 -0.80902 -0.57448 0.00189 -0.63813 -0.95383 -0.58779 -0.83242 0.001895 -0.36669 -0.79986 -0.30902 -0.97712 0.0019 -0.058745 -0.55452 287.f -0.98721 0.001905 0.2551 -0.24539 0.30902 -0.85978 0.00191 0.54361 0.09236 0.58779 -0.61127 0.001915 0.77806 0.41999 0.80902 -0.27561 0.00192 0.93507 0.69963 0.95106 0.10026 0.001925 0.99897 0.8987 1. 0.46286 0.00193 0.96335 0.99378 0.95106 0.75985 0.001935 0.83172 0.9734 0.80902 0.9477 0.00194 0.61716 0.83954 0.58779 0.99826 0.001945 0.34105 0.60749 0.30902 0.90318 0.00195 0.030897 0.30412 -290.f 0.6755 0.001955 -0.28237 -0.035161 -0.30902 0.34798 0.00196 -0.56749 -0.37058 -0.58779 -0.031458 0.001965 -0.796 -0.66264 -0.80902 -0.40679 0.00197 -0.9451 -0.87684 -0.95106 -0.72216 0.001975 -0.99988 -0.98779 -1. -0.93035 0.00198 -0.95485 -0.98223 -0.95106 -0.99991 0.001985 -0.81451 -0.86067 -0.80902 -0.9201 0.00199 -0.59285 -0.63739 -0.58779 -0.70258 0.001995 -0.312 -0.33873 -0.30902 -0.37977 0.002 165.f 180.f 166.f 208.f #Time v(1) v(2) v(3) v(4) 0.002 166.f 180.f 166.f 208.f 0.0020313 0.91624 0.83217 0.92388 0.65174 0.0020625 -0.73364 -0.92 -0.70711 -0.99116 0.0020938 -0.33079 0.16215 -0.38268 0.80795 0.002125 0.9975 0.76024 1. -0.12592 0.0021563 -0.45809 -0.94052 -0.38268 -0.6841 0.0021875 -0.63886 0.13804 -0.70711 0.99037 0.0022188 0.95691 0.832 0.92388 -0.38055 0.00225 -0.099833 -0.84147 -168.f -0.67546 0.0022813 -0.88197 -0.19603 -0.92388 0.92299 0.0023125 0.76933 0.99043 0.70711 0.13844 0.0023438 0.30463 -0.42483 0.38268 -0.99949 0.002375 -0.9975 -0.76024 -1. 0.12592 0.0024063 0.43339 0.81241 0.38268 0.98797 0.0024375 0.67954 0.39192 0.70711 -0.13265 0.0024688 -0.93117 -0.98054 -0.92388 -0.99715 0.0025 200.f 171.f 200.f 172.f 0.0025313 0.93117 0.98054 0.92388 0.99715 0.0025625 -0.67954 -0.39192 -0.70711 0.13265 0.0025938 -0.43339 -0.81241 -0.38268 -0.98797 0.002625 0.9975 0.76024 1. -0.12592 0.0026563 -0.30463 0.42483 -0.38268 0.99949 0.0026875 -0.76933 -0.99043 -0.70711 -0.13844 0.0027188 0.88197 0.19603 0.92388 -0.92299 0.00275 0.099833 0.84147 -203.f 0.67546 0.0027813 -0.95691 -0.832 -0.92388 0.38055 0.0028125 0.63886 -0.13804 0.70711 -0.99037 0.0028438 0.45809 0.94052 0.38268 0.6841 0.002875 -0.9975 -0.76024 -1. 0.12592 0.0029063 0.33079 -0.16215 0.38268 -0.80795 0.0029375 0.73364 0.92 0.70711 0.99116 0.0029688 -0.91624 -0.83217 -0.92388 -0.65174 0.003 206.f 235.f 206.f 263.f # v(1) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.6031n -171.69 180.000 2.6096n -171.67 180.000 6.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 7.K 20.82u -93.63 180.000 20.872u -93.61 180.000 8.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 9.K 0.049938 -26.03 -180.000 0.050063 -26.01 180.000 10.K 0.9975 -0.02 0.000 1. 0.00 -0.000 11.K 0.049938 -26.03 0.000 0.050063 -26.01 0.000 12.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 13.K 20.82u -93.63 -0.000 20.872u -93.61 -0.000 14.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 15.K 2.6029n -171.69 -0.000 2.6094n -171.67 -0.000 # v(2) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 249.76u -72.05 180.000 326.4u -69.73 180.000 6.K 0.0024766 -52.12 0.000 0.0032366 -49.80 -0.000 7.K 0.019563 -34.17 -180.000 0.025566 -31.85 -180.000 8.K 0.1149 -18.79 0.000 0.15016 -16.47 -0.000 9.K 0.44005 -7.13 -180.000 0.57508 -4.81 180.000 10.K 0.7652 -2.32 0.000 1. 0.00 -0.000 11.K 0.44005 -7.13 0.000 0.57508 -4.81 0.000 12.K 0.1149 -18.79 0.000 0.15016 -16.47 0.000 13.K 0.019563 -34.17 0.000 0.025566 -31.85 -0.000 14.K 0.0024765 -52.12 -0.000 0.0032365 -49.80 -0.000 15.K 248.26u -72.10 -0.000 324.43u -69.78 -0.000 # v(3) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.5264f -291.95 12.167 2.5264f -291.95 12.167 6.K 2.1495f -293.35 -21.614 2.1495f -293.35 -21.614 7.K 3.5566f -288.98 -10.693 3.5566f -288.98 -10.693 8.K 3.595f -288.89 -7.211 3.595f -288.89 -7.211 9.K 10.241f -279.79 -12.624 10.241f -279.79 -12.624 10.K 1. 0.00 0.000 1. 0.00 -0.000 11.K 6.7435f -283.42 -166.985 6.7435f -283.42 -166.985 12.K 3.8612f -288.27 -161.194 3.8612f -288.27 -161.194 13.K 2.6743f -291.46 -129.224 2.6743f -291.46 -129.224 14.K 1.906f -294.40 -141.846 1.906f -294.40 -141.846 15.K 4.5876f -286.77 -115.447 4.5876f -286.77 -115.447 # v(4) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 0.016242 -35.79 -180.000 0.031223 -30.11 0.000 6.K 0.064307 -23.83 0.000 0.12362 -18.16 180.000 7.K 0.19811 -14.06 -180.000 0.38085 -8.38 -0.000 8.K 0.43098 -7.31 0.000 0.82851 -1.63 180.000 9.K 0.52019 -5.68 -180.000 1. 0.00 0.000 10.K 0.0025077 -52.01 0.000 0.0048207 -46.34 -180.000 11.K 0.52019 -5.68 0.000 1. -0.00 -180.000 12.K 0.43098 -7.31 0.000 0.82851 -1.63 -180.000 13.K 0.1981 -14.06 0.000 0.38083 -8.39 -180.000 14.K 0.064216 -23.85 0.000 0.12345 -18.17 -180.000 15.K 0.015649 -36.11 0.000 0.030083 -30.43 180.000 V1 ( 1 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 0.1 signal= 1.K V2 ( 2 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 1. signal= 1.K V3 ( 3 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 10.K delay=NA( 0.) damping=NA( 0.) V4 ( 4 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 2.4 signal= 1.K tests/==out/bm_sffm.5.ckt.out000066400000000000000000000671301316501211100163040ustar00rootroot00000000000000' sin test #Time v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. 5.u 0.312 0.33873 0.30902 0.37977 10.u 0.59285 0.63739 0.58779 0.70258 15.u 0.81451 0.86067 0.80902 0.9201 20.u 0.95485 0.98223 0.95106 0.99991 25.u 0.99988 0.98779 1. 0.93035 30.u 0.9451 0.87684 0.95106 0.72216 35.u 0.796 0.66264 0.80902 0.40679 40.u 0.56749 0.37058 0.58779 0.031458 45.u 0.28237 0.035161 0.30902 -0.34798 50.u -0.030897 -0.30412 0. -0.6755 55.u -0.34105 -0.60749 -0.30902 -0.90318 60.u -0.61716 -0.83954 -0.58779 -0.99826 65.u -0.83172 -0.9734 -0.80902 -0.9477 70.u -0.96335 -0.99378 -0.95106 -0.75985 75.u -0.99897 -0.8987 -1. -0.46286 80.u -0.93507 -0.69963 -0.95106 -0.10026 85.u -0.77806 -0.41999 -0.80902 0.27561 90.u -0.54361 -0.09236 -0.58779 0.61127 95.u -0.2551 0.24539 -0.30902 0.85978 100.u 0.058745 0.55452 0. 0.98721 105.u 0.36669 0.79986 0.30902 0.97712 110.u 0.63813 0.95383 0.58779 0.83242 115.u 0.84609 0.99946 0.80902 0.57448 120.u 0.96997 0.93219 0.95106 0.23969 125.u 0.9975 0.76024 1. -0.12592 130.u 0.92602 0.50352 0.95106 -0.47317 135.u 0.76269 0.19118 0.80902 -0.7564 140.u 0.52377 -0.14172 0.58779 -0.93941 145.u 0.23298 -0.45822 0.30902 -0.99993 150.u -0.080813 -0.72361 0. -0.93202 155.u -0.38653 -0.90915 -0.30902 -0.74627 160.u -0.65392 -0.99519 -0.58779 -0.46788 165.u -0.85655 -0.97311 -0.80902 -0.13294 170.u -0.97445 -0.84611 -0.95106 0.21645 175.u -0.99603 -0.62863 -1. 0.53763 180.u -0.91924 -0.3446 -0.95106 0.79253 185.u -0.75174 -0.024721 -0.80902 0.95213 190.u -0.51013 0.29691 -0.58779 0.99948 195.u -0.2183 0.58649 -0.30902 0.93118 200.u 0.094962 0.81403 0. 0.75723 205.u 0.39878 0.95641 0.30902 0.49925 210.u 0.66327 0.99966 0.58779 0.18756 215.u 0.86244 0.94019 0.80902 -0.1426 220.u 0.97678 0.78498 0.95106 -0.45514 225.u 0.99513 0.55062 1. -0.71712 230.u 0.91577 0.26145 0.95106 -0.90203 235.u 0.74659 -0.053059 0.80902 -0.99233 240.u 0.50425 -0.36134 0.58779 -0.98082 245.u 0.21257 -0.63294 0.30902 -0.87085 250.u -0.099833 -0.84147 0. -0.67546 255.u -0.40238 -0.96712 -0.30902 -0.41561 260.u -0.66547 -0.99846 -0.58779 -0.11774 265.u -0.86343 -0.93332 -0.80902 0.18909 270.u -0.97699 -0.77886 -0.95106 0.47602 275.u -0.99513 -0.55062 -1. 0.71712 280.u -0.91617 -0.27092 -0.95106 0.89159 285.u -0.7479 0.033433 -0.80902 0.9854 290.u -0.50679 0.33374 -0.58779 0.99214 295.u -0.2164 0.6021 -0.30902 0.91319 300.u 0.094962 0.81403 0. 0.75723 305.u 0.397 0.95056 0.30902 0.53906 310.u 0.66036 0.99992 0.58779 0.2781 315.u 0.85948 0.9584 0.80902 -0.0034962 320.u 0.97509 0.83057 0.95106 -0.28272 325.u 0.99603 0.62863 1. -0.53763 330.u 0.92036 0.37123 0.95106 -0.74897 335.u 0.75549 0.081645 0.80902 -0.90153 340.u 0.51746 -0.21433 0.58779 -0.98512 345.u 0.22939 -0.49072 0.30902 -0.995 350.u -0.080813 -0.72361 0. -0.93202 355.u -0.38312 -0.89316 -0.30902 -0.80225 360.u -0.64832 -0.98525 -0.58779 -0.61631 365.u -0.85079 -0.99259 -0.80902 -0.38836 370.u -0.97104 -0.91519 -0.95106 -0.13502 375.u -0.9975 -0.76024 -1. 0.12592 380.u -0.92769 -0.54139 -0.95106 0.37674 385.u -0.76841 -0.27748 -0.80902 0.60094 390.u -0.53506 0.0091053 -0.58779 0.78426 395.u -0.25018 0.29432 -0.30902 0.91553 400.u 0.058745 0.55452 0. 0.98721 405.u 0.36196 0.76834 0.30902 0.99574 410.u 0.63027 0.91845 0.58779 0.94158 415.u 0.83788 0.99289 0.80902 0.82905 420.u 0.96483 0.98599 0.95106 0.66594 425.u 0.99897 0.8987 1. 0.46286 430.u 0.93704 0.73851 0.95106 0.23262 435.u 0.78504 0.5187 0.80902 -0.010677 440.u 0.55761 0.25727 0.58779 -0.25242 445.u 0.27663 -0.024576 0.30902 -0.47838 450.u -0.030897 -0.30412 0. -0.6755 455.u -0.33543 -0.55898 -0.30902 -0.83257 460.u -0.60772 -0.76883 -0.58779 -0.94086 465.u -0.82165 -0.91705 -0.80902 -0.99452 470.u -0.95668 -0.99197 -0.95106 -0.99083 475.u -0.99988 -0.98779 -1. -0.93035 480.u -0.94711 -0.90497 -0.95106 -0.8168 485.u -0.80345 -0.7502 -0.80902 -0.65684 490.u -0.58269 -0.53586 -0.58779 -0.45967 495.u -0.30603 -0.279 -0.30902 -0.23651 500.u 63.f 56.f 0. 48.f 505.u 0.30603 0.279 0.30902 0.23651 510.u 0.58269 0.53586 0.58779 0.45967 515.u 0.80345 0.7502 0.80902 0.65684 520.u 0.94711 0.90497 0.95106 0.8168 525.u 0.99988 0.98779 1. 0.93035 530.u 0.95668 0.99197 0.95106 0.99083 535.u 0.82165 0.91705 0.80902 0.99452 540.u 0.60772 0.76883 0.58779 0.94086 545.u 0.33543 0.55898 0.30902 0.83257 550.u 0.030897 0.30412 0. 0.6755 555.u -0.27663 0.024576 -0.30902 0.47838 560.u -0.55761 -0.25727 -0.58779 0.25242 565.u -0.78504 -0.5187 -0.80902 0.010677 570.u -0.93704 -0.73851 -0.95106 -0.23262 575.u -0.99897 -0.8987 -1. -0.46286 580.u -0.96483 -0.98599 -0.95106 -0.66594 585.u -0.83788 -0.99289 -0.80902 -0.82905 590.u -0.63027 -0.91845 -0.58779 -0.94158 595.u -0.36196 -0.76834 -0.30902 -0.99574 600.u -0.058745 -0.55452 0. -0.98721 605.u 0.25018 -0.29432 0.30902 -0.91553 610.u 0.53506 -0.0091053 0.58779 -0.78426 615.u 0.76841 0.27748 0.80902 -0.60094 620.u 0.92769 0.54139 0.95106 -0.37674 625.u 0.9975 0.76024 1. -0.12592 630.u 0.97104 0.91519 0.95106 0.13502 635.u 0.85079 0.99259 0.80902 0.38836 640.u 0.64832 0.98525 0.58779 0.61631 645.u 0.38312 0.89316 0.30902 0.80225 650.u 0.080813 0.72361 0. 0.93202 655.u -0.22939 0.49072 -0.30902 0.995 660.u -0.51746 0.21433 -0.58779 0.98512 665.u -0.75549 -0.081645 -0.80902 0.90153 670.u -0.92036 -0.37123 -0.95106 0.74897 675.u -0.99603 -0.62863 -1. 0.53763 680.u -0.97509 -0.83057 -0.95106 0.28272 685.u -0.85948 -0.9584 -0.80902 0.0034962 690.u -0.66036 -0.99992 -0.58779 -0.2781 695.u -0.397 -0.95056 -0.30902 -0.53906 700.u -0.094962 -0.81403 0. -0.75723 705.u 0.2164 -0.6021 0.30902 -0.91319 710.u 0.50679 -0.33374 0.58779 -0.99214 715.u 0.7479 -0.033433 0.80902 -0.9854 720.u 0.91617 0.27092 0.95106 -0.89159 725.u 0.99513 0.55062 1. -0.71712 730.u 0.97699 0.77886 0.95106 -0.47602 735.u 0.86343 0.93332 0.80902 -0.18909 740.u 0.66547 0.99846 0.58779 0.11774 745.u 0.40238 0.96712 0.30902 0.41561 750.u 0.099833 0.84147 -101.f 0.67546 755.u -0.21257 0.63294 -0.30902 0.87085 760.u -0.50425 0.36134 -0.58779 0.98082 765.u -0.74659 0.053059 -0.80902 0.99233 770.u -0.91577 -0.26145 -0.95106 0.90203 775.u -0.99513 -0.55062 -1. 0.71712 780.u -0.97678 -0.78498 -0.95106 0.45514 785.u -0.86244 -0.94019 -0.80902 0.1426 790.u -0.66327 -0.99966 -0.58779 -0.18756 795.u -0.39878 -0.95641 -0.30902 -0.49925 800.u -0.094962 -0.81403 112.f -0.75723 805.u 0.2183 -0.58649 0.30902 -0.93118 810.u 0.51013 -0.29691 0.58779 -0.99948 815.u 0.75174 0.024721 0.80902 -0.95213 820.u 0.91924 0.3446 0.95106 -0.79253 825.u 0.99603 0.62863 1. -0.53763 830.u 0.97445 0.84611 0.95106 -0.21645 835.u 0.85655 0.97311 0.80902 0.13294 840.u 0.65392 0.99519 0.58779 0.46788 845.u 0.38653 0.90915 0.30902 0.74627 850.u 0.080813 0.72361 -122.f 0.93202 855.u -0.23298 0.45822 -0.30902 0.99993 860.u -0.52377 0.14172 -0.58779 0.93941 865.u -0.76269 -0.19118 -0.80902 0.7564 870.u -0.92602 -0.50352 -0.95106 0.47317 875.u -0.9975 -0.76024 -1. 0.12592 880.u -0.96997 -0.93219 -0.95106 -0.23969 885.u -0.84609 -0.99946 -0.80902 -0.57448 890.u -0.63813 -0.95383 -0.58779 -0.83242 895.u -0.36669 -0.79986 -0.30902 -0.97712 900.u -0.058745 -0.55452 126.f -0.98721 905.u 0.2551 -0.24539 0.30902 -0.85978 910.u 0.54361 0.09236 0.58779 -0.61127 915.u 0.77806 0.41999 0.80902 -0.27561 920.u 0.93507 0.69963 0.95106 0.10026 925.u 0.99897 0.8987 1. 0.46286 930.u 0.96335 0.99378 0.95106 0.75985 935.u 0.83172 0.9734 0.80902 0.9477 940.u 0.61716 0.83954 0.58779 0.99826 945.u 0.34105 0.60749 0.30902 0.90318 950.u 0.030897 0.30412 -136.f 0.6755 955.u -0.28237 -0.035161 -0.30902 0.34798 960.u -0.56749 -0.37058 -0.58779 -0.031458 965.u -0.796 -0.66264 -0.80902 -0.40679 970.u -0.9451 -0.87684 -0.95106 -0.72216 975.u -0.99988 -0.98779 -1. -0.93035 980.u -0.95485 -0.98223 -0.95106 -0.99991 985.u -0.81451 -0.86067 -0.80902 -0.9201 990.u -0.59285 -0.63739 -0.58779 -0.70258 995.u -0.312 -0.33873 -0.30902 -0.37977 0.001 140.f 154.f 140.f 168.f 0.001005 0.312 0.33873 0.30902 0.37977 0.00101 0.59285 0.63739 0.58779 0.70258 0.001015 0.81451 0.86067 0.80902 0.9201 0.00102 0.95485 0.98223 0.95106 0.99991 0.001025 0.99988 0.98779 1. 0.93035 0.00103 0.9451 0.87684 0.95106 0.72216 0.001035 0.796 0.66264 0.80902 0.40679 0.00104 0.56749 0.37058 0.58779 0.031458 0.001045 0.28237 0.035161 0.30902 -0.34798 0.00105 -0.030897 -0.30412 -143.f -0.6755 0.001055 -0.34105 -0.60749 -0.30902 -0.90318 0.00106 -0.61716 -0.83954 -0.58779 -0.99826 0.001065 -0.83172 -0.9734 -0.80902 -0.9477 0.00107 -0.96335 -0.99378 -0.95106 -0.75985 0.001075 -0.99897 -0.8987 -1. -0.46286 0.00108 -0.93507 -0.69963 -0.95106 -0.10026 0.001085 -0.77806 -0.41999 -0.80902 0.27561 0.00109 -0.54361 -0.09236 -0.58779 0.61127 0.001095 -0.2551 0.24539 -0.30902 0.85978 0.0011 0.058745 0.55452 147.f 0.98721 0.001105 0.36669 0.79986 0.30902 0.97712 0.00111 0.63813 0.95383 0.58779 0.83242 0.001115 0.84609 0.99946 0.80902 0.57448 0.00112 0.96997 0.93219 0.95106 0.23969 0.001125 0.9975 0.76024 1. -0.12592 0.00113 0.92602 0.50352 0.95106 -0.47317 0.001135 0.76269 0.19118 0.80902 -0.7564 0.00114 0.52377 -0.14172 0.58779 -0.93941 0.001145 0.23298 -0.45822 0.30902 -0.99993 0.00115 -0.080813 -0.72361 -164.f -0.93202 0.001155 -0.38653 -0.90915 -0.30902 -0.74627 0.00116 -0.65392 -0.99519 -0.58779 -0.46788 0.001165 -0.85655 -0.97311 -0.80902 -0.13294 0.00117 -0.97445 -0.84611 -0.95106 0.21645 0.001175 -0.99603 -0.62863 -1. 0.53763 0.00118 -0.91924 -0.3446 -0.95106 0.79253 0.001185 -0.75174 -0.024721 -0.80902 0.95213 0.00119 -0.51013 0.29691 -0.58779 0.99948 0.001195 -0.2183 0.58649 -0.30902 0.93118 0.0012 0.094962 0.81403 168.f 0.75723 0.001205 0.39878 0.95641 0.30902 0.49925 0.00121 0.66327 0.99966 0.58779 0.18756 0.001215 0.86244 0.94019 0.80902 -0.1426 0.00122 0.97678 0.78498 0.95106 -0.45514 0.001225 0.99513 0.55062 1. -0.71712 0.00123 0.91577 0.26145 0.95106 -0.90203 0.001235 0.74659 -0.053059 0.80902 -0.99233 0.00124 0.50425 -0.36134 0.58779 -0.98082 0.001245 0.21257 -0.63294 0.30902 -0.87085 0.00125 -0.099833 -0.84147 -171.f -0.67546 0.001255 -0.40238 -0.96712 -0.30902 -0.41561 0.00126 -0.66547 -0.99846 -0.58779 -0.11774 0.001265 -0.86343 -0.93332 -0.80902 0.18909 0.00127 -0.97699 -0.77886 -0.95106 0.47602 0.001275 -0.99513 -0.55062 -1. 0.71712 0.00128 -0.91617 -0.27092 -0.95106 0.89159 0.001285 -0.7479 0.033433 -0.80902 0.9854 0.00129 -0.50679 0.33374 -0.58779 0.99214 0.001295 -0.2164 0.6021 -0.30902 0.91319 0.0013 0.094962 0.81403 189.f 0.75723 0.001305 0.397 0.95056 0.30902 0.53906 0.00131 0.66036 0.99992 0.58779 0.2781 0.001315 0.85948 0.9584 0.80902 -0.0034962 0.00132 0.97509 0.83057 0.95106 -0.28272 0.001325 0.99603 0.62863 1. -0.53763 0.00133 0.92036 0.37123 0.95106 -0.74897 0.001335 0.75549 0.081645 0.80902 -0.90153 0.00134 0.51746 -0.21433 0.58779 -0.98512 0.001345 0.22939 -0.49072 0.30902 -0.995 0.00135 -0.080813 -0.72361 -192.f -0.93202 0.001355 -0.38312 -0.89316 -0.30902 -0.80225 0.00136 -0.64832 -0.98525 -0.58779 -0.61631 0.001365 -0.85079 -0.99259 -0.80902 -0.38836 0.00137 -0.97104 -0.91519 -0.95106 -0.13502 0.001375 -0.9975 -0.76024 -1. 0.12592 0.00138 -0.92769 -0.54139 -0.95106 0.37674 0.001385 -0.76841 -0.27748 -0.80902 0.60094 0.00139 -0.53506 0.0091053 -0.58779 0.78426 0.001395 -0.25018 0.29432 -0.30902 0.91553 0.0014 0.058745 0.55452 196.f 0.98721 0.001405 0.36196 0.76834 0.30902 0.99574 0.00141 0.63027 0.91845 0.58779 0.94158 0.001415 0.83788 0.99289 0.80902 0.82905 0.00142 0.96483 0.98599 0.95106 0.66594 0.001425 0.99897 0.8987 1. 0.46286 0.00143 0.93704 0.73851 0.95106 0.23262 0.001435 0.78504 0.5187 0.80902 -0.010677 0.00144 0.55761 0.25727 0.58779 -0.25242 0.001445 0.27663 -0.024576 0.30902 -0.47838 0.00145 -0.030897 -0.30412 -213.f -0.6755 0.001455 -0.33543 -0.55898 -0.30902 -0.83257 0.00146 -0.60772 -0.76883 -0.58779 -0.94086 0.001465 -0.82165 -0.91705 -0.80902 -0.99452 0.00147 -0.95668 -0.99197 -0.95106 -0.99083 0.001475 -0.99988 -0.98779 -1. -0.93035 0.00148 -0.94711 -0.90497 -0.95106 -0.8168 0.001485 -0.80345 -0.7502 -0.80902 -0.65684 0.00149 -0.58269 -0.53586 -0.58779 -0.45967 0.001495 -0.30603 -0.279 -0.30902 -0.23651 0.0015 216.f 202.f 217.f 159.f 0.001505 0.30603 0.279 0.30902 0.23651 0.00151 0.58269 0.53586 0.58779 0.45967 0.001515 0.80345 0.7502 0.80902 0.65684 0.00152 0.94711 0.90497 0.95106 0.8168 0.001525 0.99988 0.98779 1. 0.93035 0.00153 0.95668 0.99197 0.95106 0.99083 0.001535 0.82165 0.91705 0.80902 0.99452 0.00154 0.60772 0.76883 0.58779 0.94086 0.001545 0.33543 0.55898 0.30902 0.83257 0.00155 0.030897 0.30412 -220.f 0.6755 0.001555 -0.27663 0.024576 -0.30902 0.47838 0.00156 -0.55761 -0.25727 -0.58779 0.25242 0.001565 -0.78504 -0.5187 -0.80902 0.010677 0.00157 -0.93704 -0.73851 -0.95106 -0.23262 0.001575 -0.99897 -0.8987 -1. -0.46286 0.00158 -0.96483 -0.98599 -0.95106 -0.66594 0.001585 -0.83788 -0.99289 -0.80902 -0.82905 0.00159 -0.63027 -0.91845 -0.58779 -0.94158 0.001595 -0.36196 -0.76834 -0.30902 -0.99574 0.0016 -0.058745 -0.55452 238.f -0.98721 0.001605 0.25018 -0.29432 0.30902 -0.91553 0.00161 0.53506 -0.0091053 0.58779 -0.78426 0.001615 0.76841 0.27748 0.80902 -0.60094 0.00162 0.92769 0.54139 0.95106 -0.37674 0.001625 0.9975 0.76024 1. -0.12592 0.00163 0.97104 0.91519 0.95106 0.13502 0.001635 0.85079 0.99259 0.80902 0.38836 0.00164 0.64832 0.98525 0.58779 0.61631 0.001645 0.38312 0.89316 0.30902 0.80225 0.00165 0.080813 0.72361 -241.f 0.93202 0.001655 -0.22939 0.49072 -0.30902 0.995 0.00166 -0.51746 0.21433 -0.58779 0.98512 0.001665 -0.75549 -0.081645 -0.80902 0.90153 0.00167 -0.92036 -0.37123 -0.95106 0.74897 0.001675 -0.99603 -0.62863 -1. 0.53763 0.00168 -0.97509 -0.83057 -0.95106 0.28272 0.001685 -0.85948 -0.9584 -0.80902 0.0034962 0.00169 -0.66036 -0.99992 -0.58779 -0.2781 0.001695 -0.397 -0.95056 -0.30902 -0.53906 0.0017 -0.094962 -0.81403 245.f -0.75723 0.001705 0.2164 -0.6021 0.30902 -0.91319 0.00171 0.50679 -0.33374 0.58779 -0.99214 0.001715 0.7479 -0.033433 0.80902 -0.9854 0.00172 0.91617 0.27092 0.95106 -0.89159 0.001725 0.99513 0.55062 1. -0.71712 0.00173 0.97699 0.77886 0.95106 -0.47602 0.001735 0.86343 0.93332 0.80902 -0.18909 0.00174 0.66547 0.99846 0.58779 0.11774 0.001745 0.40238 0.96712 0.30902 0.41561 0.00175 0.099833 0.84147 -262.f 0.67546 0.001755 -0.21257 0.63294 -0.30902 0.87085 0.00176 -0.50425 0.36134 -0.58779 0.98082 0.001765 -0.74659 0.053059 -0.80902 0.99233 0.00177 -0.91577 -0.26145 -0.95106 0.90203 0.001775 -0.99513 -0.55062 -1. 0.71712 0.00178 -0.97678 -0.78498 -0.95106 0.45514 0.001785 -0.86244 -0.94019 -0.80902 0.1426 0.00179 -0.66327 -0.99966 -0.58779 -0.18756 0.001795 -0.39878 -0.95641 -0.30902 -0.49925 0.0018 -0.094962 -0.81403 266.f -0.75723 0.001805 0.2183 -0.58649 0.30902 -0.93118 0.00181 0.51013 -0.29691 0.58779 -0.99948 0.001815 0.75174 0.024721 0.80902 -0.95213 0.00182 0.91924 0.3446 0.95106 -0.79253 0.001825 0.99603 0.62863 1. -0.53763 0.00183 0.97445 0.84611 0.95106 -0.21645 0.001835 0.85655 0.97311 0.80902 0.13294 0.00184 0.65392 0.99519 0.58779 0.46788 0.001845 0.38653 0.90915 0.30902 0.74627 0.00185 0.080813 0.72361 -269.f 0.93202 0.001855 -0.23298 0.45822 -0.30902 0.99993 0.00186 -0.52377 0.14172 -0.58779 0.93941 0.001865 -0.76269 -0.19118 -0.80902 0.7564 0.00187 -0.92602 -0.50352 -0.95106 0.47317 0.001875 -0.9975 -0.76024 -1. 0.12592 0.00188 -0.96997 -0.93219 -0.95106 -0.23969 0.001885 -0.84609 -0.99946 -0.80902 -0.57448 0.00189 -0.63813 -0.95383 -0.58779 -0.83242 0.001895 -0.36669 -0.79986 -0.30902 -0.97712 0.0019 -0.058745 -0.55452 287.f -0.98721 0.001905 0.2551 -0.24539 0.30902 -0.85978 0.00191 0.54361 0.09236 0.58779 -0.61127 0.001915 0.77806 0.41999 0.80902 -0.27561 0.00192 0.93507 0.69963 0.95106 0.10026 0.001925 0.99897 0.8987 1. 0.46286 0.00193 0.96335 0.99378 0.95106 0.75985 0.001935 0.83172 0.9734 0.80902 0.9477 0.00194 0.61716 0.83954 0.58779 0.99826 0.001945 0.34105 0.60749 0.30902 0.90318 0.00195 0.030897 0.30412 -290.f 0.6755 0.001955 -0.28237 -0.035161 -0.30902 0.34798 0.00196 -0.56749 -0.37058 -0.58779 -0.031458 0.001965 -0.796 -0.66264 -0.80902 -0.40679 0.00197 -0.9451 -0.87684 -0.95106 -0.72216 0.001975 -0.99988 -0.98779 -1. -0.93035 0.00198 -0.95485 -0.98223 -0.95106 -0.99991 0.001985 -0.81451 -0.86067 -0.80902 -0.9201 0.00199 -0.59285 -0.63739 -0.58779 -0.70258 0.001995 -0.312 -0.33873 -0.30902 -0.37977 0.002 165.f 180.f 166.f 208.f #Time v(1) v(2) v(3) v(4) 0.002 166.f 180.f 166.f 208.f 0.0020313 0.91624 0.83217 0.92388 0.65174 0.0020625 -0.73364 -0.92 -0.70711 -0.99116 0.0020938 -0.33079 0.16215 -0.38268 0.80795 0.002125 0.9975 0.76024 1. -0.12592 0.0021563 -0.45809 -0.94052 -0.38268 -0.6841 0.0021875 -0.63886 0.13804 -0.70711 0.99037 0.0022188 0.95691 0.832 0.92388 -0.38055 0.00225 -0.099833 -0.84147 -168.f -0.67546 0.0022813 -0.88197 -0.19603 -0.92388 0.92299 0.0023125 0.76933 0.99043 0.70711 0.13844 0.0023438 0.30463 -0.42483 0.38268 -0.99949 0.002375 -0.9975 -0.76024 -1. 0.12592 0.0024063 0.43339 0.81241 0.38268 0.98797 0.0024375 0.67954 0.39192 0.70711 -0.13265 0.0024688 -0.93117 -0.98054 -0.92388 -0.99715 0.0025 200.f 171.f 200.f 172.f 0.0025313 0.93117 0.98054 0.92388 0.99715 0.0025625 -0.67954 -0.39192 -0.70711 0.13265 0.0025938 -0.43339 -0.81241 -0.38268 -0.98797 0.002625 0.9975 0.76024 1. -0.12592 0.0026563 -0.30463 0.42483 -0.38268 0.99949 0.0026875 -0.76933 -0.99043 -0.70711 -0.13844 0.0027188 0.88197 0.19603 0.92388 -0.92299 0.00275 0.099833 0.84147 -203.f 0.67546 0.0027813 -0.95691 -0.832 -0.92388 0.38055 0.0028125 0.63886 -0.13804 0.70711 -0.99037 0.0028438 0.45809 0.94052 0.38268 0.6841 0.002875 -0.9975 -0.76024 -1. 0.12592 0.0029063 0.33079 -0.16215 0.38268 -0.80795 0.0029375 0.73364 0.92 0.70711 0.99116 0.0029688 -0.91624 -0.83217 -0.92388 -0.65174 0.003 206.f 235.f 206.f 263.f # v(1) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.6031n -171.69 180.000 2.6096n -171.67 180.000 6.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 7.K 20.82u -93.63 180.000 20.872u -93.61 180.000 8.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 9.K 0.049938 -26.03 -180.000 0.050063 -26.01 180.000 10.K 0.9975 -0.02 0.000 1. 0.00 -0.000 11.K 0.049938 -26.03 0.000 0.050063 -26.01 0.000 12.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 13.K 20.82u -93.63 -0.000 20.872u -93.61 -0.000 14.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 15.K 2.6029n -171.69 -0.000 2.6094n -171.67 -0.000 # v(2) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 249.76u -72.05 180.000 326.4u -69.73 180.000 6.K 0.0024766 -52.12 0.000 0.0032366 -49.80 -0.000 7.K 0.019563 -34.17 -180.000 0.025566 -31.85 -180.000 8.K 0.1149 -18.79 0.000 0.15016 -16.47 -0.000 9.K 0.44005 -7.13 -180.000 0.57508 -4.81 180.000 10.K 0.7652 -2.32 0.000 1. 0.00 -0.000 11.K 0.44005 -7.13 0.000 0.57508 -4.81 0.000 12.K 0.1149 -18.79 0.000 0.15016 -16.47 0.000 13.K 0.019563 -34.17 0.000 0.025566 -31.85 -0.000 14.K 0.0024765 -52.12 -0.000 0.0032365 -49.80 -0.000 15.K 248.26u -72.10 -0.000 324.43u -69.78 -0.000 # v(3) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.5264f -291.95 12.167 2.5264f -291.95 12.167 6.K 2.1495f -293.35 -21.614 2.1495f -293.35 -21.614 7.K 3.5566f -288.98 -10.693 3.5566f -288.98 -10.693 8.K 3.595f -288.89 -7.211 3.595f -288.89 -7.211 9.K 10.241f -279.79 -12.624 10.241f -279.79 -12.624 10.K 1. 0.00 0.000 1. 0.00 -0.000 11.K 6.7435f -283.42 -166.985 6.7435f -283.42 -166.985 12.K 3.8612f -288.27 -161.194 3.8612f -288.27 -161.194 13.K 2.6743f -291.46 -129.224 2.6743f -291.46 -129.224 14.K 1.906f -294.40 -141.846 1.906f -294.40 -141.846 15.K 4.5876f -286.77 -115.447 4.5876f -286.77 -115.447 # v(4) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 0.016242 -35.79 -180.000 0.031223 -30.11 0.000 6.K 0.064307 -23.83 0.000 0.12362 -18.16 180.000 7.K 0.19811 -14.06 -180.000 0.38085 -8.38 -0.000 8.K 0.43098 -7.31 0.000 0.82851 -1.63 180.000 9.K 0.52019 -5.68 -180.000 1. 0.00 0.000 10.K 0.0025077 -52.01 0.000 0.0048207 -46.34 -180.000 11.K 0.52019 -5.68 0.000 1. -0.00 -180.000 12.K 0.43098 -7.31 0.000 0.82851 -1.63 -180.000 13.K 0.1981 -14.06 0.000 0.38083 -8.39 -180.000 14.K 0.064216 -23.85 0.000 0.12345 -18.17 -180.000 15.K 0.015649 -36.11 0.000 0.030083 -30.43 180.000 V1 ( 1 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 0.1 signal= 1.K V2 ( 2 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 1. signal= 1.K V3 ( 3 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 10.K delay=NA( 0.) damping=NA( 0.) V4 ( 4 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 2.4 signal= 1.K tests/==out/bm_sffm.6.ckt.out000066400000000000000000000131501316501211100162760ustar00rootroot00000000000000' sin test #Time v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. 31.25u 0.91624 0.83217 0.92388 0.65174 62.5u -0.73364 -0.92 -0.70711 -0.99116 93.75u -0.33079 0.16215 -0.38268 0.80795 125.u 0.9975 0.76024 1. -0.12592 156.25u -0.45809 -0.94052 -0.38268 -0.6841 187.5u -0.63886 0.13804 -0.70711 0.99037 218.75u 0.95691 0.832 0.92388 -0.38055 250.u -0.099833 -0.84147 0. -0.67546 281.25u -0.88197 -0.19603 -0.92388 0.92299 312.5u 0.76933 0.99043 0.70711 0.13844 343.75u 0.30463 -0.42483 0.38268 -0.99949 375.u -0.9975 -0.76024 -1. 0.12592 406.25u 0.43339 0.81241 0.38268 0.98797 437.5u 0.67954 0.39192 0.70711 -0.13265 468.75u -0.93117 -0.98054 -0.92388 -0.99715 500.u 13.f 13.f 0. 9.f 531.25u 0.93117 0.98054 0.92388 0.99715 562.5u -0.67954 -0.39192 -0.70711 0.13265 593.75u -0.43339 -0.81241 -0.38268 -0.98797 625.u 0.9975 0.76024 1. -0.12592 656.25u -0.30463 0.42483 -0.38268 0.99949 687.5u -0.76933 -0.99043 -0.70711 -0.13844 718.75u 0.88197 0.19603 0.92388 -0.92299 750.u 0.099833 0.84147 0. 0.67546 781.25u -0.95691 -0.832 -0.92388 0.38055 812.5u 0.63886 -0.13804 0.70711 -0.99037 843.75u 0.45809 0.94052 0.38268 0.6841 875.u -0.9975 -0.76024 -1. 0.12592 906.25u 0.33079 -0.16215 0.38268 -0.80795 937.5u 0.73364 0.92 0.70711 0.99116 968.75u -0.91624 -0.83217 -0.92388 -0.65174 0.001 40.f 40.f 0. 47.f # v(1) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 2.6031n -171.69 -180.000 2.6096n -171.67 -180.000 6.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 7.K 20.82u -93.63 -180.000 20.872u -93.61 -180.000 8.K 0.001249 -58.07 -0.000 0.0012521 -58.05 -0.000 9.K 0.049938 -26.03 -180.000 0.050063 -26.01 180.000 10.K 0.9975 -0.02 0.000 1. 0.00 -0.000 11.K 0.049938 -26.03 0.000 0.050063 -26.01 0.000 12.K 0.001249 -58.07 0.000 0.0012521 -58.05 0.000 13.K 20.82u -93.63 -0.000 20.872u -93.61 -0.000 14.K 260.29n -131.69 -0.000 260.94n -131.67 -0.000 15.K 2.6029n -171.69 -0.000 2.6094n -171.67 -0.000 # v(2) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 249.76u -72.05 -180.000 326.4u -69.73 -180.000 6.K 0.0024766 -52.12 -0.000 0.0032366 -49.80 -0.000 7.K 0.019563 -34.17 -180.000 0.025566 -31.85 -180.000 8.K 0.1149 -18.79 0.000 0.15016 -16.47 -0.000 9.K 0.44005 -7.13 -180.000 0.57508 -4.81 180.000 10.K 0.7652 -2.32 0.000 1. 0.00 -0.000 11.K 0.44005 -7.13 0.000 0.57508 -4.81 0.000 12.K 0.1149 -18.79 0.000 0.15016 -16.47 0.000 13.K 0.019563 -34.17 -0.000 0.025566 -31.85 -0.000 14.K 0.0024765 -52.12 -0.000 0.0032365 -49.80 -0.000 15.K 248.26u -72.10 -0.000 324.43u -69.78 -0.000 # v(3) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 514.4E-18 -305.77 -165.811 514.4E-18 -305.77 -165.811 6.K 4.4867f -286.96 -68.212 4.4867f -286.96 -68.212 7.K 4.1232f -287.70 -2.025 4.1232f -287.70 -2.025 8.K 3.4982f -289.12 3.867 3.4982f -289.12 3.867 9.K 6.6392f -283.56 11.684 6.6392f -283.56 11.684 10.K 1. 0.00 0.000 1. 0.00 -0.000 11.K 5.9235f -284.55 168.821 5.9235f -284.55 168.821 12.K 2.8928f -290.77 167.561 2.8928f -290.77 167.561 13.K 3.6411f -288.78 -173.312 3.6411f -288.78 -173.312 14.K 3.8884f -288.20 -108.952 3.8884f -288.20 -108.952 15.K 1.1348f -298.90 -36.377 1.1348f -298.90 -36.377 # v(4) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 5.K 0.016242 -35.79 -180.000 0.031223 -30.11 0.000 6.K 0.064307 -23.83 -0.000 0.12362 -18.16 180.000 7.K 0.19811 -14.06 -180.000 0.38085 -8.38 0.000 8.K 0.43098 -7.31 0.000 0.82851 -1.63 180.000 9.K 0.52019 -5.68 -180.000 1. 0.00 0.000 10.K 0.0025077 -52.01 -0.000 0.0048207 -46.34 180.000 11.K 0.52019 -5.68 0.000 1. -0.00 -180.000 12.K 0.43098 -7.31 0.000 0.82851 -1.63 -180.000 13.K 0.1981 -14.06 0.000 0.38083 -8.39 -180.000 14.K 0.064216 -23.85 -0.000 0.12345 -18.17 180.000 15.K 0.015649 -36.11 -0.000 0.030083 -30.43 180.000 V1 ( 1 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 0.1 signal= 1.K V2 ( 2 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 1. signal= 1.K V3 ( 3 0 ) sin offset=NA( 0.) amplitude=NA( 1.) frequency= 10.K delay=NA( 0.) damping=NA( 0.) V4 ( 4 0 ) sffm offset= 0. amplitude= 1. carrier= 10.K modindex= 2.4 signal= 1.K tests/==out/bm_sin.1.ckt.out000066400000000000000000000161401316501211100161310ustar00rootroot00000000000000' sin test #Time v(1) v(2) 0. 0. 0. 500.p 0.30902 0. 1.n 0.58779 0. 1.5n 0.80902 0. 2.n 0.95106 0. 2.5n 1. 0. 3.n 0.95106 0. 3.5n 0.80902 0. 4.n 0.58779 0. 4.5n 0.30902 0. 5.n 0. 0. 5.5n -0.30902 0. 6.n -0.58779 0. 6.5n -0.80902 0. 7.n -0.95106 0. 7.5n -1. 0. 8.n -0.95106 0. 8.5n -0.80902 0. 9.n -0.58779 0. 9.5n -0.30902 0. 10.n 0. 0. 10.5n 0.30902 0.30594 11.n 0.58779 0.57615 11.5n 0.80902 0.78511 12.n 0.95106 0.91377 12.5n 1. 0.95123 13.n 0.95106 0.89567 13.5n 0.80902 0.75432 14.n 0.58779 0.54259 14.5n 0.30902 0.28242 15.n 0. 0. 15.5n -0.30902 -0.27683 16.n -0.58779 -0.52132 16.5n -0.80902 -0.71039 17.n -0.95106 -0.82681 17.5n -1. -0.86071 18.n -0.95106 -0.81044 18.5n -0.80902 -0.68254 19.n -0.58779 -0.49096 19.5n -0.30902 -0.25554 20.n 0. 0. 20.5n 0.30902 0.25048 21.n 0.58779 0.47171 21.5n 0.80902 0.64279 22.n 0.95106 0.74813 22.5n 1. 0.7788 23.n 0.95106 0.73331 23.5n 0.80902 0.61759 24.n 0.58779 0.44424 24.5n 0.30902 0.23123 25.n 0. 0. 25.5n -0.30902 -0.22665 26.n -0.58779 -0.42682 26.5n -0.80902 -0.58162 27.n -0.95106 -0.67693 27.5n -1. -0.70469 28.n -0.95106 -0.66353 28.5n -0.80902 -0.55882 29.n -0.58779 -0.40196 29.5n -0.30902 -0.20922 30.n 0. 0. 30.5n 0.30902 0.20508 31.n 0.58779 0.3862 31.5n 0.80902 0.52627 32.n 0.95106 0.61252 32.5n 1. 0.63763 33.n 0.95106 0.60039 33.5n 0.80902 0.50564 34.n 0.58779 0.36371 34.5n 0.30902 0.18931 35.n 0. 0. 35.5n -0.30902 -0.18556 36.n -0.58779 -0.34945 36.5n -0.80902 -0.47619 37.n -0.95106 -0.55423 37.5n -1. -0.57695 38.n -0.95106 -0.54325 38.5n -0.80902 -0.45752 39.n -0.58779 -0.3291 39.5n -0.30902 -0.1713 40.n 0. 0. 40.5n 0.30902 0.1679 41.n 0.58779 0.3162 41.5n 0.80902 0.43088 42.n 0.95106 0.50148 42.5n 1. 0.52205 43.n 0.95106 0.49155 43.5n 0.80902 0.41398 44.n 0.58779 0.29778 44.5n 0.30902 0.155 45.n 0. 0. 45.5n -0.30902 -0.15193 46.n -0.58779 -0.28611 46.5n -0.80902 -0.38987 47.n -0.95106 -0.45376 47.5n -1. -0.47237 48.n -0.95106 -0.44478 48.5n -0.80902 -0.37459 49.n -0.58779 -0.26944 49.5n -0.30902 -0.14025 50.n 0. 0. 50.5n 0.30902 0.13747 51.n 0.58779 0.25888 51.5n 0.80902 0.35277 52.n 0.95106 0.41058 52.5n 1. 0.42741 53.n 0.95106 0.40245 53.5n 0.80902 0.33894 54.n 0.58779 0.2438 54.5n 0.30902 0.1269 55.n 0. 0. 55.5n -0.30902 -0.12439 56.n -0.58779 -0.23424 56.5n -0.80902 -0.3192 57.n -0.95106 -0.37151 57.5n -1. -0.38674 58.n -0.95106 -0.36415 58.5n -0.80902 -0.30668 59.n -0.58779 -0.2206 59.5n -0.30902 -0.11482 60.n 0. 0. 60.5n 0.30902 0.11255 61.n 0.58779 0.21195 61.5n 0.80902 0.28882 62.n 0.95106 0.33616 62.5n 1. 0.34994 63.n 0.95106 0.3295 63.5n 0.80902 0.2775 64.n 0.58779 0.19961 64.5n 0.30902 0.1039 65.n 0. 0. 65.5n -0.30902 -0.10184 66.n -0.58779 -0.19178 66.5n -0.80902 -0.26134 67.n -0.95106 -0.30417 67.5n -1. -0.31664 68.n -0.95106 -0.29814 68.5n -0.80902 -0.25109 69.n -0.58779 -0.18061 69.5n -0.30902 -0.09401 70.n 0. 0. 70.5n 0.30902 0.092148 71.n 0.58779 0.17353 71.5n 0.80902 0.23647 72.n 0.95106 0.27522 72.5n 1. 0.2865 73.n 0.95106 0.26977 73.5n 0.80902 0.2272 74.n 0.58779 0.16343 74.5n 0.30902 0.085063 75.n 105.f 29.f 75.5n -0.30902 -0.083379 76.n -0.58779 -0.15702 76.5n -0.80902 -0.21397 77.n -0.95106 -0.24903 77.5n -1. -0.25924 78.n -0.95106 -0.2441 78.5n -0.80902 -0.20558 79.n -0.58779 -0.14787 79.5n -0.30902 -0.076969 80.n -123.f -28.f 80.5n 0.30902 0.075444 81.n 0.58779 0.14208 81.5n 0.80902 0.1936 82.n 0.95106 0.22533 82.5n 1. 0.23457 83.n 0.95106 0.22087 83.5n 0.80902 0.18601 84.n 0.58779 0.1338 84.5n 0.30902 0.069644 85.n 134.f 30.f 85.5n -0.30902 -0.068265 86.n -0.58779 -0.12856 86.5n -0.80902 -0.17518 87.n -0.95106 -0.20389 87.5n -1. -0.21225 88.n -0.95106 -0.19985 88.5n -0.80902 -0.16831 89.n -0.58779 -0.12107 89.5n -0.30902 -0.063016 90.n -151.f -29.f 90.5n 0.30902 0.061769 91.n 0.58779 0.11632 91.5n 0.80902 0.15851 92.n 0.95106 0.18449 92.5n 1. 0.19205 93.n 0.95106 0.18083 93.5n 0.80902 0.1523 94.n 0.58779 0.10955 94.5n 0.30902 0.05702 95.n 162.f 30.f 95.5n -0.30902 -0.055891 96.n -0.58779 -0.10525 96.5n -0.80902 -0.14343 97.n -0.95106 -0.16693 97.5n -1. -0.17377 98.n -0.95106 -0.16362 98.5n -0.80902 -0.1378 99.n -0.58779 -0.099123 99.5n -0.30902 -0.051594 100.n -180.f -29.f V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay= 0. damping= 0. V2 ( 2 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay= 10.n damping= 20.Meg Gnucap System status iterations: op=0, dc=0, tran=608, fourier=0, total=811 transient timesteps: accepted=203, rejected=0, total=203 nodes: user=2, subckt=0, model=0, total=2 dctran density=50.0%, ac density=50.0% tests/==out/bm_sin.2.ckt.out000066400000000000000000000020031316501211100161230ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 2.5n 0. 200.p 0.12533 468.8p 0. 400.p 0.24869 729.21p 0. 726.67p 0.44088 1.826n 0. 1.7974n 0.90413 3.0589n 0. 2.8681n 0.97337 4.472n 0. 3.9389n 0.61841 6.4389n 0. 6.2333n -0.69966 7.9321n 0. 7.763n -0.98638 9.5905n 0. 9.2926n -0.42999 11.793n 0. 11.434n 0.78398 13.268n 0. 13.576n 0.78021 15.545n 0. 15.717n -0.43544 17.796n 0. 17.859n -0.97474 19.814n 0. 20.n 0. 22.5n 0. V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay= 0. damping= 0. Gnucap System status iterations: op=0, dc=0, tran=44, fourier=0, total=59 transient timesteps: accepted=15, rejected=0, total=15 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.3.ckt.out000066400000000000000000000026551316501211100161410ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 1.n 0. 200.p 0.12533 468.8p 0. 400.p 0.24869 729.21p 0. 726.67p 0.44088 1.7267n 0. 1.6903n 0.87336 2.6903n 0. 2.654n 0.99532 3.654n 0. 3.6177n 0.76339 4.6177n 0. 4.5813n 0.26003 5.5813n 0. 5.545n -0.33578 6.545n 0. 6.5087n -0.81221 7.5087n 0. 7.4723n -0.99985 8.4723n 0. 8.436n -0.83199 9.436n 0. 9.3997n -0.36832 10.4n 0. 10.363n 0.22631 11.363n 0. 11.327n 0.74048 12.327n 0. 12.291n 0.99136 13.291n 0. 13.254n 0.88977 14.254n 0. 14.218n 0.47181 15.218n 0. 15.182n -0.1139 16.182n 0. 16.145n -0.65911 17.145n 0. 17.109n -0.96997 18.109n 0. 18.073n -0.93596 19.073n 0. 19.036n -0.56916 20.036n 0. 20.n 0. 21.n 0. V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay=NA( 0.) damping=NA( 0.) samples= 10. Gnucap System status iterations: op=0, dc=0, tran=71, fourier=0, total=95 transient timesteps: accepted=24, rejected=0, total=24 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.4.ckt.out000066400000000000000000000023771316501211100161430ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 0. 5.n 200.p 0.12533 468.8p 5.n 400.p 0.24869 729.21p 5.n 726.67p 0.44088 1.826n 5.n 1.7974n 0.90413 3.0589n 5.n 2.8681n 0.97337 4.472n 5.n 3.9389n 0.61841 6.995n 5.n 5.n 0. 6.525n 10.n 6.0611n -0.61841 7.542n 10.n 7.1222n -0.97196 8.9218n 10.n 8.7319n -0.71508 12.339n 10.n 10.n 0. 11.717n 15.n 11.268n 0.71508 12.922n 15.n 12.536n 0.99974 14.625n 15.n 14.402n 0.36691 16.647n 15.n 15.n 0. 16.405n 20.n 16.25n -0.70711 17.938n 20.n 17.5n -1. 19.934n 20.n 18.75n -0.70711 20.845n 20.n 20.n 0. 21.641n 25.n V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay=NA( 0.) damping=NA( 0.) samples= 0. zero=1 Gnucap System status iterations: op=0, dc=0, tran=59, fourier=0, total=79 transient timesteps: accepted=20, rejected=0, total=20 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.5.ckt.out000066400000000000000000000021131316501211100161300ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 0. 2.5n 200.p 0.12533 468.8p 2.5n 400.p 0.24869 729.21p 2.5n 726.67p 0.44088 1.826n 2.5n 1.7974n 0.90413 3.0589n 2.5n 2.5n 1. 4.0283n 7.5n 3.9583n 0.60876 6.3909n 7.5n 6.25n -0.70711 7.979n 7.5n 7.5n -1. 9.309n 12.5n 8.75n -0.70711 11.156n 12.5n 11.n 0.58779 12.731n 12.5n 12.5n 1. 14.414n 17.5n 14.n 0.58779 18.851n 17.5n 17.5n -1. 19.471n 22.5n 18.75n -0.70711 21.008n 22.5n 20.n 0. 21.929n 22.5n V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay=NA( 0.) damping=NA( 0.) samples= 0. peak=1 Gnucap System status iterations: op=0, dc=0, tran=47, fourier=0, total=63 transient timesteps: accepted=16, rejected=0, total=16 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.6.ckt.out000066400000000000000000000024061316501211100161360ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 0. 2.5n 200.p 0.12533 468.8p 2.5n 400.p 0.24869 729.21p 2.5n 726.67p 0.44088 1.826n 2.5n 1.7974n 0.90413 3.0589n 2.5n 2.5n 1. 4.0283n 5.n 3.9583n 0.60876 6.3909n 5.n 5.n 0. 6.5514n 7.5n 6.0417n -0.60876 7.5229n 7.5n 7.5n -1. 9.352n 10.n 8.9583n -0.60876 12.661n 10.n 10.n 0. 11.627n 12.5n 11.429n 0.78183 13.127n 12.5n 12.5n 1. 14.656n 15.n 14.375n 0.38268 16.557n 15.n 15.n 0. 16.416n 17.5n 16.25n -0.70711 17.938n 17.5n 17.5n -1. 19.92n 20.n 18.75n -0.70711 20.849n 20.n 20.n 0. 21.641n 22.5n V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay=NA( 0.) damping=NA( 0.) samples= 0. zero=1 peak=1 Gnucap System status iterations: op=0, dc=0, tran=59, fourier=0, total=79 transient timesteps: accepted=20, rejected=0, total=20 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.7.ckt.out000066400000000000000000000024061316501211100161370ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 2.n 2.5n 200.p 0.12533 468.8p 2.5n 400.p 0.24869 729.21p 2.5n 726.67p 0.44088 1.826n 2.5n 1.7974n 0.90413 3.0589n 2.5n 2.5n 1. 4.0283n 5.n 3.9583n 0.60876 5.9583n 5.n 5.n 0. 6.5514n 7.5n 6.0417n -0.60876 7.5229n 7.5n 7.5n -1. 9.352n 10.n 8.9583n -0.60876 10.958n 10.n 10.n 0. 11.627n 12.5n 11.429n 0.78183 13.127n 12.5n 12.5n 1. 14.5n 15.n 14.375n 0.38268 16.375n 15.n 15.n 0. 16.416n 17.5n 16.25n -0.70711 17.938n 17.5n 17.5n -1. 19.5n 20.n 18.75n -0.70711 20.75n 20.n 20.n 0. 21.641n 22.5n V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay=NA( 0.) damping=NA( 0.) samples= 5. zero=1 peak=1 Gnucap System status iterations: op=0, dc=0, tran=59, fourier=0, total=79 transient timesteps: accepted=20, rejected=0, total=20 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.8.ckt.out000066400000000000000000000024031316501211100161350ustar00rootroot00000000000000' sin test #Time v(1) next(V1) event(V1) 0. 0. 0. 1.n 200.p 0. 0. 1.n 1.n 0. 2.4286n 2.5n 2.3571n 0.75307 3.5134n 2.5n 2.5n 0.80902 3.4185n 5.n 3.375n 0.99692 4.8036n 5.n 4.7604n 0.70246 6.189n 5.n 5.n 0.58779 6.4286n 7.5n 6.3636n -0.2265 7.7625n 7.5n 7.5n -0.80902 8.9286n 10.n 8.6364n -0.99633 10.065n 10.n 10.n -0.58779 11.429n 12.5n 11.364n 0.2265 12.792n 12.5n 12.5n 0.80902 13.929n 15.n 13.636n 0.99633 15.065n 15.n 15.n 0.58779 16.429n 17.5n 16.364n -0.2265 17.792n 17.5n 17.5n -0.80902 18.929n 20.n 18.636n -0.99633 20.065n 20.n 20.n -0.58779 21.429n 22.5n V1 ( 1 0 ) sin offset= 0. amplitude= 1. frequency= 100.Meg delay= 1.n damping=NA( 0.) samples= 7. zero=1 peak=1 Gnucap System status iterations: op=0, dc=0, tran=57, fourier=0, total=77 transient timesteps: accepted=20, rejected=0, total=20 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_sin.9.ckt.out000066400000000000000000000011541316501211100161400ustar00rootroot00000000000000' bd sin test #Time v(1) 0. 10. 1.u 10.063 2.u 10.126 16.u 11.004 100.u 15.878 200.u 19.511 250.u 20. 300.u 19.511 400.u 15.878 500.u 10. 600.u 4.1221 700.u 0.48943 750.u 1.f 800.u 0.48943 900.u 4.1221 0.001 10. Gnucap System status iterations: op=0, dc=0, tran=48, fourier=0, total=64 transient timesteps: accepted=16, rejected=0, total=16 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/bm_table.1.1.ckt.out000066400000000000000000000050271316501211100165700ustar00rootroot00000000000000# TABLE mimicing PWL v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 2 0 ) 1.K e1 ( 3 0 2 0 ) t1 r3 ( 3 0 ) 10.K g1 ( 4 0 2 0 ) t1 r4 ( 4 0 ) 10.K .model t1 table ( order=1 ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) # v(1) v(2) v(3) v(4) 27. 1. 0.5 0.5 -5.K # v(1) v(2) v(3) v(4) -10. -10. -5. -5. 50.K -9. -9. -4.5 -4.5 45.K -8. -8. -4. -4. 40.K -7. -7. -3.5 -3.5 35.K -6. -6. -3. -3. 30.K -5. -5. -2.5 -2.5 25.K -4. -4. -2. -2. 20.K -3. -3. -1.5 -1.5 15.K -2. -2. -1. -1. 10.K -1. -1. -0.5 -0.5 5.K 0. 0. 0. 0. 0. 1. 1. 0.5 0.5 -5.K 2. 2. 1. 1. -10.K 3. 3. 1.5 1.1667 -11.667K 4. 4. 2. 1.3333 -13.333K 5. 5. 2.5 1.5 -15.K 6. 6. 3. 1.6667 -16.667K 7. 7. 3.5 1.8333 -18.333K 8. 8. 4. 2. -20.K 9. 9. 4.5 2.1 -21.K 10. 10. 5. 2.2 -22.K # v(1) v(2) v(3) v(4) 1. 1. 0.5 0.5 -5.K 1.5849 1.5849 0.79245 0.79245 -7.9245K 2.5119 2.5119 1.2559 1.0853 -10.853K 3.9811 3.9811 1.9905 1.3302 -13.302K 6.3096 6.3096 3.1548 1.7183 -17.183K 10. 10. 5. 2.2 -22.K 15.849 15.849 7.9245 2.7849 -27.849K 25.119 25.119 12.559 3.5085 -35.085K 39.811 39.811 19.905 4.4339 -44.339K 63.096 63.096 31.548 5.7275 -57.275K 100. 100. 50. 7.7778 -77.778K # v(1) v(2) v(3) v(4) 32. 32. 16. 4. -40.K 41. 41. 20.5 4.5 -45.K 50. 50. 25. 5. -50.K 59. 59. 29.5 5.5 -55.K 68. 68. 34. 6. -60.K tests/==out/bm_table.2.1.ckt.out000066400000000000000000000172051316501211100165720ustar00rootroot00000000000000# TABLE as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) t1 e3 ( 7 0 2 1 ) t1 e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) t2 e1 ( 4 0 5 1 ) t2 .model t1 table ( order=2 ( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. )) .model t2 table ( order=2 ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -155.87 -155.87 -100. -10. -10. -9.75 1.u -9.75 -148.18 -148.18 -95.063 -9.75 -9.75 -9.5 1.u -9.5 -140.68 -140.68 -90.25 -9.5 -9.5 -9.25 1.u -9.25 -133.37 -133.37 -85.563 -9.25 -9.25 -9. 1.u -9. -126.26 -126.26 -81. -9. -9. -8.75 1.u -8.75 -119.34 -119.34 -76.562 -8.75 -8.75 -8.5 1.u -8.5 -112.62 -112.62 -72.25 -8.5 -8.5 -8.25 1.u -8.25 -106.09 -106.09 -68.062 -8.25 -8.25 -8. 1.u -8. -99.759 -99.759 -64. -8. -8. -7.75 1.u -7.75 -93.621 -93.621 -60.062 -7.75 -7.75 -7.5 1.u -7.5 -87.679 -87.679 -56.25 -7.5 -7.5 -7.25 1.u -7.25 -81.931 -81.931 -52.562 -7.25 -7.25 -7. 1.u -7. -76.378 -76.378 -49. -7. -7. -6.75 1.u -6.75 -71.02 -71.02 -45.563 -6.75 -6.75 -6.5 1.u -6.5 -65.856 -65.856 -42.25 -6.5 -6.5 -6.25 1.u -6.25 -60.888 -60.888 -39.063 -6.25 -6.25 -6. 1.u -6. -56.114 -56.114 -36. -6. -6. -5.75 1.u -5.75 -51.536 -51.536 -33.063 -5.75 -5.75 -5.5 1.u -5.5 -47.152 -47.152 -30.25 -5.5 -5.5 -5.25 1.u -5.25 -42.963 -42.963 -27.562 -5.25 -5.25 -5. 1.u -5. -38.968 -38.968 -25. -5. -5. -4.75 1.u -4.75 -35.169 -35.169 -22.562 -4.75 -4.75 -4.5 1.u -4.5 -31.564 -31.564 -20.25 -4.5 -4.5 -4.25 1.u -4.25 -28.155 -28.155 -18.062 -4.25 -4.25 -4. 1.u -4. -24.94 -24.94 -16. -4. -4. -3.75 1.u -3.75 -21.92 -21.92 -14.062 -3.75 -3.75 -3.5 1.u -3.5 -19.094 -19.094 -12.25 -3.5 -3.5 -3.25 1.u -3.25 -16.464 -16.464 -10.563 -3.25 -3.25 -3. 1.u -3. -14.029 -14.029 -9. -3. -3. -2.75 1.u -2.75 -11.788 -11.788 -7.5625 -2.75 -2.75 -2.5 1.u -2.5 -9.7421 -9.7421 -6.25 -2.5 -2.5 -2.25 1.u -2.25 -7.8911 -7.8911 -5.0625 -2.25 -2.25 -2. 1.u -2. -6.2349 -6.2349 -4. -2. -2. -1.75 1.u -1.75 -4.7736 -4.7736 -3.0625 -1.75 -1.75 -1.5 1.u -1.5 -3.5071 -3.5071 -2.25 -1.5 -1.5 -1.25 1.u -1.25 -2.4355 -2.4355 -1.5625 -1.25 -1.25 -1. 1.u -1. -1.5587 -1.5587 -1. -1. -1. -0.75 1.u -0.75 -0.87679 -0.87679 -0.5625 -0.75 -0.75 -0.5 1.u -0.5 -0.38968 -0.38968 -0.25 -0.5 -0.5 -0.25 1.u -0.25 -0.097421 -0.097422 -0.0625 -0.25 -0.25 0. 1.u 0. 0. -1.5587u 0. 0. -1.u 0.25 1.u 0.25 0.095238 0.095237 0.0625 0.25 0.25 0.5 1.u 0.5 0.35476 0.35476 0.25 0.5 0.5 0.75 1.u 0.75 0.7 0.7 0.5625 0.75 0.75 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2368 1.2368 1.5625 1.375 1.375 1.5 1.u 1.5 1.4954 1.4954 2.25 2. 2. 1.75 1.u 1.75 1.7571 1.7571 3.0625 2.875 2.875 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.2338 2.2337 5.0625 5.25 5.25 2.5 1.u 2.5 2.4814 2.4814 6.25 6.5 6.5 2.75 1.u 2.75 2.7385 2.7385 7.5625 7.75 7.75 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2617 3.2617 10.563 10.375 10.375 3.5 1.u 3.5 3.5196 3.5196 12.25 12. 12. 3.75 1.u 3.75 3.7677 3.7677 14.063 13.875 13.875 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2292 4.2292 18.063 18.25 18.25 4.5 1.u 4.5 4.4722 4.4722 20.25 20.5 20.5 4.75 1.u 4.75 4.7292 4.7292 22.563 22.75 22.75 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2847 5.2847 27.563 27.25 27.25 5.5 1.u 5.5 5.5833 5.5833 30.25 29.5 29.5 5.75 1.u 5.75 5.8958 5.8958 33.063 31.75 31.75 6. 1.u 6. 6.2222 6.2222 36. 34. 34. 6.25 1.u 6.25 6.5625 6.5625 39.063 36.25 36.25 6.5 1.u 6.5 6.9167 6.9167 42.25 38.5 38.5 6.75 1.u 6.75 7.2847 7.2847 45.563 40.75 40.75 7. 1.u 7. 7.6667 7.6667 49. 43. 43. 7.25 1.u 7.25 8.0625 8.0625 52.563 45.25 45.25 7.5 1.u 7.5 8.4722 8.4722 56.25 47.5 47.5 7.75 1.u 7.75 8.8958 8.8958 60.063 49.75 49.75 8. 1.u 8. 9.3333 9.3333 64. 52. 52. 8.25 1.u 8.25 9.7847 9.7847 68.063 54.25 54.25 8.5 1.u 8.5 10.25 10.25 72.25 56.5 56.5 8.75 1.u 8.75 10.729 10.729 76.563 58.75 58.75 9. 1.u 9. 11.222 11.222 81. 61. 61. 9.25 1.u 9.25 11.729 11.729 85.563 63.25 63.25 9.5 1.u 9.5 12.25 12.25 90.25 65.5 65.5 9.75 1.u 9.75 12.785 12.785 95.063 67.75 67.75 10. 1.u 10. 13.333 13.333 100. 70. 70. tests/==out/bm_table.2.2.ckt.out000066400000000000000000000172361316501211100165770ustar00rootroot00000000000000# TABLE as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) t1 e3 ( 7 0 2 1 ) t1 e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) t2 e1 ( 4 0 5 1 ) t2 .model t1 table ( order=2 below= 0. ( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. )) .model t2 table ( order=2 below= 1.56984 ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -156.98 -156.98 -100. 0. 0. -9.75 1.u -9.75 -149.23 -149.23 -95.063 0. 0. -9.5 1.u -9.5 -141.68 -141.68 -90.25 0. 0. -9.25 1.u -9.25 -134.32 -134.32 -85.563 0. 0. -9. 1.u -9. -127.16 -127.16 -81. 0. 0. -8.75 1.u -8.75 -120.19 -120.19 -76.562 0. 0. -8.5 1.u -8.5 -113.42 -113.42 -72.25 0. 0. -8.25 1.u -8.25 -106.85 -106.85 -68.062 0. 0. -8. 1.u -8. -100.47 -100.47 -64. 0. 0. -7.75 1.u -7.75 -94.289 -94.289 -60.062 0. 0. -7.5 1.u -7.5 -88.304 -88.304 -56.25 0. 0. -7.25 1.u -7.25 -82.515 -82.515 -52.562 0. 0. -7. 1.u -7. -76.922 -76.922 -49. 0. 0. -6.75 1.u -6.75 -71.526 -71.526 -45.563 0. 0. -6.5 1.u -6.5 -66.326 -66.326 -42.25 0. 0. -6.25 1.u -6.25 -61.322 -61.322 -39.063 0. 0. -6. 1.u -6. -56.514 -56.514 -36. 0. 0. -5.75 1.u -5.75 -51.903 -51.903 -33.063 0. 0. -5.5 1.u -5.5 -47.488 -47.488 -30.25 0. 0. -5.25 1.u -5.25 -43.269 -43.269 -27.562 0. 0. -5. 1.u -5. -39.246 -39.246 -25. 0. 0. -4.75 1.u -4.75 -35.42 -35.42 -22.562 0. 0. -4.5 1.u -4.5 -31.789 -31.789 -20.25 0. 0. -4.25 1.u -4.25 -28.355 -28.355 -18.062 0. 0. -4. 1.u -4. -25.117 -25.117 -16. 0. 0. -3.75 1.u -3.75 -22.076 -22.076 -14.062 0. 0. -3.5 1.u -3.5 -19.231 -19.231 -12.25 0. 0. -3.25 1.u -3.25 -16.581 -16.581 -10.563 0. 0. -3. 1.u -3. -14.129 -14.129 -9. 0. 0. -2.75 1.u -2.75 -11.872 -11.872 -7.5625 0. 0. -2.5 1.u -2.5 -9.8115 -9.8115 -6.25 0. 0. -2.25 1.u -2.25 -7.9473 -7.9473 -5.0625 0. 0. -2. 1.u -2. -6.2794 -6.2794 -4. 0. 0. -1.75 1.u -1.75 -4.8076 -4.8076 -3.0625 0. 0. -1.5 1.u -1.5 -3.5321 -3.5321 -2.25 0. 0. -1.25 1.u -1.25 -2.4529 -2.4529 -1.5625 0. 0. -1. 1.u -1. -1.5698 -1.5698 -1. 0. 0. -0.75 1.u -0.75 -0.88303 -0.88304 -0.5625 0. 0. -0.5 1.u -0.5 -0.39246 -0.39246 -0.25 0. 0. -0.25 1.u -0.25 -0.098115 -0.098117 -0.0625 0. 0. 0. 1.u 0. 0. -1.5698u 0. 0. 0. 0.25 1.u 0.25 0.095889 0.095888 0.0625 0.0625 0.0625 0.5 1.u 0.5 0.35685 0.35684 0.25 0.25 0.25 0.75 1.u 0.75 0.70273 0.70273 0.5625 0.5625 0.5625 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2318 1.2318 1.5625 1.5625 1.5625 1.5 1.u 1.5 1.4873 1.4873 2.25 2.25 2.25 1.75 1.u 1.75 1.7499 1.7499 3.0625 3.0625 3.0625 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.243 2.243 5.0625 5.0625 5.0625 2.5 1.u 2.5 2.4952 2.4952 6.25 6.25 6.25 2.75 1.u 2.75 2.7499 2.7499 7.5625 7.5625 7.5625 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2483 3.2483 10.563 10.563 10.562 3.5 1.u 3.5 3.5002 3.5002 12.25 12.25 12.25 3.75 1.u 3.75 3.7521 3.7521 14.063 14.063 14.062 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2468 4.2468 18.063 18.063 18.062 4.5 1.u 4.5 4.4971 4.4971 20.25 20.25 20.25 4.75 1.u 4.75 4.7489 4.7489 22.563 22.563 22.562 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2563 5.2563 27.563 27.5 27.5 5.5 1.u 5.5 5.525 5.525 30.25 30. 30. 5.75 1.u 5.75 5.8063 5.8063 33.063 32.5 32.5 6. 1.u 6. 6.1 6.1 36. 35. 35. 6.25 1.u 6.25 6.4063 6.4063 39.063 37.5 37.5 6.5 1.u 6.5 6.725 6.725 42.25 40. 40. 6.75 1.u 6.75 7.0563 7.0563 45.563 42.5 42.5 7. 1.u 7. 7.4 7.4 49. 45. 45. 7.25 1.u 7.25 7.7563 7.7563 52.563 47.5 47.5 7.5 1.u 7.5 8.125 8.125 56.25 50. 50. 7.75 1.u 7.75 8.5063 8.5063 60.063 52.5 52.5 8. 1.u 8. 8.9 8.9 64. 55. 55. 8.25 1.u 8.25 9.3063 9.3063 68.063 57.5 57.5 8.5 1.u 8.5 9.7251 9.7251 72.25 60. 60. 8.75 1.u 8.75 10.156 10.156 76.563 62.5 62.5 9. 1.u 9. 10.6 10.6 81. 65. 65. 9.25 1.u 9.25 11.056 11.056 85.563 67.5 67.5 9.5 1.u 9.5 11.525 11.525 90.25 70. 70. 9.75 1.u 9.75 12.006 12.006 95.063 72.5 72.5 10. 1.u 10. 12.5 12.5 100. 75. 75. tests/==out/bm_table.2.3.ckt.out000066400000000000000000000172311316501211100165730ustar00rootroot00000000000000# FIT as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) t1 e3 ( 7 0 2 1 ) t1 e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) t2 e1 ( 4 0 5 1 ) t2 .model t1 table ( order=2 above= 10. ( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. )) .model t2 table ( order=2 above= 0.1 ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -156.98 -156.98 -100. 0. 0. -9.75 1.u -9.75 -149.23 -149.23 -95.063 0. 0. -9.5 1.u -9.5 -141.68 -141.68 -90.25 0. 0. -9.25 1.u -9.25 -134.32 -134.32 -85.563 0. 0. -9. 1.u -9. -127.16 -127.16 -81. 0. 0. -8.75 1.u -8.75 -120.19 -120.19 -76.562 0. 0. -8.5 1.u -8.5 -113.42 -113.42 -72.25 0. 0. -8.25 1.u -8.25 -106.85 -106.85 -68.062 0. 0. -8. 1.u -8. -100.47 -100.47 -64. 0. 0. -7.75 1.u -7.75 -94.289 -94.289 -60.062 0. 0. -7.5 1.u -7.5 -88.304 -88.304 -56.25 0. 0. -7.25 1.u -7.25 -82.515 -82.515 -52.562 0. 0. -7. 1.u -7. -76.922 -76.922 -49. 0. 0. -6.75 1.u -6.75 -71.526 -71.526 -45.563 0. 0. -6.5 1.u -6.5 -66.326 -66.326 -42.25 0. 0. -6.25 1.u -6.25 -61.322 -61.322 -39.063 0. 0. -6. 1.u -6. -56.514 -56.514 -36. 0. 0. -5.75 1.u -5.75 -51.903 -51.903 -33.063 0. 0. -5.5 1.u -5.5 -47.488 -47.488 -30.25 0. 0. -5.25 1.u -5.25 -43.269 -43.269 -27.562 0. 0. -5. 1.u -5. -39.246 -39.246 -25. 0. 0. -4.75 1.u -4.75 -35.42 -35.42 -22.562 0. 0. -4.5 1.u -4.5 -31.789 -31.789 -20.25 0. 0. -4.25 1.u -4.25 -28.355 -28.355 -18.062 0. 0. -4. 1.u -4. -25.117 -25.117 -16. 0. 0. -3.75 1.u -3.75 -22.076 -22.076 -14.062 0. 0. -3.5 1.u -3.5 -19.231 -19.231 -12.25 0. 0. -3.25 1.u -3.25 -16.581 -16.581 -10.563 0. 0. -3. 1.u -3. -14.129 -14.129 -9. 0. 0. -2.75 1.u -2.75 -11.872 -11.872 -7.5625 0. 0. -2.5 1.u -2.5 -9.8115 -9.8115 -6.25 0. 0. -2.25 1.u -2.25 -7.9473 -7.9473 -5.0625 0. 0. -2. 1.u -2. -6.2794 -6.2794 -4. 0. 0. -1.75 1.u -1.75 -4.8076 -4.8076 -3.0625 0. 0. -1.5 1.u -1.5 -3.5321 -3.5321 -2.25 0. 0. -1.25 1.u -1.25 -2.4529 -2.4529 -1.5625 0. 0. -1. 1.u -1. -1.5698 -1.5698 -1. 0. 0. -0.75 1.u -0.75 -0.88304 -0.88304 -0.5625 0. 0. -0.5 1.u -0.5 -0.39246 -0.39246 -0.25 0. 0. -0.25 1.u -0.25 -0.098115 -0.098117 -0.0625 0. 0. 0. 1.u 0. 0. -1.5698u 0. 0. 0. 0.25 1.u 0.25 0.095889 0.095888 0.0625 0.0625 0.0625 0.5 1.u 0.5 0.35685 0.35684 0.25 0.25 0.25 0.75 1.u 0.75 0.70273 0.70273 0.5625 0.5625 0.5625 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2318 1.2318 1.5625 1.5625 1.5625 1.5 1.u 1.5 1.4873 1.4873 2.25 2.25 2.25 1.75 1.u 1.75 1.7499 1.7499 3.0625 3.0625 3.0625 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.243 2.243 5.0625 5.0625 5.0625 2.5 1.u 2.5 2.4952 2.4952 6.25 6.25 6.25 2.75 1.u 2.75 2.7499 2.7499 7.5625 7.5625 7.5625 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2483 3.2483 10.563 10.563 10.562 3.5 1.u 3.5 3.5002 3.5002 12.25 12.25 12.25 3.75 1.u 3.75 3.7521 3.7521 14.063 14.063 14.062 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2468 4.2468 18.063 18.063 18.062 4.5 1.u 4.5 4.4971 4.4971 20.25 20.25 20.25 4.75 1.u 4.75 4.7489 4.7489 22.563 22.563 22.562 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2563 5.2562 27.563 27.5 27.5 5.5 1.u 5.5 5.525 5.525 30.25 30. 30. 5.75 1.u 5.75 5.8063 5.8062 33.063 32.5 32.5 6. 1.u 6. 6.1 6.1 36. 35. 35. 6.25 1.u 6.25 6.4063 6.4062 39.063 37.5 37.5 6.5 1.u 6.5 6.725 6.725 42.25 40. 40. 6.75 1.u 6.75 7.0563 7.0562 45.563 42.5 42.5 7. 1.u 7. 7.4 7.4 49. 45. 45. 7.25 1.u 7.25 7.7563 7.7562 52.563 47.5 47.5 7.5 1.u 7.5 8.125 8.125 56.25 50. 50. 7.75 1.u 7.75 8.5063 8.5062 60.063 52.5 52.5 8. 1.u 8. 8.9 8.9 64. 55. 55. 8.25 1.u 8.25 9.3063 9.3062 68.063 57.5 57.5 8.5 1.u 8.5 9.725 9.725 72.25 60. 60. 8.75 1.u 8.75 10.156 10.156 76.563 62.5 62.5 9. 1.u 9. 10.6 10.6 81. 65. 65. 9.25 1.u 9.25 11.056 11.056 85.563 67.5 67.5 9.5 1.u 9.5 11.525 11.525 90.25 70. 70. 9.75 1.u 9.75 12.006 12.006 95.063 72.5 72.5 10. 1.u 10. 12.5 12.5 100. 75. 75. tests/==out/bm_table.2.4.ckt.out000066400000000000000000000172631316501211100166010ustar00rootroot00000000000000# TABLE as quadratic Vs ( 1 0 ) DC 1.u v1 ( 2 0 ) DC 1. AC 1. e2 ( 6 0 2 0 ) t1 e3 ( 7 0 2 1 ) t1 e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 3 0 5 0 ) t2 e1 ( 4 0 5 1 ) t2 .model t1 table ( order=2 below= 100. above= 10. ( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. )) .model t2 table ( order=2 below= 100. above= 0.1 ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 1.u 1. 1. 1. 1. 1. 1. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) -10. 1.u -10. -10.K -10.K -100. -1.K -1.K -9.75 1.u -9.75 -9.5062K -9.5063K -95.063 -975. -975. -9.5 1.u -9.5 -9.025K -9.025K -90.25 -950. -950. -9.25 1.u -9.25 -8.5563K -8.5563K -85.563 -925. -925. -9. 1.u -9. -8.1K -8.1K -81. -900. -900. -8.75 1.u -8.75 -7.6562K -7.6563K -76.562 -875. -875. -8.5 1.u -8.5 -7.225K -7.225K -72.25 -850. -850. -8.25 1.u -8.25 -6.8062K -6.8063K -68.062 -825. -825. -8. 1.u -8. -6.4K -6.4K -64. -800. -800. -7.75 1.u -7.75 -6.0062K -6.0063K -60.062 -775. -775. -7.5 1.u -7.5 -5.625K -5.625K -56.25 -750. -750. -7.25 1.u -7.25 -5.2563K -5.2563K -52.562 -725. -725. -7. 1.u -7. -4.9K -4.9K -49. -700. -700. -6.75 1.u -6.75 -4.5563K -4.5563K -45.563 -675. -675. -6.5 1.u -6.5 -4.225K -4.225K -42.25 -650. -650. -6.25 1.u -6.25 -3.9063K -3.9063K -39.063 -625. -625. -6. 1.u -6. -3.6K -3.6K -36. -600. -600. -5.75 1.u -5.75 -3.3062K -3.3063K -33.063 -575. -575. -5.5 1.u -5.5 -3.025K -3.025K -30.25 -550. -550. -5.25 1.u -5.25 -2.7562K -2.7563K -27.562 -525. -525. -5. 1.u -5. -2.5K -2.5K -25. -500. -500. -4.75 1.u -4.75 -2.2562K -2.2563K -22.562 -475. -475. -4.5 1.u -4.5 -2.025K -2.025K -20.25 -450. -450. -4.25 1.u -4.25 -1.8062K -1.8063K -18.062 -425. -425. -4. 1.u -4. -1.6K -1.6K -16. -400. -400. -3.75 1.u -3.75 -1.4062K -1.4063K -14.062 -375. -375. -3.5 1.u -3.5 -1.225K -1.225K -12.25 -350. -350. -3.25 1.u -3.25 -1.0562K -1.0563K -10.563 -325. -325. -3. 1.u -3. -900. -900. -9. -300. -300. -2.75 1.u -2.75 -756.25 -756.25 -7.5625 -275. -275. -2.5 1.u -2.5 -625. -625. -6.25 -250. -250. -2.25 1.u -2.25 -506.25 -506.25 -5.0625 -225. -225. -2. 1.u -2. -400. -400. -4. -200. -200. -1.75 1.u -1.75 -306.25 -306.25 -3.0625 -175. -175. -1.5 1.u -1.5 -225. -225. -2.25 -150. -150. -1.25 1.u -1.25 -156.25 -156.25 -1.5625 -125. -125. -1. 1.u -1. -100. -100. -1. -100. -100. -0.75 1.u -0.75 -56.25 -56.25 -0.5625 -75. -75. -0.5 1.u -0.5 -25. -25. -0.25 -50. -50. -0.25 1.u -0.25 -6.25 -6.2501 -0.0625 -25. -25. 0. 1.u 0. -1.f -100.u 0. 0. -100.u 0.25 1.u 0.25 0.095889 0.095888 0.0625 0.0625 0.0625 0.5 1.u 0.5 0.35685 0.35684 0.25 0.25 0.25 0.75 1.u 0.75 0.70273 0.70273 0.5625 0.5625 0.5625 1. 1.u 1. 1. 1. 1. 1. 1. 1.25 1.u 1.25 1.2318 1.2318 1.5625 1.5625 1.5625 1.5 1.u 1.5 1.4873 1.4873 2.25 2.25 2.25 1.75 1.u 1.75 1.7499 1.7499 3.0625 3.0625 3.0625 2. 1.u 2. 2. 2. 4. 4. 4. 2.25 1.u 2.25 2.243 2.243 5.0625 5.0625 5.0625 2.5 1.u 2.5 2.4952 2.4952 6.25 6.25 6.25 2.75 1.u 2.75 2.7499 2.7499 7.5625 7.5625 7.5625 3. 1.u 3. 3. 3. 9. 9. 9. 3.25 1.u 3.25 3.2483 3.2483 10.563 10.563 10.562 3.5 1.u 3.5 3.5002 3.5002 12.25 12.25 12.25 3.75 1.u 3.75 3.7521 3.7521 14.063 14.063 14.062 4. 1.u 4. 4. 4. 16. 16. 16. 4.25 1.u 4.25 4.2468 4.2468 18.063 18.063 18.062 4.5 1.u 4.5 4.4971 4.4971 20.25 20.25 20.25 4.75 1.u 4.75 4.7489 4.7489 22.563 22.563 22.562 5. 1.u 5. 5. 5. 25. 25. 25. 5.25 1.u 5.25 5.2563 5.2562 27.563 27.5 27.5 5.5 1.u 5.5 5.525 5.525 30.25 30. 30. 5.75 1.u 5.75 5.8063 5.8062 33.063 32.5 32.5 6. 1.u 6. 6.1 6.1 36. 35. 35. 6.25 1.u 6.25 6.4063 6.4062 39.063 37.5 37.5 6.5 1.u 6.5 6.725 6.725 42.25 40. 40. 6.75 1.u 6.75 7.0563 7.0562 45.563 42.5 42.5 7. 1.u 7. 7.4 7.4 49. 45. 45. 7.25 1.u 7.25 7.7563 7.7562 52.563 47.5 47.5 7.5 1.u 7.5 8.125 8.125 56.25 50. 50. 7.75 1.u 7.75 8.5063 8.5062 60.063 52.5 52.5 8. 1.u 8. 8.9 8.9 64. 55. 55. 8.25 1.u 8.25 9.3063 9.3062 68.063 57.5 57.5 8.5 1.u 8.5 9.725 9.725 72.25 60. 60. 8.75 1.u 8.75 10.156 10.156 76.563 62.5 62.5 9. 1.u 9. 10.6 10.6 81. 65. 65. 9.25 1.u 9.25 11.056 11.056 85.563 67.5 67.5 9.5 1.u 9.5 11.525 11.525 90.25 70. 70. 9.75 1.u 9.75 12.006 12.006 95.063 72.5 72.5 10. 1.u 10. 12.5 12.5 100. 75. 75. tests/==out/bm_table.3.1.ckt.out000066400000000000000000000070251316501211100165720ustar00rootroot00000000000000# TABLE as cubic v1 ( 2 0 ) DC 1. AC 1. e1 ( 3 0 2 0 ) t1 r3 ( 3 0 ) 10.K e2 ( 4 0 2 0 ) t2 r4 ( 4 0 ) 10.K .model t1 table ( order=3 ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) .model t2 table ( order=3 ( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. )) # v(2) v(3) v(4) 27. 1. 1. 1. # v(2) v(3) v(4) -10. -10. -10.868 -5.7895 -9.5 -9.5 -10.325 -5.5 -9. -9. -9.7814 -5.2105 -8.5 -8.5 -9.2379 -4.9211 -8. -8. -8.6945 -4.6316 -7.5 -7.5 -8.1511 -4.3421 -7. -7. -7.6077 -4.0526 -6.5 -6.5 -7.0643 -3.7632 -6. -6. -6.5209 -3.4737 -5.5 -5.5 -5.9775 -3.1842 -5. -5. -5.4341 -2.8947 -4.5 -4.5 -4.8907 -2.6053 -4. -4. -4.3473 -2.3158 -3.5 -3.5 -3.8039 -2.0263 -3. -3. -3.2605 -1.7368 -2.5 -2.5 -2.717 -1.4474 -2. -2. -2.1736 -1.1579 -1.5 -1.5 -1.6302 -0.86842 -1. -1. -1.0868 -0.57895 -0.5 -0.5 -0.54341 -0.28947 0. 0. 0. 0. 0.5 0.5 0.53256 0.34211 1. 1. 1. 1. 1.5 1.5 1.3521 2.2237 2. 2. 1.598 4. 2.5 2.5 1.7617 6.2632 3. 3. 1.8672 9. 3.5 3.5 1.9387 12.224 4. 4. 2. 16. 4.5 4.5 2.0709 20.342 5. 5. 2.1538 25. 5.5 5.5 2.2465 29.711 6. 6. 2.347 34.421 6.5 6.5 2.4532 39.132 7. 7. 2.5633 43.842 7.5 7.5 2.675 48.553 8. 8. 2.7864 53.263 8.5 8.5 2.8954 57.974 9. 9. 3. 62.684 9.5 9.5 3.0986 67.395 10. 10. 3.1911 72.105 # v(2) v(3) v(4) 1. 1. 1. 1. 1.5849 1.5849 1.4006 2.4885 2.5119 2.5119 1.7647 6.3227 3.9811 3.9811 1.9976 15.846 6.3096 6.3096 2.4122 37.338 10. 10. 3.1911 72.105 15.849 15.849 3.9831 127.21 25.119 25.119 5.0132 214.54 39.811 39.811 6.6388 352.95 63.096 63.096 9.2153 572.32 100. 100. 13.299 920. 158.49 158.49 19.771 1.471K 251.19 251.19 30.028 2.3444K 398.11 398.11 46.285 3.7285K 630.96 630.96 72.05 5.9222K 1.K 1.K 112.88 9.3989K # v(2) v(3) v(4) 16. 16. 4. 128.63 20.5 20.5 4.5016 171.03 25. 25. 5. 213.42 29.5 29.5 5.4979 255.82 34. 34. 5.9959 298.21 38.5 38.5 6.4938 340.61 43. 43. 6.9917 383. 47.5 47.5 7.4896 425.39 52. 52. 7.9876 467.79 56.5 56.5 8.4855 510.18 61. 61. 8.9834 552.58 65.5 65.5 9.4813 594.97 tests/==out/bm_table.3.2.ckt.out000066400000000000000000000070511316501211100165720ustar00rootroot00000000000000# TABLE as cubic v1 ( 2 0 ) DC 1. AC 1. e1 ( 3 0 2 0 ) t1 r3 ( 3 0 ) 10.K e2 ( 4 0 2 0 ) t2 r4 ( 4 0 ) 10.K .model t1 table ( order=3 below= 0. ( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. )) .model t2 table ( order=3 above= 0. ( 0., 0. 1., 1. 2., 4. 3., 9. 4., 16. 5., 25. )) # v(2) v(3) v(4) 27. 1. 1. 1. # v(2) v(3) v(4) -10. -10. 0. -6.0497 -9.5 -9.5 0. -5.7472 -9. -9. 0. -5.4448 -8.5 -8.5 0. -5.1423 -8. -8. 0. -4.8398 -7.5 -7.5 0. -4.5373 -7. -7. 0. -4.2348 -6.5 -6.5 0. -3.9323 -6. -6. 0. -3.6298 -5.5 -5.5 0. -3.3273 -5. -5. 0. -3.0249 -4.5 -4.5 0. -2.7224 -4. -4. 0. -2.4199 -3.5 -3.5 0. -2.1174 -3. -3. 0. -1.8149 -2.5 -2.5 0. -1.5124 -2. -2. 0. -1.2099 -1.5 -1.5 0. -0.90746 -1. -1. 0. -0.60497 -0.5 -0.5 0. -0.30249 0. 0. 0. 0. 0.5 0.5 0.34355 0.35186 1. 1. 1. 1. 1.5 1.5 1.5095 2.1944 2. 2. 1.8183 4. 2.5 2.5 1.974 6.3705 3. 3. 2.0244 9. 3.5 3.5 2.0172 11.824 4. 4. 2. 16. 4.5 4.5 2.0118 21.835 5. 5. 2.0564 25. 5.5 5.5 2.1288 25. 6. 6. 2.2242 25. 6.5 6.5 2.3375 25. 7. 7. 2.4638 25. 7.5 7.5 2.5981 25. 8. 8. 2.7356 25. 8.5 8.5 2.8712 25. 9. 9. 3. 25. 9.5 9.5 3.118 25. 10. 10. 3.2252 25. # v(2) v(3) v(4) 1. 1. 1. 1. 1.5849 1.5849 1.5748 2.4574 2.5119 2.5119 1.9763 6.4315 3.9811 3.9811 2.0003 15.8 6.3096 6.3096 2.2925 25. 10. 10. 3.2252 25. 15.849 15.849 3.9852 25. 25.119 25.119 5.014 25. 39.811 39.811 6.7419 25. 63.096 63.096 9.4804 25. 100. 100. 13.821 25. 158.49 158.49 20.699 25. 251.19 251.19 31.602 25. 398.11 398.11 48.88 25. 630.96 630.96 76.265 25. 1.K 1.K 119.67 25. # v(2) v(3) v(4) 16. 16. 4. 25. 20.5 20.5 4.4781 25. 25. 25. 5. 25. 29.5 29.5 5.5292 25. 34. 34. 6.0585 25. 38.5 38.5 6.5877 25. 43. 43. 7.1169 25. 47.5 47.5 7.6462 25. 52. 52. 8.1754 25. 56.5 56.5 8.7047 25. 61. 61. 9.2339 25. 65.5 65.5 9.7631 25. tests/==out/bm_table.3.3.ckt.out000066400000000000000000000045561316501211100166020ustar00rootroot00000000000000# FIT, vsrc test, with BC mismatch at start #Time v(1) 0. 3. 1.p 3. 100.p 3. 200.p 3. 300.p 3. 400.p 3. 500.p 3. 600.p 3. 700.p 3. 800.p 3. 900.p 3. 1.n 3. 1.1n 3.0083 1.2n 3.0316 1.3n 3.0678 1.4n 3.1147 1.5n 3.1702 1.6n 3.2321 1.7n 3.2981 1.8n 3.3663 1.9n 3.4343 2.n 3.5 2.1n 3.5617 2.2n 3.6194 2.3n 3.6737 2.4n 3.7251 2.5n 3.774 2.6n 3.821 2.7n 3.8666 2.8n 3.9113 2.9n 3.9556 3.n 4. 3.1n 4.045 3.2n 4.0907 3.3n 4.1373 3.4n 4.1849 3.5n 4.2337 3.6n 4.2838 3.7n 4.3354 3.8n 4.3885 3.9n 4.4433 4.n 4.5 4.1n 4.5585 4.2n 4.6179 4.3n 4.6772 4.4n 4.7353 4.5n 4.7911 4.6n 4.8437 4.7n 4.892 4.8n 4.9348 4.9n 4.9711 5.n 5. 5.1n 5.0206 5.2n 5.0338 5.3n 5.0405 5.4n 5.042 5.5n 5.0392 5.6n 5.0333 5.7n 5.0253 5.8n 5.0164 5.9n 5.0076 6.n 5. 6.1n 4.9945 6.2n 4.991 6.3n 4.9891 6.4n 4.9888 6.5n 4.9895 6.6n 4.9911 6.7n 4.9932 6.8n 4.9956 6.9n 4.998 7.n 5. 7.1n 5.0015 7.2n 5.0024 7.3n 5.0029 7.4n 5.003 7.5n 5.0028 7.6n 5.0023 7.7n 5.0018 7.8n 5.0011 7.9n 5.0005 8.n 5. 8.1n 4.9996 8.2n 4.9994 8.3n 4.9994 8.4n 4.9994 8.5n 4.9994 8.6n 4.9996 8.7n 4.9997 8.8n 4.9999 8.9n 5. 9.n 5. 9.1n 5. 9.2n 5. 9.3n 5. 9.4n 5. 9.5n 5. 9.6n 5. 9.7n 5. 9.8n 5. 9.9n 5. 10.n 5. tests/==out/bm_table.error1.ckt.out000066400000000000000000000000261316501211100174750ustar00rootroot00000000000000 no points in spline tests/==out/bm_tanh.1.ckt.out000066400000000000000000000063661316501211100163030ustar00rootroot00000000000000'hyperbolic tangent test circuit # v(1) v(2) v(3) v(4) -2. -2. -4.8201 2.9924 -2.9712 -1.9 -1.9 -4.7812 2.9894 -2.9624 -1.8 -1.8 -4.734 2.9852 -2.951 -1.7 -1.7 -4.677 2.9793 -2.9362 -1.6 -1.6 -4.6083 2.9712 -2.917 -1.5 -1.5 -4.5257 2.9598 -2.8921 -1.4 -1.4 -4.4268 2.9441 -2.8599 -1.3 -1.3 -4.3086 2.9223 -2.8183 -1.2 -1.2 -4.1683 2.8921 -2.765 -1.1 -1.1 -4.0025 2.8505 -2.6968 -1. -1. -3.808 2.7933 -2.6102 -0.9 -0.9 -3.5815 2.7154 -2.501 -0.8 -0.8 -3.3202 2.6102 -2.3646 -0.7 -0.7 -3.0218 2.4696 -2.1964 -0.6 -0.6 -2.6852 2.2848 -1.9921 -0.5 -0.5 -2.3106 2.0468 -1.7483 -0.4 -0.4 -1.8997 1.7483 -1.4638 -0.3 -0.3 -1.4566 1.3864 -1.1398 -0.2 -0.2 -0.98688 0.96454 -0.78156 -0.1 -0.1 -0.49834 0.49542 -0.39765 0. 0. 0. 0. 0. 0.1 0.1 0.49834 -0.49542 0.39765 0.2 0.2 0.98688 -0.96454 0.78156 0.3 0.3 1.4566 -1.3864 1.1398 0.4 0.4 1.8997 -1.7483 1.4638 0.5 0.5 2.3106 -2.0468 1.7483 0.6 0.6 2.6852 -2.2848 1.9921 0.7 0.7 3.0218 -2.4696 2.1964 0.8 0.8 3.3202 -2.6102 2.3646 0.9 0.9 3.5815 -2.7154 2.501 1. 1. 3.808 -2.7933 2.6102 1.1 1.1 4.0025 -2.8505 2.6968 1.2 1.2 4.1683 -2.8921 2.765 1.3 1.3 4.3086 -2.9223 2.8183 1.4 1.4 4.4268 -2.9441 2.8599 1.5 1.5 4.5257 -2.9598 2.8921 1.6 1.6 4.6083 -2.9712 2.917 1.7 1.7 4.677 -2.9793 2.9362 1.8 1.8 4.734 -2.9852 2.951 1.9 1.9 4.7812 -2.9894 2.9624 2. 2. 4.8201 -2.9924 2.9712 #Freq v(1) v(2) v(3) v(4) 0. 1. 0.35325 0.025388 0.076507 # v(1) v(2) v(3) v(4) 1. 1. 3.808 -2.7933 2.6102 #Freq v(1) v(2) v(3) v(4) 0. 1. 2.0999 0.66517 0.97197 # v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. #Freq v(1) v(2) v(3) v(4) 0. 1. 5. 5. 4. # v(1) v(2) v(3) v(4) 1.K 1.K 5. -3. 3. #Freq v(1) v(2) v(3) v(4) 0. 1. 0. 0. 0. v1 ( 1 0 ) generator scale= 1. e1 ( 2 0 1 0 ) tanh gain= 5. limit= 5. e2 ( 3 0 1 0 ) tanh gain=-5. limit= 3. e3 ( 4 0 1 0 ) tanh gain= 4. limit= 3. tests/==out/bm_tanh.2.ckt.out000066400000000000000000000273031316501211100162760ustar00rootroot00000000000000' # v(1) v(2) -10.n -10.n -1.u -9.n -9.n -900.n -8.n -8.n -800.n -7.n -7.n -700.n -6.n -6.n -600.n -5.n -5.n -500.n -4.n -4.n -400.n -3.n -3.n -300.n -2.n -2.n -200.n -1.n -1.n -100.n 0. 0. 0. 1.n 1.n 100.n 2.n 2.n 200.n 3.n 3.n 300.n 4.n 4.n 400.n 5.n 5.n 500.n 6.n 6.n 600.n 7.n 7.n 700.n 8.n 8.n 800.n 9.n 9.n 900.n 10.n 10.n 1.u # v(1) v(2) -100.n -100.n -10.u -90.n -90.n -9.u -80.n -80.n -8.u -70.n -70.n -7.u -60.n -60.n -6.u -50.n -50.n -5.u -40.n -40.n -4.u -30.n -30.n -3.u -20.n -20.n -2.u -10.n -10.n -1.u 0. 0. 0. 10.n 10.n 1.u 20.n 20.n 2.u 30.n 30.n 3.u 40.n 40.n 4.u 50.n 50.n 5.u 60.n 60.n 6.u 70.n 70.n 7.u 80.n 80.n 8.u 90.n 90.n 9.u 100.n 100.n 10.u # v(1) v(2) -1.u -1.u -99.997u -900.n -900.n -89.998u -800.n -800.n -79.998u -700.n -700.n -69.999u -600.n -600.n -59.999u -500.n -500.n -50.u -400.n -400.n -40.u -300.n -300.n -30.u -200.n -200.n -20.u -100.n -100.n -10.u 0. 0. 0. 100.n 100.n 10.u 200.n 200.n 20.u 300.n 300.n 30.u 400.n 400.n 40.u 500.n 500.n 50.u 600.n 600.n 59.999u 700.n 700.n 69.999u 800.n 800.n 79.998u 900.n 900.n 89.998u 1.u 1.u 99.997u # v(1) v(2) -10.u -10.u -996.68u -9.u -9.u -897.58u -8.u -8.u -798.3u -7.u -7.u -698.86u -6.u -6.u -599.28u -5.u -5.u -499.58u -4.u -4.u -399.79u -3.u -3.u -299.91u -2.u -2.u -199.97u -1.u -1.u -99.997u 0. 0. 0. 1.u 1.u 99.997u 2.u 2.u 199.97u 3.u 3.u 299.91u 4.u 4.u 399.79u 5.u 5.u 499.58u 6.u 6.u 599.28u 7.u 7.u 698.86u 8.u 8.u 798.3u 9.u 9.u 897.58u 10.u 10.u 996.68u # v(1) v(2) -100.u -100.u -0.0076159 -90.u -90.u -0.007163 -80.u -80.u -0.0066404 -70.u -70.u -0.0060437 -60.u -60.u -0.0053705 -50.u -50.u -0.0046212 -40.u -40.u -0.0037995 -30.u -30.u -0.0029131 -20.u -20.u -0.0019738 -10.u -10.u -996.68u 0. 0. 0. 10.u 10.u 996.68u 20.u 20.u 0.0019738 30.u 30.u 0.0029131 40.u 40.u 0.0037995 50.u 50.u 0.0046212 60.u 60.u 0.0053705 70.u 70.u 0.0060437 80.u 80.u 0.0066404 90.u 90.u 0.007163 100.u 100.u 0.0076159 # v(1) v(2) -0.001 -0.001 -0.01 -900.u -900.u -0.01 -800.u -800.u -0.01 -700.u -700.u -0.01 -600.u -600.u -0.0099999 -500.u -500.u -0.0099991 -400.u -400.u -0.0099933 -300.u -300.u -0.0099505 -200.u -200.u -0.0096403 -100.u -100.u -0.0076159 0. 0. 0. 100.u 100.u 0.0076159 200.u 200.u 0.0096403 300.u 300.u 0.0099505 400.u 400.u 0.0099933 500.u 500.u 0.0099991 600.u 600.u 0.0099999 700.u 700.u 0.01 800.u 800.u 0.01 900.u 900.u 0.01 0.001 0.001 0.01 # v(1) v(2) -0.01 -0.01 -0.01 -0.009 -0.009 -0.01 -0.008 -0.008 -0.01 -0.007 -0.007 -0.01 -0.006 -0.006 -0.01 -0.005 -0.005 -0.01 -0.004 -0.004 -0.01 -0.003 -0.003 -0.01 -0.002 -0.002 -0.01 -0.001 -0.001 -0.01 0. 0. 0. 0.001 0.001 0.01 0.002 0.002 0.01 0.003 0.003 0.01 0.004 0.004 0.01 0.005 0.005 0.01 0.006 0.006 0.01 0.007 0.007 0.01 0.008 0.008 0.01 0.009 0.009 0.01 0.01 0.01 0.01 # v(1) v(2) -0.1 -0.1 -0.01 -0.09 -0.09 -0.01 -0.08 -0.08 -0.01 -0.07 -0.07 -0.01 -0.06 -0.06 -0.01 -0.05 -0.05 -0.01 -0.04 -0.04 -0.01 -0.03 -0.03 -0.01 -0.02 -0.02 -0.01 -0.01 -0.01 -0.01 0. 0. 0. 0.01 0.01 0.01 0.02 0.02 0.01 0.03 0.03 0.01 0.04 0.04 0.01 0.05 0.05 0.01 0.06 0.06 0.01 0.07 0.07 0.01 0.08 0.08 0.01 0.09 0.09 0.01 0.1 0.1 0.01 # v(1) v(2) -1. -1. -0.01 -0.9 -0.9 -0.01 -0.8 -0.8 -0.01 -0.7 -0.7 -0.01 -0.6 -0.6 -0.01 -0.5 -0.5 -0.01 -0.4 -0.4 -0.01 -0.3 -0.3 -0.01 -0.2 -0.2 -0.01 -0.1 -0.1 -0.01 0. 0. 0. 0.1 0.1 0.01 0.2 0.2 0.01 0.3 0.3 0.01 0.4 0.4 0.01 0.5 0.5 0.01 0.6 0.6 0.01 0.7 0.7 0.01 0.8 0.8 0.01 0.9 0.9 0.01 1. 1. 0.01 # v(1) v(2) -10. -10. -0.01 -9. -9. -0.01 -8. -8. -0.01 -7. -7. -0.01 -6. -6. -0.01 -5. -5. -0.01 -4. -4. -0.01 -3. -3. -0.01 -2. -2. -0.01 -1. -1. -0.01 0. 0. 0. 1. 1. 0.01 2. 2. 0.01 3. 3. 0.01 4. 4. 0.01 5. 5. 0.01 6. 6. 0.01 7. 7. 0.01 8. 8. 0.01 9. 9. 0.01 10. 10. 0.01 # v(1) v(2) -100. -100. -0.01 -90. -90. -0.01 -80. -80. -0.01 -70. -70. -0.01 -60. -60. -0.01 -50. -50. -0.01 -40. -40. -0.01 -30. -30. -0.01 -20. -20. -0.01 -10. -10. -0.01 0. 0. 0. 10. 10. 0.01 20. 20. 0.01 30. 30. 0.01 40. 40. 0.01 50. 50. 0.01 60. 60. 0.01 70. 70. 0.01 80. 80. 0.01 90. 90. 0.01 100. 100. 0.01 # v(1) v(2) -1.K -1.K -0.01 -900. -900. -0.01 -800. -800. -0.01 -700. -700. -0.01 -600. -600. -0.01 -500. -500. -0.01 -400. -400. -0.01 -300. -300. -0.01 -200. -200. -0.01 -100. -100. -0.01 0. 0. 0. 100. 100. 0.01 200. 200. 0.01 300. 300. 0.01 400. 400. 0.01 500. 500. 0.01 600. 600. 0.01 700. 700. 0.01 800. 800. 0.01 900. 900. 0.01 1.K 1.K 0.01 # v(1) v(2) -10.K -10.K -0.01 -9.K -9.K -0.01 -8.K -8.K -0.01 -7.K -7.K -0.01 -6.K -6.K -0.01 -5.K -5.K -0.01 -4.K -4.K -0.01 -3.K -3.K -0.01 -2.K -2.K -0.01 -1.K -1.K -0.01 0. 0. 0. 1.K 1.K 0.01 2.K 2.K 0.01 3.K 3.K 0.01 4.K 4.K 0.01 5.K 5.K 0.01 6.K 6.K 0.01 7.K 7.K 0.01 8.K 8.K 0.01 9.K 9.K 0.01 10.K 10.K 0.01 # v(1) v(2) -100.K -100.K -0.01 -90.K -90.K -0.01 -80.K -80.K -0.01 -70.K -70.K -0.01 -60.K -60.K -0.01 -50.K -50.K -0.01 -40.K -40.K -0.01 -30.K -30.K -0.01 -20.K -20.K -0.01 -10.K -10.K -0.01 0. 0. 0. 10.K 10.K 0.01 20.K 20.K 0.01 30.K 30.K 0.01 40.K 40.K 0.01 50.K 50.K 0.01 60.K 60.K 0.01 70.K 70.K 0.01 80.K 80.K 0.01 90.K 90.K 0.01 100.K 100.K 0.01 # v(1) v(2) -1.Meg -1.Meg -0.01 -900.K -900.K -0.01 -800.K -800.K -0.01 -700.K -700.K -0.01 -600.K -600.K -0.01 -500.K -500.K -0.01 -400.K -400.K -0.01 -300.K -300.K -0.01 -200.K -200.K -0.01 -100.K -100.K -0.01 0. 0. 0. 100.K 100.K 0.01 200.K 200.K 0.01 300.K 300.K 0.01 400.K 400.K 0.01 500.K 500.K 0.01 600.K 600.K 0.01 700.K 700.K 0.01 800.K 800.K 0.01 900.K 900.K 0.01 1.Meg 1.Meg 0.01 # v(1) v(2) -10.Meg -10.Meg -0.01 -9.Meg -9.Meg -0.01 -8.Meg -8.Meg -0.01 -7.Meg -7.Meg -0.01 -6.Meg -6.Meg -0.01 -5.Meg -5.Meg -0.01 -4.Meg -4.Meg -0.01 -3.Meg -3.Meg -0.01 -2.Meg -2.Meg -0.01 -1.Meg -1.Meg -0.01 0. 0. 0. 1.Meg 1.Meg 0.01 2.Meg 2.Meg 0.01 3.Meg 3.Meg 0.01 4.Meg 4.Meg 0.01 5.Meg 5.Meg 0.01 6.Meg 6.Meg 0.01 7.Meg 7.Meg 0.01 8.Meg 8.Meg 0.01 9.Meg 9.Meg 0.01 10.Meg 10.Meg 0.01 tests/==out/bmm_cap.1.ckt.out000066400000000000000000000032371316501211100162630ustar00rootroot00000000000000# semiconductor "capacitor" test # v(1) v(2) c(c2) 27. 2. 2. 10.p #Time v(1) v(2) 0. 0. 0. 2.n 0.5 0.045041 4.n 1. 0.1737 6.n 1. 0.32394 8.n 1. 0.44658 10.n 1. 0.5472 12.n 1. 0.62953 14.n 1. 0.69689 16.n 1. 0.752 18.n 1. 0.79709 20.n 1. 0.83398 #Freq v(1) v(2) vp(2) vdb(2) 15.9Meg 1. 0.70745 -44.972 -3.0061 #Freq v(1) v(2) vp(2) vdb(2) 1.Meg 1. 0.99803 -3.5953 -0.017112 2.1544Meg 1. 0.99096 -7.7091 -0.078861 4.6416Meg 1. 0.96001 -16.259 -0.35451 10.Meg 1. 0.84673 -32.142 -1.4451 21.544Meg 1. 0.59418 -53.546 -4.5216 46.416Meg 1. 0.32435 -71.074 -9.7797 100.Meg 1. 0.15718 -80.957 -16.072 215.44Meg 1. 0.073672 -85.775 -22.654 464.16Meg 1. 0.034269 -88.036 -29.302 1.G 1. 0.015913 -89.088 -35.965 v1 ( 1 0 ) TRAN pwl( 0., 0. 1.999999n, 0. 2.000001n, 1. ) DC 2. AC 1. r1 ( 1 2 ) 1.K c2 ( 2 0 ) t1 l= 1.u w= 2.u .model t1 c ( cj=5 cjsw=NA( 0.) narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) Gnucap System status iterations: op=4, dc=0, tran=53, fourier=0, total=82 transient timesteps: accepted=14, rejected=0, total=14 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/bmm_cap.2.ckt.out000066400000000000000000000032321316501211100162570ustar00rootroot00000000000000# semiconductor "capacitor" test # v(1) v(2) c(c2) 27. 2. 2. 16.p #Time v(1) v(2) 0. 0. 0. 2.n 0.5 0.029135 4.n 1. 0.11425 6.n 1. 0.21846 8.n 1. 0.31032 10.n 1. 0.39146 12.n 1. 0.46305 14.n 1. 0.52622 16.n 1. 0.58196 18.n 1. 0.63114 20.n 1. 0.67454 #Freq v(1) v(2) vp(2) vdb(2) 15.9Meg 1. 0.53037 -57.97 -5.5084 #Freq v(1) v(2) vp(2) vdb(2) 1.Meg 1. 0.99498 -5.7407 -0.043672 2.1544Meg 1. 0.97734 -12.221 -0.19909 4.6416Meg 1. 0.9062 -25.015 -0.85554 10.Meg 1. 0.70523 -45.152 -3.0334 21.544Meg 1. 0.41918 -65.217 -7.5519 46.416Meg 1. 0.20955 -77.904 -13.574 100.Meg 1. 0.098983 -84.319 -20.089 215.44Meg 1. 0.046122 -87.356 -26.722 464.16Meg 1. 0.021426 -88.772 -33.381 1.G 1. 0.0099467 -89.43 -40.046 v1 ( 1 0 ) TRAN pwl( 0., 0. 1.999999n, 0. 2.000001n, 1. ) DC 2. AC 1. r1 ( 1 2 ) 1.K c2 ( 2 0 ) t1 l= 1.u w= 2.u .model t1 c ( cj=5 cjsw=1u narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) Gnucap System status iterations: op=4, dc=0, tran=53, fourier=0, total=82 transient timesteps: accepted=14, rejected=0, total=14 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/bmm_cap.3.ckt.out000066400000000000000000000000721316501211100162570ustar00rootroot00000000000000# semiconductor "capacitor" test c2: model type mismatch tests/==out/bmm_cap.4.ckt.out000066400000000000000000000034051316501211100162630ustar00rootroot00000000000000# semiconductor "capacitor" test # v(1) v(2) c(c2) 27. 2. 2. 10.p #Time v(1) v(2) 0. 0. 0. 20.p 0. 0. 2.n 0.5 0.045041 3.98n 1. 0.17205 4.n 1. 0.1737 6.n 1. 0.32394 7.n 1. 0.38833 8.n 1. 0.44658 10.n 1. 0.5472 12.n 1. 0.62953 14.n 1. 0.69689 16.n 1. 0.752 18.n 1. 0.79709 20.n 1. 0.83398 #Freq v(1) v(2) vp(2) vdb(2) 15.9Meg 1. 0.70745 -44.972 -3.0061 #Freq v(1) v(2) vp(2) vdb(2) 1.Meg 1. 0.99803 -3.5953 -0.017112 2.1544Meg 1. 0.99096 -7.7091 -0.078861 4.6416Meg 1. 0.96001 -16.259 -0.35451 10.Meg 1. 0.84673 -32.142 -1.4451 21.544Meg 1. 0.59418 -53.546 -4.5216 46.416Meg 1. 0.32435 -71.074 -9.7797 100.Meg 1. 0.15718 -80.957 -16.072 215.44Meg 1. 0.073672 -85.775 -22.654 464.16Meg 1. 0.034269 -88.036 -29.302 1.G 1. 0.015913 -89.088 -35.965 v1 ( 1 0 ) TRAN pwl( 0., 0. 1.999999n, 0. 2.000001n, 1. ) DC 2. AC 1. r1 ( 1 2 ) 1.K c2 ( 2 0 ) t1 l= 1.u w= 2.u .model t1 c ( cj=5 cjsw=NA( 0.) narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) Gnucap System status iterations: op=4, dc=0, tran=53, fourier=0, total=82 transient timesteps: accepted=14, rejected=0, total=14 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/bmm_cap.5.ckt.out000066400000000000000000000043351316501211100162670ustar00rootroot00000000000000# semiconductor "capacitor" test # v(1) v(2) c(c2) 27. 2. 2. 10.p #Time v(1) v(2) 0. 0. 0. 20.p 0. 0. 2.n 0.499999995 0.0450409459 3.98n 0.999999992 0.172049036 4.n 0.999999992 0.173703284 6.n 0.999999993 0.323939049 7.n 0.999999994 0.388325806 8.n 0.999999994 0.44658049 10.n 0.999999995 0.547202218 12.n 0.999999996 0.629529087 14.n 0.999999997 0.696887434 16.n 0.999999998 0.751998809 18.n 0.999999998 0.797089934 20.n 0.999999998 0.833982673 #Freq v(1) v(2) vp(2) vdb(2) 15.9Meg 0.999999995 0.707451058 -44.9720969 -3.00607199 #Freq v(1) v(2) vp(2) vdb(2) 1.Meg 1. 0.998031904 -3.59527382 -0.0171115047 2.15443469Meg 1. 0.990961895 -7.70910499 -0.0788608969 4.64158883Meg 0.999999999 0.960006976 -16.2587771 -0.354512219 10.Meg 0.999999997 0.846733014 -32.1419079 -1.44507014 21.5443469Meg 0.999999994 0.594183687 -53.5455391 -4.52158551 46.4158883Meg 0.999999991 0.324351228 -71.0737261 -9.77968908 100.Meg 0.99999999 0.157176724 -80.956939 -16.0722354 215.443469Meg 0.99999999 0.0736724291 -85.7750529 -22.6539002 464.158883Meg 0.99999999 0.0342687533 -88.0361606 -29.3020339 1.G 0.99999999 0.0159134788 -89.0881863 -35.9646974 v1 ( 1 0 ) TRAN pwl( 0., 0. 1.999999n, 0. 2.000001n, 1. ) DC 2. AC 1. r1 ( 1 2 ) 1.K c2 ( 2 0 ) t1 l= 1.u w= 2.u .model t1 c ( cj=5 cjsw=NA( 0.) narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) Gnucap System status iterations: op=4, dc=0, tran=53, fourier=0, total=82 transient timesteps: accepted=14, rejected=0, total=14 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/bmm_res.1.ckt.out000066400000000000000000000005651316501211100163120ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 0.66667 1.K 500. #Freq v(1) v(2) 0. 5. 1.6667 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l= 1.u w= 2.u .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.1p.ckt.out000066400000000000000000000005611316501211100164660ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 0.66667 1.K 500. #Freq v(1) v(2) 0. 5. 1.6667 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l=pl w=pw .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.2.ckt.out000066400000000000000000000005721316501211100163110ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 1. 1.K 1.K #Freq v(1) v(2) 0. 5. 2.5 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l= 1.u w= 2.u temp= 37. .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=.1 tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.2p.ckt.out000066400000000000000000000005641316501211100164720ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 1. 1.K 1.K #Freq v(1) v(2) 0. 5. 2.5 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l=pl w=pw temp=pt .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=.1 tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.3.ckt.out000066400000000000000000000005731316501211100163130ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 1. 1.K 1.K #Freq v(1) v(2) 0. 5. 2.5 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l= 1.u w= 2.u temp= 37. .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=.01 tnom=NA( 27.)) tests/==out/bmm_res.3p.ckt.out000066400000000000000000000005651316501211100164740ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 1. 1.K 1.K #Freq v(1) v(2) 0. 5. 2.5 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l=pl w=pw temp=pt .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=.01 tnom=NA( 27.)) tests/==out/bmm_res.4.ckt.out000066400000000000000000000011211316501211100163020ustar00rootroot00000000000000# semiconductor "resistor" test r2: t1: effective length is negative or zero # v(1) v(2) r(r1) r(r2) r2: t1: effective length is negative or zero r2: short circuit r2: short circuit r2: short circuit r2: short circuit 27. 2. 0. 1.K 10.u r2: t1: effective length is negative or zero #Freq v(1) v(2) r2: short circuit 0. 5. 50.n v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l= 1.u w= 2.u .model t1 r ( rsh=1k narrow=1u defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.4p.ckt.out000066400000000000000000000011151316501211100164650ustar00rootroot00000000000000# semiconductor "resistor" test r2: t1: effective length is negative or zero # v(1) v(2) r(r1) r(r2) r2: t1: effective length is negative or zero r2: short circuit r2: short circuit r2: short circuit r2: short circuit 27. 2. 0. 1.K 10.u r2: t1: effective length is negative or zero #Freq v(1) v(2) r2: short circuit 0. 5. 50.n v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l=pl w=pw .model t1 r ( rsh=1k narrow=1u defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.5.ckt.out000066400000000000000000000005561316501211100163160ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 1. 1.K 1.K #Freq v(1) v(2) 0. 5. 2.5 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l= 1.u .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) tests/==out/bmm_res.5p.ckt.out000066400000000000000000000005541316501211100164740ustar00rootroot00000000000000# semiconductor "resistor" test # v(1) v(2) r(r1) r(r2) 27. 2. 1. 1.K 1.K #Freq v(1) v(2) 0. 5. 2.5 v1 ( 1 0 ) DC 2. AC 5. r1 ( 1 2 ) 1.K r2 ( 2 0 ) t1 l=pl .model t1 r ( rsh=1k narrow=NA( 0.) defw=NA( 1.u) tc1=NA( 0.) tc2=NA( 0.) tnom=NA( 27.)) tests/==out/c.ckt.out000066400000000000000000000056741316501211100147570ustar00rootroot00000000000000This is the title # v(1) v(3) v(4) v(5) v(8) v(9) v(10) v(11) v(12) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 5. -15.398p -15.398p -15.398p 4.19Meg 0. -4.031 -5. 0. -2. 5. 3.7462 1.235 -237.55 -3.0407 0. -287.16 -5. 0. -3. 5. -64.311 -35.995 26.218 -3.2728 0. -4.5495 -5. 0. -4. 5. -5.111 -4.9702 4.4986 -3.3371 0. -4.0121 -5. 0. -5. 5. -1.1825 -1.1793 4.095 -3.3999 0. -0.2155 -5. 0. -6. 5. 1.202 1.2054 3.1832 -3.4033 0. -95.871 -5. 0. -7. 5. 1.6327 1.6362 2.3714 -3.4033 0. -5.5358 -5. 0. -8. 5. -5.3688 -5.377 10.326 -3.4033 0. -4.3507 -5. 0. -9. 5. -2.9817 -3.152 4.6743 -3.4033 0. -3.8452 -5. 0. -10. 5. 0.082097 -0.54247 4.0191 -3.4033 0. -1.9291 -5. 0. -11. 5. 1.9127 1.2628 2.9325 -3.4033 0. -98.853 -5. 0. -12. 5. -4.0695 -3.0986 5.8552 -3.4033 0. -4.2289 -5. 0. -13. 5. -1.9079 -1.1251 4.3305 -3.4033 0. -3.6772 -5. 0. -14. 5. 0.67053 1.446 3.4117 -3.4033 0. -3.0105 -5. 0. -15. 5. 2.0063 2.5409 -4.1716 -3.4033 0. -2.702 -5. 0. -16. 5. 2.5416 2.8485 -68.149 -3.4033 0. -2.5851 -5. 0. -17. 5. 2.5878 2.815 -5.1307 -3.4033 0. -2.5751 -5. 0. -18. 5. 2.6561 2.6793 -4.9816 -3.4033 0. -2.5603 -5. 0. -19. 5. 2.658 2.6581 -4.9713 -3.4033 0. -2.5599 -5. 0. -20. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. -21. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. -22. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. 27. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. Gnucap System status iterations: op=23, dc=0, tran=0, fourier=0, total=23 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=9, subckt=0, model=0, total=9 dctran density=75.3%, ac density=75.3% tests/==out/c_attach.1.gc.out000066400000000000000000000006521316501211100162410ustar00rootroot00000000000000load command Loads plugins Syntax: load plugin Plugin search path is: /usr/local/lib/gnucap Path is set by GNUCAP_PLUGPATH environment variable With no arg, it lists plugins already loaded gnucap-default-plugins.so unload command Unloads plugins Syntax: unload plugin The name must match the name you loaded it with. Prohibited when there is a circuit With no arg, it lists plugins already loaded gnucap-default-plugins.so tests/==out/c_delete.2.ckt.out000066400000000000000000000062071316501211100164320ustar00rootroot00000000000000' a test of the delete command >>>>>.print op v(nodes) >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. L ( 3 4 ) 5. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0.28571 0. >>>>>.delete Q3 .delete Q3 ^ ? no match >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. L ( 3 4 ) 5. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0.28571 0. >>>>>.delete M* .delete M* ^ ? no match >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. L ( 3 4 ) 5. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0.28571 0. >>>>>.delete L >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0. 0. >>>>>.delete R3* >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0.5 0. 0. 0. >>>>>.delete L* .delete L* ^ ? no match >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0.5 0. 0. 0. >>>>>.delete c* >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0.5 0. 0. 0. >>>>>.delete r2 >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 1. 0. 0. 0. >>>>>.delete r* >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0. 0. 0. 0. tests/==out/c_delete.3.ckt.out000066400000000000000000000017241316501211100164320ustar00rootroot00000000000000' a test of the delete command >>>>>.print op v(nodes) >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. L ( 3 4 ) 5. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0.28571 0. >>>>>.delete Q3 M* L R3* L* c* c2 r2 r* .delete Q3 M* L R3* L* c* c2 r2 r* ^ ? no match .delete Q3 M* L R3* L* c* c2 r2 r* ^ ? no match .delete Q3 M* L R3* L* c* c2 r2 r* ^ ? no match .delete Q3 M* L R3* L* c* c2 r2 r* ^ ? no match >>>>>.list Y1 ( 1 0 ) 0. Y2 ( 2 0 ) 0. Y3 ( 3 0 ) 0. Y4 ( 4 0 ) 0. Y5 ( 5 0 ) 0. V1 ( 1 0 ) DC 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0. 0. 0. 0. tests/==out/c_delete.4.ckt.out000066400000000000000000000017151316501211100164330ustar00rootroot00000000000000' test delete in subckts .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 .delete r2.bb ^ ? no match .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .subckt aa ( a b c ) r1 ( a b ) 1. r3 ( b c ) 1. x1 ( a b ) bb .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .delete r1.bb ^ ? no match .subckt aa ( a b c ) r1 ( a b ) 1. r3 ( b c ) 1. x1 ( a b ) bb .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .subckt aa ( a b c ) x1 ( a b ) bb .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. tests/==out/c_delete.5.ckt.out000066400000000000000000000016111316501211100164270ustar00rootroot00000000000000' test delete in subckts .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 .delete r2.bb ^ ? no match .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .subckt aa ( a b c ) r1 ( a b ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .subckt aa ( a b c ) r1 ( a b ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .subckt aa ( a b c ) x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. tests/==out/c_delete.6.ckt.out000066400000000000000000000021341316501211100164310ustar00rootroot00000000000000' test delete in subckts .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 .delete r1.x1 ^ ? no match # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 1. 999.u 999.u .subckt aa ( a b c ) r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .delete r1.v1 ^ ? no match .subckt aa ( a b c ) r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 1. 999.u 999.u tests/==out/c_delete.7.ckt.out000066400000000000000000000021341316501211100164320ustar00rootroot00000000000000' test delete in subckts .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 .delete x1.r1 ^ ? no match # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 1. 999.u 999.u .subckt aa ( a b c ) r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. .delete r1.v1 ^ ? no match .subckt aa ( a b c ) r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .ends aa .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 1. 999.u 999.u tests/==out/c_delete.ckt.out000066400000000000000000000034601316501211100162700ustar00rootroot00000000000000' a test of the delete command >>>>>.print op v(nodes) >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. L ( 3 4 ) 5. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0.28571 0. >>>>>.delete L >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R31 ( 2 3 ) 1. R32 ( 3 0 ) 2. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 0.99999 0.42857 0.28571 0. 0. >>>>>.delete R3* >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0.5 0. 0. 0. >>>>>.delete L* .delete L* ^ ? no match >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. C1 ( 4 0 ) 5. C2 ( 4 5 ) 5. C3 ( 5 0 ) 2. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0.5 0. 0. 0. >>>>>.delete c* >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0.5 0. 0. 0. >>>>>.delete r2 >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 1. 0. 0. 0. >>>>>.delete r* >>>>>.list V1 ( 1 0 ) DC 1. >>>>>.op # v(1) v(2) v(3) v(4) v(5) 27. 1. 0. 0. 0. 0. tests/==out/c_eval.1.ckt.out000066400000000000000000000007451316501211100161170ustar00rootroot00000000000000* unknown parameter check parameter 3+a+1+1 not specified, using default parameter 3+a+1+1 value is "NOT_INPUT" x= NA (((3 + a) + 1) + 1)=(a + 5.) (a + b)=(b + a) (((2 + a) + b) + 3)=(((a + 2) + b) + 3) (((a + 2) + b) + 3)=(((a + 2) + b) + 3) (((a + 2) + 3) + b)=((a + 5.) + b) (((2 + a) + 3) + b)=((a + 5.) + b) x= 7. (((3 + a) + 1) + 1)= 7. (a + b)=(b + 2.) (((2 + a) + b) + 3)=(b + 7.) (((a + 2) + b) + 3)=(b + 7.) (((a + 2) + 3) + b)=(b + 7.) (((2 + a) + 3) + b)=(b + 7.) tests/==out/c_genrat.1.ckt.out000066400000000000000000000075471316501211100164570ustar00rootroot00000000000000' c_genrat -- generator transnient test freq= 0. ampl= 1. phase= 0. max= 7. min=-5. offset= 100. init= 2. rise= 3. fall= 2. delay= 2. width= 10. period= 20. # v(1) v(2) 27. 0. 0. #Time v(1) v(2) 0. 2. 4. 0.5 2. 4. 1. 2. 4. 50. 107. 214. #Time v(1) v(2) 0. 2. 4. 0.005 2. 4. 0.01 2. 4. 0.5 2. 4. 1. 2. 4. 1.5 2. 4. 2. 2. 4. 2.5 19.5 39. 3. 37. 74. 3.5 54.5 109. 4. 72. 144. 4.5 89.5 179. 5. 107. 214. 5.5 107. 214. 6. 107. 214. 6.5 107. 214. 7. 107. 214. 7.5 107. 214. 8. 107. 214. 8.5 107. 214. 9. 107. 214. 9.5 107. 214. 10. 107. 214. 10.5 107. 214. 11. 107. 214. 11.5 107. 214. 12. 107. 214. 12.5 107. 214. 13. 107. 214. 13.5 107. 214. 14. 107. 214. 14.5 107. 214. 15. 107. 214. 15.5 104. 208. 16. 101. 202. 16.5 98. 196. 17. 95. 190. 17.5 95. 190. 18. 95. 190. 18.5 95. 190. 19. 95. 190. 19.5 95. 190. 20. 95. 190. 20.5 95. 190. 21. 95. 190. 21.5 95. 190. 22. 95. 190. 22.5 97. 194. 23. 99. 198. 23.5 101. 202. 24. 103. 206. 24.5 105. 210. 25. 107. 214. 25.5 107. 214. 26. 107. 214. 26.5 107. 214. 27. 107. 214. 27.5 107. 214. 28. 107. 214. 28.5 107. 214. 29. 107. 214. 29.5 107. 214. 30. 107. 214. 30.5 107. 214. 31. 107. 214. 31.5 107. 214. 32. 107. 214. 32.5 107. 214. 33. 107. 214. 33.5 107. 214. 34. 107. 214. 34.5 107. 214. 35. 107. 214. 35.5 104. 208. 36. 101. 202. 36.5 98. 196. 37. 95. 190. 37.5 95. 190. 38. 95. 190. 38.5 95. 190. 39. 95. 190. 39.5 95. 190. 40. 95. 190. 40.5 95. 190. 41. 95. 190. 41.5 95. 190. 42. 95. 190. 42.5 97. 194. 43. 99. 198. 43.5 101. 202. 44. 103. 206. 44.5 105. 210. 45. 107. 214. 45.5 107. 214. 46. 107. 214. 46.5 107. 214. 47. 107. 214. 47.5 107. 214. 48. 107. 214. 48.5 107. 214. 49. 107. 214. 49.5 107. 214. 50. 107. 214. tests/==out/c_getckt.ckt.out000066400000000000000000000001741316501211100163060ustar00rootroot00000000000000 # cccs test, with element probes (forces full eval) #Freq v(1) 1.K 110. 2.K 110. tests/==out/c_help.1.ckt.out000066400000000000000000000010621316501211100161110ustar00rootroot00000000000000#help .help ^ ? no help on topic help command Provides help on a variety of topics Syntax: help topic In some cases, help on subtopics is available Syntax: help topic subtopic For a list of subtopics: help topic ? .help fregegiirei ^ ? no help on topic fregegiirei .help help_error_test_with_no_help ^ ? no help on topic help_error_test_with_no_help .help ? ^ ? no help on topic ? subtopic test .help help dasd ^ ? no help on subtopic dasd help subtopic subtopics give you more detailed information help test tests/==out/c_lib.1.ckt.out000066400000000000000000000003161316501211100157300ustar00rootroot00000000000000'lib test # v(1) v(2) v(3) v2(r3) 27. 0.99999 0.49999 0.24999 0.24999 r3 ( 2 3 ) 10.K r4 ( 3 0 ) 10.K v1 ( 1 0 ) DC 1. r1 ( 1 2 ) 1. r2 ( 2 0 ) 1. tests/==out/c_list.ckt.out000066400000000000000000000006671316501211100160070ustar00rootroot00000000000000'play with the list command >>>>>.list V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 C6 ( 3 0 ) 1. >>>>>.list r* R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 >>>>>.list l3 r5 L3 ( 1 2 ) 1. R5 ( 1 3 ) 0.97 >>>>>.list l3 - r5 L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 >>>>>.list l3 - L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 C6 ( 3 0 ) 1. >>>>>.list l3 L3 ( 1 2 ) 1. >>>>>.list c6 - C6 ( 3 0 ) 1. tests/==out/c_measure.1.ckt.out000066400000000000000000000206421316501211100166270ustar00rootroot00000000000000''''' #Time v(1) control(0) eventtime(s1) eventtime(s2) nexttime(C1) eventtime(C1) nexttime(Vv1) eventtime(Vv1) dt(C1) 0. 2. 1. 0. 0. 0. 0. 0. 100.p ?? 1.p 1.98 9. 35.p 55.p 85.p 0. 7.7879p 100.p 1.p 7.6p 1.848 6. 35.p 55.p 27.994p 0. 29.323p 100.p 6.6p 26.08p 1.4784 6. 35.p 55.p 42.051p 0. 1.947u 100.p 18.48p 35.p 1.3 7. 35.p 55.p 65.897p 0. 79.013n 100.p 8.92p 37.p 1.26 7. 35.p 55.p 62.615p 0. 82.915n 100.p 2.p 39.p 1.22 7. 0. 55.p 53.981p 0. 38.571n 100.p 2.p 51.2p 0.976 6. 0. 55.p 70.007p 0. 33.733n 100.p 12.2p 55.p 0.9 7. 0. 55.p 1.7928n 0. 49.458n 100.p 3.8p 57.p 0.86 7. 0. 55.p 75.406n 0. 31.82n 100.p 2.p 59.p 0.82 7. 0. 0. 56.837n 0. 22.32n 100.p 2.p 100.p 200.n 1. 0. 0. 154.4n 0. 28.702n 500.p 41.p 125.p -170.37n 16. 0. 0. 157.37p 0. 141.29p 500.p 25.p 140.p 130.28n 6. 64.859u 44.902u 178.85p 0. 155.64p 500.p 15.p 155.p -99.628n 6. 0. 0. 188.49p 0. 177.22p 500.p 15.p 170.p 76.186n 6. 110.91u 76.786u 201.17p 0. 0. 500.p 15.p 200.p -66.662n 1. 0. 0. 240.46p 0. 0. 500.p 30.p 230.p 58.329n 6. 312.02u 216.01u 288.85p 0. 0. 500.p 30.p 265.p -52.024n 6. 0. 0. 344.83p 0. 0. 500.p 35.p 300.p 46.399n 1. 462.29u 320.05u 389.12p 0. 0. 500.p 35.p 350.p -42.83n 6. 0. 0. 456.44p 0. 0. 500.p 50.p 400.p 39.535n 1. 789.17u 546.35u 528.83p 0. 0. 500.p 50.p 500.p -37.985n 1. 0. 0. 677.03p 0. 0. 600.p 100.p 545.p 0.9 17. 565.p 545.p 603.65p 0. 609.64p 600.p 45.p 547.p 0.94 7. 565.p 545.p 628.05p 0. 599.25p 600.p 2.p 549.p 0.98 7. 565.p 0. 564.02p 0. 607.81p 600.p 2.p 565.p 1.3 7. 565.p 0. 576.48p 0. 33.348n 600.p 16.p 567.p 1.34 7. 565.p 0. 1.675n 0. 27.425n 600.p 2.p 569.p 1.38 7. 0. 0. 39.809n 0. 29.292n 600.p 2.p 600.p 2. 1. 0. 0. 52.016n 0. 35.009n 1.n 31.p 650.p 2. 16. 0. 0. 686.58p 0. 692.3p 1.n 50.p 675.p 2. 6. 51.188u 80.438u 716.41p 0. 714.78p 1.n 25.p 700.p 2. 1. 0. 0. 756.14p 0. 752.76p 1.n 25.p 750.p 2. 6. 135.86u 213.49u 807.65p 0. 0. 1.n 50.p 800.p 2. 1. 0. 0. 881.51p 0. 0. 1.n 50.p 850.p 2. 6. 159.44u 250.55u 953.29p 0. 0. 1.n 50.p 900.p 2. 1. 0. 0. 1.0061n 0. 0. 1.n 50.p 1.n 2. 1. 367.05u 576.79u 1.1311n 0. 0. 1.1n 100.p 1.035n 1.3 17. 1.035n 1.055n 1.0933n 0. 1.1101n 1.1n 35.p 1.037n 1.26 7. 1.035n 1.055n 1.0789n 0. 1.0899n 1.1n 2.p 1.039n 1.22 7. 0. 1.055n 1.0504n 0. 1.0959n 1.1n 2.p 1.0492n 1.0167 6. 0. 1.055n 1.0576n 0. 45.636n 1.1n 10.167p 1.055n 0.9 7. 0. 1.055n 1.8317n 0. 40.383n 1.1n 5.8333p 1.057n 0.86 7. 0. 1.055n 40.288n 0. 45.163n 1.1n 2.p 1.059n 0.82 7. 0. 0. 30.339n 0. 22.062n 1.1n 2.p 1.1n 200.n 1. 0. 0. 62.791n 0. 26.48n 1.5n 41.p 1.1143n -150.88n 16. 0. 0. 1.1436n 0. 1.1226n 1.5n 14.286p 1.1221n 89.245n 6. 42.188u 29.207u 1.1731n 0. 1.1293n 1.5n 7.7922p 1.1299n -52.789n 6. 0. 0. 1.1494n 0. 1.1389n 1.5n 7.7922p 1.1377n 31.225n 6. 120.57u 83.475u 1.1564n 0. 16.954n 1.5n 7.7922p 1.1532n -24.122n 6. 0. 0. 1.1793n 0. 0. 1.5n 15.584p 1.1766n 20.32n 6. 683.8u 473.4u 1.2209n 0. 0. 1.5n 23.377p 1.2n -17.117n 1. 0. 0. 1.2741n 0. 0. 1.5n 23.377p 1.25n 15.8n 6. 0.0019747 0.0013671 1.3586n 0. 0. 1.5n 50.p 1.3n -14.585n 1. 0. 0. 1.4584n 0. 0. 1.5n 50.p 1.4n 14.013n 1. 0.0045458 0.0031471 1.6468n 0. 0. 1.5n 100.p 1.5n -13.463n 1. 0. 0. 1.8418n 0. 129.78n 1.6n 100.p 1.545n 0.9 17. 1.565n 1.545n 1.6087n 0. 1.6167n 1.6n 45.p 1.547n 0.94 7. 1.565n 1.545n 1.6149n 0. 1.6021n 1.6n 2.p 1.549n 0.98 7. 1.565n 0. 1.5633n 0. 1.6047n 1.6n 2.p 1.5618n 1.235 6. 1.565n 0. 1.5721n 0. 37.571n 1.6n 12.75p 1.565n 1.3 7. 1.565n 0. 2.5201n 0. 29.839n 1.6n 3.25p 1.567n 1.34 7. 0. 0. 41.145n 0. 32.357n 1.6n 2.p 1.6n 2. 1. 0. 0. 57.476n 0. 38.625n 2.n 33.p 1.7n 2. 1. 0. 0. 1.7504n 0. 1.7611n 2.n 100.p 1.75n 2. 6. 94.716u 148.84u 1.8068n 0. 1.8081n 2.n 50.p 1.8n 2. 1. 0. 0. 1.9088n 0. 1.8777n 2.n 50.p 1.85n 2. 6. 111.16u 174.68u 1.9416n 0. 0. 2.n 50.p 1.9n 2. 1. 0. 0. 1.9941n 0. 0. 2.n 50.p 1.95n 2. 6. 130.46u 205.u 2.0466n 0. 0. 2.n 50.p 2.n 2. 1. 0. 0. 2.0992n 0. 214.29n 2.1n 50.p vmax= 2.00000018461524 t1= 565.00001p t2= 55.00001p vol2= 1.60000014769219 vol1= 0.400000036923048 vmax= 2.00000018461524 midpoint= 1.00000009230762 t3= 550.000014615381p t4= 1.55000001461538n t5= 1.55000001461538n tmin= 125.p vmin=-170.370096n slew=(( 1.60000014769219- 0.400000036923048)/( 580.00001738461p- 520.000010639657p)) slew= 19.9999995978347E+9 slew=(( 1.60000014769219- 0.400000036923048)/( 1.58000001738461n- 1.52000001045705n)) slew= 19.9999995369658E+9 slew= 19.999999597835G frequency= 1.E+9 t4= 550.000014615381p t3= 1.55000001461538n frequency=-1.E+9 tvmax= 1.7n tvmax= 1.7n tests/==out/c_measure.1s.ckt.out000066400000000000000000000057641316501211100170220ustar00rootroot00000000000000''''' #Time v(1) control(0) eventtime(s1) eventtime(s2) nexttime(C1) eventtime(C1) nexttime(Vv1) eventtime(Vv1) dt(C1) 0. 2. 1. 0. 0. 0. 0. 0. 100.p ?? 100.p 200.n 1. 0. 0. 154.4n 0. 28.702n 500.p 41.p 200.p -66.662n 1. 0. 0. 240.46p 0. 0. 500.p 30.p 300.p 46.399n 1. 462.29u 320.05u 389.12p 0. 0. 500.p 35.p 400.p 39.535n 1. 789.17u 546.35u 528.83p 0. 0. 500.p 50.p 500.p -37.985n 1. 0. 0. 677.03p 0. 0. 600.p 100.p 600.p 2. 1. 0. 0. 52.016n 0. 35.009n 1.n 31.p 700.p 2. 1. 0. 0. 756.14p 0. 752.76p 1.n 25.p 800.p 2. 1. 0. 0. 881.51p 0. 0. 1.n 50.p 900.p 2. 1. 0. 0. 1.0061n 0. 0. 1.n 50.p 1.n 2. 1. 367.05u 576.79u 1.1311n 0. 0. 1.1n 100.p 1.1n 200.n 1. 0. 0. 62.791n 0. 26.48n 1.5n 41.p 1.2n -17.117n 1. 0. 0. 1.2741n 0. 0. 1.5n 23.377p 1.3n -14.585n 1. 0. 0. 1.4584n 0. 0. 1.5n 50.p 1.4n 14.013n 1. 0.0045458 0.0031471 1.6468n 0. 0. 1.5n 100.p 1.5n -13.463n 1. 0. 0. 1.8418n 0. 129.78n 1.6n 100.p 1.6n 2. 1. 0. 0. 57.476n 0. 38.625n 2.n 33.p 1.7n 2. 1. 0. 0. 1.7504n 0. 1.7611n 2.n 100.p 1.8n 2. 1. 0. 0. 1.9088n 0. 1.8777n 2.n 50.p 1.9n 2. 1. 0. 0. 1.9941n 0. 0. 2.n 50.p 2.n 2. 1. 0. 0. 2.0992n 0. 214.29n 2.1n 50.p vmax= 2.00000018461524 t1= 565.00001p t2= 55.00001p vol2= 1.60000014769219 vol1= 0.400000036923048 vmax= 2.00000018461524 midpoint= 1.00000009230762 t3= 550.000014615381p t4= 1.55000001461538n t5= 1.55000001461538n tmin= 125.p vmin=-170.370096n slew=(( 1.60000014769219- 0.400000036923048)/( 580.00001738461p- 520.000010639657p)) slew= 19.9999995978347E+9 slew=(( 1.60000014769219- 0.400000036923048)/( 1.58000001738461n- 1.52000001045705n)) slew= 19.9999995369658E+9 slew= 19.999999597835G frequency= 1.E+9 t4= 550.000014615381p t3= 1.55000001461538n frequency=-1.E+9 tvmax= 1.7n tvmax= 1.7n tests/==out/c_measure.2.ckt.out000066400000000000000000000022031316501211100166210ustar00rootroot00000000000000'measures #Time v(1) 0. 0. 1.u 0.0062831 2.u 0.012566 3.6333u 0.022827 35.756u 0.22277 67.878u 0.41368 100.u 0.58779 150.u 0.80902 200.u 0.95106 250.u 1. 300.u 0.95106 400.u 0.58779 500.u 0. 600.u -0.58779 700.u -0.95106 750.u -1. 800.u -0.95106 900.u -0.58779 0.001 0. 0.0011 0.58779 0.0012 0.95106 0.00125 1. 0.0013 0.95106 0.0014 0.58779 0.0015 0. 0.0016 -0.58779 0.0017 -0.95106 0.00175 -1. 0.0018 -0.95106 0.0019 -0.58779 0.002 0. 0.0021 0.58779 0.0022 0.95106 0.00225 1. 0.0023 0.95106 0.0024 0.58779 0.0025 0. 0.0026 -0.58779 0.0027 -0.95106 0.00275 -1. 0.0028 -0.95106 0.0029 -0.58779 0.003 0. a1= 2.88332060289773u m1= 961.106867632578u r1= 0.713091276688152 a2= 313.098848505665u m2= 0.208732565670443 r2= 0.712354678159851 tests/==out/c_measure.2s.ckt.out000066400000000000000000000015571316501211100170170ustar00rootroot00000000000000'measures #Time v(1) 0. 0. 100.u 0.58779 200.u 0.95106 300.u 0.95106 400.u 0.58779 500.u 0. 600.u -0.58779 700.u -0.95106 800.u -0.95106 900.u -0.58779 0.001 0. 0.0011 0.58779 0.0012 0.95106 0.0013 0.95106 0.0014 0.58779 0.0015 0. 0.0016 -0.58779 0.0017 -0.95106 0.0018 -0.95106 0.0019 -0.58779 0.002 0. 0.0021 0.58779 0.0022 0.95106 0.0023 0.95106 0.0024 0.58779 0.0025 0. 0.0026 -0.58779 0.0027 -0.95106 0.0028 -0.95106 0.0029 -0.58779 0.003 0. a1= 2.88332060289773u m1= 961.106867632578u r1= 0.713091276688152 a2= 313.098848505665u m2= 0.208732565670443 r2= 0.712354678159851 tests/==out/c_modify.ckt.out000066400000000000000000000013641316501211100163160ustar00rootroot00000000000000' a test of the fault and modify commands >>>>>.print op v(nodes) >>>>>.op # v(1) v(2) 27. 1. 0.5 >>>>>.fault R1=10 >>>>>.op # v(1) v(2) 27. 1. 0.090909 >>>>>.modify R2=10 >>>>>.op # v(1) v(2) 27. 1. 0.5 >>>>>.fault R2=100 >>>>>.op # v(1) v(2) 27. 1. 0.90909 >>>>>.fault V1=.001 >>>>>.op # v(1) v(2) 27. 0.001 909.09u >>>>>.list V1 ( 1 0 ) 0.001 R1 ( 1 2 ) 10. R2 ( 2 0 ) 100. >>>>>.unfault >>>>>.list V1 ( 1 0 ) DC 1. R1 ( 1 2 ) 1. R2 ( 2 0 ) 10. >>>>>.op # v(1) v(2) 27. 1. 0.90909 tests/==out/cc.ckt.out000066400000000000000000000056741316501211100151220ustar00rootroot00000000000000This is the title # v(1) v(3) v(4) v(5) v(8) v(9) v(10) v(11) v(12) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 5. -15.398p -15.398p -15.398p 4.19Meg 0. -4.031 -5. 0. -2. 5. 3.7462 1.235 -237.55 -3.0407 0. -287.16 -5. 0. -3. 5. -64.311 -35.995 26.218 -3.2728 0. -4.5495 -5. 0. -4. 5. -5.111 -4.9702 4.4986 -3.3371 0. -4.0121 -5. 0. -5. 5. -1.1825 -1.1793 4.095 -3.3999 0. -0.2155 -5. 0. -6. 5. 1.202 1.2054 3.1832 -3.4033 0. -95.871 -5. 0. -7. 5. 1.6327 1.6362 2.3714 -3.4033 0. -5.5358 -5. 0. -8. 5. -5.3688 -5.377 10.326 -3.4033 0. -4.3507 -5. 0. -9. 5. -2.9817 -3.152 4.6743 -3.4033 0. -3.8452 -5. 0. -10. 5. 0.082097 -0.54247 4.0191 -3.4033 0. -1.9291 -5. 0. -11. 5. 1.9127 1.2628 2.9325 -3.4033 0. -98.853 -5. 0. -12. 5. -4.0695 -3.0986 5.8552 -3.4033 0. -4.2289 -5. 0. -13. 5. -1.9079 -1.1251 4.3305 -3.4033 0. -3.6772 -5. 0. -14. 5. 0.67053 1.446 3.4117 -3.4033 0. -3.0105 -5. 0. -15. 5. 2.0063 2.5409 -4.1716 -3.4033 0. -2.702 -5. 0. -16. 5. 2.5416 2.8485 -68.149 -3.4033 0. -2.5851 -5. 0. -17. 5. 2.5878 2.815 -5.1307 -3.4033 0. -2.5751 -5. 0. -18. 5. 2.6561 2.6793 -4.9816 -3.4033 0. -2.5603 -5. 0. -19. 5. 2.658 2.6581 -4.9713 -3.4033 0. -2.5599 -5. 0. -20. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. -21. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. -22. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. 27. 5. 2.658 2.658 -4.9711 -3.4033 0. -2.5599 -5. 0. Gnucap System status iterations: op=23, dc=0, tran=0, fourier=0, total=23 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=9, subckt=0, model=0, total=9 dctran density=75.3%, ac density=75.3% tests/==out/charge-cons.ckt.out000066400000000000000000001203051316501211100167130ustar00rootroot00000000000000' # v(1) v(2) 27. 1. 0. v(1) -2. -1. 0. 1. 2. v(2) -2. -1. 0. 1. 2. +-----------------+----------------+-----------------+----------------+ 0. | . + *. | 10.n | . . + . * | 20.n | . . + . *| 30.n | . . + . *| 40.n | . . + . * | 50.n | . + * | 60.n | . + . * . | 70.n | . + .* . | 80.n | . + .* . | 90.n | . + . * . | 100.n | . + *. | 110.n | . . + . * | 120.n | . . + . *| 130.n | . . + . *| 140.n | . . + . * | 150.n | . + * | 160.n | . + . * . | 170.n | . + .* . | 180.n | . + .* . | 190.n | . + . * . | 200.n | . + *. | 210.n | . . + . * | 220.n | . . + . *| 230.n | . . + . *| 240.n | . . + . * | 250.n | . + * | 260.n | . + . * . | 270.n | . + .* . | 280.n | . + .* . | 290.n | . + . * . | 300.n | . + *. | 310.n | . . + . * | 320.n | . . + . *| 330.n | . . + . *| 340.n | . . + . * | 350.n | . + * | 360.n | . + . * . | 370.n | . + .* . | 380.n | . + .* . | 390.n | . + . * . | 400.n | . + *. | 410.n | . . + . * | 420.n | . . + . *| 430.n | . . + . *| 440.n | . . + . * | 450.n | . + * | 460.n | . + . * . | 470.n | . + .* . | 480.n | . + .* . | 490.n | . + . * . | 500.n | . + *. | 510.n | . . + . * | 520.n | . . + . *| 530.n | . . + . *| 540.n | . . + . * | 550.n | . + * | 560.n | . + . * . | 570.n | . + .* . | 580.n | . + .* . | 590.n | . + . * . | 600.n | . + *. | 610.n | . . + . * | 620.n | . . + . *| 630.n | . . + . *| 640.n | . . + . * | 650.n | . + * | 660.n | . + . * . | 670.n | . + .* . | 680.n | . + .* . | 690.n | . + . * . | 700.n | . + *. | 710.n | . . + . * | 720.n | . . + . *| 730.n | . . + . *| 740.n | . . + . * | 750.n | . + * | 760.n | . + . * . | 770.n | . + .* . | 780.n | . + .* . | 790.n | . + . * . | 800.n | . + *. | 810.n | . . + . * | 820.n | . . + . *| 830.n | . . + . *| 840.n | . . + . * | 850.n | . + * | 860.n | . + . * . | 870.n | . + .* . | 880.n | . + .* . | 890.n | . + . * . | 900.n | . + *. | 910.n | . . + . * | 920.n | . . + . *| 930.n | . . + . *| 940.n | . . + . * | 950.n | . + * | 960.n | . + . * . | 970.n | . + .* . | 980.n | . + .* . | 990.n | . + . * . | 1.u | . + *. | 1.01u | . . + . * | 1.02u | . . + . *| 1.03u | . . + . *| 1.04u | . . + . * | 1.05u | . + * | 1.06u | . + . * . | 1.07u | . + .* . | 1.08u | . + .* . | 1.09u | . + . * . | 1.1u | . + *. | 1.11u | . . + . * | 1.12u | . . + . *| 1.13u | . . + . *| 1.14u | . . + . * | 1.15u | . + * | 1.16u | . + . * . | 1.17u | . + .* . | 1.18u | . + .* . | 1.19u | . + . * . | 1.2u | . + *. | 1.21u | . . + . * | 1.22u | . . + . *| 1.23u | . . + . *| 1.24u | . . + . * | 1.25u | . + * | 1.26u | . + . * . | 1.27u | . + .* . | 1.28u | . + .* . | 1.29u | . + . * . | 1.3u | . + *. | 1.31u | . . + . * | 1.32u | . . + . *| 1.33u | . . + . *| 1.34u | . . + . * | 1.35u | . + * | 1.36u | . + . * . | 1.37u | . + .* . | 1.38u | . + .* . | 1.39u | . + . * . | 1.4u | . + *. | 1.41u | . . + . * | 1.42u | . . + . *| 1.43u | . . + . *| 1.44u | . . + . * | 1.45u | . + * | 1.46u | . + . * . | 1.47u | . + .* . | 1.48u | . + .* . | 1.49u | . + . * . | 1.5u | . + *. | 1.51u | . . + . * | 1.52u | . . + . *| 1.53u | . . + . *| 1.54u | . . + . * | 1.55u | . + * | 1.56u | . + . * . | 1.57u | . + .* . | 1.58u | . + .* . | 1.59u | . + . * . | 1.6u | . + *. | 1.61u | . . + . * | 1.62u | . . + . *| 1.63u | . . + . *| 1.64u | . . + . * | 1.65u | . .+ * | 1.66u | . + . * . | 1.67u | . + .* . | 1.68u | . + .* . | 1.69u | . + . * . | 1.7u | . .+ *. | 1.71u | . . + . * | 1.72u | . . + . *| 1.73u | . . + . *| 1.74u | . . + . * | 1.75u | . .+ * | 1.76u | . + . * . | 1.77u | . + .* . | 1.78u | . + .* . | 1.79u | . + . * . | 1.8u | . .+ *. | 1.81u | . . + . * | 1.82u | . . + . *| 1.83u | . . + . *| 1.84u | . . + . * | 1.85u | . .+ * | 1.86u | . + . * . | 1.87u | . + .* . | 1.88u | . + .* . | 1.89u | . + . * . | 1.9u | . .+ *. | 1.91u | . . + . * | 1.92u | . . + . *| 1.93u | . . + . *| 1.94u | . . + . * | 1.95u | . .+ * | 1.96u | . + . * . | 1.97u | . + .* . | 1.98u | . + .* . | 1.99u | . + . * . | 2.u | . .+ *. | 2.01u | . . + . * | 2.02u | . . + . *| 2.03u | . . + . *| 2.04u | . . + . * | 2.05u | . .+ * | 2.06u | . + . * . | 2.07u | . + .* . | 2.08u | . + .* . | 2.09u | . + . * . | 2.1u | . .+ *. | 2.11u | . . + . * | 2.12u | . . + . *| 2.13u | . . + . *| 2.14u | . . + . * | 2.15u | . .+ * | 2.16u | . + . * . | 2.17u | . + .* . | 2.18u | . + .* . | 2.19u | . + . * . | 2.2u | . .+ *. | 2.21u | . . + . * | 2.22u | . . + . *| 2.23u | . . + . *| 2.24u | . . + . * | 2.25u | . .+ * | 2.26u | . + . * . | 2.27u | . + .* . | 2.28u | . + .* . | 2.29u | . + . * . | 2.3u | . .+ *. | 2.31u | . . + . * | 2.32u | . . + . *| 2.33u | . . + . *| 2.34u | . . + . * | 2.35u | . .+ * | 2.36u | . + . * . | 2.37u | . + .* . | 2.38u | . + .* . | 2.39u | . + . * . | 2.4u | . .+ *. | 2.41u | . . + . * | 2.42u | . . + . *| 2.43u | . . + . *| 2.44u | . . + . * | 2.45u | . .+ * | 2.46u | . + . * . | 2.47u | . + .* . | 2.48u | . + .* . | 2.49u | . + . * . | 2.5u | . .+ *. | 2.51u | . . + . * | 2.52u | . . + . *| 2.53u | . . + . *| 2.54u | . . + . * | 2.55u | . .+ * | 2.56u | . + . * . | 2.57u | . + .* . | 2.58u | . + .* . | 2.59u | . + . * . | 2.6u | . .+ *. | 2.61u | . . + . * | 2.62u | . . + . *| 2.63u | . . + . *| 2.64u | . . + . * | 2.65u | . .+ * | 2.66u | . + . * . | 2.67u | . + .* . | 2.68u | . + .* . | 2.69u | . + . * . | 2.7u | . .+ *. | 2.71u | . . + . * | 2.72u | . . + . *| 2.73u | . . + . *| 2.74u | . . + . * | 2.75u | . .+ * | 2.76u | . + . * . | 2.77u | . + .* . | 2.78u | . + .* . | 2.79u | . + . * . | 2.8u | . .+ *. | 2.81u | . . + . * | 2.82u | . . + . *| 2.83u | . . + . *| 2.84u | . . + . * | 2.85u | . .+ * | 2.86u | . + . * . | 2.87u | . + .* . | 2.88u | . + .* . | 2.89u | . + . * . | 2.9u | . .+ *. | 2.91u | . . + . * | 2.92u | . . + . *| 2.93u | . . + . *| 2.94u | . . + . * | 2.95u | . .+ * | 2.96u | . + . * . | 2.97u | . + .* . | 2.98u | . + .* . | 2.99u | . + . * . | 3.u | . .+ *. | 3.01u | . . + . * | 3.02u | . . + . *| 3.03u | . . + . *| 3.04u | . . + . * | 3.05u | . .+ * | 3.06u | . + . * . | 3.07u | . + .* . | 3.08u | . + .* . | 3.09u | . + . * . | 3.1u | . .+ *. | 3.11u | . . + . * | 3.12u | . . + . *| 3.13u | . . + . *| 3.14u | . . + . * | 3.15u | . .+ * | 3.16u | . + . * . | 3.17u | . + .* . | 3.18u | . + .* . | 3.19u | . + . * . | 3.2u | . .+ *. | 3.21u | . . + . * | 3.22u | . . + . *| 3.23u | . . + . *| 3.24u | . . + . * | 3.25u | . .+ * | 3.26u | . + . * . | 3.27u | . + .* . | 3.28u | . + .* . | 3.29u | . + . * . | 3.3u | . .+ *. | 3.31u | . . + . * | 3.32u | . . + . *| 3.33u | . . + . *| 3.34u | . . + . * | 3.35u | . .+ * | 3.36u | . + . * . | 3.37u | . + .* . | 3.38u | . + .* . | 3.39u | . + . * . | 3.4u | . .+ *. | 3.41u | . . + . * | 3.42u | . . + . *| 3.43u | . . + . *| 3.44u | . . + . * | 3.45u | . .+ * | 3.46u | . + . * . | 3.47u | . + .* . | 3.48u | . + .* . | 3.49u | . + . * . | 3.5u | . .+ *. | 3.51u | . . + . * | 3.52u | . . + . *| 3.53u | . . + . *| 3.54u | . . + . * | 3.55u | . .+ * | 3.56u | . + . * . | 3.57u | . + .* . | 3.58u | . + .* . | 3.59u | . + . * . | 3.6u | . .+ *. | 3.61u | . . + . * | 3.62u | . . + . *| 3.63u | . . + . *| 3.64u | . . + . * | 3.65u | . .+ * | 3.66u | . + . * . | 3.67u | . + .* . | 3.68u | . + .* . | 3.69u | . + . * . | 3.7u | . .+ *. | 3.71u | . . + . * | 3.72u | . . + . *| 3.73u | . . + . *| 3.74u | . . + . * | 3.75u | . .+ * | 3.76u | . + . * . | 3.77u | . + .* . | 3.78u | . + .* . | 3.79u | . + . * . | 3.8u | . .+ *. | 3.81u | . . + . * | 3.82u | . . + . *| 3.83u | . . + . *| 3.84u | . . + . * | 3.85u | . .+ * | 3.86u | . + . * . | 3.87u | . + .* . | 3.88u | . + .* . | 3.89u | . + . * . | 3.9u | . .+ *. | 3.91u | . . + . * | 3.92u | . . + . *| 3.93u | . . + . *| 3.94u | . . + . * | 3.95u | . .+ * | 3.96u | . + . * . | 3.97u | . + .* . | 3.98u | . + .* . | 3.99u | . + . * . | 4.u | . .+ *. | 4.01u | . . + . * | 4.02u | . . + . *| 4.03u | . . + . *| 4.04u | . . + . * | 4.05u | . .+ * | 4.06u | . + . * . | 4.07u | . + .* . | 4.08u | . + .* . | 4.09u | . + . * . | 4.1u | . .+ *. | 4.11u | . . + . * | 4.12u | . . + . *| 4.13u | . . + . *| 4.14u | . . + . * | 4.15u | . .+ * | 4.16u | . + . * . | 4.17u | . + .* . | 4.18u | . + .* . | 4.19u | . + . * . | 4.2u | . .+ *. | 4.21u | . . + . * | 4.22u | . . + . *| 4.23u | . . + . *| 4.24u | . . + . * | 4.25u | . .+ * | 4.26u | . + . * . | 4.27u | . + .* . | 4.28u | . + .* . | 4.29u | . + . * . | 4.3u | . .+ *. | 4.31u | . . + . * | 4.32u | . . + . *| 4.33u | . . + . *| 4.34u | . . + . * | 4.35u | . .+ * | 4.36u | . + . * . | 4.37u | . + .* . | 4.38u | . + .* . | 4.39u | . + . * . | 4.4u | . .+ *. | 4.41u | . . + . * | 4.42u | . . + . *| 4.43u | . . + . *| 4.44u | . . + . * | 4.45u | . .+ * | 4.46u | . + . * . | 4.47u | . + .* . | 4.48u | . + .* . | 4.49u | . + . * . | 4.5u | . .+ *. | 4.51u | . . + . * | 4.52u | . . + . *| 4.53u | . . + . *| 4.54u | . . + . * | 4.55u | . .+ * | 4.56u | . + . * . | 4.57u | . + .* . | 4.58u | . + .* . | 4.59u | . + . * . | 4.6u | . .+ *. | 4.61u | . . + . * | 4.62u | . . + . *| 4.63u | . . + . *| 4.64u | . . + . * | 4.65u | . .+ * | 4.66u | . + . * . | 4.67u | . + .* . | 4.68u | . + .* . | 4.69u | . + . * . | 4.7u | . .+ *. | 4.71u | . . + . * | 4.72u | . . + . *| 4.73u | . . + . *| 4.74u | . . + . * | 4.75u | . .+ * | 4.76u | . + . * . | 4.77u | . + .* . | 4.78u | . + .* . | 4.79u | . + . * . | 4.8u | . .+ *. | 4.81u | . . + . * | 4.82u | . . + . *| 4.83u | . . + . *| 4.84u | . . + . * | 4.85u | . .+ * | 4.86u | . + . * . | 4.87u | . + .* . | 4.88u | . + .* . | 4.89u | . + . * . | 4.9u | . .+ *. | 4.91u | . . + . * | 4.92u | . . + . *| 4.93u | . . + . *| 4.94u | . . + . * | 4.95u | . .+ * | 4.96u | . + . * . | 4.97u | . + .* . | 4.98u | . + .* . | 4.99u | . + . * . | 5.u | . .+ *. | +-----------------+----------------+-----------------+----------------+ Vin ( 1 0 ) sin offset= 1. amplitude= 1. frequency= 10.Meg + delay= 0. damping= 0. R1 ( 1 0 ) 1.Meg R2 ( 2 0 ) 10.Meg C1 ( 1 2 ) 1.p M1 ( 0 2 0 0 ) m l=50.u w=50.u nrd=1. nrs=1. .model m nmos2 ( level=2 kp=20.u nfs=0. neff=1. ucrit=49.K uexp=0.1 delta=0. + phi=0.6 tox=110.n nsub=2.2E+15 nss=32.G xj=2.95u uo=575. tpg=1 tnom=NA( 27.) + fc=0.5 pb=0.8 cj=NA( 0.) mj=0.5 cjsw=0. mjsw=0.33 is=10.f rsh=0. cbd=4.5f + cbs=4.5f cgso=1.5n cgdo=1.5n cgbo=0. ld=2.4485u) Gnucap System status iterations: op=3, dc=0, tran=2588, fourier=0, total=3095 transient timesteps: accepted=504, rejected=0, total=504 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/charge-cons2.ckt.out000066400000000000000000001174111316501211100170010ustar00rootroot00000000000000' # v(1) v(2) v(3) 27. 1. 0. 1. v(1) -2. -1. 0. 1. 2. v(2) -2. -1. 0. 1. 2. +-----------------+----------------+-----------------+----------------+ 0. | . + *. | 10.n | . . + . * | 20.n | . . + . *| 30.n | . . + . *| 40.n | . . + . * | 50.n | . + * | 60.n | . + . * . | 70.n | . + .* . | 80.n | . + .* . | 90.n | . + . * . | 100.n | . + *. | 110.n | . . + . * | 120.n | . . + . *| 130.n | . . + . *| 140.n | . . + . * | 150.n | . + * | 160.n | . + . * . | 170.n | . + .* . | 180.n | . + .* . | 190.n | . + . * . | 200.n | . + *. | 210.n | . . + . * | 220.n | . . + . *| 230.n | . . + . *| 240.n | . . + . * | 250.n | . + * | 260.n | . + . * . | 270.n | . + .* . | 280.n | . + .* . | 290.n | . + . * . | 300.n | . + *. | 310.n | . . + . * | 320.n | . . + . *| 330.n | . . + . *| 340.n | . . + . * | 350.n | . + * | 360.n | . + . * . | 370.n | . + .* . | 380.n | . + .* . | 390.n | . + . * . | 400.n | . + *. | 410.n | . . + . * | 420.n | . . + . *| 430.n | . . + . *| 440.n | . . + . * | 450.n | . + * | 460.n | . + . * . | 470.n | . + .* . | 480.n | . + .* . | 490.n | . + . * . | 500.n | . + *. | 510.n | . . + . * | 520.n | . . + . *| 530.n | . . + . *| 540.n | . . + . * | 550.n | . + * | 560.n | . + . * . | 570.n | . + .* . | 580.n | . + .* . | 590.n | . + . * . | 600.n | . + *. | 610.n | . . + . * | 620.n | . . + . *| 630.n | . . + . *| 640.n | . . + . * | 650.n | . + * | 660.n | . + . * . | 670.n | . + .* . | 680.n | . + .* . | 690.n | . + . * . | 700.n | . + *. | 710.n | . . + . * | 720.n | . . + . *| 730.n | . . + . *| 740.n | . . + . * | 750.n | . + * | 760.n | . + . * . | 770.n | . + .* . | 780.n | . + .* . | 790.n | . + . * . | 800.n | . + *. | 810.n | . . + . * | 820.n | . . + . *| 830.n | . . + . *| 840.n | . . + . * | 850.n | . + * | 860.n | . + . * . | 870.n | . + .* . | 880.n | . + .* . | 890.n | . + . * . | 900.n | . + *. | 910.n | . . + . * | 920.n | . . + . *| 930.n | . . + . *| 940.n | . . + . * | 950.n | . + * | 960.n | . + . * . | 970.n | . + .* . | 980.n | . + .* . | 990.n | . + . * . | 1.u | . + *. | 1.01u | . . + . * | 1.02u | . . + . *| 1.03u | . . + . *| 1.04u | . . + . * | 1.05u | . + * | 1.06u | . + . * . | 1.07u | . + .* . | 1.08u | . + .* . | 1.09u | . + . * . | 1.1u | . + *. | 1.11u | . . + . * | 1.12u | . . + . *| 1.13u | . . + . *| 1.14u | . . + . * | 1.15u | . + * | 1.16u | . + . * . | 1.17u | . + .* . | 1.18u | . + .* . | 1.19u | . + . * . | 1.2u | . + *. | 1.21u | . . + . * | 1.22u | . . + . *| 1.23u | . . + . *| 1.24u | . . + . * | 1.25u | . + * | 1.26u | . + . * . | 1.27u | . + .* . | 1.28u | . + .* . | 1.29u | . + . * . | 1.3u | . + *. | 1.31u | . . + . * | 1.32u | . . + . *| 1.33u | . . + . *| 1.34u | . . + . * | 1.35u | . + * | 1.36u | . + . * . | 1.37u | . + .* . | 1.38u | . + .* . | 1.39u | . + . * . | 1.4u | . + *. | 1.41u | . . + . * | 1.42u | . . + . *| 1.43u | . . + . *| 1.44u | . . + . * | 1.45u | . + * | 1.46u | . + . * . | 1.47u | . + .* . | 1.48u | . + .* . | 1.49u | . + . * . | 1.5u | . + *. | 1.51u | . . + . * | 1.52u | . . + . *| 1.53u | . . + . *| 1.54u | . . + . * | 1.55u | . + * | 1.56u | . + . * . | 1.57u | . + .* . | 1.58u | . + .* . | 1.59u | . + . * . | 1.6u | . + *. | 1.61u | . . + . * | 1.62u | . . + . *| 1.63u | . . + . *| 1.64u | . . + . * | 1.65u | . + * | 1.66u | . + . * . | 1.67u | . + .* . | 1.68u | . + .* . | 1.69u | . + . * . | 1.7u | . + *. | 1.71u | . . + . * | 1.72u | . . + . *| 1.73u | . . + . *| 1.74u | . . + . * | 1.75u | . + * | 1.76u | . + . * . | 1.77u | . + .* . | 1.78u | . + .* . | 1.79u | . + . * . | 1.8u | . + *. | 1.81u | . . + . * | 1.82u | . . + . *| 1.83u | . . + . *| 1.84u | . . + . * | 1.85u | . + * | 1.86u | . + . * . | 1.87u | . + .* . | 1.88u | . + .* . | 1.89u | . + . * . | 1.9u | . + *. | 1.91u | . . + . * | 1.92u | . . + . *| 1.93u | . . + . *| 1.94u | . . + . * | 1.95u | . + * | 1.96u | . + . * . | 1.97u | . + .* . | 1.98u | . + .* . | 1.99u | . + . * . | 2.u | . + *. | 2.01u | . . + . * | 2.02u | . . + . *| 2.03u | . . + . *| 2.04u | . . + . * | 2.05u | . + * | 2.06u | . + . * . | 2.07u | . + .* . | 2.08u | . + .* . | 2.09u | . + . * . | 2.1u | . + *. | 2.11u | . . + . * | 2.12u | . . + . *| 2.13u | . . + . *| 2.14u | . . + . * | 2.15u | . + * | 2.16u | . + . * . | 2.17u | . + .* . | 2.18u | . + .* . | 2.19u | . + . * . | 2.2u | . + *. | 2.21u | . . + . * | 2.22u | . . + . *| 2.23u | . . + . *| 2.24u | . . + . * | 2.25u | . + * | 2.26u | . + . * . | 2.27u | . + .* . | 2.28u | . + .* . | 2.29u | . + . * . | 2.3u | . + *. | 2.31u | . . + . * | 2.32u | . . + . *| 2.33u | . . + . *| 2.34u | . . + . * | 2.35u | . + * | 2.36u | . + . * . | 2.37u | . + .* . | 2.38u | . + .* . | 2.39u | . + . * . | 2.4u | . + *. | 2.41u | . . + . * | 2.42u | . . + . *| 2.43u | . . + . *| 2.44u | . . + . * | 2.45u | . + * | 2.46u | . + . * . | 2.47u | . + .* . | 2.48u | . + .* . | 2.49u | . + . * . | 2.5u | . + *. | 2.51u | . . + . * | 2.52u | . . + . *| 2.53u | . . + . *| 2.54u | . . + . * | 2.55u | . + * | 2.56u | . + . * . | 2.57u | . + .* . | 2.58u | . + .* . | 2.59u | . + . * . | 2.6u | . + *. | 2.61u | . . + . * | 2.62u | . . + . *| 2.63u | . . + . *| 2.64u | . . + . * | 2.65u | . + * | 2.66u | . + . * . | 2.67u | . + .* . | 2.68u | . + .* . | 2.69u | . + . * . | 2.7u | . + *. | 2.71u | . . + . * | 2.72u | . . + . *| 2.73u | . . + . *| 2.74u | . . + . * | 2.75u | . + * | 2.76u | . + . * . | 2.77u | . + .* . | 2.78u | . + .* . | 2.79u | . + . * . | 2.8u | . + *. | 2.81u | . . + . * | 2.82u | . . + . *| 2.83u | . . + . *| 2.84u | . . + . * | 2.85u | . + * | 2.86u | . + . * . | 2.87u | . + .* . | 2.88u | . + .* . | 2.89u | . + . * . | 2.9u | . + *. | 2.91u | . . + . * | 2.92u | . . + . *| 2.93u | . . + . *| 2.94u | . . + . * | 2.95u | . + * | 2.96u | . + . * . | 2.97u | . + .* . | 2.98u | . + .* . | 2.99u | . + . * . | 3.u | . + *. | 3.01u | . . + . * | 3.02u | . . + . *| 3.03u | . . + . *| 3.04u | . . + . * | 3.05u | . + * | 3.06u | . + . * . | 3.07u | . + .* . | 3.08u | . + .* . | 3.09u | . + . * . | 3.1u | . + *. | 3.11u | . . + . * | 3.12u | . . + . *| 3.13u | . . + . *| 3.14u | . . + . * | 3.15u | . + * | 3.16u | . + . * . | 3.17u | . + .* . | 3.18u | . + .* . | 3.19u | . + . * . | 3.2u | . + *. | 3.21u | . . + . * | 3.22u | . . + . *| 3.23u | . . + . *| 3.24u | . . + . * | 3.25u | . + * | 3.26u | . + . * . | 3.27u | . + .* . | 3.28u | . + .* . | 3.29u | . + . * . | 3.3u | . + *. | 3.31u | . . + . * | 3.32u | . . + . *| 3.33u | . . + . *| 3.34u | . . + . * | 3.35u | . + * | 3.36u | . + . * . | 3.37u | . + .* . | 3.38u | . + .* . | 3.39u | . + . * . | 3.4u | . + *. | 3.41u | . . + . * | 3.42u | . . + . *| 3.43u | . . + . *| 3.44u | . . + . * | 3.45u | . + * | 3.46u | . + . * . | 3.47u | . + .* . | 3.48u | . + .* . | 3.49u | . + . * . | 3.5u | . + *. | 3.51u | . . + . * | 3.52u | . . + . *| 3.53u | . . + . *| 3.54u | . . + . * | 3.55u | . + * | 3.56u | . + . * . | 3.57u | . + .* . | 3.58u | . + .* . | 3.59u | . + . * . | 3.6u | . + *. | 3.61u | . . + . * | 3.62u | . . + . *| 3.63u | . . + . *| 3.64u | . . + . * | 3.65u | . + * | 3.66u | . + . * . | 3.67u | . + .* . | 3.68u | . + .* . | 3.69u | . + . * . | 3.7u | . + *. | 3.71u | . . + . * | 3.72u | . . + . *| 3.73u | . . + . *| 3.74u | . . + . * | 3.75u | . + * | 3.76u | . + . * . | 3.77u | . + .* . | 3.78u | . + .* . | 3.79u | . + . * . | 3.8u | . + *. | 3.81u | . . + . * | 3.82u | . . + . *| 3.83u | . . + . *| 3.84u | . . + . * | 3.85u | . + * | 3.86u | . + . * . | 3.87u | . + .* . | 3.88u | . + .* . | 3.89u | . + . * . | 3.9u | . + *. | 3.91u | . . + . * | 3.92u | . . + . *| 3.93u | . . + . *| 3.94u | . . + . * | 3.95u | . + * | 3.96u | . + . * . | 3.97u | . + .* . | 3.98u | . + .* . | 3.99u | . + . * . | 4.u | . + *. | 4.01u | . . + . * | 4.02u | . . + . *| 4.03u | . . + . *| 4.04u | . . + . * | 4.05u | . + * | 4.06u | . + . * . | 4.07u | . + .* . | 4.08u | . + .* . | 4.09u | . + . * . | 4.1u | . + *. | 4.11u | . . + . * | 4.12u | . . + . *| 4.13u | . . + . *| 4.14u | . . + . * | 4.15u | . + * | 4.16u | . + . * . | 4.17u | . + .* . | 4.18u | . + .* . | 4.19u | . + . * . | 4.2u | . + *. | 4.21u | . . + . * | 4.22u | . . + . *| 4.23u | . . + . *| 4.24u | . . + . * | 4.25u | . + * | 4.26u | . + . * . | 4.27u | . + .* . | 4.28u | . + .* . | 4.29u | . + . * . | 4.3u | . .+ *. | 4.31u | . . + . * | 4.32u | . . + . *| 4.33u | . . + . *| 4.34u | . . + . * | 4.35u | . .+ * | 4.36u | . + . * . | 4.37u | . + .* . | 4.38u | . + .* . | 4.39u | . + . * . | 4.4u | . .+ *. | 4.41u | . . + . * | 4.42u | . . + . *| 4.43u | . . + . *| 4.44u | . . + . * | 4.45u | . .+ * | 4.46u | . + . * . | 4.47u | . + .* . | 4.48u | . + .* . | 4.49u | . + . * . | 4.5u | . .+ *. | 4.51u | . . + . * | 4.52u | . . + . *| 4.53u | . . + . *| 4.54u | . . + . * | 4.55u | . .+ * | 4.56u | . + . * . | 4.57u | . + .* . | 4.58u | . + .* . | 4.59u | . + . * . | 4.6u | . .+ *. | 4.61u | . . + . * | 4.62u | . . + . *| 4.63u | . . + . *| 4.64u | . . + . * | 4.65u | . .+ * | 4.66u | . + . * . | 4.67u | . + .* . | 4.68u | . + .* . | 4.69u | . + . * . | 4.7u | . .+ *. | 4.71u | . . + . * | 4.72u | . . + . *| 4.73u | . . + . *| 4.74u | . . + . * | 4.75u | . .+ * | 4.76u | . + . * . | 4.77u | . + .* . | 4.78u | . + .* . | 4.79u | . + . * . | 4.8u | . .+ *. | 4.81u | . . + . * | 4.82u | . . + . *| 4.83u | . . + . *| 4.84u | . . + . * | 4.85u | . .+ * | 4.86u | . + . * . | 4.87u | . + .* . | 4.88u | . + .* . | 4.89u | . + . * . | 4.9u | . .+ *. | 4.91u | . . + . * | 4.92u | . . + . *| 4.93u | . . + . *| 4.94u | . . + . * | 4.95u | . .+ * | 4.96u | . + . * . | 4.97u | . + .* . | 4.98u | . + .* . | 4.99u | . + . * . | 5.u | . .+ *. | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=4, dc=0, tran=2468, fourier=0, total=2976 transient timesteps: accepted=504, rejected=0, total=504 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/charge-cons3.ckt.out000066400000000000000000001174111316501211100170020ustar00rootroot00000000000000' # v(1) v(2) v(3) 27. 1. 0. 1. v(1) -2. -1. 0. 1. 2. v(2) -2. -1. 0. 1. 2. +-----------------+----------------+-----------------+----------------+ 0. | . + *. | 10.n | . . + . * | 20.n | . . + . *| 30.n | . . + . *| 40.n | . . + . * | 50.n | . + * | 60.n | . + . * . | 70.n | . + .* . | 80.n | . + .* . | 90.n | . + . * . | 100.n | . + *. | 110.n | . . + . * | 120.n | . . + . *| 130.n | . . + . *| 140.n | . . + . * | 150.n | . + * | 160.n | . + . * . | 170.n | . + .* . | 180.n | . + .* . | 190.n | . + . * . | 200.n | . + *. | 210.n | . . + . * | 220.n | . . + . *| 230.n | . . + . *| 240.n | . . + . * | 250.n | . + * | 260.n | . + . * . | 270.n | . + .* . | 280.n | . + .* . | 290.n | . + . * . | 300.n | . + *. | 310.n | . . + . * | 320.n | . . + . *| 330.n | . . + . *| 340.n | . . + . * | 350.n | . + * | 360.n | . + . * . | 370.n | . + .* . | 380.n | . + .* . | 390.n | . + . * . | 400.n | . + *. | 410.n | . . + . * | 420.n | . . + . *| 430.n | . . + . *| 440.n | . . + . * | 450.n | . + * | 460.n | . + . * . | 470.n | . + .* . | 480.n | . + .* . | 490.n | . + . * . | 500.n | . + *. | 510.n | . . + . * | 520.n | . . + . *| 530.n | . . + . *| 540.n | . . + . * | 550.n | . + * | 560.n | . + . * . | 570.n | . + .* . | 580.n | . + .* . | 590.n | . + . * . | 600.n | . + *. | 610.n | . . + . * | 620.n | . . + . *| 630.n | . . + . *| 640.n | . . + . * | 650.n | . + * | 660.n | . + . * . | 670.n | . + .* . | 680.n | . + .* . | 690.n | . + . * . | 700.n | . + *. | 710.n | . . + . * | 720.n | . . + . *| 730.n | . . + . *| 740.n | . . + . * | 750.n | . + * | 760.n | . + . * . | 770.n | . + .* . | 780.n | . + .* . | 790.n | . + . * . | 800.n | . + *. | 810.n | . . + . * | 820.n | . . + . *| 830.n | . . + . *| 840.n | . . + . * | 850.n | . + * | 860.n | . + . * . | 870.n | . + .* . | 880.n | . + .* . | 890.n | . + . * . | 900.n | . + *. | 910.n | . . + . * | 920.n | . . + . *| 930.n | . . + . *| 940.n | . . + . * | 950.n | . + * | 960.n | . + . * . | 970.n | . + .* . | 980.n | . + .* . | 990.n | . + . * . | 1.u | . + *. | 1.01u | . . + . * | 1.02u | . . + . *| 1.03u | . . + . *| 1.04u | . . + . * | 1.05u | . + * | 1.06u | . + . * . | 1.07u | . + .* . | 1.08u | . + .* . | 1.09u | . + . * . | 1.1u | . + *. | 1.11u | . . + . * | 1.12u | . . + . *| 1.13u | . . + . *| 1.14u | . . + . * | 1.15u | . + * | 1.16u | . + . * . | 1.17u | . + .* . | 1.18u | . + .* . | 1.19u | . + . * . | 1.2u | . + *. | 1.21u | . . + . * | 1.22u | . . + . *| 1.23u | . . + . *| 1.24u | . . + . * | 1.25u | . + * | 1.26u | . + . * . | 1.27u | . + .* . | 1.28u | . + .* . | 1.29u | . + . * . | 1.3u | . + *. | 1.31u | . . + . * | 1.32u | . . + . *| 1.33u | . . + . *| 1.34u | . . + . * | 1.35u | . + * | 1.36u | . + . * . | 1.37u | . + .* . | 1.38u | . + .* . | 1.39u | . + . * . | 1.4u | . + *. | 1.41u | . . + . * | 1.42u | . . + . *| 1.43u | . . + . *| 1.44u | . . + . * | 1.45u | . + * | 1.46u | . + . * . | 1.47u | . + .* . | 1.48u | . + .* . | 1.49u | . + . * . | 1.5u | . + *. | 1.51u | . . + . * | 1.52u | . . + . *| 1.53u | . . + . *| 1.54u | . . + . * | 1.55u | . + * | 1.56u | . + . * . | 1.57u | . + .* . | 1.58u | . + .* . | 1.59u | . + . * . | 1.6u | . + *. | 1.61u | . . + . * | 1.62u | . . + . *| 1.63u | . . + . *| 1.64u | . . + . * | 1.65u | . + * | 1.66u | . + . * . | 1.67u | . + .* . | 1.68u | . + .* . | 1.69u | . + . * . | 1.7u | . + *. | 1.71u | . . + . * | 1.72u | . . + . *| 1.73u | . . + . *| 1.74u | . . + . * | 1.75u | . + * | 1.76u | . + . * . | 1.77u | . + .* . | 1.78u | . + .* . | 1.79u | . + . * . | 1.8u | . + *. | 1.81u | . . + . * | 1.82u | . . + . *| 1.83u | . . + . *| 1.84u | . . + . * | 1.85u | . + * | 1.86u | . + . * . | 1.87u | . + .* . | 1.88u | . + .* . | 1.89u | . + . * . | 1.9u | . + *. | 1.91u | . . + . * | 1.92u | . . + . *| 1.93u | . . + . *| 1.94u | . . + . * | 1.95u | . + * | 1.96u | . + . * . | 1.97u | . + .* . | 1.98u | . + .* . | 1.99u | . + . * . | 2.u | . + *. | 2.01u | . . + . * | 2.02u | . . + . *| 2.03u | . . + . *| 2.04u | . . + . * | 2.05u | . + * | 2.06u | . + . * . | 2.07u | . + .* . | 2.08u | . + .* . | 2.09u | . + . * . | 2.1u | . + *. | 2.11u | . . + . * | 2.12u | . . + . *| 2.13u | . . + . *| 2.14u | . . + . * | 2.15u | . + * | 2.16u | . + . * . | 2.17u | . + .* . | 2.18u | . + .* . | 2.19u | . + . * . | 2.2u | . + *. | 2.21u | . . + . * | 2.22u | . . + . *| 2.23u | . . + . *| 2.24u | . . + . * | 2.25u | . + * | 2.26u | . + . * . | 2.27u | . + .* . | 2.28u | . + .* . | 2.29u | . + . * . | 2.3u | . + *. | 2.31u | . . + . * | 2.32u | . . + . *| 2.33u | . . + . *| 2.34u | . . + . * | 2.35u | . + * | 2.36u | . + . * . | 2.37u | . + .* . | 2.38u | . + .* . | 2.39u | . + . * . | 2.4u | . + *. | 2.41u | . . + . * | 2.42u | . . + . *| 2.43u | . . + . *| 2.44u | . . + . * | 2.45u | . + * | 2.46u | . + . * . | 2.47u | . + .* . | 2.48u | . + .* . | 2.49u | . + . * . | 2.5u | . + *. | 2.51u | . . + . * | 2.52u | . . + . *| 2.53u | . . + . *| 2.54u | . . + . * | 2.55u | . + * | 2.56u | . + . * . | 2.57u | . + .* . | 2.58u | . + .* . | 2.59u | . + . * . | 2.6u | . + *. | 2.61u | . . + . * | 2.62u | . . + . *| 2.63u | . . + . *| 2.64u | . . + . * | 2.65u | . + * | 2.66u | . + . * . | 2.67u | . + .* . | 2.68u | . + .* . | 2.69u | . + . * . | 2.7u | . + *. | 2.71u | . . + . * | 2.72u | . . + . *| 2.73u | . . + . *| 2.74u | . . + . * | 2.75u | . + * | 2.76u | . + . * . | 2.77u | . + .* . | 2.78u | . + .* . | 2.79u | . + . * . | 2.8u | . + *. | 2.81u | . . + . * | 2.82u | . . + . *| 2.83u | . . + . *| 2.84u | . . + . * | 2.85u | . + * | 2.86u | . + . * . | 2.87u | . + .* . | 2.88u | . + .* . | 2.89u | . + . * . | 2.9u | . + *. | 2.91u | . . + . * | 2.92u | . . + . *| 2.93u | . . + . *| 2.94u | . . + . * | 2.95u | . + * | 2.96u | . + . * . | 2.97u | . + .* . | 2.98u | . + .* . | 2.99u | . + . * . | 3.u | . + *. | 3.01u | . . + . * | 3.02u | . . + . *| 3.03u | . . + . *| 3.04u | . . + . * | 3.05u | . + * | 3.06u | . + . * . | 3.07u | . + .* . | 3.08u | . + .* . | 3.09u | . + . * . | 3.1u | . + *. | 3.11u | . . + . * | 3.12u | . . + . *| 3.13u | . . + . *| 3.14u | . . + . * | 3.15u | . + * | 3.16u | . + . * . | 3.17u | . + .* . | 3.18u | . + .* . | 3.19u | . + . * . | 3.2u | . + *. | 3.21u | . . + . * | 3.22u | . . + . *| 3.23u | . . + . *| 3.24u | . . + . * | 3.25u | . + * | 3.26u | . + . * . | 3.27u | . + .* . | 3.28u | . + .* . | 3.29u | . + . * . | 3.3u | . + *. | 3.31u | . . + . * | 3.32u | . . + . *| 3.33u | . . + . *| 3.34u | . . + . * | 3.35u | . + * | 3.36u | . + . * . | 3.37u | . + .* . | 3.38u | . + .* . | 3.39u | . + . * . | 3.4u | . + *. | 3.41u | . . + . * | 3.42u | . . + . *| 3.43u | . . + . *| 3.44u | . . + . * | 3.45u | . + * | 3.46u | . + . * . | 3.47u | . + .* . | 3.48u | . + .* . | 3.49u | . + . * . | 3.5u | . + *. | 3.51u | . . + . * | 3.52u | . . + . *| 3.53u | . . + . *| 3.54u | . . + . * | 3.55u | . + * | 3.56u | . + . * . | 3.57u | . + .* . | 3.58u | . + .* . | 3.59u | . + . * . | 3.6u | . + *. | 3.61u | . . + . * | 3.62u | . . + . *| 3.63u | . . + . *| 3.64u | . . + . * | 3.65u | . + * | 3.66u | . + . * . | 3.67u | . + .* . | 3.68u | . + .* . | 3.69u | . + . * . | 3.7u | . + *. | 3.71u | . . + . * | 3.72u | . . + . *| 3.73u | . . + . *| 3.74u | . . + . * | 3.75u | . + * | 3.76u | . + . * . | 3.77u | . + .* . | 3.78u | . + .* . | 3.79u | . + . * . | 3.8u | . + *. | 3.81u | . . + . * | 3.82u | . . + . *| 3.83u | . . + . *| 3.84u | . . + . * | 3.85u | . + * | 3.86u | . + . * . | 3.87u | . + .* . | 3.88u | . + .* . | 3.89u | . + . * . | 3.9u | . + *. | 3.91u | . . + . * | 3.92u | . . + . *| 3.93u | . . + . *| 3.94u | . . + . * | 3.95u | . + * | 3.96u | . + . * . | 3.97u | . + .* . | 3.98u | . + .* . | 3.99u | . + . * . | 4.u | . + *. | 4.01u | . . + . * | 4.02u | . . + . *| 4.03u | . . + . *| 4.04u | . . + . * | 4.05u | . + * | 4.06u | . + . * . | 4.07u | . + .* . | 4.08u | . + .* . | 4.09u | . + . * . | 4.1u | . + *. | 4.11u | . . + . * | 4.12u | . . + . *| 4.13u | . . + . *| 4.14u | . . + . * | 4.15u | . + * | 4.16u | . + . * . | 4.17u | . + .* . | 4.18u | . + .* . | 4.19u | . + . * . | 4.2u | . + *. | 4.21u | . . + . * | 4.22u | . . + . *| 4.23u | . . + . *| 4.24u | . . + . * | 4.25u | . + * | 4.26u | . + . * . | 4.27u | . + .* . | 4.28u | . + .* . | 4.29u | . + . * . | 4.3u | . + *. | 4.31u | . . + . * | 4.32u | . . + . *| 4.33u | . . + . *| 4.34u | . . + . * | 4.35u | . + * | 4.36u | . + . * . | 4.37u | . + .* . | 4.38u | . + .* . | 4.39u | . + . * . | 4.4u | . + *. | 4.41u | . . + . * | 4.42u | . . + . *| 4.43u | . . + . *| 4.44u | . . + . * | 4.45u | . + * | 4.46u | . + . * . | 4.47u | . + .* . | 4.48u | . + .* . | 4.49u | . + . * . | 4.5u | . + *. | 4.51u | . . + . * | 4.52u | . . + . *| 4.53u | . . + . *| 4.54u | . . + . * | 4.55u | . + * | 4.56u | . + . * . | 4.57u | . + .* . | 4.58u | . + .* . | 4.59u | . + . * . | 4.6u | . + *. | 4.61u | . . + . * | 4.62u | . . + . *| 4.63u | . . + . *| 4.64u | . . + . * | 4.65u | . + * | 4.66u | . + . * . | 4.67u | . + .* . | 4.68u | . + .* . | 4.69u | . + . * . | 4.7u | . + *. | 4.71u | . . + . * | 4.72u | . . + . *| 4.73u | . . + . *| 4.74u | . . + . * | 4.75u | . + * | 4.76u | . + . * . | 4.77u | . + .* . | 4.78u | . + .* . | 4.79u | . + . * . | 4.8u | . + *. | 4.81u | . . + . * | 4.82u | . . + . *| 4.83u | . . + . *| 4.84u | . . + . * | 4.85u | . + * | 4.86u | . + . * . | 4.87u | . + .* . | 4.88u | . + .* . | 4.89u | . + . * . | 4.9u | . + *. | 4.91u | . . + . * | 4.92u | . . + . *| 4.93u | . . + . *| 4.94u | . . + . * | 4.95u | . + * | 4.96u | . + . * . | 4.97u | . + .* . | 4.98u | . + .* . | 4.99u | . + . * . | 5.u | . + *. | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=4, dc=0, tran=2554, fourier=0, total=3062 transient timesteps: accepted=504, rejected=0, total=504 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/current.ckt.out000066400000000000000000000002461316501211100162050ustar00rootroot00000000000000a current source # v(1) 27. -1.2 #Freq vm(1) vp(1) 1. 1. 180. 10. 1. 180. tests/==out/d_bjt-diffpair-ccs.ckt.out000066400000000000000000000161741316501211100201440ustar00rootroot00000000000000difpair ckt - simple differential pair # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. v(4) -4. 0. 4. 8. 12. v(5) -4. 0. 4. 8. 12. +-----------------+----------------+-----------------+----------------+ 0. | . . * . | 10.n | . . * + . | 20.n | . * . + . | 30.n | . * . .+ | 40.n | . * . . + | 50.n | * . . + | 60.n | *. . . + | 70.n | * . . . + | 80.n | *. . . + | 90.n | . * . . + | 100.n | . * . .+ | 110.n | . * + . | 120.n | . . + * . | 130.n | . + . *. | 140.n | . + . . * | 150.n | .+ . . * | 160.n | +. . . * | 170.n | + . . . * | 180.n | +. . . * | 190.n | . + . . * | 200.n | . + . .* | 210.n | . + * . | 220.n | . . * + . | 230.n | . * . +. | 240.n | . * . . + | 250.n | .* . . + | 260.n | *. . . + | 270.n | * . . . + | 280.n | *. . . + | +-----------------+----------------+-----------------+----------------+ vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + * . | 2.1544K| . + * . | 4.6416K| . + * . | 10.K | . + * . | 21.544K| . + * . | 46.416K| . + * . | 100.K | . + * . | 215.44K| . + * . | 464.16K| . +. * . | 1.Meg | . +. * . | 2.1544M| . + . * . | 4.6416M| . + * . | 10.Meg | . +* . . | 21.544M| * . + . . | 46.416M| * .+ . . | 100.Meg| * + . . | 215.44M| * +. . . | 464.16M|* + . . . | 1.G * + . . . | 2.1544G* + . . . | 4.6416G* + . . . | 10.G * + . . . | +-----------------+----------------+-----------------+----------------+ # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + . * | 2.1544K| . + . * | 4.6416K| . + . * | 10.K | . + . * | 21.544K| . + . * | 46.416K| . + . * | 100.K | . + . * | 215.44K| . + . * | 464.16K| . +. . * | 1.Meg | . +. . * | 2.1544M| . + . . * | 4.6416M| . + . . * | 10.Meg | . + . * . | 21.544M| . + * . . | 46.416M| * .+ . . | 100.Meg| * + . . | 215.44M| * +. . . | 464.16M|* + . . . | 1.G |* + . . . | 2.1544G* + . . . | 4.6416G* + . . . | 10.G * + . . . | +-----------------+----------------+-----------------+----------------+ tests/==out/d_bjt-diffpair-cjc.ckt.out000066400000000000000000000161741316501211100201330ustar00rootroot00000000000000difpair ckt - simple differential pair # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. v(4) -4. 0. 4. 8. 12. v(5) -4. 0. 4. 8. 12. +-----------------+----------------+-----------------+----------------+ 0. | . . * . | 10.n | . . *+ . | 20.n | . . * + . | 30.n | . .* + . | 40.n | . * . + . | 50.n | . * . + . | 60.n | . * . + | 70.n | . * . . + | 80.n | . * . . + | 90.n | . * . . + | 100.n | . * . . + | 110.n | . * . + | 120.n | . * . + . | 130.n | . *. + . | 140.n | . . * + . | 150.n | . . + * . | 160.n | . .+ * . | 170.n | . + . * . | 180.n | . + . * . | 190.n | . + . * . | 200.n | . + . * . | 210.n | . + . * . | 220.n | . + * . | 230.n | . . + * . | 240.n | . . * + . | 250.n | . .* + . | 260.n | . * . + . | 270.n | . * . + . | 280.n | . * . +. | +-----------------+----------------+-----------------+----------------+ vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + . * | 2.1544K| . + . * | 4.6416K| . + . * | 10.K | . + . * | 21.544K| . + . * | 46.416K| . + .* | 100.K | . +. .* | 215.44K| . +. .* | 464.16K| . + . * | 1.Meg | . + . * . | 2.1544M| . + * . . | 4.6416M| .* + . . | 10.Meg | * . + . . | 21.544M| * + . . | 46.416M| * + . . . | 100.Meg|* + . . . | 215.44M* + . . . | 464.16M* + . . . | 1.G * + . . | 2.1544G* . + . . | 4.6416G* . + . . | 10.G * . + . . | +-----------------+----------------+-----------------+----------------+ # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + . * | 2.1544K| . + . * | 4.6416K| . + . * | 10.K | . + . * | 21.544K| . + . * | 46.416K| . + . * | 100.K | . +. . * | 215.44K| . + . . * | 464.16K| . + . . * | 1.Meg | . + . *. | 2.1544M| . + .* . | 4.6416M| . *+ . . | 10.Meg | * .+ . . | 21.544M| * + . . | 46.416M| * + . . . | 100.Meg|* + . . . | 215.44M* + . . . | 464.16M* + . . . | 1.G * .+ . . | 2.1544G* . + . . | 4.6416G* . + . . | 10.G * . + . . | +-----------------+----------------+-----------------+----------------+ tests/==out/d_bjt-diffpair-dc.ckt.out000066400000000000000000000070421316501211100177540ustar00rootroot00000000000000difpair ckt - simple differential pair # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. # vb(q1) vb(q2) vb(q3) vb(q4) vb(qnl) 27. -0.0076611 -0.0076611 -11.221 -11.221 ?? # vbi(q1) vbi(q2) vbi(q3) vbi(q4) vbi(qnl) 27. -0.0084272 -0.0084272 -11.223 -11.223 ?? # i(vin) i(vcc) i(vee) 27. -7.6611u -0.0025152 0.0025306 # ic(q1) ic(q2) ic(q3) ic(q4) ic(qnl) 27. 677.09u 677.09u 0.0013695 0.0011327 ?? # ice(q1) ice(q2) ice(q3) ice(q4) ice(qnl) 27. 677.09u 677.09u 0.0013695 0.0011327 ?? # ib(q1) ib(q2) ib(q3) ib(q4) ib(qnl) 27. 7.6611u 7.6611u 14.159u 14.159u ?? # ipi(q1) ipi(q2) ipi(q3) ipi(q4) ipi(qnl) 27. 7.6611u 7.6611u 14.159u 14.159u ?? # imu(q1) imu(q2) imu(q3) imu(q4) imu(qnl) 27. -5.2376p -5.2376p -10.453p -1.4212f ?? # ie(q1) ie(q2) ie(q3) ie(q4) ie(qnl) 27. -684.75u -684.75u -0.0013837 -0.0011469 ?? # vbe(q1) vbe(q2) vbe(q3) vbe(q4) vbe(qnl) 27. 0.76231 0.76231 0.77885 0.77885 ?? # vbei(q1) vbei(q2) vbei(q3) vbei(q4) vbei(qnl) 27. 0.76155 0.76155 0.77743 0.77743 ?? # vbc(q1) vbc(q2) vbc(q3) vbc(q4) vbc(qnl) 27. -5.2368 -5.2368 -10.451 0. ?? # vbci(q1) vbci(q2) vbci(q3) vbci(q4) vbci(qnl) 27. -5.2375 -5.2375 -10.453 -0.0014159 ?? # gm(q1) gm(q2) gm(q3) gm(q4) gm(qnl) 27. 0.026166 0.026166 0.052927 0.043773 ?? # gpi(q1) gpi(q2) gpi(q3) gpi(q4) gpi(qnl) 27. 296.21u 296.21u 547.43u 547.43u ?? # gmu(q1) gmu(q2) gmu(q3) gmu(q4) gmu(qnl) 27. 1.p 1.p 1.p 1.0037p ?? # gx(q1) gx(q2) gx(q3) gx(q4) gx(qnl) 27. 0.01 0.01 0.01 0.01 ?? # go(q1) go(q2) go(q3) go(q4) go(qnl) 27. 12.258u 12.258u 22.654u 22.654u ?? # cpi(q1) cpi(q2) cpi(q3) cpi(q4) cpi(qnl) 27. 12.907p 12.907p 20.991p 18.245p ?? # cmu(q1) cmu(q2) cmu(q3) cmu(q4) cmu(qnl) 27. 1.0076p 1.0076p 819.45f 1.9988p ?? # cbx(q1) cbx(q2) cbx(q3) cbx(q4) cbx(qnl) 27. 0. 0. 0. 0. ?? # ccs(q1) ccs(q2) ccs(q3) ccs(q4) ccs(qnl) 27. 2.p 2.p 2.p 2.p ?? # i(rs1) i(rs2) i(rc1) i(rc2) i(rbias) 27. 7.6611u -7.6611u -677.09u -677.09u -0.0011611 # p(rs1) p(rs2) p(rc1) p(rc2) p(rbias) 27. 58.693n 58.693n 0.0045845 0.0045845 0.026961 # i(vin) i(vcc) i(vee) 27. -7.6611u -0.0025152 0.0025306 # p(vin) p(vcc) p(vee) 27. 586.9E-18 -0.030183 -0.030367 tests/==out/d_bjt-diffpair-nocap.ckt.out000066400000000000000000000246241316501211100204730ustar00rootroot00000000000000difpair ckt - simple differential pair # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. # vb(q1) vb(q2) vb(q3) vb(q4) vb(qnl) 27. -0.0076611 -0.0076611 -11.221 -11.221 ?? # vbi(q1) vbi(q2) vbi(q3) vbi(q4) vbi(qnl) 27. -0.0084272 -0.0084272 -11.223 -11.223 ?? # i(vin) i(vcc) i(vee) 27. -7.6611u -0.0025152 0.0025306 # ic(q1) ic(q2) ic(q3) ic(q4) ic(qnl) 27. 677.09u 677.09u 0.0013695 0.0011327 ?? # ice(q1) ice(q2) ice(q3) ice(q4) ice(qnl) 27. 677.09u 677.09u 0.0013695 0.0011327 ?? # ib(q1) ib(q2) ib(q3) ib(q4) ib(qnl) 27. 7.6611u 7.6611u 14.159u 14.159u ?? # ipi(q1) ipi(q2) ipi(q3) ipi(q4) ipi(qnl) 27. 7.6611u 7.6611u 14.159u 14.159u ?? # imu(q1) imu(q2) imu(q3) imu(q4) imu(qnl) 27. -5.2376p -5.2376p -10.453p -1.4212f ?? # ie(q1) ie(q2) ie(q3) ie(q4) ie(qnl) 27. -684.75u -684.75u -0.0013837 -0.0011469 ?? # vbe(q1) vbe(q2) vbe(q3) vbe(q4) vbe(qnl) 27. 0.76231 0.76231 0.77885 0.77885 ?? # vbei(q1) vbei(q2) vbei(q3) vbei(q4) vbei(qnl) 27. 0.76155 0.76155 0.77743 0.77743 ?? # vbc(q1) vbc(q2) vbc(q3) vbc(q4) vbc(qnl) 27. -5.2368 -5.2368 -10.451 0. ?? # vbci(q1) vbci(q2) vbci(q3) vbci(q4) vbci(qnl) 27. -5.2375 -5.2375 -10.453 -0.0014159 ?? # gm(q1) gm(q2) gm(q3) gm(q4) gm(qnl) 27. 0.026166 0.026166 0.052927 0.043773 ?? # gpi(q1) gpi(q2) gpi(q3) gpi(q4) gpi(qnl) 27. 296.21u 296.21u 547.43u 547.43u ?? # gmu(q1) gmu(q2) gmu(q3) gmu(q4) gmu(qnl) 27. 1.p 1.p 1.p 1.0037p ?? # gx(q1) gx(q2) gx(q3) gx(q4) gx(qnl) 27. 0.01 0.01 0.01 0.01 ?? # go(q1) go(q2) go(q3) go(q4) go(qnl) 27. 12.258u 12.258u 22.654u 22.654u ?? # cpi(q1) cpi(q2) cpi(q3) cpi(q4) cpi(qnl) 27. 0. 0. 0. 0. ?? # cmu(q1) cmu(q2) cmu(q3) cmu(q4) cmu(qnl) 27. 0. 0. 0. 0. ?? # cbx(q1) cbx(q2) cbx(q3) cbx(q4) cbx(qnl) 27. 0. 0. 0. 0. ?? # ccs(q1) ccs(q2) ccs(q3) ccs(q4) ccs(qnl) 27. 0. 0. 0. 0. ?? # i(rs1) i(rs2) i(rc1) i(rc2) i(rbias) 27. 7.6611u -7.6611u -677.09u -677.09u -0.0011611 # p(rs1) p(rs2) p(rc1) p(rc2) p(rbias) 27. 58.693n 58.693n 0.0045845 0.0045845 0.026961 # i(vin) i(vcc) i(vee) 27. -7.6611u -0.0025152 0.0025306 # p(vin) p(vcc) p(vee) 27. 586.9E-18 -0.030183 -0.030367 v(4) -4. 0. 4. 8. 12. v(5) -4. 0. 4. 8. 12. +-----------------+----------------+-----------------+----------------+ 0. | . . * . | 10.n | . * . +. | 20.n | . * . . + | 30.n | * . . . + | 40.n | * . . . + | 50.n | * . . . + | 60.n | * . . . + | 70.n | * . . . + | 80.n | . * . . + | 90.n | . * . +. | 100.n | . . * . | 110.n | . + . *. | 120.n | . + . . * | 130.n | + . . . * | 140.n | + . . . * | 150.n | + . . . * | 160.n | + . . . * | 170.n | + . . . * | 180.n | . + . . * | 190.n | . + . *. | 200.n | . . * . | 210.n | . * . +. | 220.n | . * . . + | 230.n | * . . . + | 240.n | * . . . + | 250.n | * . . . + | 260.n | * . . . + | 270.n | * . . . + | 280.n | . * . . + | +-----------------+----------------+-----------------+----------------+ vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + * . | 2.1544K| . + * . | 4.6416K| . + * . | 10.K | . + * . | 21.544K| . + * . | 46.416K| . + * . | 100.K | . + * . | 215.44K| . + * . | 464.16K| . + * . | 1.Meg | . + * . | 2.1544M| . + * . | 4.6416M| . + * . | 10.Meg | . + * . | 21.544M| . + * . | 46.416M| . + * . | 100.Meg| . + * . | 215.44M| . + * . | 464.16M| . + * . | 1.G | . + * . | 2.1544G| . + * . | 4.6416G| . + * . | 10.G | . + * . | +-----------------+----------------+-----------------+----------------+ # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + . * | 2.1544K| . + . * | 4.6416K| . + . * | 10.K | . + . * | 21.544K| . + . * | 46.416K| . + . * | 100.K | . + . * | 215.44K| . + . * | 464.16K| . + . * | 1.Meg | . + . * | 2.1544M| . + . * | 4.6416M| . + . * | 10.Meg | . + . * | 21.544M| . + . * | 46.416M| . + . * | 100.Meg| . + . * | 215.44M| . + . * | 464.16M| . + . * | 1.G | . + . * | 2.1544G| . + . * | 4.6416G| . + . * | 10.G | . + . * | +-----------------+----------------+-----------------+----------------+ tests/==out/d_bjt-diffpair-tf.ckt.out000066400000000000000000000401211316501211100177720ustar00rootroot00000000000000difpair ckt - simple differential pair v(4) -4. 0. 4. 8. 12. v(5) -4. 0. 4. 8. 12. +-----------------+----------------+-----------------+----------------+ -0.2 | + . . . *| -0.19 | + . . . *| -0.18 | + . . . *| -0.17 | + . . . *| -0.16 | + . . . * | -0.15 | + . . . * | -0.14 | + . . . * | -0.13 | + . . . * | -0.12 | + . . . * | -0.11 | + . . . * | -0.1 | + . . . * | -0.09 | + . . . * | -0.08 | + . . . * | -0.07 | + . . * | -0.06 | . + . . * | -0.05 | . + . . * | -0.04 | . + . . * | -0.03 | . + . *. | -0.02 | . + . * . | -0.01 | . . + * . | 0. | . . * . | 0.01 | . . * + . | 0.02 | . * . + . | 0.03 | . * . +. | 0.04 | . * . . + | 0.05 | . * . . + | 0.06 | . * . . + | 0.07 | * . . + | 0.08 | * . . . + | 0.09 | * . . . + | 0.1 | * . . . + | 0.11 | * . . . + | 0.12 | * . . . + | 0.13 | * . . . + | 0.14 | * . . . + | 0.15 | * . . . + | 0.16 | * . . . + | 0.17 | * . . . + | 0.18 | * . . . + | 0.19 | * . . . +| 0.2 | * . . . +| +-----------------+----------------+-----------------+----------------+ #Time qbe(q1) qbe(q2) qbe(q3) qbe(q4) qbe(qnl) 0. 2.7084p 2.7084p 5.478p 4.531p ?? 10.n 2.788p 2.6288p 5.4782p 4.5309p ?? 20.n 2.9741p 2.4432p 5.4788p 4.5308p ?? 30.n 3.2356p 2.1821p 5.4795p 4.5307p ?? 40.n 3.538p 1.88p 5.4804p 4.5306p ?? 50.n 3.8401p 1.5782p 5.4811p 4.5307p ?? 60.n 4.1003p 1.3178p 5.4816p 4.5307p ?? 70.n 4.2832p 1.1346p 5.4819p 4.5309p ?? 80.n 4.3637p 1.0538p 5.4819p 4.531p ?? 90.n 4.3297p 1.0875p 5.4815p 4.5311p ?? 100.n 4.181p 1.2361p 5.4808p 4.5312p ?? 110.n 3.9271p 1.4897p 5.4798p 4.5313p ?? 120.n 3.5867p 1.8299p 5.4786p 4.5314p ?? 130.n 3.1863p 2.2298p 5.4774p 4.5314p ?? 140.n 2.7599p 2.6555p 5.4763p 4.5314p ?? 150.n 2.3457p 3.0688p 5.4754p 4.5313p ?? 160.n 1.9825p 3.4309p 5.4747p 4.5312p ?? 170.n 1.7052p 3.7072p 5.4745p 4.531p ?? 180.n 1.5399p 3.872p 5.4746p 4.5309p ?? 190.n 1.5006p 3.9115p 5.4751p 4.5308p ?? 200.n 1.5884p 3.8244p 5.4758p 4.5307p ?? 210.n 1.7928p 3.6212p 5.4768p 4.5306p ?? 220.n 2.0932p 3.3223p 5.4779p 4.5305p ?? 230.n 2.4604p 2.9565p 5.479p 4.5305p ?? 240.n 2.8585p 2.5597p 5.48p 4.5306p ?? 250.n 3.2476p 2.1713p 5.4808p 4.5306p ?? 260.n 3.5879p 1.8313p 5.4814p 4.5307p ?? 270.n 3.8442p 1.5749p 5.4817p 4.5309p ?? 280.n 3.9906p 1.428p 5.4817p 4.531p ?? 290.n 4.0136p 1.4046p 5.4813p 4.5311p ?? 300.n 3.9121p 1.5057p 5.4806p 4.5312p ?? #Time cpi(q1) cpi(q2) cpi(q3) cpi(q4) cpi(qnl) 0. 104.71p 104.71p 211.8p 175.18p ?? 10.n 107.79p 101.64p 211.81p 175.18p ?? 20.n 114.99p 94.461p 211.83p 175.17p ?? 30.n 125.1p 84.367p 211.86p 175.17p ?? 40.n 136.79p 72.689p 211.89p 175.17p ?? 50.n 148.47p 61.017p 211.92p 175.17p ?? 60.n 158.53p 50.95p 211.94p 175.17p ?? 70.n 165.6p 43.868p 211.95p 175.18p ?? 80.n 168.72p 40.744p 211.95p 175.18p ?? 90.n 167.4p 42.048p 211.93p 175.19p ?? 100.n 161.65p 47.791p 211.91p 175.19p ?? 110.n 151.84p 57.598p 211.87p 175.2p ?? 120.n 138.67p 70.75p 211.82p 175.2p ?? 130.n 123.19p 86.211p 211.78p 175.2p ?? 140.n 106.71p 102.67p 211.73p 175.2p ?? 150.n 90.691p 118.65p 211.7p 175.2p ?? 160.n 76.65p 132.65p 211.67p 175.19p ?? 170.n 65.93p 143.33p 211.66p 175.19p ?? 180.n 59.538p 149.71p 211.67p 175.18p ?? 190.n 58.017p 151.23p 211.69p 175.18p ?? 200.n 61.412p 147.86p 211.71p 175.17p ?? 210.n 69.316p 140.01p 211.75p 175.17p ?? 220.n 80.931p 128.45p 211.79p 175.17p ?? 230.n 95.129p 114.31p 211.84p 175.17p ?? 240.n 110.52p 98.966p 211.88p 175.17p ?? 250.n 125.56p 83.951p 211.91p 175.17p ?? 260.n 138.72p 70.805p 211.93p 175.17p ?? 270.n 148.63p 60.889p 211.94p 175.18p ?? 280.n 154.29p 55.213p 211.94p 175.18p ?? 290.n 155.18p 54.307p 211.93p 175.19p ?? 300.n 151.26p 58.214p 211.9p 175.19p ?? #Time vbe(q1) vbe(q2) vbe(q3) vbe(q4) vbe(qnl) 0. 0.76231 0.76231 0.77885 0.77885 ?? 10.n 0.76449 0.76013 0.77885 0.77885 ?? 20.n 0.76748 0.75694 0.77884 0.77884 ?? 30.n 0.77072 0.75298 0.77884 0.77884 ?? 40.n 0.77374 0.74846 0.77885 0.77885 ?? 50.n 0.77613 0.74371 0.77885 0.77885 ?? 60.n 0.77762 0.7393 0.77885 0.77885 ?? 70.n 0.77809 0.73613 0.77885 0.77885 ?? 80.n 0.77755 0.73525 0.77885 0.77885 ?? 90.n 0.77608 0.73731 0.77885 0.77885 ?? 100.n 0.77378 0.74197 0.77885 0.77885 ?? 110.n 0.77073 0.74814 0.77885 0.77885 ?? 120.n 0.76707 0.75471 0.77885 0.77885 ?? 130.n 0.76292 0.76086 0.77885 0.77885 ?? 140.n 0.75846 0.76609 0.77885 0.77885 ?? 150.n 0.75395 0.77013 0.77885 0.77885 ?? 160.n 0.74978 0.77287 0.77885 0.77885 ?? 170.n 0.74653 0.77428 0.77885 0.77885 ?? 180.n 0.74491 0.77443 0.77885 0.77885 ?? 190.n 0.74552 0.77344 0.77884 0.77884 ?? 200.n 0.7484 0.77145 0.77884 0.77884 ?? 210.n 0.75294 0.76862 0.77884 0.77884 ?? 220.n 0.75824 0.76508 0.77884 0.77884 ?? 230.n 0.76349 0.76098 0.77884 0.77884 ?? 240.n 0.76809 0.75653 0.77885 0.77885 ?? 250.n 0.7717 0.75199 0.77885 0.77885 ?? 260.n 0.77411 0.74778 0.77885 0.77885 ?? 270.n 0.77529 0.74452 0.77885 0.77885 ?? 280.n 0.77525 0.743 0.77885 0.77885 ?? 290.n 0.77413 0.74384 0.77885 0.77885 ?? 300.n 0.77205 0.74702 0.77885 0.77885 ?? v(5) 2. 4. 6. 8. 10. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 10.n | . * . . | 20.n | . *. . | 30.n | . . * . | 40.n | . . * . | 50.n | . . * | 60.n | . . . * | 70.n | . . . * | 80.n | . . . * | 90.n | . . . * | 100.n | . . . * | 110.n | . . . * | 120.n | . . * . | 130.n | . . * . | 140.n | . * . . | 150.n | . * . . | 160.n | * . . . | 170.n | * . . . | 180.n | * . . . | 190.n | * . . . | 200.n | * . . . | 210.n | * . . . | 220.n | * . . . | 230.n | . * . . | 240.n | . * . . | 250.n | . . * . | 260.n | . . * . | 270.n | . . * | 280.n | . . . * | 290.n | . . . * | 300.n | . . . * | +-----------------+----------------+-----------------+----------------+ # cpi(q1) cpi(q2) cpi(q3) cpi(q4) cpi(qnl) 27. 104.71p 104.71p 211.8p 175.18p ?? #Freq vm(5) vp(5) 10.K 87.848 -0.0048623 15.849K 87.847 -0.0077061 25.119K 87.843 -0.012213 39.811K 87.833 -0.019355 63.096K 87.808 -0.03067 100.K 87.746 -0.048585 158.49K 87.59 -0.076911 251.19K 87.202 -0.12153 398.11K 86.249 -0.19121 630.96K 83.987 -0.29769 1.Meg 79.008 -0.4526 1.5849Meg 69.588 -0.65666 2.5119Meg 55.654 -0.88493 3.9811Meg 40.315 -1.0943 6.3096Meg 27.213 -1.256 10.Meg 17.685 -1.3679 15.849Meg 11.298 -1.4411 25.119Meg 7.1679 -1.4881 39.811Meg 4.5342 -1.5182 63.096Meg 2.8643 -1.5374 100.Meg 1.8082 -1.5497 158.49Meg 1.1411 -1.5575 251.19Meg 0.72007 -1.5624 398.11Meg 0.45435 -1.5655 630.96Meg 0.28668 -1.5674 1.G 0.18088 -1.5687 vm(5) 0. 25. 50. 75. 100. vp(5) -2. -1. 0. 1. 2. +-----------------+----------------+-----------------+----------------+ 10.K | . + . * | 15.849K| . + . * | 25.119K| . + . * | 39.811K| . + . * | 63.096K| . +. . * | 100.K | . +. . * | 158.49K| . +. . * | 251.19K| . + . . * | 398.11K| . + . . * | 630.96K| . + . . * | 1.Meg | . + . . * | 1.5849M| . + . * . | 2.5119M| . + . * . | 3.9811M| + . * . . | 6.3096M| + .* . . | 10.Meg | +* . . . | 15.849M| * + . . . | 25.119M| * + . . . | 39.811M| * + . . . | 63.096M| * + . . . | 100.Meg|* + . . . | 158.49M|* + . . . | 251.19M|* + . . . | 398.11M* + . . . | 630.96M* + . . . | 1.G * + . . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=9, dc=227, tran=164, fourier=0, total=1080 transient timesteps: accepted=136, rejected=0, total=136 nodes: user=10, subckt=0, model=4, total=14 dctran density=58.2%, ac density=58.2% tests/==out/d_bjt-diffpair-tr.ckt.out000066400000000000000000000775001316501211100200210ustar00rootroot00000000000000difpair ckt - simple differential pair .option method=gear order=1 ^ ? need reverse, forward, or auto .option method=gear order=1 ^ ? what's this? # ccs(q1) ccs(q2) ccs(q3) ccs(q4) ccs(qnl) 27. 0. 0. 0. 0. ?? #Time qbc(q1) qbc(q2) qbc(q3) qbc(q4) qbc(qnl) 0. -2.095p -2.095p -4.1811p -568.5E-18 ?? 5.n -2.07p -2.1082p -4.1834p -568.8E-18 ?? 10.n -2.0141p -2.1522p -4.1867p -568.8E-18 ?? 15.n -1.9336p -2.2246p -4.1898p -568.8E-18 ?? 20.n -1.8304p -2.3224p -4.1926p -568.7E-18 ?? 25.n -1.7076p -2.4412p -4.1951p -568.7E-18 ?? 30.n -1.5694p -2.5761p -4.1973p -568.7E-18 ?? 35.n -1.421p -2.7224p -4.1992p -568.6E-18 ?? 40.n -1.2675p -2.8747p -4.2006p -568.6E-18 ?? 45.n -1.1144p -3.0278p -4.2016p -568.6E-18 ?? 50.n -967.07f -3.1764p -4.2022p -568.5E-18 ?? 55.n -830.51f -3.3155p -4.2023p -568.5E-18 ?? 60.n -709.41f -3.4403p -4.2019p -568.4E-18 ?? 65.n -607.89f -3.5467p -4.201p -568.4E-18 ?? 70.n -529.33f -3.6311p -4.1996p -568.3E-18 ?? 75.n -476.35f -3.6907p -4.1977p -568.3E-18 ?? 80.n -450.71f -3.7237p -4.1954p -568.2E-18 ?? 85.n -453.41f -3.7287p -4.1927p -568.2E-18 ?? 90.n -484.72f -3.7053p -4.1896p -568.2E-18 ?? 95.n -544.28f -3.6536p -4.1863p -568.2E-18 ?? 100.n -631.21f -3.5742p -4.1829p -568.2E-18 ?? 105.n -744.07f -3.4683p -4.1795p -568.2E-18 ?? 110.n -880.92f -3.3378p -4.1761p -568.2E-18 ?? 115.n -1.0393p -3.185p -4.1729p -568.2E-18 ?? 120.n -1.2161p -3.0129p -4.17p -568.2E-18 ?? 125.n -1.4079p -2.8248p -4.1673p -568.3E-18 ?? 130.n -1.6107p -2.6248p -4.1651p -568.3E-18 ?? 135.n -1.82p -2.4172p -4.1634p -568.3E-18 ?? 140.n -2.0312p -2.2067p -4.1621p -568.4E-18 ?? 145.n -2.2394p -1.9981p -4.1614p -568.4E-18 ?? 150.n -2.4397p -1.7964p -4.1612p -568.5E-18 ?? 155.n -2.6272p -1.6064p -4.1615p -568.5E-18 ?? 160.n -2.7976p -1.4327p -4.1623p -568.6E-18 ?? 165.n -2.9465p -1.2794p -4.1636p -568.6E-18 ?? 170.n -3.0706p -1.1503p -4.1654p -568.7E-18 ?? 175.n -3.167p -1.0482p -4.1675p -568.7E-18 ?? 180.n -3.2336p -975.33f -4.17p -568.7E-18 ?? 185.n -3.2691p -933.18f -4.1726p -568.7E-18 ?? 190.n -3.2729p -922.35f -4.1755p -568.8E-18 ?? 195.n -3.2453p -942.75f -4.1784p -568.8E-18 ?? 200.n -3.1873p -993.61f -4.1814p -568.8E-18 ?? 205.n -3.1003p -1.0735p -4.1844p -568.8E-18 ?? 210.n -2.9866p -1.1804p -4.1873p -568.8E-18 ?? 215.n -2.8491p -1.3116p -4.1901p -568.7E-18 ?? 220.n -2.6911p -1.464p -4.1927p -568.7E-18 ?? 225.n -2.5164p -1.6339p -4.195p -568.7E-18 ?? 230.n -2.3293p -1.8171p -4.1971p -568.7E-18 ?? 235.n -2.1346p -2.0092p -4.1988p -568.6E-18 ?? 240.n -1.9372p -2.2052p -4.2001p -568.6E-18 ?? 245.n -1.7421p -2.4001p -4.201p -568.5E-18 ?? 250.n -1.5543p -2.5889p -4.2014p -568.5E-18 ?? 255.n -1.3788p -2.7667p -4.2014p -568.5E-18 ?? 260.n -1.2203p -2.9288p -4.2009p -568.4E-18 ?? 265.n -1.0827p -3.071p -4.2p -568.4E-18 ?? 270.n -969.74f -3.1896p -4.1986p -568.3E-18 ?? 275.n -884.09f -3.2818p -4.1967p -568.3E-18 ?? 280.n -827.8f -3.3452p -4.1944p -568.3E-18 ?? 285.n -802.06f -3.3786p -4.1918p -568.2E-18 ?? 290.n -807.3f -3.3812p -4.1888p -568.2E-18 ?? 295.n -843.19f -3.3531p -4.1857p -568.2E-18 ?? 300.n -908.75f -3.2951p -4.1824p -568.2E-18 ?? 305.n -1.0024p -3.2086p -4.179p -568.2E-18 ?? 310.n -1.1219p -3.0955p -4.1758p -568.2E-18 ?? 315.n -1.2647p -2.9585p -4.1727p -568.2E-18 ?? 320.n -1.4273p -2.8008p -4.1698p -568.2E-18 ?? 325.n -1.6061p -2.6259p -4.1672p -568.3E-18 ?? 330.n -1.7969p -2.438p -4.1651p -568.3E-18 ?? 335.n -1.9951p -2.2417p -4.1634p -568.3E-18 ?? 340.n -2.1958p -2.0418p -4.1622p -568.4E-18 ?? 345.n -2.3941p -1.8432p -4.1615p -568.4E-18 ?? 350.n -2.585p -1.651p -4.1613p -568.5E-18 ?? 355.n -2.7636p -1.47p -4.1616p -568.5E-18 ?? 360.n -2.9253p -1.305p -4.1625p -568.6E-18 ?? 365.n -3.0661p -1.16p -4.1638p -568.6E-18 ?? 370.n -3.1823p -1.0388p -4.1656p -568.7E-18 ?? 375.n -3.2712p -944.25f -4.1677p -568.7E-18 ?? 380.n -3.3307p -878.54f -4.1701p -568.7E-18 ?? 385.n -3.3595p -843.07f -4.1728p -568.7E-18 ?? 390.n -3.3571p -838.46f -4.1756p -568.8E-18 ?? 395.n -3.3238p -864.6f -4.1786p -568.8E-18 ?? 400.n -3.2605p -920.71f -4.1815p -568.8E-18 ?? 405.n -3.1687p -1.0054p -4.1845p -568.8E-18 ?? 410.n -3.0506p -1.1166p -4.1874p -568.7E-18 ?? 415.n -2.9091p -1.2519p -4.1901p -568.7E-18 ?? 420.n -2.7473p -1.408p -4.1927p -568.7E-18 ?? 425.n -2.5692p -1.5813p -4.195p -568.7E-18 ?? 430.n -2.379p -1.7676p -4.1971p -568.7E-18 ?? 435.n -2.1813p -1.9626p -4.1987p -568.6E-18 ?? 440.n -1.981p -2.1614p -4.2001p -568.6E-18 ?? 445.n -1.7832p -2.359p -4.2009p -568.5E-18 ?? 450.n -1.5929p -2.5503p -4.2014p -568.5E-18 ?? 455.n -1.415p -2.7305p -4.2014p -568.5E-18 ?? 460.n -1.2541p -2.8949p -4.2009p -568.4E-18 ?? 465.n -1.1144p -3.0393p -4.1999p -568.4E-18 ?? 470.n -999.22f -3.1601p -4.1985p -568.3E-18 ?? 475.n -911.53f -3.2543p -4.1967p -568.3E-18 ?? 480.n -853.31f -3.3196p -4.1944p -568.3E-18 ?? 485.n -825.77f -3.3548p -4.1917p -568.2E-18 ?? 490.n -829.34f -3.359p -4.1888p -568.2E-18 ?? 495.n -863.69f -3.3325p -4.1856p -568.2E-18 ?? 500.n -927.86f -3.2759p -4.1824p -568.2E-18 ?? #Time cmu(q1) cmu(q2) cmu(q3) cmu(q4) cmu(qnl) 0. 400.01f 400.01f 400.f 401.46f ?? 5.n 400.01f 400.01f 400.f 401.46f ?? 10.n 400.01f 400.01f 400.f 401.46f ?? 15.n 400.01f 400.01f 400.f 401.46f ?? 20.n 400.01f 400.01f 400.f 401.46f ?? 25.n 400.01f 400.01f 400.f 401.46f ?? 30.n 400.01f 400.01f 400.f 401.46f ?? 35.n 400.01f 400.01f 400.f 401.46f ?? 40.n 400.01f 400.01f 400.f 401.46f ?? 45.n 400.01f 400.01f 400.f 401.46f ?? 50.n 400.02f 400.01f 400.f 401.46f ?? 55.n 400.02f 400.f 400.f 401.46f ?? 60.n 400.02f 400.f 400.f 401.46f ?? 65.n 400.03f 400.f 400.f 401.46f ?? 70.n 400.03f 400.f 400.f 401.46f ?? 75.n 400.03f 400.f 400.f 401.46f ?? 80.n 400.04f 400.f 400.f 401.46f ?? 85.n 400.04f 400.f 400.f 401.46f ?? 90.n 400.03f 400.f 400.f 401.46f ?? 95.n 400.03f 400.f 400.f 401.46f ?? 100.n 400.03f 400.f 400.f 401.46f ?? 105.n 400.02f 400.f 400.f 401.46f ?? 110.n 400.02f 400.f 400.f 401.46f ?? 115.n 400.02f 400.01f 400.f 401.46f ?? 120.n 400.01f 400.01f 400.f 401.46f ?? 125.n 400.01f 400.01f 400.f 401.46f ?? 130.n 400.01f 400.01f 400.f 401.46f ?? 135.n 400.01f 400.01f 400.f 401.46f ?? 140.n 400.01f 400.01f 400.f 401.46f ?? 145.n 400.01f 400.01f 400.f 401.46f ?? 150.n 400.01f 400.01f 400.f 401.46f ?? 155.n 400.01f 400.01f 400.f 401.46f ?? 160.n 400.01f 400.01f 400.f 401.46f ?? 165.n 400.01f 400.01f 400.f 401.46f ?? 170.n 400.01f 400.01f 400.f 401.46f ?? 175.n 400.01f 400.02f 400.f 401.46f ?? 180.n 400.f 400.02f 400.f 401.46f ?? 185.n 400.f 400.02f 400.f 401.46f ?? 190.n 400.f 400.02f 400.f 401.46f ?? 195.n 400.f 400.02f 400.f 401.46f ?? 200.n 400.01f 400.02f 400.f 401.46f ?? 205.n 400.01f 400.01f 400.f 401.46f ?? 210.n 400.01f 400.01f 400.f 401.46f ?? 215.n 400.01f 400.01f 400.f 401.46f ?? 220.n 400.01f 400.01f 400.f 401.46f ?? 225.n 400.01f 400.01f 400.f 401.46f ?? 230.n 400.01f 400.01f 400.f 401.46f ?? 235.n 400.01f 400.01f 400.f 401.46f ?? 240.n 400.01f 400.01f 400.f 401.46f ?? 245.n 400.01f 400.01f 400.f 401.46f ?? 250.n 400.01f 400.01f 400.f 401.46f ?? 255.n 400.01f 400.01f 400.f 401.46f ?? 260.n 400.01f 400.01f 400.f 401.46f ?? 265.n 400.01f 400.01f 400.f 401.46f ?? 270.n 400.02f 400.01f 400.f 401.46f ?? 275.n 400.02f 400.f 400.f 401.46f ?? 280.n 400.02f 400.f 400.f 401.46f ?? 285.n 400.02f 400.f 400.f 401.46f ?? 290.n 400.02f 400.f 400.f 401.46f ?? 295.n 400.02f 400.f 400.f 401.46f ?? 300.n 400.02f 400.f 400.f 401.46f ?? 305.n 400.02f 400.f 400.f 401.46f ?? 310.n 400.01f 400.01f 400.f 401.46f ?? 315.n 400.01f 400.01f 400.f 401.46f ?? 320.n 400.01f 400.01f 400.f 401.46f ?? 325.n 400.01f 400.01f 400.f 401.46f ?? 330.n 400.01f 400.01f 400.f 401.46f ?? 335.n 400.01f 400.01f 400.f 401.46f ?? 340.n 400.01f 400.01f 400.f 401.46f ?? 345.n 400.01f 400.01f 400.f 401.46f ?? 350.n 400.01f 400.01f 400.f 401.46f ?? 355.n 400.01f 400.01f 400.f 401.46f ?? 360.n 400.01f 400.01f 400.f 401.46f ?? 365.n 400.01f 400.01f 400.f 401.46f ?? 370.n 400.01f 400.02f 400.f 401.46f ?? 375.n 400.f 400.02f 400.f 401.46f ?? 380.n 400.f 400.02f 400.f 401.46f ?? 385.n 400.f 400.02f 400.f 401.46f ?? 390.n 400.f 400.02f 400.f 401.46f ?? 395.n 400.f 400.02f 400.f 401.46f ?? 400.n 400.f 400.02f 400.f 401.46f ?? 405.n 400.01f 400.02f 400.f 401.46f ?? 410.n 400.01f 400.01f 400.f 401.46f ?? 415.n 400.01f 400.01f 400.f 401.46f ?? 420.n 400.01f 400.01f 400.f 401.46f ?? 425.n 400.01f 400.01f 400.f 401.46f ?? 430.n 400.01f 400.01f 400.f 401.46f ?? 435.n 400.01f 400.01f 400.f 401.46f ?? 440.n 400.01f 400.01f 400.f 401.46f ?? 445.n 400.01f 400.01f 400.f 401.46f ?? 450.n 400.01f 400.01f 400.f 401.46f ?? 455.n 400.01f 400.01f 400.f 401.46f ?? 460.n 400.01f 400.01f 400.f 401.46f ?? 465.n 400.01f 400.01f 400.f 401.46f ?? 470.n 400.02f 400.01f 400.f 401.46f ?? 475.n 400.02f 400.f 400.f 401.46f ?? 480.n 400.02f 400.f 400.f 401.46f ?? 485.n 400.02f 400.f 400.f 401.46f ?? 490.n 400.02f 400.f 400.f 401.46f ?? 495.n 400.02f 400.f 400.f 401.46f ?? 500.n 400.02f 400.f 400.f 401.46f ?? #Time vbc(q1) vbc(q2) vbc(q3) vbc(q4) vbc(qnl) 0. -5.2368 -5.2368 -10.451 0. ?? 5.n -5.1733 -5.2702 -10.457 0. ?? 10.n -5.033 -5.3808 -10.465 0. ?? 15.n -4.8313 -5.5624 -10.473 0. ?? 20.n -4.5727 -5.8074 -10.48 0. ?? 25.n -4.2653 -6.1048 -10.486 0. ?? 30.n -3.9196 -6.4425 -10.492 0. ?? 35.n -3.5482 -6.8083 -10.496 0. ?? 40.n -3.1645 -7.1892 -10.5 0. ?? 45.n -2.7818 -7.572 -10.503 0. ?? 50.n -2.4135 -7.9435 -10.504 0. ?? 55.n -2.0723 -8.291 -10.504 0. ?? 60.n -1.7699 -8.6028 -10.503 0. ?? 65.n -1.5165 -8.8683 -10.501 0. ?? 70.n -1.3206 -9.0788 -10.497 0. ?? 75.n -1.1886 -9.2274 -10.493 0. ?? 80.n -1.1251 -9.3092 -10.487 0. ?? 85.n -1.1324 -9.3213 -10.48 0. ?? 90.n -1.2113 -9.2622 -10.473 0. ?? 95.n -1.3608 -9.1322 -10.464 0. ?? 100.n -1.5787 -8.9331 -10.456 0. ?? 105.n -1.8614 -8.6679 -10.447 0. ?? 110.n -2.204 -8.3411 -10.439 0. ?? 115.n -2.6004 -7.9587 -10.431 0. ?? 120.n -3.0429 -7.5279 -10.423 0. ?? 125.n -3.5227 -7.0574 -10.417 0. ?? 130.n -4.0299 -6.5572 -10.411 0. ?? 135.n -4.5534 -6.038 -10.407 0. ?? 140.n -5.0814 -5.5116 -10.404 0. ?? 145.n -5.6019 -4.9902 -10.402 0. ?? 150.n -6.1024 -4.486 -10.401 0. ?? 155.n -6.5711 -4.0112 -10.402 0. ?? 160.n -6.9965 -3.5772 -10.404 0. ?? 165.n -7.3685 -3.1945 -10.408 0. ?? 170.n -7.6783 -2.8721 -10.412 0. ?? 175.n -7.9187 -2.6174 -10.417 0. ?? 180.n -8.0845 -2.4359 -10.423 0. ?? 185.n -8.1726 -2.3311 -10.43 0. ?? 190.n -8.1815 -2.3047 -10.437 0. ?? 195.n -8.1119 -2.3564 -10.445 0. ?? 200.n -7.9661 -2.4841 -10.452 0. ?? 205.n -7.7481 -2.6844 -10.46 0. ?? 210.n -7.4634 -2.9522 -10.467 0. ?? 215.n -7.1191 -3.2807 -10.474 0. ?? 220.n -6.7236 -3.6622 -10.48 0. ?? 225.n -6.2865 -4.0874 -10.486 0. ?? 230.n -5.8187 -4.5458 -10.491 0. ?? 235.n -5.3317 -5.026 -10.495 0. ?? 240.n -4.838 -5.5161 -10.499 0. ?? 245.n -4.3502 -6.0034 -10.501 0. ?? 250.n -3.881 -6.4753 -10.502 0. ?? 255.n -3.4426 -6.9196 -10.502 0. ?? 260.n -3.0465 -7.3245 -10.501 0. ?? 265.n -2.7031 -7.6796 -10.498 0. ?? 270.n -2.4211 -7.9757 -10.495 0. ?? 275.n -2.2075 -8.2055 -10.49 0. ?? 280.n -2.0674 -8.3635 -10.485 0. ?? 285.n -2.0036 -8.4463 -10.478 0. ?? 290.n -2.0174 -8.4521 -10.471 0. ?? 295.n -2.1077 -8.3813 -10.463 0. ?? 300.n -2.2723 -8.2357 -10.454 0. ?? 305.n -2.5069 -8.0188 -10.446 0. ?? 310.n -2.8064 -7.7357 -10.438 0. ?? 315.n -3.1637 -7.3927 -10.43 0. ?? 320.n -3.5707 -6.9979 -10.423 0. ?? 325.n -4.0181 -6.5603 -10.417 0. ?? 330.n -4.4953 -6.0904 -10.411 0. ?? 335.n -4.9909 -5.5994 -10.407 0. ?? 340.n -5.4928 -5.0995 -10.404 0. ?? 345.n -5.9885 -4.603 -10.402 0. ?? 350.n -6.4656 -4.1226 -10.402 0. ?? 355.n -6.9118 -3.6704 -10.403 0. ?? 360.n -7.3158 -3.2581 -10.405 0. ?? 365.n -7.6672 -2.8961 -10.408 0. ?? 370.n -7.9573 -2.5936 -10.412 0. ?? 375.n -8.1789 -2.3577 -10.418 0. ?? 380.n -8.327 -2.194 -10.424 0. ?? 385.n -8.3984 -2.106 -10.431 0. ?? 390.n -8.3919 -2.0951 -10.438 0. ?? 395.n -8.308 -2.1611 -10.445 0. ?? 400.n -8.1491 -2.302 -10.452 0. ?? 405.n -7.919 -2.5143 -10.46 0. ?? 410.n -7.6233 -2.7929 -10.467 0. ?? 415.n -7.269 -3.1315 -10.474 0. ?? 420.n -6.8641 -3.5222 -10.48 0. ?? 425.n -6.4185 -3.9558 -10.486 0. ?? 430.n -5.9427 -4.4221 -10.491 0. ?? 435.n -5.4483 -4.9097 -10.495 0. ?? 440.n -4.9476 -5.4067 -10.499 0. ?? 445.n -4.4531 -5.9006 -10.501 0. ?? 450.n -3.9775 -6.3789 -10.502 0. ?? 455.n -3.533 -6.8291 -10.502 0. ?? 460.n -3.1311 -7.2398 -10.501 0. ?? 465.n -2.7821 -7.6005 -10.498 0. ?? 470.n -2.4947 -7.9019 -10.495 0. ?? 475.n -2.2761 -8.1368 -10.49 0. ?? 480.n -2.1311 -8.2996 -10.484 0. ?? 485.n -2.0629 -8.3868 -10.478 0. ?? 490.n -2.0724 -8.3968 -10.47 0. ?? 495.n -2.159 -8.3299 -10.463 0. ?? 500.n -2.32 -8.1878 -10.454 0. ?? v(5) 2. 4. 6. 8. 10. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 5.n | . * . . | 10.n | . * . . | 15.n | . * . . | 20.n | . * . . | 25.n | . .* . | 30.n | . . * . | 35.n | . . * . | 40.n | . . * . | 45.n | . . * . | 50.n | . . *. | 55.n | . . . * | 60.n | . . . * | 65.n | . . . * | 70.n | . . . * | 75.n | . . . * | 80.n | . . . * | 85.n | . . . * | 90.n | . . . * | 95.n | . . . * | 100.n | . . . * | 105.n | . . . * | 110.n | . . . * | 115.n | . . *. | 120.n | . . * . | 125.n | . . * . | 130.n | . . * . | 135.n | . * . | 140.n | . * . . | 145.n | . * . . | 150.n | . * . . | 155.n | *. . . | 160.n | * . . . | 165.n | * . . . | 170.n | * . . . | 175.n | * . . . | 180.n | * . . . | 185.n | * . . . | 190.n | * . . . | 195.n | * . . . | 200.n | * . . . | 205.n | * . . . | 210.n | * . . . | 215.n | * . . . | 220.n | * . . . | 225.n | .* . . | 230.n | . * . . | 235.n | . * . . | 240.n | . * . . | 245.n | . * . | 250.n | . . * . | 255.n | . . * . | 260.n | . . * . | 265.n | . . * . | 270.n | . . *. | 275.n | . . .* | 280.n | . . . * | 285.n | . . . * | 290.n | . . . * | 295.n | . . . * | 300.n | . . .* | 305.n | . . *. | 310.n | . . * . | 315.n | . . * . | 320.n | . . * . | 325.n | . . * . | 330.n | . * . | 335.n | . * . . | 340.n | . * . . | 345.n | . * . . | 350.n | * . . | 355.n | * . . . | 360.n | * . . . | 365.n | * . . . | 370.n | * . . . | 375.n | * . . . | 380.n | * . . . | 385.n |* . . . | 390.n |* . . . | 395.n |* . . . | 400.n | * . . . | 405.n | * . . . | 410.n | * . . . | 415.n | * . . . | 420.n | * . . . | 425.n | *. . . | 430.n | . * . . | 435.n | . * . . | 440.n | . * . . | 445.n | . *. . | 450.n | . . * . | 455.n | . . * . | 460.n | . . * . | 465.n | . . * . | 470.n | . . *. | 475.n | . . .* | 480.n | . . . * | 485.n | . . . * | 490.n | . . . * | 495.n | . . . * | 500.n | . . .* | +-----------------+----------------+-----------------+----------------+ vm(5) 0. 25. 50. 75. 100. vp(5)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1.K | . + .* | 1.5849K| . + .* | 2.5119K| . + .* | 3.9811K| . + .* | 6.3096K| . + .* | 10.K | . + .* | 15.849K| . + .* | 25.119K| . + .* | 39.811K| . + .* | 63.096K| . + .* | 100.K | . +. .* | 158.49K| . +. .* | 251.19K| . +. .* | 398.11K| . + . * | 630.96K| . + . *. | 1.Meg | . + . * . | 1.5849M| . + . * . | 2.5119M| . + .* . | 3.9811M| . + * . . | 6.3096M| * + . . | 10.Meg | * . + . . | 15.849M| * .+ . . | 25.119M| * + . . | 39.811M| * + . . . | 63.096M| * + . . . | 100.Meg|* + . . . | 158.49M* + . . . | 251.19M* + . . . | 398.11M* + . . . | 630.96M* + . . . | 1.G * + . . | 1.5849G* . + . . | 2.5119G* . + . . | 3.9811G* . + . . | 6.3096G* . + . . | 10.G * . + . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=9, dc=0, tran=494, fourier=0, total=2437 transient timesteps: accepted=416, rejected=0, total=416 nodes: user=9, subckt=0, model=4, total=13 dctran density=65.7%, ac density=65.7% tests/==out/d_bjt-diffpair-tran.ckt.out000066400000000000000000000255321316501211100203360ustar00rootroot00000000000000difpair ckt - simple differential pair # v(1) v(2) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. -76.611p -0.0076611 -0.0076611 5.2291 5.2291 -0.76997 +-11.221 12. -12. v(4) 0. 2. 4. 6. 8. v(5) 0. 2. 4. 6. 8. +-----------------+----------------+-----------------+----------------+ 0. | . . * . | 10.n | . . *+ . | 20.n | . . * + . | 30.n | . . * + . | 40.n | . . * +. | 50.n | . .* . + | 60.n | . *. . + | 70.n | . * . . + | 80.n | . * . . + | 90.n | . * . . + | 100.n | . * . . + | 110.n | . * . . + | 120.n | . *. . + | 130.n | . . * . + | 140.n | . . * +. | 150.n | . . * + . | 160.n | . . * . | 170.n | . . + * . | 180.n | . . + * . | 190.n | . . + *. | 200.n | . . + *. | 210.n | . . + * . | 220.n | . . + * . | 230.n | . . +* . | 240.n | . . * + . | 250.n | . . * + . | 260.n | . . * +. | 270.n | . . * .+ | 280.n | . * . + | 290.n | . *. . + | 300.n | . *. . + | 310.n | . * . + | 320.n | . . * .+ | 330.n | . . * + . | 340.n | . . * + . | 350.n | . . * . | 360.n | . . + * . | 370.n | . . + * . | 380.n | . . + * | 390.n | . . + .* | 400.n | . . + .* | 410.n | . . + * | 420.n | . . + * . | 430.n | . . + * . | 440.n | . . +* . | 450.n | . . * + . | 460.n | . . * + . | 470.n | . . * + | 480.n | . .* . + | 490.n | . * . + | 500.n | . * . + | +-----------------+----------------+-----------------+----------------+ #Time qcs(q1) qcs(q2) qcs(q3) qcs(q4) qcs(qnl) 0. -104.58p -104.58p 15.399p 224.42p ?? 10.n -102.96p -105.88p 15.058p 224.42p ?? 20.n -98.97p -109.48p 14.653p 224.42p ?? 30.n -93.746p -114.37p 14.273p 224.42p ?? 40.n -88.211p -119.69p 14.012p 224.42p ?? 50.n -82.858p -124.99p 13.912p 224.42p ?? 60.n -77.939p -130.05p 13.997p 224.42p ?? 70.n -73.651p -134.62p 14.248p 224.42p ?? 80.n -70.343p -138.33p 14.62p 224.42p ?? 90.n -68.664p -140.42p 15.027p 224.42p ?? 100.n -69.401p -140.03p 15.384p 224.42p ?? 110.n -72.819p -136.84p 15.637p 224.42p ?? 120.n -78.315p -131.46p 15.782p 224.42p ?? 130.n -84.87p -124.94p 15.849p 224.42p ?? 140.n -91.707p -118.11p 15.878p 224.42p ?? 150.n -98.42p -111.38p 15.889p 224.42p ?? 160.n -104.8p -104.97p 15.888p 224.42p ?? 170.n -110.62p -99.103p 15.869p 224.42p ?? 180.n -115.5p -94.15p 15.81p 224.42p ?? 190.n -118.66p -90.836p 15.669p 224.42p ?? 200.n -119.2p -90.036p 15.415p 224.42p ?? 210.n -116.79p -92.096p 15.056p 224.42p ?? 220.n -112.06p -96.429p 14.645p 224.42p ?? 230.n -106.17p -101.98p 14.267p 224.42p ?? 240.n -100.p -107.93p 14.003p 224.42p ?? 250.n -94.059p -113.82p 13.905p 224.42p ?? 260.n -88.579p -119.43p 13.989p 224.42p ?? 270.n -83.755p -124.55p 14.242p 224.42p ?? 280.n -79.928p -128.77p 14.615p 224.42p ?? 290.n -77.744p -131.36p 15.025p 224.42p ?? 300.n -77.99p -131.47p 15.384p 224.42p ?? #Time ccs(q1) ccs(q2) ccs(q3) ccs(q4) ccs(qnl) 0. 20.p 20.p 20.p 20.p ?? 10.n 20.p 20.p 20.p 20.p ?? 20.n 20.p 20.p 20.p 20.p ?? 30.n 20.p 20.p 20.p 20.p ?? 40.n 20.p 20.p 20.p 20.p ?? 50.n 20.p 20.p 20.p 20.p ?? 60.n 20.p 20.p 20.p 20.p ?? 70.n 20.p 20.p 20.p 20.p ?? 80.n 20.p 20.p 20.p 20.p ?? 90.n 20.p 20.p 20.p 20.p ?? 100.n 20.p 20.p 20.p 20.p ?? 110.n 20.p 20.p 20.p 20.p ?? 120.n 20.p 20.p 20.p 20.p ?? 130.n 20.p 20.p 20.p 20.p ?? 140.n 20.p 20.p 20.p 20.p ?? 150.n 20.p 20.p 20.p 20.p ?? 160.n 20.p 20.p 20.p 20.p ?? 170.n 20.p 20.p 20.p 20.p ?? 180.n 20.p 20.p 20.p 20.p ?? 190.n 20.p 20.p 20.p 20.p ?? 200.n 20.p 20.p 20.p 20.p ?? 210.n 20.p 20.p 20.p 20.p ?? 220.n 20.p 20.p 20.p 20.p ?? 230.n 20.p 20.p 20.p 20.p ?? 240.n 20.p 20.p 20.p 20.p ?? 250.n 20.p 20.p 20.p 20.p ?? 260.n 20.p 20.p 20.p 20.p ?? 270.n 20.p 20.p 20.p 20.p ?? 280.n 20.p 20.p 20.p 20.p ?? 290.n 20.p 20.p 20.p 20.p ?? 300.n 20.p 20.p 20.p 20.p ?? #Time vcs(q1) vcs(q2) vcs(q3) vcs(q4) vcs(qnl) 0. 5.2291 5.2291 -0.76997 -11.221 ?? 10.n 5.1478 5.2939 -0.7529 -11.221 ?? 20.n 4.9485 5.4741 -0.73263 -11.221 ?? 30.n 4.6873 5.7183 -0.71367 -11.221 ?? 40.n 4.4105 5.9844 -0.7006 -11.221 ?? 50.n 4.1429 6.2497 -0.69559 -11.221 ?? 60.n 3.897 6.5023 -0.69984 -11.221 ?? 70.n 3.6825 6.7311 -0.71238 -11.221 ?? 80.n 3.5171 6.9163 -0.73098 -11.221 ?? 90.n 3.4332 7.0209 -0.75135 -11.221 ?? 100.n 3.47 7.0015 -0.76919 -11.221 ?? 110.n 3.641 6.8421 -0.78183 -11.221 ?? 120.n 3.9157 6.5731 -0.78908 -11.221 ?? 130.n 4.2435 6.2472 -0.79245 -11.221 ?? 140.n 4.5854 5.9053 -0.79391 -11.221 ?? 150.n 4.921 5.5689 -0.79446 -11.221 ?? 160.n 5.2398 5.2487 -0.79442 -11.221 ?? 170.n 5.5312 4.9552 -0.79345 -11.221 ?? 180.n 5.7749 4.7075 -0.79049 -11.221 ?? 190.n 5.9329 4.5418 -0.78347 -11.221 ?? 200.n 5.9599 4.5018 -0.77076 -11.221 ?? 210.n 5.8393 4.6048 -0.75279 -11.221 ?? 220.n 5.6032 4.8214 -0.73226 -11.221 ?? 230.n 5.3083 5.0992 -0.71334 -11.221 ?? 240.n 5.0001 5.3966 -0.70015 -11.221 ?? 250.n 4.703 5.6912 -0.69524 -11.221 ?? 260.n 4.4289 5.9717 -0.69945 -11.221 ?? 270.n 4.1877 6.2273 -0.71208 -11.221 ?? 280.n 3.9964 6.4383 -0.73073 -11.221 ?? 290.n 3.8872 6.5682 -0.75123 -11.221 ?? 300.n 3.8995 6.5733 -0.76918 -11.221 ?? tests/==out/d_bjt-pnp.ckt.out000066400000000000000000000040771316501211100164060ustar00rootroot00000000000000' bjt test .model foo pnp ( level=1 kf=NA( 0.) af=NA( 1.) bf=NA( 100.) br=NA( 1.) + is=NA( 100.E-18) nf=NA( 1.) nr=NA( 1.) c4=NA( 0.) nc=NA( 2.) c2=NA( 0.) + ne=NA( 1.5) rb=NA( 0.) re=NA( 0.) rc=NA( 0.) cjc=NA( 0.) cje=NA( 0.) + cjs=NA( 0.) mjc=NA( 0.33) mje=NA( 0.33) mjs=NA( 0.) vjc=NA( 0.75) + vje=NA( 0.75) vjs=NA( 0.75) xcjc=NA( 1.) itf=NA( 0.) ptf=NA( 0.) tf=NA( 0.) + tr=NA( 0.) xtf=NA( 0.) xtb=NA( 0.) xti=NA( 3.) eg=NA( 1.11)) vcc ( 1 0 ) DC -30. rb1 ( 1 2 ) 27.K rb2 ( 2 0 ) 1.6K rc ( 3 1 ) 10.K re ( 4 0 ) 1.K q1 ( 3 2 4 0 ) foo NA( 1.) # v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. -1. -30. -1.6657 -21.673 -0.84105 -2. -30. -1.6654 -21.451 -0.86344 -3. -30. -1.6651 -21.274 -0.88132 -4. -30. -1.665 -21.175 -0.8913 -5. -30. -1.665 -21.151 -0.89378 -6. -30. -1.665 -21.149 -0.8939 -7. -30. -1.665 -21.149 -0.8939 -8. -30. -1.665 -21.149 -0.8939 27. -30. -1.665 -21.149 -0.8939 # v(1) v(2) v(3) v(4) 27. -30. -1.665 -21.149 -0.8939 # ice(q1) ipi(q1) imu(q1) iceo(q1) ipio(q1) imuo(q1) 27. -885.05u -8.8505u 19.485p 0.0255 255.u 0. # ic(q1) ib(q1) ie(q1) vbe(q1) vbc(q1) 27. -885.05u -8.8505u 893.9u -0.77105 19.485 # gm(q1) gpi(q1) gmu(q1) gx(q1) go(q1) 27. 0.034219 342.19u 1.p NA 1.p # cpi(q1) cmu(q1) cbx(q1) ccs(q1) 27. 0. 0. 0. 0. # i(rb1) i(rb2) i(rc) i(re) 27. -0.0010494 -0.0010406 885.05u -893.9u # p(rb1) p(rb2) p(rc) p(re) 27. 0.029736 0.0017325 0.0078332 799.06u # i(vcc) p(vcc) 27. 0.0019345 -0.058035 tests/==out/d_bjt-rca3040.ckt.out000066400000000000000000000153471316501211100166670ustar00rootroot00000000000000rca3040 ckt - rca 3040 wideband amplifier # v(1) v(2) v(3) v(5) v(6) v(7) + v(8) v(9) v(10) v(11) v(12) v(13) v(14) + v(15) v(16) v(17) v(30) v(31) 27. -287.97p 15. -15. -0.82747 -0.82747 -1.6544 +-4.1995 -5.0514 0.78468 0.78468 1.6088 0.80442 7.1653 + 7.1653 6.3888 6.3888 -0.028797 -0.028797 vdb(17) -100. -50. 0. 50. 100. vdb(16) -100. -50. 0. 50. 100. +-----------------+----------------+-----------------+----------------+ 1.Meg | . . * . | 1.5849M| . . * . | 2.5119M| . . * . | 3.9811M| . . * . | 6.3096M| . . * . | 10.Meg | . . * . | 15.849M| . . * . | 25.119M| . . * . | 39.811M| . . * . | 63.096M| . . * . | 100.Meg| . . * . | 158.49M| . +*. . | 251.19M| . +* . . | 398.11M| . +* . . | 630.96M| + . * . . | 1.G | +* . . . | 1.5849G| +* . . . | 2.5119G| * . . . | 3.9811G| +* . . . | 6.3096G| * . . . | 10.G |* . . . | +-----------------+----------------+-----------------+----------------+ v(17) -20. -10. 0. 10. 20. v(16) -20. -10. 0. 10. 20. +-----------------+----------------+-----------------+----------------+ -0.2 | . + . * | -0.18 | . + . * | -0.16 | . + . * | -0.14 | . + . * | -0.12 | . + . * | -0.1 | . + . * | -0.08 | . + . * | -0.06 | . .+ . * | -0.04 | . . + * | -0.02 | . . + * . | 0. | . . * . | 0.02 | . . * + . | 0.04 | . . * + | 0.06 | . .* . + | 0.08 | . * . + | 0.1 | . * . + | 0.12 | . * . + | 0.14 | . * . + | 0.16 | . * . + | 0.18 | . * . + | 0.2 | . * . + | +-----------------+----------------+-----------------+----------------+ v(17) 2. 4. 6. 8. 10. v(16) 2. 4. 6. 8. 10. +-----------------+----------------+-----------------+----------------+ 0. | . . * . | 2.n | . . * . | 4.n | . . *+ . | 6.n | . * + . | 8.n | . * . + . | 10.n | . * . .+ | 12.n | * . . . + | 14.n | * . . . + | 16.n | * . . . + | 18.n | * . . . + | 20.n | . * . + | 22.n | . *. + . | 24.n | . + . * . | 26.n | . + . * . | 28.n | . + . * . | 30.n | . +. * . | 32.n | . * + . | 34.n | . * . + . | 36.n | . * . + . | 38.n | . * . + . | 40.n | . *. + . | 42.n | . + * . | 44.n | . + . * . | 46.n | . + . *. | 48.n | . + . * . | 50.n | . + . * . | +-----------------+----------------+-----------------+----------------+ tests/==out/d_bjt-rtlinv.ckt.out000066400000000000000000000200011316501211100171100ustar00rootroot00000000000000rtlinv ckt - cascaded rtl inverters # v(1) v(2) v(3) v(4) v(5) v(6) 27. 0. 46.224n 4.6223 0.84524 0.26816 5. v(3) -2. 0. 2. 4. 6. v(5) -2. 0. 2. 4. 6. +-----------------+----------------+-----------------+----------------+ 0. | . + . . * | 0.05 | . + . . * | 0.1 | . + . . * | 0.15 | . + . . * | 0.2 | . + . . * | 0.25 | . + . . * | 0.3 | . + . . * | 0.35 | . + . . * | 0.4 | . + . . * | 0.45 | . + . . * | 0.5 | . + . . * | 0.55 | . + . . * | 0.6 | . + . . * | 0.65 | . + . . * | 0.7 | . + . . * | 0.75 | . + . . * | 0.8 | . + . . * | 0.85 | . + . .* | 0.9 | . + . *. | 0.95 | . + . * . | 1. | . + . * . | 1.05 | . + . * . | 1.1 | . + . * . | 1.15 | . + . * . | 1.2 | . + . * . | 1.25 | . + . * . | 1.3 | . + . * . | 1.35 | . + .* . | 1.4 | . + *. . | 1.45 | . + * . . | 1.5 | . * + . . | 1.55 | . * . + . | 1.6 | . * . + . | 1.65 | . * . . + | 1.7 | . * . . + | 1.75 | . * . . + | 1.8 | . * . . + | 1.85 | . * . . + | 1.9 | . * . . + | 1.95 | . * . . + | 2. | . * . . + | 2.05 | . * . . + | 2.1 | . * . . + | 2.15 | . * . . + | 2.2 | . * . . + | 2.25 | . * . . + | 2.3 | . * . . + | 2.35 | . * . . + | 2.4 | . * . . + | 2.45 | . * . . + | 2.5 | . * . . + | +-----------------+----------------+-----------------+----------------+ v(3) -2. 0. 2. 4. 6. v(5) -2. 0. 2. 4. 6. +-----------------+----------------+-----------------+----------------+ 0. | . + . . * | 5.n | . + . . * | 10.n | . + . * . | 15.n | . + * . | 20.n | . + * . . | 25.n | . * . . | 30.n | . * + . . | 35.n | . * + . . | 40.n | . * + . . | 45.n | . * + . . | 50.n | . * .+ . | 55.n | . * . + . | 60.n | . * . + . | 65.n | . * . + . | 70.n | . * . + . | 75.n | . * . +. | 80.n | . * . .+ | 85.n | . * . . + | 90.n | . * . . + | 95.n | . * . . + | 100.n | . * . . + | 105.n | . * . . + | 110.n | . * . . + | 115.n | . .* . + | 120.n | . . * + . | 125.n | . . * . | 130.n | . . + * . | 135.n | . + . * . | 140.n | . + . .* | 145.n | . + . . * | 150.n | . + . . * | 155.n | . + . . * | 160.n | . + . . * | 165.n | . + . . * | 170.n | . + . . * | 175.n | . + . . * | 180.n | . + . . * | 185.n | . + . . * | 190.n | . + . . * | 195.n | . + . . * | 200.n | . + . . * | +-----------------+----------------+-----------------+----------------+ tests/==out/d_bjt-schmitt-bypass.ckt.out000066400000000000000000000273401316501211100205610ustar00rootroot00000000000000schmitt ckt - ecl compatible schmitt trigger # 27. #Time v(1) v(3) v(5) v(6) 0. -1.6 -0.2597 -1.2206 -1.1106 20.n -1.59 -0.25967 -1.2206 -1.1106 40.n -1.57 -0.2597 -1.2206 -1.1105 60.n -1.55 -0.25967 -1.2206 -1.1106 80.n -1.53 -0.2597 -1.2206 -1.1105 100.n -1.51 -0.25968 -1.2206 -1.1105 120.n -1.49 -0.25972 -1.2206 -1.1105 140.n -1.47 -0.25972 -1.2206 -1.1105 160.n -1.45 -0.25981 -1.2207 -1.1102 180.n -1.43 -0.25991 -1.2207 -1.11 200.n -1.41 -0.26023 -1.221 -1.1093 220.n -1.39 -0.26083 -1.2214 -1.1079 240.n -1.37 -0.26231 -1.2224 -1.1045 260.n -1.35 -0.26574 -1.2248 -1.0967 280.n -1.33 -0.27603 -1.232 -1.0734 300.n -1.31 -0.73192 -1.5144 -0.13173 320.n -1.29 -0.76795 -1.6004 -0.041986 340.n -1.27 -0.76623 -1.5944 -0.044703 360.n -1.25 -0.76926 -1.5967 -0.044623 380.n -1.23 -0.77279 -1.6009 -0.043302 400.n -1.21 -0.77608 -1.6022 -0.044573 420.n -1.2 -0.77763 -1.6037 -0.044466 440.n -1.2 -0.77859 -1.6056 -0.043447 460.n -1.2 -0.77748 -1.6036 -0.044417 480.n -1.2 -0.77873 -1.6056 -0.043496 500.n -1.2 -0.77735 -1.6035 -0.044368 520.n -1.21 -0.77551 -1.6023 -0.04427 540.n -1.23 -0.77379 -1.6015 -0.043631 560.n -1.25 -0.76839 -1.5966 -0.044232 580.n -1.27 -0.76684 -1.5959 -0.043677 600.n -1.29 -0.76127 -1.591 -0.04421 620.n -1.31 -0.75986 -1.5903 -0.043753 640.n -1.33 -0.75413 -1.5853 -0.044271 660.n -1.35 -0.75279 -1.5845 -0.044005 680.n -1.37 -0.74677 -1.5794 -0.044793 700.n -1.39 -0.74521 -1.5784 -0.045285 720.n -1.41 -0.73811 -1.5727 -0.048058 740.n -1.43 -0.73448 -1.5701 -0.053111 760.n -1.45 -0.71887 -1.5585 -0.073256 780.n -1.47 -0.61893 -1.4977 -0.27297 800.n -1.49 -0.25825 -1.2143 -1.1081 820.n -1.51 -0.25896 -1.2169 -1.1075 840.n -1.53 -0.25929 -1.2181 -1.1075 860.n -1.55 -0.26008 -1.2229 -1.1137 880.n -1.57 -0.25942 -1.2186 -1.1076 900.n -1.59 -0.25995 -1.2224 -1.1137 920.n -1.6 -0.2597 -1.2215 -1.1134 940.n -1.6 -0.25975 -1.2198 -1.1079 960.n -1.6 -0.25961 -1.2212 -1.1133 980.n -1.6 -0.25983 -1.2202 -1.108 1.u -1.6 -0.25953 -1.2209 -1.1131 v(3) -2. -1.5 -1. -0.5 0. v(5) -2. -1.5 -1. -0.5 0. +-----------------+----------------+-----------------+----------------+ 0. | . + . . * | 20.n | . + . . * | 40.n | . + . . * | 60.n | . + . . * | 80.n | . + . . * | 100.n | . + . . * | 120.n | . + . . * | 140.n | . + . . * | 160.n | . + . . * | 180.n | . + . . * | 200.n | . + . . * | 220.n | . + . . * | 240.n | . + . . * | 260.n | . + . . * | 280.n | . + . . * | 300.n | +. . * . | 320.n | + . . * . | 340.n | + . . * . | 360.n | + . . * . | 380.n | + . . * . | 400.n | + . . * . | 420.n | + . . * . | 440.n | + . . * . | 460.n | + . . * . | 480.n | + . . * . | 500.n | + . . * . | 520.n | + . . * . | 540.n | + . . * . | 560.n | + . . * . | 580.n | + . . * . | 600.n | + . . * . | 620.n | + . . * . | 640.n | + . . * . | 660.n | + . . * . | 680.n | + . . * . | 700.n | + . . * . | 720.n | + . . * . | 740.n | + . . * . | 760.n | + . . * . | 780.n | + . * . | 800.n | . + . . * | 820.n | . + . . * | 840.n | . + . . * | 860.n | . + . . * | 880.n | . + . . * | 900.n | . + . . * | 920.n | . + . . * | 940.n | . + . . * | 960.n | . + . . * | 980.n | . + . . * | 1.u | . + . . * | +-----------------+----------------+-----------------+----------------+ v(6) -2. -1.5 -1. -0.5 0. v(1) -2. -1.5 -1. -0.5 0. +-----------------+----------------+-----------------+----------------+ 0. | + . * . . | 20.n | + . * . . | 40.n | + . * . . | 60.n | + . * . . | 80.n | + . * . . | 100.n | +. * . . | 120.n | + * . . | 140.n | .+ * . . | 160.n | .+ * . . | 180.n | . + * . . | 200.n | . + * . . | 220.n | . + * . . | 240.n | . + * . . | 260.n | . + * . . | 280.n | . + * . . | 300.n | . + . . * | 320.n | . + . . *| 340.n | . + . . * | 360.n | . + . . * | 380.n | . + . . * | 400.n | . + . . * | 420.n | . + . . * | 440.n | . + . . * | 460.n | . + . . * | 480.n | . + . . * | 500.n | . + . . * | 520.n | . + . . * | 540.n | . + . . * | 560.n | . + . . * | 580.n | . + . . * | 600.n | . + . . * | 620.n | . + . . * | 640.n | . + . . * | 660.n | . + . . * | 680.n | . + . . * | 700.n | . + . . * | 720.n | . + . . * | 740.n | . + . . * | 760.n | .+ . . * | 780.n | .+ . . * | 800.n | + * . . | 820.n | +. * . . | 840.n | + . * . . | 860.n | + . * . . | 880.n | + . * . . | 900.n | + . * . . | 920.n | + . * . . | 940.n | + . * . . | 960.n | + . * . . | 980.n | + . * . . | 1.u | + . * . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=8, dc=0, tran=429, fourier=0, total=1526 transient timesteps: accepted=231, rejected=9, total=240 nodes: user=8, subckt=0, model=8, total=16 dctran density=48.4%, ac density=48.4% tests/==out/d_bjt-schmitt-nobypass.ckt.out000066400000000000000000000273401316501211100211160ustar00rootroot00000000000000schmitt ckt - ecl compatible schmitt trigger # 27. #Time v(1) v(3) v(5) v(6) 0. -1.6 -0.2597 -1.2206 -1.1106 20.n -1.59 -0.25966 -1.2206 -1.1105 40.n -1.57 -0.2597 -1.2206 -1.1106 60.n -1.55 -0.25967 -1.2206 -1.1105 80.n -1.53 -0.2597 -1.2206 -1.1106 100.n -1.51 -0.25968 -1.2206 -1.1105 120.n -1.49 -0.25972 -1.2206 -1.1105 140.n -1.47 -0.25972 -1.2206 -1.1104 160.n -1.45 -0.25981 -1.2207 -1.1103 180.n -1.43 -0.25991 -1.2207 -1.11 200.n -1.41 -0.26023 -1.221 -1.1093 220.n -1.39 -0.26083 -1.2214 -1.1079 240.n -1.37 -0.26231 -1.2224 -1.1046 260.n -1.35 -0.26573 -1.2248 -1.0967 280.n -1.33 -0.27605 -1.232 -1.0734 300.n -1.31 -0.73191 -1.5144 -0.13179 320.n -1.29 -0.76796 -1.6004 -0.041992 340.n -1.27 -0.76623 -1.5944 -0.044699 360.n -1.25 -0.76926 -1.5967 -0.044618 380.n -1.23 -0.77279 -1.6009 -0.043308 400.n -1.21 -0.77608 -1.6022 -0.044567 420.n -1.2 -0.77763 -1.6037 -0.044458 440.n -1.2 -0.77859 -1.6056 -0.043455 460.n -1.2 -0.77748 -1.6036 -0.044409 480.n -1.2 -0.77873 -1.6056 -0.043504 500.n -1.2 -0.77735 -1.6035 -0.04436 520.n -1.21 -0.77551 -1.6023 -0.044261 540.n -1.23 -0.77379 -1.6016 -0.043639 560.n -1.25 -0.76839 -1.5966 -0.044223 580.n -1.27 -0.76684 -1.5959 -0.043686 600.n -1.29 -0.76127 -1.591 -0.044202 620.n -1.31 -0.75986 -1.5903 -0.043762 640.n -1.33 -0.75412 -1.5853 -0.044262 660.n -1.35 -0.75279 -1.5845 -0.044014 680.n -1.37 -0.74677 -1.5794 -0.044784 700.n -1.39 -0.74521 -1.5784 -0.045294 720.n -1.41 -0.73811 -1.5727 -0.048049 740.n -1.43 -0.73448 -1.5701 -0.053118 760.n -1.45 -0.71887 -1.5585 -0.073255 780.n -1.47 -0.61894 -1.4977 -0.27297 800.n -1.49 -0.25826 -1.2143 -1.1082 820.n -1.51 -0.25896 -1.2169 -1.1076 840.n -1.53 -0.25929 -1.2181 -1.1076 860.n -1.55 -0.26008 -1.2228 -1.1136 880.n -1.57 -0.25943 -1.2186 -1.1077 900.n -1.59 -0.25995 -1.2224 -1.1136 920.n -1.6 -0.25969 -1.2215 -1.1133 940.n -1.6 -0.25975 -1.2199 -1.1079 960.n -1.6 -0.2596 -1.2212 -1.1132 980.n -1.6 -0.25983 -1.2202 -1.1081 1.u -1.6 -0.25953 -1.2208 -1.1131 v(3) -2. -1.5 -1. -0.5 0. v(5) -2. -1.5 -1. -0.5 0. +-----------------+----------------+-----------------+----------------+ 0. | . + . . * | 20.n | . + . . * | 40.n | . + . . * | 60.n | . + . . * | 80.n | . + . . * | 100.n | . + . . * | 120.n | . + . . * | 140.n | . + . . * | 160.n | . + . . * | 180.n | . + . . * | 200.n | . + . . * | 220.n | . + . . * | 240.n | . + . . * | 260.n | . + . . * | 280.n | . + . . * | 300.n | +. . * . | 320.n | + . . * . | 340.n | + . . * . | 360.n | + . . * . | 380.n | + . . * . | 400.n | + . . * . | 420.n | + . . * . | 440.n | + . . * . | 460.n | + . . * . | 480.n | + . . * . | 500.n | + . . * . | 520.n | + . . * . | 540.n | + . . * . | 560.n | + . . * . | 580.n | + . . * . | 600.n | + . . * . | 620.n | + . . * . | 640.n | + . . * . | 660.n | + . . * . | 680.n | + . . * . | 700.n | + . . * . | 720.n | + . . * . | 740.n | + . . * . | 760.n | + . . * . | 780.n | + . * . | 800.n | . + . . * | 820.n | . + . . * | 840.n | . + . . * | 860.n | . + . . * | 880.n | . + . . * | 900.n | . + . . * | 920.n | . + . . * | 940.n | . + . . * | 960.n | . + . . * | 980.n | . + . . * | 1.u | . + . . * | +-----------------+----------------+-----------------+----------------+ v(6) -2. -1.5 -1. -0.5 0. v(1) -2. -1.5 -1. -0.5 0. +-----------------+----------------+-----------------+----------------+ 0. | + . * . . | 20.n | + . * . . | 40.n | + . * . . | 60.n | + . * . . | 80.n | + . * . . | 100.n | +. * . . | 120.n | + * . . | 140.n | .+ * . . | 160.n | .+ * . . | 180.n | . + * . . | 200.n | . + * . . | 220.n | . + * . . | 240.n | . + * . . | 260.n | . + * . . | 280.n | . + * . . | 300.n | . + . . * | 320.n | . + . . *| 340.n | . + . . * | 360.n | . + . . * | 380.n | . + . . * | 400.n | . + . . * | 420.n | . + . . * | 440.n | . + . . * | 460.n | . + . . * | 480.n | . + . . * | 500.n | . + . . * | 520.n | . + . . * | 540.n | . + . . * | 560.n | . + . . * | 580.n | . + . . * | 600.n | . + . . * | 620.n | . + . . * | 640.n | . + . . * | 660.n | . + . . * | 680.n | . + . . * | 700.n | . + . . * | 720.n | . + . . * | 740.n | . + . . * | 760.n | .+ . . * | 780.n | .+ . . * | 800.n | + * . . | 820.n | +. * . . | 840.n | + . * . . | 860.n | + . * . . | 880.n | + . * . . | 900.n | + . * . . | 920.n | + . * . . | 940.n | + . * . . | 960.n | + . * . . | 980.n | + . * . . | 1.u | + . * . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=8, dc=0, tran=424, fourier=0, total=1505 transient timesteps: accepted=225, rejected=9, total=234 nodes: user=8, subckt=0, model=8, total=16 dctran density=48.4%, ac density=48.4% tests/==out/d_bjt.2.ckt.out000066400000000000000000000040751316501211100157510ustar00rootroot00000000000000' bjt test .model foo npn ( level=1 kf=NA( 0.) af=NA( 1.) bf=NA( 100.) br=NA( 1.) + is=NA( 100.E-18) nf=NA( 1.) nr=NA( 1.) c4=NA( 0.) nc=NA( 2.) c2=NA( 0.) + ne=NA( 1.5) rb=NA( 0.) re=NA( 0.) rc=NA( 0.) cjc=NA( 0.) cje=NA( 0.) + cjs=NA( 0.) mjc=NA( 0.33) mje=NA( 0.33) mjs=NA( 0.) vjc=NA( 0.75) + vje=NA( 0.75) vjs=NA( 0.75) xcjc=NA( 1.) itf=NA( 0.) ptf=NA( 0.) tf=NA( 0.) + tr=NA( 0.) xtf=NA( 0.) xtb=NA( 0.) xti=NA( 3.) eg=NA( 1.11)) vcc ( 1 0 ) DC 30. rb1 ( 1 2 ) 27.K rb2 ( 2 0 ) 1.6K rc ( 3 1 ) 10.K re ( 4 0 ) 1.K q1 ( 3 2 4 ) foo NA( 1.) # v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. -1. 30. 1.6657 21.673 0.84105 -2. 30. 1.6654 21.451 0.86344 -3. 30. 1.6651 21.274 0.88132 -4. 30. 1.665 21.175 0.8913 -5. 30. 1.665 21.151 0.89378 -6. 30. 1.665 21.149 0.8939 -7. 30. 1.665 21.149 0.8939 -8. 30. 1.665 21.149 0.8939 27. 30. 1.665 21.149 0.8939 # v(1) v(2) v(3) v(4) 27. 30. 1.665 21.149 0.8939 # ice(q1) ipi(q1) imu(q1) iceo(q1) ipio(q1) imuo(q1) 27. 885.05u 8.8505u -19.485p -0.0255 -255.u 0. # ic(q1) ib(q1) ie(q1) vbe(q1) vbc(q1) 27. 885.05u 8.8505u -893.9u 0.77105 -19.485 # gm(q1) gpi(q1) gmu(q1) gx(q1) go(q1) 27. 0.034219 342.19u 1.p NA 1.p # cpi(q1) cmu(q1) cbx(q1) ccs(q1) 27. 0. 0. 0. 0. # i(rb1) i(rb2) i(rc) i(re) 27. 0.0010494 0.0010406 -885.05u 893.9u # p(rb1) p(rb2) p(rc) p(re) 27. 0.029736 0.0017325 0.0078332 799.06u # i(vcc) p(vcc) 27. -0.0019345 -0.058035 tests/==out/d_bjt.ckt.out000066400000000000000000000040771316501211100156130ustar00rootroot00000000000000' bjt test .model foo npn ( level=1 kf=NA( 0.) af=NA( 1.) bf=NA( 100.) br=NA( 1.) + is=NA( 100.E-18) nf=NA( 1.) nr=NA( 1.) c4=NA( 0.) nc=NA( 2.) c2=NA( 0.) + ne=NA( 1.5) rb=NA( 0.) re=NA( 0.) rc=NA( 0.) cjc=NA( 0.) cje=NA( 0.) + cjs=NA( 0.) mjc=NA( 0.33) mje=NA( 0.33) mjs=NA( 0.) vjc=NA( 0.75) + vje=NA( 0.75) vjs=NA( 0.75) xcjc=NA( 1.) itf=NA( 0.) ptf=NA( 0.) tf=NA( 0.) + tr=NA( 0.) xtf=NA( 0.) xtb=NA( 0.) xti=NA( 3.) eg=NA( 1.11)) vcc ( 1 0 ) DC 30. rb1 ( 1 2 ) 27.K rb2 ( 2 0 ) 1.6K rc ( 3 1 ) 10.K re ( 4 0 ) 1.K q1 ( 3 2 4 0 ) foo NA( 1.) # v(1) v(2) v(3) v(4) 0. 0. 0. 0. 0. -1. 30. 1.6657 21.673 0.84105 -2. 30. 1.6654 21.451 0.86344 -3. 30. 1.6651 21.274 0.88132 -4. 30. 1.665 21.175 0.8913 -5. 30. 1.665 21.151 0.89378 -6. 30. 1.665 21.149 0.8939 -7. 30. 1.665 21.149 0.8939 -8. 30. 1.665 21.149 0.8939 27. 30. 1.665 21.149 0.8939 # v(1) v(2) v(3) v(4) 27. 30. 1.665 21.149 0.8939 # ice(q1) ipi(q1) imu(q1) iceo(q1) ipio(q1) imuo(q1) 27. 885.05u 8.8505u -19.485p -0.0255 -255.u 0. # ic(q1) ib(q1) ie(q1) vbe(q1) vbc(q1) 27. 885.05u 8.8505u -893.9u 0.77105 -19.485 # gm(q1) gpi(q1) gmu(q1) gx(q1) go(q1) 27. 0.034219 342.19u 1.p NA 1.p # cpi(q1) cmu(q1) cbx(q1) ccs(q1) 27. 0. 0. 0. 0. # i(rb1) i(rb2) i(rc) i(re) 27. 0.0010494 0.0010406 -885.05u 893.9u # p(rb1) p(rb2) p(rc) p(re) 27. 0.029736 0.0017325 0.0078332 799.06u # i(vcc) p(vcc) 27. -0.0019345 -0.058035 tests/==out/d_bjt.error1.ckt.out000066400000000000000000000000351316501211100170120ustar00rootroot00000000000000 q1: model foo is not a bjt tests/==out/d_cap.1.ckt.out000066400000000000000000000013721316501211100157310ustar00rootroot00000000000000'c check v1 ( 1 0 ) DC pulse iv= 0. pv= 1. delay= 0. rise= 0.01 fall= 0.01 width= 1.K period= 1.K AC 1. r1 ( 1 2 ) 1. c2 ( 2 0 ) 1. #Time v(1) v(2) 0. 0. 0. 1. 1. 0.63154 2. 1. 0.86572 3. 1. 0.95166 4. 1. 0.9826 5. 1. 0.9942 6. 1. 0.99807 7. 1. 0.99936 8. 1. 0.99979 9. 1. 0.99993 10. 1. 0.99998 Gnucap System status iterations: op=0, dc=0, tran=116, fourier=0, total=155 transient timesteps: accepted=32, rejected=7, total=39 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.2.ckt.out000066400000000000000000000013721316501211100157320ustar00rootroot00000000000000'c check v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0. rise= 0.01 fall= 0.01 width= 1.K period= 1.K AC 1. r1 ( 1 2 ) 100. c2 ( 2 0 ) 0.01 #Time v(1) v(2) 0. 0. 0. 1. 1. 0.63258 2. 1. 0.86611 3. 1. 0.9518 4. 1. 0.98265 5. 1. 0.99422 6. 1. 0.99807 7. 1. 0.99936 8. 1. 0.99979 9. 1. 0.99993 10. 1. 0.99998 Gnucap System status iterations: op=0, dc=0, tran=104, fourier=0, total=139 transient timesteps: accepted=30, rejected=5, total=35 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.3.ckt.out000066400000000000000000002421121316501211100157320ustar00rootroot00000000000000'LC Oscillator Accuracy test #Time v(1) 0. -10.u 0.1 69.499u 0.2 307.05u 0.3 700.31u 0.4 0.0012453 0.5 0.0019367 0.6 0.0027675 0.7 0.0037294 0.8 0.0048129 0.9 0.0060072 1. 0.0073003 1.1 0.0086793 1.2 0.010131 1.3 0.011639 1.4 0.013191 1.5 0.01477 1.6 0.01636 1.7 0.017946 1.8 0.019511 1.9 0.021041 2. 0.022519 2.1 0.023932 2.2 0.025265 2.3 0.026504 2.4 0.027638 2.5 0.028655 2.6 0.029544 2.7 0.030298 2.8 0.030909 2.9 0.031369 3. 0.031676 3.1 0.031825 3.2 0.031816 3.3 0.031648 3.4 0.031324 3.5 0.030845 3.6 0.030218 3.7 0.029447 3.8 0.028542 3.9 0.027511 4. 0.026365 4.1 0.025114 4.2 0.023771 4.3 0.02235 4.4 0.020865 4.5 0.01933 4.6 0.017762 4.7 0.016174 4.8 0.014585 4.9 0.013008 5. 0.011461 5.1 0.0099581 5.2 0.0085145 5.3 0.0071448 5.4 0.0058626 5.5 0.0046807 5.6 0.0036108 5.7 0.0026637 5.8 0.0018487 5.9 0.0011741 6. 646.54u 6.1 271.28u 6.2 52.059u 6.3 -8.9184u 6.4 88.951u 6.5 344.69u 6.6 755.75u 6.7 0.001318 6.8 0.0020259 6.9 0.0028724 7. 0.0038489 7.1 0.0049458 7.2 0.0061521 7.3 0.0074559 7.4 0.008844 7.5 0.010303 7.6 0.011817 7.7 0.013373 7.8 0.014954 7.9 0.016544 8. 0.018128 8.1 0.01969 8.2 0.021215 8.3 0.022687 8.4 0.024091 8.5 0.025413 8.6 0.026641 8.7 0.027762 8.8 0.028764 8.9 0.029639 9. 0.030376 9.1 0.03097 9.2 0.031413 9.3 0.031701 9.4 0.031833 9.5 0.031805 9.6 0.031619 9.7 0.031276 9.8 0.03078 9.9 0.030136 10. 0.029349 10.1 0.028429 10.2 0.027384 10.3 0.026225 10.4 0.024963 10.5 0.02361 10.6 0.022181 10.7 0.020689 10.8 0.01915 10.9 0.017578 11. 0.01599 11.1 0.014401 11.2 0.012827 11.3 0.011284 11.4 0.0097875 11.5 0.0083518 11.6 0.0069916 11.7 0.0057204 11.8 0.0045508 11.9 0.0034946 12. 0.0025624 12.1 0.0017633 12.2 0.0011054 12.3 595.2u 12.4 237.84u 12.5 36.869u 12.6 -5.7122u 12.7 110.52u 12.8 384.41u 12.9 813.22u 13. 0.0013927 13.1 0.002117 13.2 0.002979 13.3 0.00397 13.4 0.0050801 13.5 0.0062984 13.6 0.0076126 13.7 0.0090096 13.8 0.010475 13.9 0.011996 14. 0.013555 14.1 0.015138 14.2 0.016728 14.3 0.018311 14.4 0.019869 14.5 0.021388 14.6 0.022853 14.7 0.024248 14.8 0.02556 14.9 0.026776 15. 0.027884 15.1 0.028872 15.2 0.029731 15.3 0.030453 15.4 0.031029 15.5 0.031454 15.6 0.031725 15.7 0.031837 15.8 0.031791 15.9 0.031587 16. 0.031226 16.1 0.030713 16.2 0.030052 16.3 0.02925 16.4 0.028314 16.5 0.027256 16.6 0.026084 16.7 0.02481 16.8 0.023448 16.9 0.022011 17. 0.020513 17.1 0.018969 17.2 0.017395 17.3 0.015806 17.4 0.014218 17.5 0.012647 17.6 0.011108 17.7 0.0096179 17.8 0.0081902 17.9 0.0068395 18. 0.0055795 18.1 0.0044225 18.2 0.0033801 18.3 0.0024628 18.4 0.0016797 18.5 0.0010386 18.6 545.9u 18.7 206.5u 18.8 23.804u 18.9 -373.75n 19. 134.21u 19.1 426.21u 19.2 872.72u 19.3 0.0014693 19.4 0.0022099 19.5 0.0030873 19.6 0.0040927 19.7 0.0052159 19.8 0.0064459 19.9 0.0077704 20. 0.0091761 20.1 0.010649 20.2 0.012175 20.3 0.013737 20.4 0.015322 20.5 0.016912 20.6 0.018493 20.7 0.020048 20.8 0.021561 20.9 0.023018 21. 0.024405 21.1 0.025706 21.2 0.026911 21.3 0.028005 21.4 0.028979 21.5 0.029822 21.6 0.030527 21.7 0.031086 21.8 0.031494 21.9 0.031746 22. 0.03184 22.1 0.031776 22.2 0.031553 22.3 0.031174 22.4 0.030644 22.5 0.029966 22.6 0.029148 22.7 0.028198 22.8 0.027125 22.9 0.025941 23. 0.024657 23.1 0.023285 23.2 0.02184 23.3 0.020336 23.4 0.018788 23.5 0.017211 23.6 0.015622 23.7 0.014035 23.8 0.012467 23.9 0.010933 24. 0.009449 24.1 0.0080295 24.2 0.0066887 24.3 0.0054399 24.4 0.0042957 24.5 0.0032673 24.6 0.0023651 24.7 0.0015981 24.8 973.84u 24.9 498.66u 25. 177.27u 25.1 12.868u 25.2 7.0962u 25.3 160.01u 25.4 470.09u 25.5 934.23u 25.6 0.0015478 25.7 0.0023047 25.8 0.0031974 25.9 0.0042169 26. 0.0053532 26.1 0.0065947 26.2 0.0079293 26.3 0.0093435 26.4 0.010823 26.5 0.012354 26.6 0.01392 26.7 0.015506 26.8 0.017096 26.9 0.018674 27. 0.020225 27.1 0.021733 27.2 0.023183 27.3 0.02456 27.4 0.025851 27.5 0.027043 27.6 0.028124 27.7 0.029083 27.8 0.029911 27.9 0.030599 28. 0.031141 28.1 0.031531 28.2 0.031765 28.3 0.031841 28.4 0.031758 28.5 0.031517 28.6 0.031121 28.7 0.030573 28.8 0.029878 28.9 0.029044 29. 0.02808 29.1 0.026994 29.2 0.025797 29.3 0.024502 29.4 0.023122 29.5 0.021669 29.6 0.020159 29.7 0.018607 29.8 0.017028 29.9 0.015437 30. 0.013852 30.1 0.012287 30.2 0.010758 30.3 0.009281 30.4 0.0078699 30.5 0.0065391 30.6 0.0053018 30.7 0.0041704 30.8 0.0031562 30.9 0.0022692 31. 0.0015183 31.1 911.07u 31.2 453.49u 31.3 150.15u 31.4 4.0622u 31.5 16.697u 31.6 187.92u 31.7 516.03u 31.8 997.75u 31.9 0.0016283 32. 0.0024013 32.1 0.0033092 32.2 0.0043428 32.3 0.0054918 32.4 0.0067448 32.5 0.0080893 32.6 0.0095118 32.7 0.010998 32.8 0.012534 32.9 0.014103 33. 0.01569 33.1 0.01728 33.2 0.018856 33.3 0.020402 33.4 0.021904 33.5 0.023346 33.6 0.024714 33.7 0.025995 33.8 0.027174 33.9 0.028242 34. 0.029186 34.1 0.029998 34.2 0.03067 34.3 0.031194 34.4 0.031566 34.5 0.031782 34.6 0.031839 34.7 0.031738 34.8 0.031479 34.9 0.031065 35. 0.030499 35.1 0.029789 35.2 0.028939 35.3 0.02796 35.4 0.026861 35.5 0.025652 35.6 0.024347 35.7 0.022957 35.8 0.021497 35.9 0.019981 36. 0.018425 36.1 0.016844 36.2 0.015253 36.3 0.013669 36.4 0.012108 36.5 0.010584 36.6 0.0091139 36.7 0.0077114 36.8 0.0063908 36.9 0.0051651 37. 0.0040467 37.1 0.0030467 37.2 0.0021751 37.3 0.0014405 37.4 850.3u 37.5 410.39u 37.6 125.13u 37.7 -2.6132u 37.8 28.426u 37.9 217.94u 38. 564.04u 38.1 0.0010633 38.2 0.0017106 38.3 0.0024997 38.4 0.0034226 38.5 0.0044701 38.6 0.0056318 38.7 0.0068961 38.8 0.0082503 38.9 0.009681 39. 0.011174 39.1 0.012714 39.2 0.014286 39.3 0.015875 39.4 0.017463 39.5 0.019037 39.6 0.020579 39.7 0.022075 39.8 0.023509 39.9 0.024867 40. 0.026137 40.1 0.027304 40.2 0.028357 40.3 0.029287 40.4 0.030083 40.5 0.030738 40.6 0.031245 40.7 0.031599 40.8 0.031797 40.9 0.031836 41. 0.031716 41.1 0.031439 41.2 0.031007 41.3 0.030424 41.4 0.029697 41.5 0.028832 41.6 0.027839 41.7 0.026726 41.8 0.025506 41.9 0.02419 42. 0.022791 42.1 0.021324 42.2 0.019803 42.3 0.018243 42.4 0.01666 42.5 0.015069 42.6 0.013487 42.7 0.011929 42.8 0.010411 42.9 0.0089477 43. 0.007554 43.1 0.0062437 43.2 0.0050299 43.3 0.0039247 43.4 0.002939 43.5 0.0020828 43.6 0.0013646 43.7 791.56u 43.8 369.36u 43.9 102.23u 44. -7.1568u 44.1 42.284u 44.2 250.06u 44.3 614.1u 44.4 0.0011308 44.5 0.0017949 44.6 0.0025999 44.7 0.0035378 44.8 0.0045991 44.9 0.0057732 45. 0.0070486 45.1 0.0084124 45.2 0.009851 45.3 0.01135 45.4 0.012895 45.5 0.01447 45.6 0.016059 45.7 0.017647 45.8 0.019217 45.9 0.020755 46. 0.022244 46.1 0.02367 46.2 0.025019 46.3 0.026277 46.4 0.027432 46.5 0.028472 46.6 0.029386 46.7 0.030166 46.8 0.030804 46.9 0.031294 47. 0.03163 47.1 0.031809 47.2 0.03183 47.3 0.031692 47.4 0.031397 47.5 0.030947 47.6 0.030347 47.7 0.029604 47.8 0.028724 47.9 0.027716 48. 0.02659 48.1 0.025358 48.2 0.024032 48.3 0.022624 48.4 0.02115 48.5 0.019624 48.6 0.01806 48.7 0.016475 48.8 0.014885 48.9 0.013305 49. 0.011751 49.1 0.010238 49.2 0.0087825 49.3 0.0073977 49.4 0.006098 49.5 0.0048961 49.6 0.0038042 49.7 0.0028331 49.8 0.0019924 49.9 0.0012907 50. 734.84u 50.1 330.42u 50.2 81.451u 50.3 -9.568u 50.4 58.267u 50.5 284.28u 50.6 666.21u 50.7 0.0012003 50.8 0.0018811 50.9 0.0027019 51. 0.0036545 51.1 0.0047295 51.2 0.005916 51.3 0.0072023 51.4 0.0085754 51.5 0.010022 51.6 0.011527 51.7 0.013076 51.8 0.014653 51.9 0.016243 52. 0.01783 52.1 0.019397 52.2 0.02093 52.3 0.022413 52.4 0.023831 52.5 0.02517 52.6 0.026416 52.7 0.027558 52.8 0.028584 52.9 0.029484 53. 0.030248 53.1 0.030869 53.2 0.031341 53.3 0.031659 53.4 0.03182 53.5 0.031822 53.6 0.031666 53.7 0.031353 53.8 0.030885 53.9 0.030269 54. 0.029509 54.1 0.028613 54.2 0.027591 54.3 0.026453 54.4 0.025209 54.5 0.023872 54.6 0.022457 54.7 0.020976 54.8 0.019444 54.9 0.017878 55. 0.016291 55.1 0.014701 55.2 0.013123 55.3 0.011573 55.4 0.010067 55.5 0.0086182 55.6 0.0072426 55.7 0.0059535 55.8 0.0047638 55.9 0.0036853 56. 0.0027288 56.1 0.0019039 56.2 0.0012187 56.3 680.16u 56.4 293.56u 56.5 62.79u 56.6 -9.8465u 56.7 76.373u 56.8 320.59u 56.9 720.37u 57. 0.0012717 57.1 0.0019691 57.2 0.0028057 57.3 0.003773 57.4 0.0048614 57.5 0.0060601 57.6 0.0073571 57.7 0.0087395 57.8 0.010193 57.9 0.011704 58. 0.013258 58.1 0.014837 58.2 0.016427 58.3 0.018013 58.4 0.019577 58.5 0.021105 58.6 0.022581 58.7 0.02399 58.8 0.025319 58.9 0.026554 59. 0.027683 59.1 0.028695 59.2 0.029579 59.3 0.030327 59.4 0.030931 59.5 0.031386 59.6 0.031686 59.7 0.031828 59.8 0.031812 59.9 0.031638 60. 0.031306 60.1 0.030821 60.2 0.030188 60.3 0.029412 60.4 0.028501 60.5 0.027465 60.6 0.026314 60.7 0.025059 60.8 0.023712 60.9 0.022288 61. 0.020801 61.1 0.019264 61.2 0.017694 61.3 0.016107 61.4 0.014518 61.5 0.012942 61.6 0.011396 61.7 0.0098955 61.8 0.0084549 61.9 0.0070886 62. 0.0058104 62.1 0.004633 62.2 0.0035681 62.3 0.0026264 62.4 0.0018172 62.5 0.0011487 62.6 627.51u 62.7 258.79u 62.8 46.252u 62.9 -44.892u 63. -127.47u 63.1 -208.78u 63.2 -288.u 63.3 -364.35u 63.4 -437.07u 63.5 -505.43u 63.6 -568.75u 63.7 -626.39u 63.8 -677.78u 63.9 -722.42u 64. -759.84u 64.1 -789.69u 64.2 -811.66u 64.3 -825.54u 64.4 -831.18u 64.5 -828.52u 64.6 -817.61u 64.7 -798.54u 64.8 -771.5u 64.9 -736.77u 65. -694.68u 65.1 -645.67u 65.2 -590.22u 65.3 -528.88u 65.4 -462.26u 65.5 -391.04u 65.6 -315.91u 65.7 -237.63u 65.8 -156.98u 65.9 -74.768u 66. 8.1929u 66.1 91.072u 66.2 173.04u 66.3 253.29u 66.4 331.u 66.5 405.42u 66.6 475.79u 66.7 541.42u 66.8 601.64u 66.9 655.87u 67. 703.55u 67.1 744.21u 67.2 777.45u 67.3 802.94u 67.4 820.41u 67.5 829.7u 67.6 830.72u 67.7 823.45u 67.8 807.96u 67.9 784.42u 68. 753.05u 68.1 714.17u 68.2 668.16u 68.3 615.49u 68.4 556.69u 68.5 492.32u 68.6 423.05u 68.7 349.56u 68.8 272.58u 68.9 192.88u 69. 111.25u 69.1 28.522u 69.2 -54.495u 69.3 -136.97u 69.4 -218.08u 69.5 -297.01u 69.6 -372.98u 69.7 -445.23u 69.8 -513.03u 69.9 -575.72u 70. -632.67u 70.1 -683.31u 70.2 -727.13u 70.3 -763.7u 70.4 -792.64u 70.5 -813.69u 70.6 -826.61u 70.7 -831.29u 70.8 -827.68u 70.9 -815.81u 71. -795.81u 71.1 -767.86u 71.2 -732.26u 71.3 -689.35u 71.4 -639.57u 71.5 -583.41u 71.6 -521.42u 71.7 -454.24u 71.8 -382.52u 71.9 -306.99u 72. -228.4u 72.1 -147.52u 72.2 -65.181u 72.3 17.812u 72.4 100.63u 72.5 182.44u 72.6 262.43u 72.7 339.81u 72.8 413.79u 72.9 483.65u 73. 548.68u 73.1 608.24u 73.2 661.73u 73.3 708.63u 73.4 748.45u 73.5 780.81u 73.6 805.37u 73.7 821.91u 73.8 830.25u 73.9 830.3u 74. 822.07u 74.1 805.65u 74.2 781.18u 74.3 748.92u 74.4 709.2u 74.5 662.4u 74.6 608.99u 74.7 549.5u 74.8 484.54u 74.9 414.74u 75. 340.8u 75.1 263.47u 75.2 183.51u 75.3 101.71u 75.4 18.906u 75.5 -64.091u 75.6 -146.45u 75.7 -227.34u 75.8 -305.97u 75.9 -381.55u 76. -453.32u 76.1 -520.57u 76.2 -582.63u 76.3 -638.87u 76.4 -688.74u 76.5 -731.74u 76.6 -767.44u 76.7 -795.49u 76.8 -815.6u 76.9 -827.58u 77. -831.3u 77.1 -826.73u 77.2 -813.91u 77.3 -792.97u 77.4 -764.13u 77.5 -727.66u 77.6 -683.93u 77.7 -633.38u 77.8 -576.51u 77.9 -513.89u 78. -446.15u 78.1 -373.95u 78.2 -298.03u 78.3 -219.13u 78.4 -138.05u 78.5 -55.587u 78.6 27.429u 78.7 110.17u 78.8 191.81u 78.9 271.54u 79. 348.56u 79.1 422.11u 79.2 491.44u 79.3 555.87u 79.4 614.76u 79.5 667.51u 79.6 713.61u 79.7 752.59u 79.8 784.06u 79.9 807.71u 80. 823.3u v(1) -0.04 -0.02 0. 0.02 0.04 +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.1 | . * . | 0.2 | . * . | 0.3 | . .* . | 0.4 | . .* . | 0.5 | . . * . | 0.6 | . . * . | 0.7 | . . * . | 0.8 | . . * . | 0.9 | . . * . | 1. | . . * . | 1.1 | . . * . | 1.2 | . . * . | 1.3 | . . * . | 1.4 | . . * . | 1.5 | . . * . | 1.6 | . . * . | 1.7 | . . * . | 1.8 | . . *. | 1.9 | . . * | 2. | . . . * | 2.1 | . . . * | 2.2 | . . . * | 2.3 | . . . * | 2.4 | . . . * | 2.5 | . . . * | 2.6 | . . . * | 2.7 | . . . * | 2.8 | . . . * | 2.9 | . . . * | 3. | . . . * | 3.1 | . . . * | 3.2 | . . . * | 3.3 | . . . * | 3.4 | . . . * | 3.5 | . . . * | 3.6 | . . . * | 3.7 | . . . * | 3.8 | . . . * | 3.9 | . . . * | 4. | . . . * | 4.1 | . . . * | 4.2 | . . . * | 4.3 | . . . * | 4.4 | . . * | 4.5 | . . *. | 4.6 | . . * . | 4.7 | . . * . | 4.8 | . . * . | 4.9 | . . * . | 5. | . . * . | 5.1 | . . * . | 5.2 | . . * . | 5.3 | . . * . | 5.4 | . . * . | 5.5 | . . * . | 5.6 | . . * . | 5.7 | . . * . | 5.8 | . . * . | 5.9 | . .* . | 6. | . .* . | 6.1 | . * . | 6.2 | . * . | 6.3 | . * . | 6.4 | . * . | 6.5 | . * . | 6.6 | . .* . | 6.7 | . .* . | 6.8 | . . * . | 6.9 | . . * . | 7. | . . * . | 7.1 | . . * . | 7.2 | . . * . | 7.3 | . . * . | 7.4 | . . * . | 7.5 | . . * . | 7.6 | . . * . | 7.7 | . . * . | 7.8 | . . * . | 7.9 | . . * . | 8. | . . * . | 8.1 | . . *. | 8.2 | . . .* | 8.3 | . . . * | 8.4 | . . . * | 8.5 | . . . * | 8.6 | . . . * | 8.7 | . . . * | 8.8 | . . . * | 8.9 | . . . * | 9. | . . . * | 9.1 | . . . * | 9.2 | . . . * | 9.3 | . . . * | 9.4 | . . . * | 9.5 | . . . * | 9.6 | . . . * | 9.7 | . . . * | 9.8 | . . . * | 9.9 | . . . * | 10. | . . . * | 10.1 | . . . * | 10.2 | . . . * | 10.3 | . . . * | 10.4 | . . . * | 10.5 | . . . * | 10.6 | . . .* | 10.7 | . . * | 10.8 | . . *. | 10.9 | . . * . | 11. | . . * . | 11.1 | . . * . | 11.2 | . . * . | 11.3 | . . * . | 11.4 | . . * . | 11.5 | . . * . | 11.6 | . . * . | 11.7 | . . * . | 11.8 | . . * . | 11.9 | . . * . | 12. | . . * . | 12.1 | . . * . | 12.2 | . .* . | 12.3 | . .* . | 12.4 | . * . | 12.5 | . * . | 12.6 | . * . | 12.7 | . * . | 12.8 | . * . | 12.9 | . .* . | 13. | . .* . | 13.1 | . . * . | 13.2 | . . * . | 13.3 | . . * . | 13.4 | . . * . | 13.5 | . . * . | 13.6 | . . * . | 13.7 | . . * . | 13.8 | . . * . | 13.9 | . . * . | 14. | . . * . | 14.1 | . . * . | 14.2 | . . * . | 14.3 | . . * . | 14.4 | . . *. | 14.5 | . . .* | 14.6 | . . . * | 14.7 | . . . * | 14.8 | . . . * | 14.9 | . . . * | 15. | . . . * | 15.1 | . . . * | 15.2 | . . . * | 15.3 | . . . * | 15.4 | . . . * | 15.5 | . . . * | 15.6 | . . . * | 15.7 | . . . * | 15.8 | . . . * | 15.9 | . . . * | 16. | . . . * | 16.1 | . . . * | 16.2 | . . . * | 16.3 | . . . * | 16.4 | . . . * | 16.5 | . . . * | 16.6 | . . . * | 16.7 | . . . * | 16.8 | . . . * | 16.9 | . . .* | 17. | . . * | 17.1 | . . *. | 17.2 | . . * . | 17.3 | . . * . | 17.4 | . . * . | 17.5 | . . * . | 17.6 | . . * . | 17.7 | . . * . | 17.8 | . . * . | 17.9 | . . * . | 18. | . . * . | 18.1 | . . * . | 18.2 | . . * . | 18.3 | . . * . | 18.4 | . .* . | 18.5 | . .* . | 18.6 | . * . | 18.7 | . * . | 18.8 | . * . | 18.9 | . * . | 19. | . * . | 19.1 | . * . | 19.2 | . .* . | 19.3 | . .* . | 19.4 | . . * . | 19.5 | . . * . | 19.6 | . . * . | 19.7 | . . * . | 19.8 | . . * . | 19.9 | . . * . | 20. | . . * . | 20.1 | . . * . | 20.2 | . . * . | 20.3 | . . * . | 20.4 | . . * . | 20.5 | . . * . | 20.6 | . . * . | 20.7 | . . * | 20.8 | . . .* | 20.9 | . . . * | 21. | . . . * | 21.1 | . . . * | 21.2 | . . . * | 21.3 | . . . * | 21.4 | . . . * | 21.5 | . . . * | 21.6 | . . . * | 21.7 | . . . * | 21.8 | . . . * | 21.9 | . . . * | 22. | . . . * | 22.1 | . . . * | 22.2 | . . . * | 22.3 | . . . * | 22.4 | . . . * | 22.5 | . . . * | 22.6 | . . . * | 22.7 | . . . * | 22.8 | . . . * | 22.9 | . . . * | 23. | . . . * | 23.1 | . . . * | 23.2 | . . .* | 23.3 | . . * | 23.4 | . . * . | 23.5 | . . * . | 23.6 | . . * . | 23.7 | . . * . | 23.8 | . . * . | 23.9 | . . * . | 24. | . . * . | 24.1 | . . * . | 24.2 | . . * . | 24.3 | . . * . | 24.4 | . . * . | 24.5 | . . * . | 24.6 | . . * . | 24.7 | . .* . | 24.8 | . .* . | 24.9 | . * . | 25. | . * . | 25.1 | . * . | 25.2 | . * . | 25.3 | . * . | 25.4 | . * . | 25.5 | . .* . | 25.6 | . .* . | 25.7 | . . * . | 25.8 | . . * . | 25.9 | . . * . | 26. | . . * . | 26.1 | . . * . | 26.2 | . . * . | 26.3 | . . * . | 26.4 | . . * . | 26.5 | . . * . | 26.6 | . . * . | 26.7 | . . * . | 26.8 | . . * . | 26.9 | . . * . | 27. | . . * | 27.1 | . . .* | 27.2 | . . . * | 27.3 | . . . * | 27.4 | . . . * | 27.5 | . . . * | 27.6 | . . . * | 27.7 | . . . * | 27.8 | . . . * | 27.9 | . . . * | 28. | . . . * | 28.1 | . . . * | 28.2 | . . . * | 28.3 | . . . * | 28.4 | . . . * | 28.5 | . . . * | 28.6 | . . . * | 28.7 | . . . * | 28.8 | . . . * | 28.9 | . . . * | 29. | . . . * | 29.1 | . . . * | 29.2 | . . . * | 29.3 | . . . * | 29.4 | . . . * | 29.5 | . . .* | 29.6 | . . * | 29.7 | . . * . | 29.8 | . . * . | 29.9 | . . * . | 30. | . . * . | 30.1 | . . * . | 30.2 | . . * . | 30.3 | . . * . | 30.4 | . . * . | 30.5 | . . * . | 30.6 | . . * . | 30.7 | . . * . | 30.8 | . . * . | 30.9 | . . * . | 31. | . .* . | 31.1 | . .* . | 31.2 | . * . | 31.3 | . * . | 31.4 | . * . | 31.5 | . * . | 31.6 | . * . | 31.7 | . * . | 31.8 | . .* . | 31.9 | . .* . | 32. | . . * . | 32.1 | . . * . | 32.2 | . . * . | 32.3 | . . * . | 32.4 | . . * . | 32.5 | . . * . | 32.6 | . . * . | 32.7 | . . * . | 32.8 | . . * . | 32.9 | . . * . | 33. | . . * . | 33.1 | . . * . | 33.2 | . . * . | 33.3 | . . * | 33.4 | . . .* | 33.5 | . . . * | 33.6 | . . . * | 33.7 | . . . * | 33.8 | . . . * | 33.9 | . . . * | 34. | . . . * | 34.1 | . . . * | 34.2 | . . . * | 34.3 | . . . * | 34.4 | . . . * | 34.5 | . . . * | 34.6 | . . . * | 34.7 | . . . * | 34.8 | . . . * | 34.9 | . . . * | 35. | . . . * | 35.1 | . . . * | 35.2 | . . . * | 35.3 | . . . * | 35.4 | . . . * | 35.5 | . . . * | 35.6 | . . . * | 35.7 | . . . * | 35.8 | . . .* | 35.9 | . . *. | 36. | . . * . | 36.1 | . . * . | 36.2 | . . * . | 36.3 | . . * . | 36.4 | . . * . | 36.5 | . . * . | 36.6 | . . * . | 36.7 | . . * . | 36.8 | . . * . | 36.9 | . . * . | 37. | . . * . | 37.1 | . . * . | 37.2 | . . * . | 37.3 | . .* . | 37.4 | . .* . | 37.5 | . * . | 37.6 | . * . | 37.7 | . * . | 37.8 | . * . | 37.9 | . * . | 38. | . * . | 38.1 | . .* . | 38.2 | . .* . | 38.3 | . . * . | 38.4 | . . * . | 38.5 | . . * . | 38.6 | . . * . | 38.7 | . . * . | 38.8 | . . * . | 38.9 | . . * . | 39. | . . * . | 39.1 | . . * . | 39.2 | . . * . | 39.3 | . . * . | 39.4 | . . * . | 39.5 | . . *. | 39.6 | . . * | 39.7 | . . .* | 39.8 | . . . * | 39.9 | . . . * | 40. | . . . * | 40.1 | . . . * | 40.2 | . . . * | 40.3 | . . . * | 40.4 | . . . * | 40.5 | . . . * | 40.6 | . . . * | 40.7 | . . . * | 40.8 | . . . * | 40.9 | . . . * | 41. | . . . * | 41.1 | . . . * | 41.2 | . . . * | 41.3 | . . . * | 41.4 | . . . * | 41.5 | . . . * | 41.6 | . . . * | 41.7 | . . . * | 41.8 | . . . * | 41.9 | . . . * | 42. | . . . * | 42.1 | . . .* | 42.2 | . . *. | 42.3 | . . * . | 42.4 | . . * . | 42.5 | . . * . | 42.6 | . . * . | 42.7 | . . * . | 42.8 | . . * . | 42.9 | . . * . | 43. | . . * . | 43.1 | . . * . | 43.2 | . . * . | 43.3 | . . * . | 43.4 | . . * . | 43.5 | . . * . | 43.6 | . .* . | 43.7 | . .* . | 43.8 | . * . | 43.9 | . * . | 44. | . * . | 44.1 | . * . | 44.2 | . * . | 44.3 | . .* . | 44.4 | . .* . | 44.5 | . . * . | 44.6 | . . * . | 44.7 | . . * . | 44.8 | . . * . | 44.9 | . . * . | 45. | . . * . | 45.1 | . . * . | 45.2 | . . * . | 45.3 | . . * . | 45.4 | . . * . | 45.5 | . . * . | 45.6 | . . * . | 45.7 | . . * . | 45.8 | . . *. | 45.9 | . . * | 46. | . . .* | 46.1 | . . . * | 46.2 | . . . * | 46.3 | . . . * | 46.4 | . . . * | 46.5 | . . . * | 46.6 | . . . * | 46.7 | . . . * | 46.8 | . . . * | 46.9 | . . . * | 47. | . . . * | 47.1 | . . . * | 47.2 | . . . * | 47.3 | . . . * | 47.4 | . . . * | 47.5 | . . . * | 47.6 | . . . * | 47.7 | . . . * | 47.8 | . . . * | 47.9 | . . . * | 48. | . . . * | 48.1 | . . . * | 48.2 | . . . * | 48.3 | . . . * | 48.4 | . . .* | 48.5 | . . *. | 48.6 | . . * . | 48.7 | . . * . | 48.8 | . . * . | 48.9 | . . * . | 49. | . . * . | 49.1 | . . * . | 49.2 | . . * . | 49.3 | . . * . | 49.4 | . . * . | 49.5 | . . * . | 49.6 | . . * . | 49.7 | . . * . | 49.8 | . . * . | 49.9 | . .* . | 50. | . .* . | 50.1 | . * . | 50.2 | . * . | 50.3 | . * . | 50.4 | . * . | 50.5 | . * . | 50.6 | . .* . | 50.7 | . .* . | 50.8 | . . * . | 50.9 | . . * . | 51. | . . * . | 51.1 | . . * . | 51.2 | . . * . | 51.3 | . . * . | 51.4 | . . * . | 51.5 | . . * . | 51.6 | . . * . | 51.7 | . . * . | 51.8 | . . * . | 51.9 | . . * . | 52. | . . * . | 52.1 | . . *. | 52.2 | . . * | 52.3 | . . . * | 52.4 | . . . * | 52.5 | . . . * | 52.6 | . . . * | 52.7 | . . . * | 52.8 | . . . * | 52.9 | . . . * | 53. | . . . * | 53.1 | . . . * | 53.2 | . . . * | 53.3 | . . . * | 53.4 | . . . * | 53.5 | . . . * | 53.6 | . . . * | 53.7 | . . . * | 53.8 | . . . * | 53.9 | . . . * | 54. | . . . * | 54.1 | . . . * | 54.2 | . . . * | 54.3 | . . . * | 54.4 | . . . * | 54.5 | . . . * | 54.6 | . . . * | 54.7 | . . * | 54.8 | . . *. | 54.9 | . . * . | 55. | . . * . | 55.1 | . . * . | 55.2 | . . * . | 55.3 | . . * . | 55.4 | . . * . | 55.5 | . . * . | 55.6 | . . * . | 55.7 | . . * . | 55.8 | . . * . | 55.9 | . . * . | 56. | . . * . | 56.1 | . . * . | 56.2 | . .* . | 56.3 | . .* . | 56.4 | . * . | 56.5 | . * . | 56.6 | . * . | 56.7 | . * . | 56.8 | . * . | 56.9 | . .* . | 57. | . .* . | 57.1 | . . * . | 57.2 | . . * . | 57.3 | . . * . | 57.4 | . . * . | 57.5 | . . * . | 57.6 | . . * . | 57.7 | . . * . | 57.8 | . . * . | 57.9 | . . * . | 58. | . . * . | 58.1 | . . * . | 58.2 | . . * . | 58.3 | . . * . | 58.4 | . . *. | 58.5 | . . * | 58.6 | . . . * | 58.7 | . . . * | 58.8 | . . . * | 58.9 | . . . * | 59. | . . . * | 59.1 | . . . * | 59.2 | . . . * | 59.3 | . . . * | 59.4 | . . . * | 59.5 | . . . * | 59.6 | . . . * | 59.7 | . . . * | 59.8 | . . . * | 59.9 | . . . * | 60. | . . . * | 60.1 | . . . * | 60.2 | . . . * | 60.3 | . . . * | 60.4 | . . . * | 60.5 | . . . * | 60.6 | . . . * | 60.7 | . . . * | 60.8 | . . . * | 60.9 | . . . * | 61. | . . * | 61.1 | . . *. | 61.2 | . . * . | 61.3 | . . * . | 61.4 | . . * . | 61.5 | . . * . | 61.6 | . . * . | 61.7 | . . * . | 61.8 | . . * . | 61.9 | . . * . | 62. | . . * . | 62.1 | . . * . | 62.2 | . . * . | 62.3 | . . * . | 62.4 | . . * . | 62.5 | . .* . | 62.6 | . .* . | 62.7 | . * . | 62.8 | . * . | 62.9 | . * . | 63. | . * . | 63.1 | . * . | 63.2 | . * . | 63.3 | . * . | 63.4 | . * . | 63.5 | . * . | 63.6 | . * . | 63.7 | . *. . | 63.8 | . *. . | 63.9 | . *. . | 64. | . *. . | 64.1 | . *. . | 64.2 | . *. . | 64.3 | . *. . | 64.4 | . *. . | 64.5 | . *. . | 64.6 | . *. . | 64.7 | . *. . | 64.8 | . *. . | 64.9 | . *. . | 65. | . *. . | 65.1 | . *. . | 65.2 | . *. . | 65.3 | . * . | 65.4 | . * . | 65.5 | . * . | 65.6 | . * . | 65.7 | . * . | 65.8 | . * . | 65.9 | . * . | 66. | . * . | 66.1 | . * . | 66.2 | . * . | 66.3 | . * . | 66.4 | . * . | 66.5 | . * . | 66.6 | . * . | 66.7 | . * . | 66.8 | . .* . | 66.9 | . .* . | 67. | . .* . | 67.1 | . .* . | 67.2 | . .* . | 67.3 | . .* . | 67.4 | . .* . | 67.5 | . .* . | 67.6 | . .* . | 67.7 | . .* . | 67.8 | . .* . | 67.9 | . .* . | 68. | . .* . | 68.1 | . .* . | 68.2 | . .* . | 68.3 | . .* . | 68.4 | . * . | 68.5 | . * . | 68.6 | . * . | 68.7 | . * . | 68.8 | . * . | 68.9 | . * . | 69. | . * . | 69.1 | . * . | 69.2 | . * . | 69.3 | . * . | 69.4 | . * . | 69.5 | . * . | 69.6 | . * . | 69.7 | . * . | 69.8 | . * . | 69.9 | . *. . | 70. | . *. . | 70.1 | . *. . | 70.2 | . *. . | 70.3 | . *. . | 70.4 | . *. . | 70.5 | . *. . | 70.6 | . *. . | 70.7 | . *. . | 70.8 | . *. . | 70.9 | . *. . | 71. | . *. . | 71.1 | . *. . | 71.2 | . *. . | 71.3 | . *. . | 71.4 | . *. . | 71.5 | . *. . | 71.6 | . * . | 71.7 | . * . | 71.8 | . * . | 71.9 | . * . | 72. | . * . | 72.1 | . * . | 72.2 | . * . | 72.3 | . * . | 72.4 | . * . | 72.5 | . * . | 72.6 | . * . | 72.7 | . * . | 72.8 | . * . | 72.9 | . * . | 73. | . * . | 73.1 | . .* . | 73.2 | . .* . | 73.3 | . .* . | 73.4 | . .* . | 73.5 | . .* . | 73.6 | . .* . | 73.7 | . .* . | 73.8 | . .* . | 73.9 | . .* . | 74. | . .* . | 74.1 | . .* . | 74.2 | . .* . | 74.3 | . .* . | 74.4 | . .* . | 74.5 | . .* . | 74.6 | . .* . | 74.7 | . * . | 74.8 | . * . | 74.9 | . * . | 75. | . * . | 75.1 | . * . | 75.2 | . * . | 75.3 | . * . | 75.4 | . * . | 75.5 | . * . | 75.6 | . * . | 75.7 | . * . | 75.8 | . * . | 75.9 | . * . | 76. | . * . | 76.1 | . * . | 76.2 | . *. . | 76.3 | . *. . | 76.4 | . *. . | 76.5 | . *. . | 76.6 | . *. . | 76.7 | . *. . | 76.8 | . *. . | 76.9 | . *. . | 77. | . *. . | 77.1 | . *. . | 77.2 | . *. . | 77.3 | . *. . | 77.4 | . *. . | 77.5 | . *. . | 77.6 | . *. . | 77.7 | . *. . | 77.8 | . *. . | 77.9 | . * . | 78. | . * . | 78.1 | . * . | 78.2 | . * . | 78.3 | . * . | 78.4 | . * . | 78.5 | . * . | 78.6 | . * . | 78.7 | . * . | 78.8 | . * . | 78.9 | . * . | 79. | . * . | 79.1 | . * . | 79.2 | . * . | 79.3 | . * . | 79.4 | . .* . | 79.5 | . .* . | 79.6 | . .* . | 79.7 | . .* . | 79.8 | . .* . | 79.9 | . .* . | 80. | . .* . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=2430, fourier=0, total=6482 transient timesteps: accepted=1620, rejected=2, total=1622 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.3a.ckt.out000066400000000000000000000613671316501211100161060ustar00rootroot00000000000000'LC Oscillator Accuracy test #Time v(1) 0. -10.u 0.01 -8.4076u 0.015266 -7.3483u 0.026585 -3.5769u 0.034629 343.44n 0.13117 127.43u 0.30493 723.01u 0.53662 0.0022167 0.76831 0.0044359 1. 0.0072632 1.3333 0.012067 1.6667 0.017287 2. 0.022358 2.3333 0.026733 2.6667 0.029939 3. 0.031628 3.5 0.030999 4. 0.02682 5. 0.013174 5.5 0.0061145 6. 0.001361 6.25 218.1u 6.5 41.155u 6.625 322.26u 6.8125 0.0011947 7. 0.0025802 7.3333 0.0061241 7.6667 0.010726 8. 0.01589 8.3333 0.021056 8.6667 0.025666 9. 0.029223 9.5 0.031773 10. 0.030593 10.5 0.025959 11. 0.018962 11.5 0.011248 12. 0.0046322 12.5 671.35u 12.75 6.7009u 12.875 41.907u 12.938 152.48u 13. 324.57u 13.25 0.0016026 13.5 0.0037615 13.75 0.0066683 14. 0.010144 14.333 0.01527 14.667 0.020465 15. 0.025169 15.5 0.030179 16. 0.031833 16.5 0.029742 17. 0.024398 17.5 0.017057 18. 0.0094484 18.5 0.003361 18.75 0.0013358 19. 207.69u 19.25 46.25u 19.4 421.84u 19.7 0.0021834 20. 0.0051537 20.3 0.0090712 20.6 0.013591 21. 0.019829 21.4 0.025465 21.8 0.029632 22. 0.030962 22.5 0.031646 23. 0.028628 24. 0.01587 24.5 0.0083815 25. 0.0026656 25.333 516.79u 25.667 32.701u 25.833 442.87u 26. 0.0012799 26.333 0.0041066 26.667 0.00821 27. 0.013146 27.333 0.018382 27.667 0.023351 28. 0.027516 28.5 0.031285 29. 0.031438 29.5 0.027938 30. 0.021609 30.5 0.013941 31. 0.0067372 31.5 0.0016929 31.75 367.23u 32. -1.628u 32.143 229.78u 32.286 779.67u 32.643 0.0034284 33. 0.0076206 33.357 0.012838 33.714 0.018436 34. 0.022738 34.5 0.028707 35. 0.031666 35.5 0.030919 36. 0.026642 37. 0.012935 37.5 0.005924 38. 0.0012641 38.25 179.u 38.5 62.324u 38.625 373.42u 38.812 0.0012892 39. 0.0027146 39.333 0.0063169 39.667 0.010957 40. 0.016133 40.333 0.021285 40.667 0.025857 41. 0.029355 41.5 0.031794 42. 0.030497 42.5 0.025769 43. 0.018723 43.5 0.011016 44. 0.0044619 44.333 0.0014927 44.667 82.726u 44.833 18.299u 44.917 151.23u 45. 393.44u 45.25 0.0017469 45.5 0.0039724 45.75 0.0069327 46. 0.010446 46.333 0.015592 46.667 0.020773 47. 0.025429 47.5 0.03032 48. 0.031821 48.5 0.029579 49. 0.024123 49.5 0.016736 50. 0.0091551 50.5 0.0031652 50.75 0.001209 51. 157.87u 51.25 76.391u 51.375 404.96u 51.583 0.0014816 51.792 0.003178 52. 0.0054213 52.333 0.0098732 52.667 0.014978 53. 0.020185 53.333 0.02493 53.667 0.0287 54. 0.031088 54.5 0.031579 55. 0.028384 55.5 0.022255 56. 0.014634 56.5 0.0073153 57. 0.0020199 57.333 248.19u 57.556 4.359u 57.667 175.06u 57.833 791.98u 58. 0.0018261 58.333 0.0049948 58.667 0.0093441 59. 0.014404 59.333 0.019627 59.667 0.024449 60. 0.028348 60.5 0.031568 61. 0.031105 61.5 0.027068 62. 0.020407 62.5 0.012689 62.832 0.0078256 62.833 0.0078146 62.833 0.0078036 62.834 0.0077976 62.834 0.0077915 63. 0.0054252 63.25 0.0016076 63.5 -0.0023089 63.75 -0.0060834 64. -0.0094835 64.333 -0.013066 64.667 -0.015236 65. -0.015759 65.333 -0.014579 65.667 -0.011822 66. -0.0077871 66.333 -0.0029104 66.667 0.0022809 66.833 0.0048359 67. 0.0072575 67.25 0.010487 67.625 0.014052 68. 0.015708 68.375 0.01523 68.583 0.014043 68.792 0.012253 69. 0.0099365 69.333 0.0054186 69.667 314.87u 70. -0.0048229 70.333 -0.0094392 70.667 -0.013035 71. -0.015222 71.333 -0.015763 71.667 -0.0146 71.833 -0.013402 72. -0.011835 72.333 -0.007804 72.667 -0.0029295 73. 0.0022616 73.25 0.0060393 73.5 0.0094452 73.75 0.01227 74. 0.01434 74.333 0.01571 74.667 0.015382 75. 0.013391 75.333 0.0099527 75.667 0.0054381 76. 335.71u 76.333 -0.004803 76.667 -0.0094225 77. -0.013023 77.333 -0.015216 77.667 -0.015764 78. -0.014608 78.333 -0.011872 78.667 -0.0078532 79. -0.0029852 79.333 0.0022056 79.556 0.0055843 79.778 0.0086907 80. 0.011373 v(1) -0.04 -0.02 0. 0.02 0.04 +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.01 | . * . | 0.01526| . * . | 0.02658| . * . | 0.03462| . * . | 0.13117| . * . | 0.30493| . .* . | 0.53662| . . * . | 0.76831| . . * . | 1. | . . * . | 1.3333 | . . * . | 1.6667 | . . * . | 2. | . . . * | 2.3333 | . . . * | 2.6667 | . . . * | 3. | . . . * | 3.5 | . . . * | 4. | . . . * | 5. | . . * . | 5.5 | . . * . | 6. | . .* . | 6.25 | . * . | 6.5 | . * . | 6.625 | . * . | 6.8125 | . .* . | 7. | . . * . | 7.3333 | . . * . | 7.6667 | . . * . | 8. | . . * . | 8.3333 | . . * | 8.6667 | . . . * | 9. | . . . * | 9.5 | . . . * | 10. | . . . * | 10.5 | . . . * | 11. | . . *. | 11.5 | . . * . | 12. | . . * . | 12.5 | . .* . | 12.75 | . * . | 12.875 | . * . | 12.938 | . * . | 13. | . * . | 13.25 | . .* . | 13.5 | . . * . | 13.75 | . . * . | 14. | . . * . | 14.333 | . . * . | 14.667 | . . * | 15. | . . . * | 15.5 | . . . * | 16. | . . . * | 16.5 | . . . * | 17. | . . . * | 17.5 | . . * . | 18. | . . * . | 18.5 | . . * . | 18.75 | . .* . | 19. | . * . | 19.25 | . * . | 19.4 | . * . | 19.7 | . . * . | 20. | . . * . | 20.3 | . . * . | 20.6 | . . * . | 21. | . . *. | 21.4 | . . . * | 21.8 | . . . * | 22. | . . . * | 22.5 | . . . * | 23. | . . . * | 24. | . . * . | 24.5 | . . * . | 25. | . . * . | 25.333 | . * . | 25.667 | . * . | 25.833 | . * . | 26. | . .* . | 26.333 | . . * . | 26.667 | . . * . | 27. | . . * . | 27.333 | . . * . | 27.667 | . . . * | 28. | . . . * | 28.5 | . . . * | 29. | . . . * | 29.5 | . . . * | 30. | . . .* | 30.5 | . . * . | 31. | . . * . | 31.5 | . .* . | 31.75 | . * . | 32. | . * . | 32.143 | . * . | 32.286 | . .* . | 32.643 | . . * . | 33. | . . * . | 33.357 | . . * . | 33.714 | . . * . | 34. | . . . * | 34.5 | . . . * | 35. | . . . * | 35.5 | . . . * | 36. | . . . * | 37. | . . * . | 37.5 | . . * . | 38. | . .* . | 38.25 | . * . | 38.5 | . * . | 38.625 | . * . | 38.812 | . .* . | 39. | . . * . | 39.333 | . . * . | 39.667 | . . * . | 40. | . . * . | 40.333 | . . .* | 40.667 | . . . * | 41. | . . . * | 41.5 | . . . * | 42. | . . . * | 42.5 | . . . * | 43. | . . * . | 43.5 | . . * . | 44. | . . * . | 44.333 | . .* . | 44.667 | . * . | 44.833 | . * . | 44.917 | . * . | 45. | . * . | 45.25 | . . * . | 45.5 | . . * . | 45.75 | . . * . | 46. | . . * . | 46.333 | . . * . | 46.667 | . . * | 47. | . . . * | 47.5 | . . . * | 48. | . . . * | 48.5 | . . . * | 49. | . . . * | 49.5 | . . * . | 50. | . . * . | 50.5 | . . * . | 50.75 | . .* . | 51. | . * . | 51.25 | . * . | 51.375 | . * . | 51.583 | . .* . | 51.792 | . . * . | 52. | . . * . | 52.333 | . . * . | 52.667 | . . * . | 53. | . . * | 53.333 | . . . * | 53.667 | . . . * | 54. | . . . * | 54.5 | . . . * | 55. | . . . * | 55.5 | . . .* | 56. | . . * . | 56.5 | . . * . | 57. | . . * . | 57.333 | . * . | 57.556 | . * . | 57.667 | . * . | 57.833 | . .* . | 58. | . . * . | 58.333 | . . * . | 58.667 | . . * . | 59. | . . * . | 59.333 | . . *. | 59.667 | . . . * | 60. | . . . * | 60.5 | . . . * | 61. | . . . * | 61.5 | . . . * | 62. | . . * | 62.5 | . . * . | 62.832 | . . * . | 62.833 | . . * . | 62.833 | . . * . | 62.834 | . . * . | 62.834 | . . * . | 63. | . . * . | 63.25 | . .* . | 63.5 | . * . . | 63.75 | . * . . | 64. | . * . . | 64.333 | . * . . | 64.667 | . * . . | 65. | . * . . | 65.333 | . * . . | 65.667 | . * . . | 66. | . * . . | 66.333 | . * . . | 66.667 | . . * . | 66.833 | . . * . | 67. | . . * . | 67.25 | . . * . | 67.625 | . . * . | 68. | . . * . | 68.375 | . . * . | 68.583 | . . * . | 68.792 | . . * . | 69. | . . * . | 69.333 | . . * . | 69.667 | . * . | 70. | . * . . | 70.333 | . * . . | 70.667 | . * . . | 71. | . * . . | 71.333 | . * . . | 71.667 | . * . . | 71.833 | . * . . | 72. | . * . . | 72.333 | . * . . | 72.667 | . * . . | 73. | . . * . | 73.25 | . . * . | 73.5 | . . * . | 73.75 | . . * . | 74. | . . * . | 74.333 | . . * . | 74.667 | . . * . | 75. | . . * . | 75.333 | . . * . | 75.667 | . . * . | 76. | . * . | 76.333 | . * . . | 76.667 | . * . . | 77. | . * . . | 77.333 | . * . . | 77.667 | . * . . | 78. | . * . . | 78.333 | . * . . | 78.667 | . * . . | 79. | . * . . | 79.333 | . . * . | 79.556 | . . * . | 79.778 | . . * . | 80. | . . * . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=723, fourier=0, total=1930 transient timesteps: accepted=482, rejected=2, total=484 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.4.ckt.out000066400000000000000000000226041316501211100157350ustar00rootroot00000000000000'c check v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0. rise= 100.u fall= 100.u width= 1.K period= 1.K AC 1. r1 ( 1 2 ) 0.1 c2 ( 2 0 ) 0.1 #Time v(1) v(2) timef(c2) dtr(c2) dt(c2) 0. 0. 0. Inf Inf ?? 0.001 0.99999 0.090647 0.0027983 0.0017983 701.25u 0.002 0.99999 0.17725 0.0046348 0.0026348 0.001 0.003 0.99999 0.25561 0.0059847 0.0029847 0.001 0.004 0.99999 0.3265 0.0072684 0.0032684 0.001 0.005 0.99999 0.39064 0.0085875 0.0035875 0.001 0.006 0.99999 0.44868 0.0098845 0.0038845 0.001 0.007 1. 0.50118 0.011167 0.0041672 0.001 0.008 1. 0.54869 0.012441 0.0044406 0.001 0.009 1. 0.59167 0.013708 0.0047081 0.001 0.01 1. 0.63056 0.014972 0.0049722 0.001 #Time v(1) v(2) timef(c2) dtr(c2) dt(c2) 0. 0. 0. Inf Inf ?? 0.01 1. 0.63155 0.014649 0.0046486 0.0022619 0.02 1. 0.86572 0.026793 0.0067927 0.0033333 0.03 1. 0.95166 0.039386 0.009386 0.005 0.04 1. 0.9826 0.052601 0.012601 0.005 0.05 1. 0.9942 0.065325 0.015325 0.01 0.06 1. 0.99807 0.080826 0.020826 0.01 0.07 1. 0.99936 0.095345 0.025345 0.01 0.08 1. 0.99979 0.11656 0.036559 0.01 0.09 1. 0.99993 0.14273 0.052729 0.01 0.1 1. 0.99998 0.17605 0.076049 0.01 #Time v(1) v(2) timef(c2) dtr(c2) dt(c2) 0. 0. 0. Inf Inf ?? 0.1 1. 0.99999 0.15337 0.053374 0.016946 0.2 1. 1. 0.51279 0.31279 0.05 0.3 1. 1. 1.2718 0.97181 0.1 0.4 1. 1. 2.0618 1.6618 0.1 0.5 1. 1. 3.0469 2.5469 0.1 0.6 1. 1. 3.5155 2.9155 0.1 0.7 1. 1. 4.0374 3.3374 0.1 0.8 1. 1. 4.6203 3.8203 0.1 0.9 1. 1. 5.2732 4.3732 0.1 1. 1. 1. 6.0061 5.0061 0.1 #Time v(1) v(2) timef(c2) dtr(c2) dt(c2) 0. 0. 0. Inf Inf ?? 2.4113n 24.112u 5.814p 5.8949n 3.4837n 2.4113n 4.8225n 48.225u 14.535p 8.9213n 4.0988n 2.4113n 8.9213n 89.212u 42.702p 12.604n 3.683n 4.0988n 13.02n 130.2u 87.668p 463.24n 450.22n 4.0988n 463.24n 0.0046324 107.3n 4.3918u 3.9285u 450.22n 4.3918u 0.043917 9.6418u 22.582u 18.19u 3.9285u 22.582u 0.22582 254.73u 78.293u 55.711u 18.19u 78.291u 0.7829 0.0030553 209.17u 130.87u 55.709u 100.u 0.99999 0.0049818 288.71u 188.71u 21.709u 147.17u 0.99999 0.0096646 183.76u 36.589u 47.174u 183.76u 0.99999 0.013281 233.67u 49.911u 36.588u 220.35u 0.99999 0.016885 0.001332 0.0011116 36.588u 283.86u 0.99999 0.023109 0.0014995 0.0012157 63.506u 0.0014986 0.99999 0.13498 0.0035459 0.0020473 0.0012147 0.0035447 0.99999 0.29554 0.00669 0.0031453 0.0020461 0.0066881 0.99999 0.4869 0.010502 0.0038144 0.0031434 0.0098315 1. 0.62628 0.014412 0.0045804 0.0031434 0.012975 1. 0.7278 0.018098 0.0051233 0.0031434 0.018089 1. 0.83866 0.024056 0.0059674 0.0051141 0.023203 1. 0.90437 0.030574 0.0073706 0.0051141 0.028317 1. 0.94332 0.036639 0.0083222 0.0051141 0.036622 1. 0.97658 0.046769 0.010147 0.008305 0.044927 1. 0.99032 0.058243 0.013316 0.008305 0.058192 1. 0.99804 0.074762 0.01657 0.013265 0.071457 1. 0.9996 0.09618 0.024723 0.013265 0.095892 1. 1. 0.13226 0.036364 0.024435 0.12033 1. 1. 0.19319 0.072859 0.024435 0.18799 1. 1. 0.34492 0.15693 0.067667 0.32333 1. 1. 0.85733 0.53401 0.13533 0.66166 1. 1. 2.9204 2.2587 0.33834 1. 1. 1. 5.8114 4.8114 0.33834 2. 1. 1. 10.962 8.9623 1. 3. 1. 1. 17.762 14.762 1. 4. 1. 1. 24.684 20.684 1. 5. 1. 1. 25.961 20.961 1. 6. 1. 1. 27.243 21.243 1. 7. 1. 1. 28.528 21.528 1. 8. 1. 1. 29.817 21.817 1. 9. 1. 1. 31.11 22.11 1. 10. 1. 1. 32.407 22.407 1. #Time v(1) v(2) timef(c2) dtr(c2) dt(c2) 0. 0. 0. Inf Inf ?? 100.u 0.99999 0.0099009 840.n 840.n 100.u 833.33n 0.0083333 694.38n 7.n 7.n 833.33n 7.0028n 70.027u 49.039p 1.1995n 1.1995n 7.0028n 1.7507n 17.507u 3.065p 6.5488n 4.7981n 1.7507n 6.5488n 65.488u 22.976p 9.9348n 3.386n 4.7981n 9.9348n 99.347u 50.882p 14.638n 4.7035n 3.386n 13.321n 133.21u 90.254p 442.71n 429.39n 3.386n 442.71n 0.0044271 97.996n 2.2112u 1.7685u 429.39n 2.2112u 0.022112 2.4444u 7.7518u 5.5406u 1.7685u 7.7517u 0.077517 30.035u 20.72u 12.969u 5.5406u 20.72u 0.2072 214.5u 46.202u 25.482u 12.969u 46.201u 0.46201 0.0010655 90.138u 43.937u 25.481u 90.138u 0.90137 0.0040494 159.24u 69.099u 43.937u 100.u 0.99999 0.0049825 185.71u 85.712u 9.862u 185.71u 0.99999 0.013474 118.02u 18.021u 85.711u 117.14u 0.99999 0.0066867 129.92u 12.774u 17.142u 129.92u 0.99999 0.0079546 143.35u 13.435u 12.773u 142.69u 0.99999 0.009221 562.93u 420.24u 12.773u 155.46u 0.99999 0.010486 601.68u 446.22u 12.773u 601.62u 0.99999 0.05367 0.0012847 683.1u 446.16u 0.0012843 0.99999 0.11614 0.0023289 0.0010446 682.65u 0.0023279 0.99999 0.2038 0.0035601 0.0012322 0.0010436 0.0033715 0.99999 0.28277 0.0048255 0.001454 0.0010436 0.004415 0.99999 0.35391 0.0059915 0.0015765 0.0010436 0.0059903 0.99999 0.44825 0.0077301 0.0017398 0.0015753 0.0075656 1. 0.52882 0.0095737 0.0020081 0.0015753 0.0091409 1. 0.59763 0.011278 0.0021367 0.0015753 0.010716 1. 0.65638 0.01304 0.0023236 0.0015753 0.012292 1. 0.70656 0.014802 0.00251 0.0015753 0.014798 1. 0.77193 0.01749 0.0026916 0.0025069 0.017305 1. 0.82273 0.020397 0.0030922 0.0025069 0.019812 1. 0.86222 0.023089 0.0032765 0.0025069 0.022319 1. 0.89291 0.025924 0.0036055 0.0025069 0.024826 1. 0.91677 0.028782 0.003956 0.0025069 0.028774 1. 0.94421 0.033097 0.0043232 0.0039481 0.032722 1. 0.96261 0.0378 0.0050775 0.0039481 0.03667 1. 0.97494 0.042198 0.005528 0.0039481 0.040618 1. 0.9832 0.046953 0.0063344 0.0039481 0.04693 1. 0.99126 0.054222 0.0072922 0.0063117 0.053242 1. 0.99545 0.062305 0.0090633 0.0063117 0.059553 1. 0.99763 0.069987 0.010434 0.0063117 0.069888 1. 0.99925 0.083122 0.013234 0.010335 0.080222 1. 0.99976 0.098434 0.018212 0.010335 0.098257 1. 0.99999 0.12243 0.024176 0.018035 0.11629 1. 1. 0.15684 0.040548 0.018035 0.15646 1. 1. 0.22573 0.069266 0.040169 0.22135 1. 1. 0.47472 0.25338 0.064888 0.41601 1. 1. 1.5677 1.1517 0.19466 1. 1. 1. 4.5985 3.5985 0.58399 2. 1. 1. 12.664 10.664 1. 3. 1. 1. 22.798 19.798 1. 4. 1. 1. 27.455 23.455 1. 5. 1. 1. 28.77 23.77 1. 6. 1. 1. 30.089 24.089 1. 7. 1. 1. 31.413 24.413 1. 8. 1. 1. 32.74 24.74 1. 9. 1. 1. 34.072 25.072 1. 10. 1. 1. 35.409 25.409 1. Gnucap System status iterations: op=0, dc=0, tran=220, fourier=0, total=1030 transient timesteps: accepted=190, rejected=27, total=217 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.5.ckt.out000066400000000000000000000037051316501211100157370ustar00rootroot00000000000000'c check v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0. rise= 100.u fall= 100.u width= 1.K period= 1.K AC 1. r1 ( 1 2 ) 0.01 c2 ( 2 0 ) 1. #Time v(1) v(2) 0. 0. 0. 0.001 0.99999 0.090644 0.002 0.99999 0.17725 0.003 0.99999 0.2556 0.004 0.99999 0.3265 0.005 0.99999 0.39064 0.006 0.99999 0.44867 0.007 1. 0.50118 0.008 1. 0.54869 0.009 1. 0.59167 0.01 1. 0.63056 #Time v(1) v(2) 0. 0. 0. 0.01 1. 0.63154 0.02 1. 0.86572 0.03 1. 0.95166 0.04 1. 0.9826 0.05 1. 0.9942 0.06 1. 0.99807 0.07 1. 0.99936 0.08 1. 0.99979 0.09 1. 0.99993 0.1 1. 0.99998 #Time v(1) v(2) 0. 0. 0. 0.1 1. 0.99999 0.2 1. 1. 0.3 1. 1. 0.4 1. 1. 0.5 1. 1. 0.6 1. 1. 0.7 1. 1. 0.8 1. 1. 0.9 1. 1. 1. 1. 1. #Time v(1) v(2) 0. 0. 0. 1. 1. 1. 2. 1. 1. 3. 1. 1. 4. 1. 1. 5. 1. 1. 6. 1. 1. 7. 1. 1. 8. 1. 1. 9. 1. 1. 10. 1. 1. Gnucap System status iterations: op=0, dc=0, tran=140, fourier=0, total=636 transient timesteps: accepted=135, rejected=25, total=160 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.6.ckt.out000066400000000000000000000037051316501211100157400ustar00rootroot00000000000000'c check v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0. rise= 100.u fall= 100.u width= 1.K period= 1.K AC 1. r1 ( 1 2 ) 1. c2 ( 2 0 ) 0.01 #Time v(1) v(2) 0. 0. 0. 0.001 0.99999 0.09064 0.002 0.99999 0.17725 0.003 0.99999 0.2556 0.004 0.99999 0.3265 0.005 0.99999 0.39064 0.006 0.99999 0.44867 0.007 1. 0.50118 0.008 1. 0.54869 0.009 1. 0.59167 0.01 1. 0.63056 #Time v(1) v(2) 0. 0. 0. 0.01 1. 0.63258 0.02 1. 0.8661 0.03 1. 0.9518 0.04 1. 0.98265 0.05 1. 0.99422 0.06 1. 0.99807 0.07 1. 0.99936 0.08 1. 0.99979 0.09 1. 0.99993 0.1 1. 0.99998 #Time v(1) v(2) 0. 0. 0. 0.1 1. 0.99999 0.2 1. 1. 0.3 1. 1. 0.4 1. 1. 0.5 1. 1. 0.6 1. 1. 0.7 1. 1. 0.8 1. 1. 0.9 1. 1. 1. 1. 1. #Time v(1) v(2) 0. 0. 0. 1. 1. 1. 2. 1. 1. 3. 1. 1. 4. 1. 1. 5. 1. 1. 6. 1. 1. 7. 1. 1. 8. 1. 1. 9. 1. 1. 10. 1. 1. Gnucap System status iterations: op=0, dc=0, tran=131, fourier=0, total=588 transient timesteps: accepted=129, rejected=19, total=148 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.ic1.ckt.out000066400000000000000000000005731316501211100162470ustar00rootroot00000000000000' cap with initial condition, ignored because I didn't say "uic" c1 ( 1 0 ) 1. ic= 3. r1 ( 1 0 ) 1. #Time v(1) 0. 0. 1. 0. 2. 0. 3. 0. 4. 0. 5. 0. 6. 0. 7. 0. 8. 0. 9. 0. 10. 0. tests/==out/d_cap.ic2.ckt.out000066400000000000000000000010571316501211100162460ustar00rootroot00000000000000' cap with initial condition c1 ( 1 0 ) 1. ic= 3. r1 ( 1 0 ) 1. #Time v(1) 0. 0. 1. 1.0798 2. 0.3935 3. 0.1434 4. 0.052261 5. 0.019045 6. 0.0069407 7. 0.0025294 8. 921.8u 9. 335.93u 10. 122.42u Gnucap System status iterations: op=0, dc=0, tran=124, fourier=0, total=156 transient timesteps: accepted=32, rejected=0, total=32 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_cap.ic4.ckt.out000066400000000000000000000040221316501211100162430ustar00rootroot00000000000000' cap with initial condition c1 ( 1 0 ) 1. ic= 3. r1 ( 1 0 ) 1. c2 ( 2 0 ) 1. ic= 3. I2 ( 2 0 ) DC 0. c3 ( 3 0 ) 1. ic= 3. I3 ( 3 0 ) DC 1. c4 ( 4 0 ) 1. ic= 3. c4a ( 4 0 ) 1. c5 ( 5 0 ) 1. ic= 3. c5a ( 5 0 ) 1. I5 ( 5 0 ) DC 1. #Time v(1) v(2) v(3) v(4) v(5) 0. 0. 0. 0. 0. 0. 1. 1.0973 3. 2. 1.5 1. 2. 0.40134 3. 1. 1.5 0.5 3. 0.14626 3. 2.5786u 1.5 2.4438u 4. 0.053302 3. -1. 1.5 -0.5 5. 0.019425 3. -2. 1.5 -1. 6. 0.007079 3. -3. 1.5 -1.5 7. 0.0025798 3. -4. 1.5 -2. 8. 940.15u 3. -5. 1.5 -2.5 9. 342.61u 3. -6. 1.5 -3. 10. 124.85u 3. -7. 1.5 -3.5 #Time v(1) v(2) v(3) v(4) v(5) 10. 124.85u 3. -7. 1.5 -3.5 11. 45.512u 3. -8. 1.5 -4. 12. 16.586u 3. -9. 1.5 -4.5 13. 6.0443u 3. -10. 1.5 -5. 14. 2.2025u 3. -11. 1.5 -5.5 15. 802.38n 3. -12. 1.5 -6. 16. 293.44n 3. -13. 1.5 -6.5 17. 106.94n 3. -14. 1.5 -7. 18. 38.972n 3. -15. 1.5 -7.5 19. 14.203n 3. -16. 1.5 -8. 20. 5.1759n 3. -17. 1.5 -8.5 Gnucap System status iterations: op=0, dc=0, tran=130, fourier=0, total=385 transient timesteps: accepted=72, rejected=7, total=79 nodes: user=5, subckt=0, model=0, total=5 dctran density=20.0%, ac density=20.0% tests/==out/d_cccs.1.ckt.out000066400000000000000000000025501316501211100161000ustar00rootroot00000000000000# cccs test, with element probes (forces full eval) i1 ( 1 0 ) DC 11. AC 11. ri1 ( 1 0 ) 10. e1 ( 2 0 1 0 ) 8. re1 ( 2 0 ) 10. * sense the voltage source (0 volts) i2 ( 3 0 ) DC 11. AC 11. ri2 ( 4 0 ) 10. v2 ( 3 4 ) DC 0. f2 ( 5 0 v2 ) 8. rf2 ( 5 0 ) 10. * sense a live voltage source v7 ( 6 0 ) DC 11. AC 11. rv7 ( 6 0 ) 10. f7 ( 7 0 v7 ) 8. rf7 ( 7 0 ) 10. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 27. -110. -880. -110. -110. 880. 11. 88. -88. -8.8 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 0. -110. -880. -110. -110. 880. 11. 88. -88. -8.8 0.05 -110. -880. -110. -110. 880. 11. 88. -88. -8.8 0.1 -110. -880. -110. -110. 880. 11. 88. -88. -8.8 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 1.K 110. 880. 110. 110. 880. 11. 88. ?? ?? 2.K 110. 880. 110. 110. 880. 11. 88. ?? ?? tests/==out/d_cccs.2.ckt.out000066400000000000000000000042751316501211100161070ustar00rootroot00000000000000# cccs test # v(1) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(18) v(19) v(2) v(20) v(21) + v(22) v(3) v(4) v(5) v(6) v(7) v(8) v(9) i(v7) i(v8) 27. -110. -110. -880. -1.1001 -1.1 880. 1.1 -1.1001 -1.1 880. 11. -880. 88. 11. +-88. -110. -110. 880. -110. -110. 880. -110. -1.1 -1.1 #Time v(1) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(18) v(19) v(2) v(20) v(21) + v(22) v(3) v(4) v(5) v(6) v(7) v(8) v(9) i(v7) i(v8) 0. -110. -110. -880. -1.1001 -1.1 880. 1.1 -1.1001 -1.1 880. 11. -880. 88. 11. +-88. -110. -110. 880. -110. -110. 880. -110. -1.1 -1.1 0.05 -110. -110. -880. -1.1001 -1.1 880. 1.1 -1.1001 -1.1 880. 11. -880. 88. 11. +-88. -110. -110. 880. -110. -110. 880. -110. -1.1 -1.1 0.1 -110. -110. -880. -1.1001 -1.1 880. 1.1 -1.1001 -1.1 880. 11. -880. 88. 11. +-88. -110. -110. 880. -110. -110. 880. -110. -1.1 -1.1 #Freq v(1) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(18) v(19) v(2) v(20) v(21) + v(22) v(3) v(4) v(5) v(6) v(7) v(8) v(9) i(v7) i(v8) 1.K 110. 110. 880. 1.1001 1.1 880. 1.1 1.1001 1.1 880. 11. 880. 88. 11. + 88. 110. 110. 880. 110. 110. 880. 110. 1.1 1.1 tests/==out/d_cccs.3.ckt.out000066400000000000000000000020061316501211100160760ustar00rootroot00000000000000# cccs test forward reference # v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 27. -110. -880. -110. -110. 880. 11. 88. -88. -8.8 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 0. -110. -880. -110. -110. 880. 11. 88. -88. -8.8 0.05 -110. -880. -110. -110. 880. 11. 88. -88. -8.8 0.1 -110. -880. -110. -110. 880. 11. 88. -88. -8.8 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 1.K 110. 880. 110. 110. 880. 11. 88. ?? ?? 2.K 110. 880. 110. 110. 880. 11. 88. ?? ?? tests/==out/d_cccs.4.ckt.out000066400000000000000000000001141316501211100160750ustar00rootroot00000000000000# cccs test ref to device that does not exist f2: can't find: v3 in (root) tests/==out/d_cccs.5.ckt.out000066400000000000000000000000651316501211100161030ustar00rootroot00000000000000# cccs test f6b: g6 cannot be used as current probe tests/==out/d_cccs.6.ckt.out000066400000000000000000000037551316501211100161150ustar00rootroot00000000000000# cccs test forward reference # v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 27. -110. -880. -99. -110. 880. 11. 88. -88. -8.8 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 0. -110. -880. -99. -110. 880. 11. 88. -88. -8.8 0.05 -110. -880. -99. -110. 880. 11. 88. -88. -8.8 0.1 -110. -880. -99. -110. 880. 11. 88. -88. -8.8 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 1.K 110. 880. 110. 110. 880. 11. 88. ?? ?? 2.K 110. 880. 110. 110. 880. 11. 88. ?? ?? # v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 27. -110. -880. -110. -110. 880. 11. 88. -88. -8.8 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 0. -110. -880. -110. -110. 880. 11. 88. -88. -8.8 0.05 -110. -880. -110. -110. 880. 11. 88. -88. -8.8 0.1 -110. -880. -110. -110. 880. 11. 88. -88. -8.8 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) 1.K 110. 880. 110. 110. 880. 11. 88. ?? ?? 2.K 110. 880. 110. 110. 880. 11. 88. ?? ?? tests/==out/d_ccvs.1.ckt.out000066400000000000000000000014561316501211100161270ustar00rootroot00000000000000* ccvs test # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. -110. -880. -110. -110. -88. 11. -8.8 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. -110. -880. -110. -110. -88. 11. -8.8 0.05 -110. -880. -110. -110. -88. 11. -8.8 0.1 -110. -880. -110. -110. -88. 11. -8.8 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) 1.K 110. 880. 110. 110. 88. 11. 8.8 2.K 110. 880. 110. 110. 88. 11. 8.8 tests/==out/d_ccvs.2.ckt.out000066400000000000000000000042751316501211100161320ustar00rootroot00000000000000# cccs test # v(1) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(18) v(19) v(2) v(20) v(21) + v(22) v(3) v(4) v(5) v(6) v(7) v(8) v(9) i(v7) i(v8) 27. -110. -110. 88. -1.1001 -1.1 -88. 1.1 -1.1001 -1.1 -88. 11. -880. -8.8 11. + 8.8 -110. -110. -88. -110. -110. -88. -110. -1.1 -1.1 #Time v(1) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(18) v(19) v(2) v(20) v(21) + v(22) v(3) v(4) v(5) v(6) v(7) v(8) v(9) i(v7) i(v8) 0. -110. -110. 88. -1.1001 -1.1 -88. 1.1 -1.1001 -1.1 -88. 11. -880. -8.8 11. + 8.8 -110. -110. -88. -110. -110. -88. -110. -1.1 -1.1 0.05 -110. -110. 88. -1.1001 -1.1 -88. 1.1 -1.1001 -1.1 -88. 11. -880. -8.8 11. + 8.8 -110. -110. -88. -110. -110. -88. -110. -1.1 -1.1 0.1 -110. -110. 88. -1.1001 -1.1 -88. 1.1 -1.1001 -1.1 -88. 11. -880. -8.8 11. + 8.8 -110. -110. -88. -110. -110. -88. -110. -1.1 -1.1 #Freq v(1) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(18) v(19) v(2) v(20) v(21) + v(22) v(3) v(4) v(5) v(6) v(7) v(8) v(9) i(v7) i(v8) 1.K 110. 110. 88. 1.1001 1.1 88. 1.1 1.1001 1.1 88. 11. 880. 8.8 11. + 8.8 110. 110. 88. 110. 110. 88. 110. 1.1 1.1 tests/==out/d_ccvs.3.ckt.out000066400000000000000000000000651316501211100161240ustar00rootroot00000000000000# cccs test h9a: e9 cannot be used as current probe tests/==out/d_coil.1.ckt.out000066400000000000000000000062561316501211100161220ustar00rootroot00000000000000Mutual inductance test circuit v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) 22. k1 ( l1a l1b ) .75 l1a ( 2 0 ) 0.56 l1b ( 3 0 ) 0.79 r1b ( 3 0 ) 75. v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) 22. l2a ( 5 6 ) 0.061151326 l2b ( 6 0 ) 0.498848674 l2c ( 6 7 ) 0.291151326 r2b ( 7 0 ) 75. v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) 22. l3a ( 10 0 ) 0.56 l3b ( 11 0 ) 0.79 e3a ( 9 10 11 0 ) 0.631454018 e3b ( 12 11 10 0 ) 0.890801204 r3b ( 12 0 ) 75. #Freq v(2) v(3) v(5) v(7) v(9) v(12) 0.1 0.01599 0.014244 0.01599 0.014244 0.01599 0.014244 0.31623 0.050473 0.044959 0.050473 0.044959 0.050473 0.044959 1. 0.15675 0.13958 0.15675 0.13958 0.15675 0.13958 3.1623 0.42608 0.37797 0.42608 0.37797 0.42608 0.37797 10. 0.71644 0.61303 0.71644 0.61303 0.71644 0.61303 31.623 0.85509 0.56179 0.85509 0.56179 0.85509 0.56179 100. 0.96752 0.28135 0.96752 0.28135 0.96752 0.28135 316.23 0.99627 0.096351 0.99627 0.096351 0.99627 0.096351 1.K 0.99962 0.030735 0.99962 0.030735 0.99962 0.030735 #Time v(2) v(3) v(5) v(7) v(9) v(12) 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0.003 0.47904 0.043701 0.47904 0.043701 0.47904 0.043701 0.004 0.92137 0.15871 0.92137 0.15871 0.92137 0.15871 0.005 0.85441 0.28165 0.85441 0.28165 0.85441 0.28165 0.006 0.79887 0.37004 0.79887 0.37004 0.79887 0.37004 0.007 0.2731 0.38867 0.2731 0.38867 0.2731 0.38867 0.008 -0.20913 0.31635 -0.20913 0.31635 -0.20913 0.31635 0.009 -0.17675 0.22133 -0.17675 0.22133 -0.17675 0.22133 0.01 -0.15163 0.14979 -0.15163 0.14979 -0.15163 0.14979 v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) 22. k1 ( l1a l1b ) .75 l1a ( 2 0 ) 0.56 l1b ( 3 0 ) 0.79 r1b ( 3 0 ) 75. v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) 22. l2a ( 5 6 ) 0.061151326 l2b ( 6 0 ) 0.498848674 l2c ( 6 7 ) 0.291151326 r2b ( 7 0 ) 75. v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) 22. l3a ( 10 0 ) 0.56 l3b ( 11 0 ) 0.79 e3a ( 9 10 11 0 ) 0.631454018 e3b ( 12 11 10 0 ) 0.890801204 r3b ( 12 0 ) 75. Gnucap System status iterations: op=0, dc=0, tran=366, fourier=0, total=499 transient timesteps: accepted=121, rejected=3, total=124 nodes: user=12, subckt=0, model=3, total=15 dctran density=37.8%, ac density=37.8% tests/==out/d_coil.1a.ckt.out000066400000000000000000000062561316501211100162630ustar00rootroot00000000000000Mutual inductance test circuit v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) 22. l1a ( 2 0 ) 0.56 l1b ( 3 0 ) 0.79 k1 ( l1a l1b ) .75 r1b ( 3 0 ) 75. v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) 22. l2a ( 5 6 ) 0.061151326 l2b ( 6 0 ) 0.498848674 l2c ( 6 7 ) 0.291151326 r2b ( 7 0 ) 75. v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) 22. l3a ( 10 0 ) 0.56 l3b ( 11 0 ) 0.79 e3a ( 9 10 11 0 ) 0.631454018 e3b ( 12 11 10 0 ) 0.890801204 r3b ( 12 0 ) 75. #Freq v(2) v(3) v(5) v(7) v(9) v(12) 0.1 0.01599 0.014244 0.01599 0.014244 0.01599 0.014244 0.31623 0.050473 0.044959 0.050473 0.044959 0.050473 0.044959 1. 0.15675 0.13958 0.15675 0.13958 0.15675 0.13958 3.1623 0.42608 0.37797 0.42608 0.37797 0.42608 0.37797 10. 0.71644 0.61303 0.71644 0.61303 0.71644 0.61303 31.623 0.85509 0.56179 0.85509 0.56179 0.85509 0.56179 100. 0.96752 0.28135 0.96752 0.28135 0.96752 0.28135 316.23 0.99627 0.096351 0.99627 0.096351 0.99627 0.096351 1.K 0.99962 0.030735 0.99962 0.030735 0.99962 0.030735 #Time v(2) v(3) v(5) v(7) v(9) v(12) 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0.003 0.47904 0.043701 0.47904 0.043701 0.47904 0.043701 0.004 0.92137 0.15871 0.92137 0.15871 0.92137 0.15871 0.005 0.85441 0.28165 0.85441 0.28165 0.85441 0.28165 0.006 0.79887 0.37004 0.79887 0.37004 0.79887 0.37004 0.007 0.2731 0.38867 0.2731 0.38867 0.2731 0.38867 0.008 -0.20913 0.31635 -0.20913 0.31635 -0.20913 0.31635 0.009 -0.17675 0.22133 -0.17675 0.22133 -0.17675 0.22133 0.01 -0.15163 0.14979 -0.15163 0.14979 -0.15163 0.14979 v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) 22. l1a ( 2 0 ) 0.56 l1b ( 3 0 ) 0.79 k1 ( l1a l1b ) .75 r1b ( 3 0 ) 75. v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) 22. l2a ( 5 6 ) 0.061151326 l2b ( 6 0 ) 0.498848674 l2c ( 6 7 ) 0.291151326 r2b ( 7 0 ) 75. v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) 22. l3a ( 10 0 ) 0.56 l3b ( 11 0 ) 0.79 e3a ( 9 10 11 0 ) 0.631454018 e3b ( 12 11 10 0 ) 0.890801204 r3b ( 12 0 ) 75. Gnucap System status iterations: op=0, dc=0, tran=366, fourier=0, total=499 transient timesteps: accepted=121, rejected=3, total=124 nodes: user=12, subckt=0, model=3, total=15 dctran density=36.0%, ac density=36.0% tests/==out/d_coil.1b.ckt.out000066400000000000000000000062771316501211100162670ustar00rootroot00000000000000Mutual inductance test circuit M12= 0.498848674449478 (M12 / L2)= 0.631454018290478 (M12 / L1)= 0.890801204374067 v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) Rsource k1 ( l1a l1b ) K12 l1a ( 2 0 ) L1 l1b ( 3 0 ) L2 r1b ( 3 0 ) Rload v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) Rsource l2a ( 5 6 ) L1-M12 l2b ( 6 0 ) M12 l2c ( 6 7 ) L2-M12 r2b ( 7 0 ) Rload v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) Rsource l3a ( 10 0 ) L1 l3b ( 11 0 ) L2 e3a ( 9 10 11 0 ) M12/L2 e3b ( 12 11 10 0 ) M12/L1 r3b ( 12 0 ) Rload #Freq v(2) v(3) v(5) v(7) v(9) v(12) 0.1 0.01599 0.014244 0.01599 0.014244 0.01599 0.014244 0.31623 0.050473 0.044959 0.050473 0.044959 0.050473 0.044959 1. 0.15675 0.13958 0.15675 0.13958 0.15675 0.13958 3.1623 0.42608 0.37797 0.42608 0.37797 0.42608 0.37797 10. 0.71644 0.61303 0.71644 0.61303 0.71644 0.61303 31.623 0.85509 0.56179 0.85509 0.56179 0.85509 0.56179 100. 0.96752 0.28135 0.96752 0.28135 0.96752 0.28135 316.23 0.99627 0.096351 0.99627 0.096351 0.99627 0.096351 1.K 0.99962 0.030735 0.99962 0.030735 0.99962 0.030735 #Time v(2) v(3) v(5) v(7) v(9) v(12) 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0.003 0.47904 0.043701 0.47904 0.043701 0.47904 0.043701 0.004 0.92137 0.15871 0.92137 0.15871 0.92137 0.15871 0.005 0.85441 0.28165 0.85441 0.28165 0.85441 0.28165 0.006 0.79887 0.37004 0.79887 0.37004 0.79887 0.37004 0.007 0.2731 0.38867 0.2731 0.38867 0.2731 0.38867 0.008 -0.20913 0.31635 -0.20913 0.31635 -0.20913 0.31635 0.009 -0.17675 0.22133 -0.17675 0.22133 -0.17675 0.22133 0.01 -0.15163 0.14979 -0.15163 0.14979 -0.15163 0.14979 v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) Rsource k1 ( l1a l1b ) K12 l1a ( 2 0 ) L1 l1b ( 3 0 ) L2 r1b ( 3 0 ) Rload v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) Rsource l2a ( 5 6 ) L1-M12 l2b ( 6 0 ) M12 l2c ( 6 7 ) L2-M12 r2b ( 7 0 ) Rload v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) Rsource l3a ( 10 0 ) L1 l3b ( 11 0 ) L2 e3a ( 9 10 11 0 ) M12/L2 e3b ( 12 11 10 0 ) M12/L1 r3b ( 12 0 ) Rload Gnucap System status iterations: op=0, dc=0, tran=366, fourier=0, total=499 transient timesteps: accepted=121, rejected=3, total=124 nodes: user=12, subckt=0, model=3, total=15 dctran density=37.8%, ac density=37.8% tests/==out/d_coil.1c.ckt.out000066400000000000000000000102731316501211100162570ustar00rootroot00000000000000Mutual inductance test circuit * using 'k' pseudo element .subckt trans2a ( a1 a2 b1 b2 ) k1 ( l1 l2 ) K12 l1 ( a1 a2 ) L1 l2 ( b1 b2 ) L2 .ends trans2a * T model, requires a common terminal .subckt trans2b ( a com b ) l2a ( a 6 ) L1-M12 l2b ( 6 com ) M12 l2c ( 6 b ) L2-M12 .ends trans2b * series model, using VCVS .subckt trans2c ( a1 a2 b1 b2 ) l3a ( 10 a2 ) L1 l3b ( 11 b2 ) L2 e3a ( a1 10 11 b2 ) M12/L2 e3b ( b1 11 10 a2 ) M12/L1 .ends trans2c * parallel model, using CCCS .subckt trans2d ( a1 a2 b1 b2 ) l1 ( a1 a2 ) (1-K12*K12)*L1 l2 ( b1 b2 ) (1-K12*K12)*L2 f1 ( a1 a2 l2 ) -M12/L1 f2 ( b1 b2 l1 ) -M12/L2 .ends trans2d v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) Rsource x1 ( 2 0 3 0 ) trans2a k12=K12 l1=L1 l2=L2 r1b ( 3 0 ) Rload v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) Rsource x2 ( 5 0 7 0 ) trans2d k12=K12 l1=L1 l2=L2 r2b ( 7 0 ) Rload v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) Rsource x3 ( 9 0 12 0 ) trans2c k12=K12 l1=L1 l2=L2 r3b ( 12 0 ) Rload #Freq v(2) v(3) v(5) v(7) v(9) v(12) 0.1 0.01599 0.014244 0.01599 0.014244 0.01599 0.014244 0.31623 0.050473 0.044959 0.050473 0.044959 0.050473 0.044959 1. 0.15675 0.13958 0.15675 0.13958 0.15675 0.13958 3.1623 0.42608 0.37797 0.42608 0.37797 0.42608 0.37797 10. 0.71644 0.61303 0.71644 0.61303 0.71644 0.61303 31.623 0.85509 0.56179 0.85509 0.56179 0.85509 0.56179 100. 0.96752 0.28135 0.96752 0.28135 0.96752 0.28135 316.23 0.99627 0.096351 0.99627 0.096351 0.99627 0.096351 1.K 0.99962 0.030735 0.99962 0.030735 0.99962 0.030735 #Time v(2) v(3) v(5) v(7) v(9) v(12) 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0.003 0.47904 0.043698 0.47904 0.043698 0.47904 0.043698 0.004 0.92137 0.1587 0.92137 0.1587 0.92137 0.1587 0.005 0.85441 0.28164 0.85441 0.28164 0.85441 0.28164 0.006 0.79887 0.37003 0.79887 0.37003 0.79887 0.37003 0.007 0.2731 0.38866 0.2731 0.38866 0.2731 0.38866 0.008 -0.20913 0.31634 -0.20913 0.31634 -0.20913 0.31634 0.009 -0.17675 0.22132 -0.17675 0.22132 -0.17675 0.22132 0.01 -0.15163 0.14979 -0.15163 0.14979 -0.15163 0.14979 * using 'k' pseudo element .subckt trans2a ( a1 a2 b1 b2 ) k1 ( l1 l2 ) K12 l1 ( a1 a2 ) L1 l2 ( b1 b2 ) L2 .ends trans2a * T model, requires a common terminal .subckt trans2b ( a com b ) l2a ( a 6 ) L1-M12 l2b ( 6 com ) M12 l2c ( 6 b ) L2-M12 .ends trans2b * series model, using VCVS .subckt trans2c ( a1 a2 b1 b2 ) l3a ( 10 a2 ) L1 l3b ( 11 b2 ) L2 e3a ( a1 10 11 b2 ) M12/L2 e3b ( b1 11 10 a2 ) M12/L1 .ends trans2c * parallel model, using CCCS .subckt trans2d ( a1 a2 b1 b2 ) l1 ( a1 a2 ) (1-K12*K12)*L1 l2 ( b1 b2 ) (1-K12*K12)*L2 f1 ( a1 a2 l2 ) -M12/L1 f2 ( b1 b2 l1 ) -M12/L2 .ends trans2d v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) Rsource x1 ( 2 0 3 0 ) trans2a k12=K12 l1=L1 l2=L2 r1b ( 3 0 ) Rload v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) Rsource x2 ( 5 0 7 0 ) trans2d k12=K12 l1=L1 l2=L2 r2b ( 7 0 ) Rload v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) Rsource x3 ( 9 0 12 0 ) trans2c k12=K12 l1=L1 l2=L2 r3b ( 12 0 ) Rload Gnucap System status iterations: op=0, dc=0, tran=378, fourier=0, total=515 transient timesteps: accepted=125, rejected=3, total=128 nodes: user=9, subckt=2, model=3, total=14 dctran density=42.9%, ac density=42.9% tests/==out/d_coil.1d.ckt.out000066400000000000000000000124371316501211100162640ustar00rootroot00000000000000Mutual inductance test circuit * using 'k' pseudo element .subckt trans2a ( a1 a2 b1 b2 ) k1 ( l1 l2 ) K12 l1 ( a1 a2 ) L1 l2 ( b1 b2 ) L2 .ends trans2a * T model, requires a common terminal .subckt trans2b ( a com b ) l2a ( a 6 ) L1-M12 l2b ( 6 com ) M12 l2c ( 6 b ) L2-M12 .ends trans2b * series model, using VCVS .subckt trans2c ( a1 a2 b1 b2 ) l3a ( 10 a2 ) L1 l3b ( 11 b2 ) L2 e3a ( a1 10 11 b2 ) M12/L2 e3b ( b1 11 10 a2 ) M12/L1 .ends trans2c * parallel model, using CCCS .subckt trans2d ( a1 a2 b1 b2 ) l1 ( a1 a2 ) (1-K12*K12)*L1 l2 ( b1 b2 ) (1-K12*K12)*L2 f1 ( a1 a2 l2 ) -M12/L1 f2 ( b1 b2 l1 ) -M12/L2 .ends trans2d * parallel model, using CCCS, split apart .subckt trans2e ( a1 a2 b1 b2 ) l1 ( a1 a2 ) L1 l2 ( b1 b2 ) L2 l1m ( a1 a2 ) (1/(K12*K12)-1)*L1 l2m ( b1 b2 ) (1/(K12*K12)-1)*L2 f1 ( a1 a2 l2 ) -(M12/L1) f2 ( b1 b2 l1 ) -(M12/L2) f1m ( a1 a2 l2m ) -(M12/L1) f2m ( b1 b2 l1m ) -(M12/L2) .ends trans2e * nullor model .subckt trans2f ( a1 a2 b1 b2 ) r1l1 ( a1 0 ) 1. r2l1 ( a1 a3 ) -1. r3l1 ( a3 a2 ) 1. r4l1 ( a2 0 ) -1. r1l2 ( b1 0 ) 1. r2l2 ( b1 b3 ) -1. r3l2 ( b3 b2 ) 1. r4l2 ( b2 0 ) -1. c1 ( a3 0 ) -L1-M12 c2 ( b3 0 ) -L2-M12 c3 ( a3 b3 ) M12 .ends trans2f v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) Rsource x1 ( 2 0 3 0 ) trans2a k12=K12 l1=L1 l2=L2 r1b ( 3 0 ) Rload v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) Rsource x2 ( 5 0 7 0 ) trans2f k12=K12 l1=L1 l2=L2 r2b ( 7 0 ) Rload v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) Rsource x3 ( 9 0 12 0 ) trans2e k12=K12 l1=L1 l2=L2 r3b ( 12 0 ) Rload #Freq v(2) v(3) v(5) v(7) v(9) v(12) 0.1 0.01599 0.014244 0.01599 0.014244 0.01599 0.014244 0.31623 0.050473 0.044959 0.050473 0.044959 0.050473 0.044959 1. 0.15675 0.13958 0.15675 0.13958 0.15675 0.13958 3.1623 0.42608 0.37797 0.42608 0.37797 0.42608 0.37797 10. 0.71644 0.61303 0.71644 0.61303 0.71644 0.61303 31.623 0.85509 0.56179 0.85509 0.56179 0.85509 0.56179 100. 0.96752 0.28135 0.96752 0.28135 0.96752 0.28135 316.23 0.99627 0.096351 0.99627 0.096351 0.99627 0.096351 1.K 0.99962 0.030735 0.99962 0.030735 0.99962 0.030735 #Time v(2) v(3) v(5) v(7) v(9) v(12) 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0.003 0.47904 0.043698 0.47904 0.043698 0.47904 0.043698 0.004 0.92137 0.1587 0.92137 0.1587 0.92137 0.1587 0.005 0.85441 0.28164 0.85441 0.28164 0.85441 0.28164 0.006 0.79887 0.37003 0.79887 0.37003 0.79887 0.37003 0.007 0.2731 0.38866 0.2731 0.38866 0.2731 0.38866 0.008 -0.20913 0.31634 -0.20913 0.31634 -0.20913 0.31634 0.009 -0.17675 0.22132 -0.17675 0.22132 -0.17675 0.22132 0.01 -0.15163 0.14979 -0.15163 0.14979 -0.15163 0.14979 * using 'k' pseudo element .subckt trans2a ( a1 a2 b1 b2 ) k1 ( l1 l2 ) K12 l1 ( a1 a2 ) L1 l2 ( b1 b2 ) L2 .ends trans2a * T model, requires a common terminal .subckt trans2b ( a com b ) l2a ( a 6 ) L1-M12 l2b ( 6 com ) M12 l2c ( 6 b ) L2-M12 .ends trans2b * series model, using VCVS .subckt trans2c ( a1 a2 b1 b2 ) l3a ( 10 a2 ) L1 l3b ( 11 b2 ) L2 e3a ( a1 10 11 b2 ) M12/L2 e3b ( b1 11 10 a2 ) M12/L1 .ends trans2c * parallel model, using CCCS .subckt trans2d ( a1 a2 b1 b2 ) l1 ( a1 a2 ) (1-K12*K12)*L1 l2 ( b1 b2 ) (1-K12*K12)*L2 f1 ( a1 a2 l2 ) -M12/L1 f2 ( b1 b2 l1 ) -M12/L2 .ends trans2d * parallel model, using CCCS, split apart .subckt trans2e ( a1 a2 b1 b2 ) l1 ( a1 a2 ) L1 l2 ( b1 b2 ) L2 l1m ( a1 a2 ) (1/(K12*K12)-1)*L1 l2m ( b1 b2 ) (1/(K12*K12)-1)*L2 f1 ( a1 a2 l2 ) -(M12/L1) f2 ( b1 b2 l1 ) -(M12/L2) f1m ( a1 a2 l2m ) -(M12/L1) f2m ( b1 b2 l1m ) -(M12/L2) .ends trans2e * nullor model .subckt trans2f ( a1 a2 b1 b2 ) r1l1 ( a1 0 ) 1. r2l1 ( a1 a3 ) -1. r3l1 ( a3 a2 ) 1. r4l1 ( a2 0 ) -1. r1l2 ( b1 0 ) 1. r2l2 ( b1 b3 ) -1. r3l2 ( b3 b2 ) 1. r4l2 ( b2 0 ) -1. c1 ( a3 0 ) -L1-M12 c2 ( b3 0 ) -L2-M12 c3 ( a3 b3 ) M12 .ends trans2f v1 ( 1 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r1a ( 1 2 ) Rsource x1 ( 2 0 3 0 ) trans2a k12=K12 l1=L1 l2=L2 r1b ( 3 0 ) Rload v2 ( 4 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r2a ( 4 5 ) Rsource x2 ( 5 0 7 0 ) trans2f k12=K12 l1=L1 l2=L2 r2b ( 7 0 ) Rload v3 ( 8 0 ) pulse iv= 0. pv= 1. delay= 0.002 rise= 0.002 fall= 0.002 width= 0.002 period= 0.01 AC 1. r3a ( 8 9 ) Rsource x3 ( 9 0 12 0 ) trans2e k12=K12 l1=L1 l2=L2 r3b ( 12 0 ) Rload Gnucap System status iterations: op=0, dc=0, tran=378, fourier=0, total=515 transient timesteps: accepted=125, rejected=3, total=128 nodes: user=9, subckt=2, model=3, total=14 dctran density=48.0%, ac density=48.0% tests/==out/d_coil.1e.ckt.out000066400000000000000000000125541316501211100162650ustar00rootroot00000000000000Mutual inductance test circuit #Freq v(1) v(2) v(3) v(5) v(7) v(9) v(12) 0.1 1. 0.0159903 0.0142441 0.0159903 0.0142441 0.0159903 0.0142441 0.316228 1. 0.0504726 0.0449592 0.0504726 0.0449592 0.0504726 0.0449592 1. 1. 0.156753 0.139577 0.156753 0.139577 0.156753 0.139577 3.16228 1. 0.426077 0.377969 0.426077 0.377969 0.426077 0.377969 10. 1. 0.716443 0.613027 0.716443 0.613027 0.716443 0.613027 31.6228 1. 0.855094 0.561792 0.855094 0.561792 0.855094 0.561792 100. 1. 0.967517 0.28135 0.967517 0.28135 0.967517 0.28135 316.228 1. 0.996266 0.0963513 0.996266 0.0963513 0.996266 0.0963513 1.K 1. 0.999621 0.030735 0.999621 0.030735 0.999621 0.030735 3.16228K 1. 0.999962 0.0097278 0.999962 0.0097278 0.999962 0.0097278 10.K 1. 0.999996 0.00307647 0.999996 0.00307647 0.999996 0.00307647 31.6228K 1. 1. 972.874u 1. 972.874u 1. 972.874u 100.K 1. 1. 307.65u 1. 307.65u 1. 307.65u #Freq vp(1) vp(2) vp(3) vp(5) vp(7) vp(9) vp(12) 0.1 416.362n 88.8705 88.7046 88.8705 88.7046 88.8689 88.7046 0.316228 1.31194u 86.4327 85.9081 86.4327 85.9081 86.4322 85.9081 1. 4.00548u 78.8598 77.2013 78.8598 77.2013 78.8597 77.2013 3.16228 9.4482u 58.3701 53.1385 58.3701 53.1385 58.3701 53.1385 10. 9.18957u 29.5056 13.3572 29.5056 13.3572 29.5056 13.3572 31.6228 5.97283u 15.5575 -26.9209 15.5575 -26.9209 15.5575 -26.9209 100. 3.27528u 7.46866 -63.4783 7.46866 -63.4783 7.46866 -63.4783 316.228 1.16048u 2.56348 -81.2037 2.56348 -81.2037 2.56348 -81.2037 1.K 371.669n 0.81801 -87.204 0.81801 -87.204 0.81801 -87.204 3.16228K 117.683n 0.258914 -89.1154 0.258914 -89.1154 0.258914 -89.1154 10.K 37.2195n 0.0818833 -89.7202 0.0818833 -89.7202 0.0818833 -89.7202 31.6228K 11.77n 0.025894 -89.9115 0.025894 -89.9115 0.025894 -89.9115 100.K 3.722n 0.00818841 -89.972 0.00818841 -89.972 0.00818841 -89.972 #Time v(1) v(2) v(3) v(5) v(7) v(9) v(12) 0. 0. 0. 0. 0. 0. 0. 0. 10.u 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0. 0.003 0.5 0.47965 0.0418212 0.47965 0.0418212 0.47965 0.0418212 0.00233333 0.166667 0.164257 0.00510716 0.164257 0.00510716 0.164257 0.00510716 0.00255556 0.277778 0.271144 0.0139981 0.271144 0.0139981 0.271144 0.0139981 0.00277778 0.388889 0.376056 0.0269122 0.376056 0.0269122 0.376056 0.0269122 0.003 0.5 0.479079 0.0435792 0.479079 0.0435792 0.479079 0.0435792 0.0035 0.75 0.704451 0.0933458 0.704451 0.0933458 0.704451 0.0933458 0.004 1. 0.921516 0.158271 0.921516 0.158271 0.921516 0.158271 0.0045 1. 0.886362 0.224854 0.886362 0.224854 0.886362 0.224854 0.005 1. 0.85446 0.28151 0.85446 0.28151 0.85446 0.28151 0.0055 1. 0.825411 0.329542 0.825411 0.329542 0.825411 0.329541 0.006 1. 0.798865 0.370081 0.798865 0.370081 0.798865 0.370081 0.007 0.5 0.272348 0.391035 0.272348 0.391035 0.272348 0.391035 0.0075 0.25 0.0263526 0.364483 0.0263526 0.364483 0.0263526 0.364483 0.008 -95.3844n -0.209846 0.318561 -0.209846 0.318561 -0.209846 0.318561 0.0085 -87.5036n -0.192508 0.267333 -0.192508 0.267333 -0.192508 0.267333 0.00800467 -95.306n -0.209673 0.318049 -0.209673 0.318049 -0.209673 0.318049 0.00800812 -95.2483n -0.209546 0.317672 -0.209546 0.317672 -0.209546 0.317672 0.00801035 -95.211n -0.209464 0.317427 -0.209464 0.317427 -0.209464 0.317427 0.00801258 -95.1736n -0.209382 0.317183 -0.209382 0.317183 -0.209382 0.317183 0.009 -80.5177n -0.177139 0.222479 -0.177139 0.222479 -0.177139 0.222479 0.01 -69.0013n -0.151803 0.150246 -0.151803 0.150246 -0.151803 0.150246 Gnucap System status iterations: op=0, dc=0, tran=71, fourier=0, total=122 transient timesteps: accepted=23, rejected=2, total=25 nodes: user=9, subckt=4, model=3, total=16 dctran density=49.2%, ac density=49.2% tests/==out/d_coil.2.ckt.out000066400000000000000000000066121316501211100161170ustar00rootroot00000000000000Mutual inductance test circuit -- lo-z drive #Freq v(2) v(3) v(5) v(7) v(9) v(12) v(14) v(15) 0.1 0.33152 0.29531 0.33152 0.29531 0.33151 0.29531 0.33152 0.29531 0.31623 0.73939 0.65862 0.73939 0.65862 0.73938 0.65861 0.73939 0.65862 1. 0.95251 0.84814 0.95251 0.84814 0.95251 0.84814 0.95251 0.84814 3.1623 0.98564 0.87435 0.98564 0.87435 0.98564 0.87435 0.98564 0.87435 10. 0.98986 0.84698 0.98986 0.84698 0.98986 0.84698 0.98986 0.84698 31.623 0.99418 0.65317 0.99418 0.65317 0.99418 0.65317 0.99418 0.65317 100. 0.99886 0.29046 0.99886 0.29046 0.99886 0.29046 0.99886 0.29046 316.23 0.99987 0.0967 0.99987 0.0967 0.99987 0.0967 0.99987 0.0967 1.K 0.99999 0.030746 0.99999 0.030746 0.99999 0.030746 0.99999 0.030746 #Freq vp(2) vp(3) vp(5) vp(7) vp(9) vp(12) vp(14) vp(15) 0.1 70.426 70.26 70.426 70.26 70.424 70.26 70.426 70.26 0.31623 41.651 41.126 41.651 41.126 41.651 41.127 41.651 41.126 1. 15.724 14.065 15.724 14.065 15.724 14.066 15.724 14.065 3.1623 5.1366 -0.095003 5.1366 -0.095003 5.1366 -0.094951 5.1366 -0.095003 10. 1.7725 -14.376 1.7725 -14.376 1.7725 -14.376 1.7725 -14.376 31.623 0.81215 -41.666 0.81215 -41.666 0.81215 -41.666 0.81215 -41.666 100. 0.34949 -70.597 0.34949 -70.597 0.34949 -70.597 0.34949 -70.597 316.23 0.11691 -83.65 0.11691 -83.65 0.11691 -83.65 0.11691 -83.65 1.K 0.037195 -87.985 0.037195 -87.985 0.037195 -87.985 0.037195 -87.985 #Time v(2) v(3) v(5) v(7) v(9) v(12) v(14) v(15) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0. 0. 0.003 0.49902 0.044945 0.49902 0.044945 0.49902 0.044945 0.49902 0.044945 0.004 0.99623 0.16767 0.99623 0.16767 0.99623 0.16767 0.99623 0.16767 0.005 0.99279 0.30776 0.99279 0.30776 0.99279 0.30776 0.99279 0.30776 0.006 0.98968 0.41996 0.98968 0.41996 0.98968 0.41996 0.98968 0.41996 0.007 0.48783 0.46482 0.48783 0.46482 0.48783 0.46482 0.48783 0.46482 0.008 -0.011987 0.41391 -0.011987 0.41391 -0.011987 0.41391 -0.011987 0.41391 0.009 -0.010984 0.33118 -0.010984 0.33118 -0.010984 0.33118 -0.010984 0.33118 0.01 -0.010176 0.26474 -0.010176 0.26474 -0.010176 0.26474 -0.010176 0.26474 Gnucap System status iterations: op=0, dc=0, tran=393, fourier=0, total=544 transient timesteps: accepted=130, rejected=3, total=133 nodes: user=15, subckt=0, model=3, total=18 dctran density=32.1%, ac density=32.1% tests/==out/d_coil.3.ckt.out000066400000000000000000000121521316501211100161140ustar00rootroot00000000000000Mutual inductance test circuit -- lo-z drive #Freq v(4) v(2) v(3) v(5) v(7) v(9) v(12) i(r1a) i(r2a) i(r3a) i(l1a) i(l2a) i(l3a) 0.1 0.99999 0.33152 0.29531 0.33152 0.29531 0.33151 0.29531 0.94221 0.94221 0.9422 0.94221 0.94221 0.9422 0.31623 1. 0.73939 0.65862 0.73939 0.65862 0.73938 0.65861 0.66463 0.66463 0.66463 0.66463 0.66463 0.66463 1. 1. 0.95251 0.84814 0.95251 0.84814 0.95251 0.84814 0.27119 0.27119 0.27119 0.27119 0.27119 0.27119 3.1623 1. 0.98564 0.87435 0.98564 0.87435 0.98564 0.87435 0.090125 0.090125 0.090125 0.090125 0.090125 0.090125 10. 1. 0.98986 0.84698 0.98986 0.84698 0.98986 0.84698 0.032404 0.032404 0.032404 0.032404 0.032404 0.032404 31.623 1. 0.99418 0.65317 0.99418 0.65317 0.99418 0.65317 0.015285 0.015285 0.015285 0.015285 0.015285 0.015285 100. 1. 0.99886 0.29046 0.99886 0.29046 0.99886 0.29046 0.0062028 0.0062028 0.0062028 0.0062028 0.0062028 0.0062028 316.23 1. 0.99987 0.0967 0.99987 0.0967 0.99987 0.0967 0.0020442 0.0020442 0.0020442 0.0020442 0.0020442 0.0020442 1.K 1. 0.99999 0.030746 0.99999 0.030746 0.99999 0.030746 649.29u 649.29u 649.29u 649.29u 649.29u 649.29u #Freq vp(4) vp(2) vp(3) vp(5) vp(7) vp(9) vp(12) ip(r1a) ip(r2a) ip(r3a) ip(l1a) ip(l2a) ip(l3a) 0.1 178.97u 70.426 70.26 70.426 70.26 70.424 70.26 -19.361 -19.361 -19.361 -19.361 -19.361 -19.361 0.31623 281.54u 41.651 41.126 41.651 41.126 41.651 41.127 -47.675 -47.675 -47.674 -47.675 -47.675 -47.674 1. 147.9u 15.724 14.065 15.724 14.065 15.724 14.066 -72.148 -72.148 -72.148 -72.148 -72.148 -72.148 3.1623 50.56u 5.1366 -0.095003 5.1366 -0.095003 5.1366 -0.094951 -78.274 -78.274 -78.274 -78.274 -78.274 -78.274 10. 17.542u 1.7725 -14.376 1.7725 -14.376 1.7725 -14.376 -70.878 -70.878 -70.878 -70.878 -70.878 -70.878 31.623 8.0738u 0.81215 -41.666 0.81215 -41.666 0.81215 -41.666 -67.205 -67.205 -67.205 -67.205 -67.205 -67.205 100. 3.4909u 0.34949 -70.597 0.34949 -70.597 0.34949 -70.597 -79.19 -79.19 -79.19 -79.19 -79.19 -79.19 316.23 1.1689u 0.11691 -83.65 0.11691 -83.65 0.11691 -83.65 -86.386 -86.386 -86.386 -86.386 -86.386 -86.386 1.K 371.94n 0.037195 -87.985 0.037195 -87.985 0.037195 -87.985 -88.85 -88.85 -88.85 -88.85 -88.85 -88.85 #Time v(4) v(2) v(3) v(5) v(7) v(9) v(12) i(r1a) i(r2a) i(r3a) i(l1a) i(l2a) i(l3a) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.003 0.5 0.49902 0.044942 0.49902 0.044942 0.49902 0.044942 979.63u 979.63u 979.63u 979.63u 979.63u 979.63u 0.004 1. 0.99623 0.16767 0.99623 0.16767 0.99623 0.16767 0.0037726 0.0037726 0.0037726 0.0037726 0.0037726 0.0037726 0.005 1. 0.99279 0.30776 0.99279 0.30776 0.99279 0.30776 0.0072123 0.0072123 0.0072123 0.0072123 0.0072123 0.0072123 0.006 1. 0.98968 0.41996 0.98968 0.41996 0.98968 0.41996 0.010315 0.010315 0.010315 0.010315 0.010315 0.010315 0.007 0.5 0.48783 0.46482 0.48783 0.46482 0.48783 0.46482 0.012167 0.012167 0.012167 0.012167 0.012167 0.012167 0.008 -119.87n -0.011987 0.41391 -0.011987 0.41391 -0.011987 0.41391 0.011987 0.011987 0.011987 0.011987 0.011987 0.011987 0.009 -109.83n -0.010984 0.33118 -0.010984 0.33118 -0.010984 0.33118 0.010983 0.010983 0.010983 0.010983 0.010983 0.010983 0.01 -101.76n -0.010176 0.26474 -0.010176 0.26474 -0.010176 0.26474 0.010176 0.010176 0.010176 0.010176 0.010176 0.010176 Gnucap System status iterations: op=0, dc=0, tran=467, fourier=0, total=610 transient timesteps: accepted=122, rejected=3, total=125 nodes: user=12, subckt=0, model=3, total=15 dctran density=37.8%, ac density=37.8% tests/==out/d_coil.4.ckt.out000066400000000000000000000017521316501211100161210ustar00rootroot00000000000000'inductance check, no tolerance # v(3) 1. 0.99999 2. 2. 3. 3. 4. 4. 5. 5. 6. 5.9999 7. 6.9999 8. 7.9999 9. 8.9999 10. 9.9999 #Freq v(3) 0.1 0.84672 0.12589 0.78429 0.15849 0.70858 0.19953 0.62357 0.25119 0.53521 0.31623 0.44956 0.39811 0.37121 0.50119 0.30266 0.63096 0.24458 0.79433 0.19646 1. 0.15718 1.2589 0.12542 1.5849 0.099916 1.9953 0.079513 2.5119 0.063233 3.1623 0.050265 3.9811 0.039946 5.0119 0.031739 6.3096 0.025216 7.9433 0.020032 10. 0.015913 Gnucap System status iterations: op=0, dc=30, tran=0, fourier=0, total=51 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/d_coil.5.ckt.out000066400000000000000000000027161316501211100161230ustar00rootroot00000000000000'inductance check, no tolerance # 27. #Freq vm(2) vm(3) vm(4) vm(5) vp(2) vp(3) vp(4) vp(5) 0.1 0.84672 0.84672 0.84672 0.84672 -32.142 -32.142 -32.142 147.86 1. 0.15718 0.15718 0.15718 0.15718 -80.957 -80.957 -80.957 99.043 #Time v(2) v(3) v(4) v(5) 0. 0. 0. 0. 0. 1. 0.36693 0.36693 0.36693 -0.36693 2. 0.76928 0.76928 0.76928 -0.76928 3. 0.91694 0.91694 0.91694 -0.91694 4. 0.97009 0.97009 0.97009 -0.97009 5. 0.99002 0.99002 0.99002 -0.99002 6. 0.99667 0.99667 0.99667 -0.99667 7. 0.99888 0.99888 0.99888 -0.99888 8. 0.99962 0.99962 0.99962 -0.99962 9. 0.99987 0.99987 0.99987 -0.99987 10. 0.99995 0.99995 0.99995 -0.99995 V1 ( 1 0 ) pulse iv= 0. pv= 1. delay=NA( 0.) rise= 1. fall= 1. width=NA( Inf) period=NA( Inf) DC 1. AC 1. L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 1. E1 ( 4 0 3 0 ) 1. rspice ( 4 0 ) 1.G G1 ( 5 0 3 0 ) 1. Rg ( 5 0 ) 1. Gnucap System status iterations: op=3, dc=0, tran=104, fourier=0, total=144 transient timesteps: accepted=31, rejected=4, total=35 nodes: user=5, subckt=0, model=0, total=5 dctran density=52.0%, ac density=52.0% tests/==out/d_coil.error1.ckt.out000066400000000000000000000000501316501211100171560ustar00rootroot00000000000000# coil errors k1: r1 is not a inductor tests/==out/d_coil.error2.ckt.out000066400000000000000000000000541316501211100171630ustar00rootroot00000000000000# coil errors k1: can't find: r1 in (root) tests/==out/d_coil.error3.ckt.out000066400000000000000000000000501316501211100171600ustar00rootroot00000000000000# coil errors k1: r2 is not a inductor tests/==out/d_coil.error4.ckt.out000066400000000000000000000001231316501211100171620ustar00rootroot00000000000000# coil errors #Freq v(1) v(2) 1.K 0. 0. tests/==out/d_coil.error5.ckt.out000066400000000000000000000001231316501211100171630ustar00rootroot00000000000000# coil errors #Freq v(1) v(2) 1.K 0. 0. tests/==out/d_coil.m3.ckt.out000066400000000000000000000113731316501211100162750ustar00rootroot00000000000000Mutual inductance test circuit #Freq vm(a2) vm(a3) vm(a4) vm(b2) vm(b3) vm(b4) vm(c2) vm(c3) vm(c4) vm(d2) vm(d3) vm(d4) 0.1 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.31623 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 1. 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 3.1623 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 10. 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 31.623 0.80547 0.51641 0.41563 0.80547 0.51641 0.41563 0.80547 0.51641 0.41563 0.80547 0.51641 0.41563 100. 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 316.23 0.99437 0.090258 0.081619 0.99437 0.090258 0.081619 0.99437 0.090258 0.081619 0.99437 0.090258 0.081619 1.K 0.99943 0.028812 0.026134 0.99943 0.028812 0.026134 0.99943 0.028812 0.026134 0.99943 0.028812 0.026134 #Freq vp(a2) vp(a3) vp(a4) vp(b2) vp(b3) vp(b4) vp(c2) vp(c3) vp(c4) vp(d2) vp(d3) vp(d4) 0.1 88.769 88.594 88.619 88.766 88.594 88.619 88.769 88.594 88.619 88.766 88.594 88.619 0.31623 86.115 85.561 85.639 86.114 85.561 85.639 86.115 85.561 85.639 86.114 85.561 85.639 1. 77.898 76.148 76.395 77.898 76.148 76.395 77.898 76.148 76.395 77.898 76.148 76.395 3.1623 56.289 50.768 51.547 56.289 50.768 51.547 56.289 50.768 51.547 56.289 50.768 51.547 10. 28.595 11.584 13.931 28.595 11.584 13.931 28.595 11.584 13.931 28.595 11.584 13.931 31.623 17.25 -27.001 -21.942 17.25 -27.001 -21.942 17.25 -27.001 -21.942 17.25 -27.001 -21.942 100. 9.2081 -63.03 -59.188 9.2081 -63.03 -59.188 9.2081 -63.03 -59.188 9.2081 -63.03 -59.188 316.23 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 1.K 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 #Time v(a2) v(a3) v(a4) v(b2) v(b3) v(b4) v(c2) v(c3) v(c4) v(d2) v(d3) v(d4) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.003 0.47385 0.040882 0.036504 0.47385 0.040882 0.036504 0.47385 0.040882 0.036504 0.47385 0.040882 0.036504 0.004 0.90321 0.14821 0.1304 0.90321 0.14821 0.1304 0.90321 0.14821 0.1304 0.90321 0.14821 0.1304 0.005 0.82366 0.26249 0.22685 0.82366 0.26249 0.22685 0.82366 0.26249 0.22685 0.82366 0.26249 0.22685 0.006 0.76054 0.34427 0.29187 0.76054 0.34427 0.29187 0.76054 0.34427 0.29187 0.76054 0.34427 0.29187 0.007 0.23581 0.36088 0.29802 0.23581 0.36088 0.29802 0.23581 0.36088 0.29802 0.23581 0.36088 0.29802 0.008 -0.23525 0.2929 0.23087 -0.23525 0.2929 0.23087 -0.23525 0.2929 0.23087 -0.23525 0.2929 0.23087 0.009 -0.19052 0.2044 0.14992 -0.19052 0.2044 0.14992 -0.19052 0.2044 0.14992 -0.19052 0.2044 0.14992 0.01 -0.15703 0.13834 0.092477 -0.15703 0.13834 0.092477 -0.15703 0.13834 0.092477 -0.15703 0.13834 0.092477 Gnucap System status iterations: op=0, dc=0, tran=372, fourier=0, total=516 transient timesteps: accepted=123, rejected=3, total=126 nodes: user=16, subckt=15, model=6, total=37 dctran density=41.9%, ac density=41.9% tests/==out/d_coil.m3a.ckt.out000066400000000000000000000047401316501211100164360ustar00rootroot00000000000000Mutual inductance test circuit #Freq vm(a2) vm(a3) vm(a4) vm(b2) vm(b3) vm(b4) 0.1 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.31623 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 1. 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 3.1623 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 10. 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 31.623 0.80547 0.51641 0.41563 0.80548 0.51641 0.41563 100. 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 316.23 0.99437 0.090258 0.081619 0.99437 0.090257 0.081619 1.K 0.99943 0.028812 0.026134 0.99943 0.028812 0.026133 #Freq vp(a2) vp(a3) vp(a4) vp(b2) vp(b3) vp(b4) 0.1 88.769 88.594 88.619 88.766 88.594 88.619 0.31623 86.115 85.561 85.639 86.114 85.561 85.639 1. 77.898 76.148 76.395 77.898 76.148 76.395 3.1623 56.289 50.768 51.547 56.289 50.768 51.547 10. 28.595 11.584 13.931 28.595 11.584 13.931 31.623 17.25 -27.001 -21.942 17.25 -27.001 -21.942 100. 9.2081 -63.03 -59.188 9.208 -63.03 -59.188 316.23 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 1.K 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 #Time v(a2) v(a3) v(a4) v(b2) v(b3) v(b4) 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0.003 0.47391 0.040766 0.036387 0.47391 0.040765 0.036387 0.004 0.90342 0.14779 0.13 0.90342 0.14779 0.13 0.005 0.82371 0.26237 0.22678 0.82372 0.26237 0.22678 0.006 0.76051 0.34432 0.29198 0.76051 0.34432 0.29198 0.007 0.23467 0.36314 0.30034 0.23468 0.36313 0.30034 0.008 -0.2363 0.29498 0.23291 -0.2363 0.29498 0.23291 0.009 -0.19102 0.20545 0.15075 -0.19102 0.20545 0.15075 0.01 -0.1572 0.13872 0.092594 -0.1572 0.13872 0.092594 tests/==out/d_coil.m3r.ckt.out000066400000000000000000000113731316501211100164570ustar00rootroot00000000000000Mutual inductance test circuit #Freq vm(a2) vm(a3) vm(a4) vm(b2) vm(b3) vm(b4) vm(c2) vm(c3) vm(c4) vm(d2) vm(d3) vm(d4) 0.1 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.01599 0.014243 0.01074 0.31623 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 0.050452 0.04494 0.033886 1. 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 0.15613 0.13902 0.10483 3.1623 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 0.41414 0.36723 0.27718 10. 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 0.66716 0.56869 0.43293 31.623 0.80547 0.51641 0.41563 0.80547 0.51641 0.41563 0.80547 0.51641 0.41563 0.80547 0.51641 0.41563 100. 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 0.95226 0.26207 0.23102 316.23 0.99437 0.090258 0.081619 0.99437 0.090258 0.081619 0.99437 0.090258 0.081619 0.99437 0.090258 0.081619 1.K 0.99943 0.028812 0.026134 0.99943 0.028812 0.026134 0.99943 0.028812 0.026134 0.99943 0.028812 0.026134 #Freq vp(a2) vp(a3) vp(a4) vp(b2) vp(b3) vp(b4) vp(c2) vp(c3) vp(c4) vp(d2) vp(d3) vp(d4) 0.1 88.769 88.594 88.619 88.766 88.594 88.619 88.769 88.594 88.619 88.766 88.594 88.619 0.31623 86.115 85.561 85.639 86.114 85.561 85.639 86.115 85.561 85.639 86.114 85.561 85.639 1. 77.898 76.148 76.395 77.898 76.148 76.395 77.898 76.148 76.395 77.898 76.148 76.395 3.1623 56.289 50.768 51.547 56.289 50.768 51.547 56.289 50.768 51.547 56.289 50.768 51.547 10. 28.595 11.584 13.931 28.595 11.584 13.931 28.595 11.584 13.931 28.595 11.584 13.931 31.623 17.25 -27.001 -21.942 17.25 -27.001 -21.942 17.25 -27.001 -21.942 17.25 -27.001 -21.942 100. 9.2081 -63.03 -59.188 9.2081 -63.03 -59.188 9.2081 -63.03 -59.188 9.2081 -63.03 -59.188 316.23 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 3.2345 -81.005 -79.591 1.K 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 1.0349 -87.139 -86.684 #Time v(a2) v(a3) v(a4) v(b2) v(b3) v(b4) v(c2) v(c3) v(c4) v(d2) v(d3) v(d4) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.001 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.002 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.003 0.47385 0.040882 0.036504 0.47385 0.040882 0.036504 0.47385 0.040882 0.036504 0.47385 0.040882 0.036504 0.004 0.90321 0.14821 0.1304 0.90321 0.14821 0.1304 0.90321 0.14821 0.1304 0.90321 0.14821 0.1304 0.005 0.82366 0.26249 0.22685 0.82366 0.26249 0.22685 0.82366 0.26249 0.22685 0.82366 0.26249 0.22685 0.006 0.76054 0.34427 0.29187 0.76054 0.34427 0.29187 0.76054 0.34427 0.29187 0.76054 0.34427 0.29187 0.007 0.23581 0.36088 0.29802 0.23581 0.36088 0.29802 0.23581 0.36088 0.29802 0.23581 0.36088 0.29802 0.008 -0.23525 0.2929 0.23087 -0.23525 0.2929 0.23087 -0.23525 0.2929 0.23087 -0.23525 0.2929 0.23087 0.009 -0.19052 0.2044 0.14992 -0.19052 0.2044 0.14992 -0.19052 0.2044 0.14992 -0.19052 0.2044 0.14992 0.01 -0.15703 0.13834 0.092477 -0.15703 0.13834 0.092477 -0.15703 0.13834 0.092477 -0.15703 0.13834 0.092477 Gnucap System status iterations: op=0, dc=0, tran=372, fourier=0, total=516 transient timesteps: accepted=123, rejected=3, total=126 nodes: user=16, subckt=15, model=6, total=37 dctran density=42.4%, ac density=42.4% tests/==out/d_diode.1.ckt.out000066400000000000000000000057771316501211100162670ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. AC 1. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 1 .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5 bv=50 ibv=0.001) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cd(D1) z(D1) zraw(D1) gd(D1) z(2) 27. 10. 0.59396 -94.061u 94.06u 94.06u 0.59396 274.97 1.5471p 100.K 274.22 0.0036367 274.22 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cd(D1) z(D1) zraw(D1) gd(D1) z(2) iter(0) -10. -10. -10. 0. -10.01p -10.f -10. 2.119E180 301.51f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.01p -10.f -8. 553.9E144 333.33f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.01p -10.f -6. 144.8E111 377.96f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.01p -10.f -4. 37.85E+78 447.21f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.01p -10.f -2. 9.894E+45 577.35f 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 2.586E+12 1.p 100.K 100.K 386.64f 100.K 4. 2. 2. 0.54568 -14.543u 14.543u 14.543u 0.54568 1.7784K 1.4788p 100.K 1.7474K 562.29u 1.7474K 10. 4. 4. 0.56789 -34.321u 34.321u 34.321u 0.56789 753.59 1.5102p 100.K 747.96 0.001327 747.96 5. 6. 6. 0.5797 -54.203u 54.203u 54.203u 0.5797 477.17 1.5269p 100.K 474.91 0.0020957 474.91 5. 8. 8. 0.5878 -74.122u 74.122u 74.122u 0.5878 348.94 1.5384p 100.K 347.73 0.0028658 347.73 5. 10. 10. 0.59396 -94.061u 94.06u 94.06u 0.59396 274.97 1.5471p 100.K 274.22 0.0036367 274.22 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cd(D1) z(D1) zraw(D1) gd(D1) z(2) 27. 10. 0.59396 -94.061u 94.06u 94.06u 0.59396 274.97 1.5471p 100.K 274.22 0.0036367 274.22 Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=72 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.10.ckt.out000066400000000000000000000001371316501211100163300ustar00rootroot00000000000000' # v(1) 27. 0.83376 # v(1) 27. 0.83376 tests/==out/d_diode.10a.ckt.out000066400000000000000000000001371316501211100164710ustar00rootroot00000000000000' # v(1) 27. 0.81584 # v(1) 27. 0.83376 tests/==out/d_diode.11.ckt.out000066400000000000000000000001551316501211100163310ustar00rootroot00000000000000simple diode test # v(1) v(2) v(3) 27. 10. 2.1726 0.79542 tests/==out/d_diode.11a.ckt.out000066400000000000000000000001551316501211100164720ustar00rootroot00000000000000simple diode test # v(1) v(2) v(3) 27. 10. 2.1726 0.79542 tests/==out/d_diode.11b.ckt.out000066400000000000000000000001551316501211100164730ustar00rootroot00000000000000simple diode test # v(1) v(2) v(3) 27. 10. 2.1726 0.79542 tests/==out/d_diode.11c.ckt.out000066400000000000000000000001551316501211100164740ustar00rootroot00000000000000simple diode test # v(1) v(2) v(3) 27. 10. 2.1726 0.79542 tests/==out/d_diode.11d.ckt.out000066400000000000000000000001551316501211100164750ustar00rootroot00000000000000simple diode test # v(1) v(2) v(3) 27. 10. 2.1726 0.79542 tests/==out/d_diode.12.ckt.out000066400000000000000000000447271316501211100163470ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) sin offset=NA( 0.) amplitude= 10. frequency= 10.Meg delay=NA( 0.) damping=NA( 0.) DC -10. AC 1. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 1. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5 bv=50 ibv=0.001) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cd(D1) z(D1) zraw(D1) gd(D1) z(2) 0. 0. 0. 0. 0. 0. 0. Inf 0. 1.E+12 1.E+12 0. 1.E+12 -1. -10. -10. 0. -13.866p -3.8663p -10. 2.586E+12 1.p 100.K 100.K 386.64f 100.K -2. -10. -10. 0. -10.01p -10.f -10. Inf 301.51f 100.K 100.K 0. 100.K -3. -10. -10. 0. -10.01p -10.f -10. 2.119E180 301.51f 100.K 100.K 0. 100.K 27. -10. -10. 0. -10.01p -10.f -10. 2.119E180 301.51f 100.K 100.K 0. 100.K #Freq vr(2) vi(2) 10. 1. -1.8945u 100. 1. -18.945u 1.K 1. -189.45u 10.K 1. -0.0018944 100.K 0.99964 -0.018938 1.Meg 0.96535 -0.18288 10.Meg 0.21791 -0.41283 100.Meg 0.0027786 -0.052639 1.G 27.863u -0.0052784 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cd(D1) z(D1) zraw(D1) gd(D1) z(2) iter(0) -10. -10. -10. 0. -10.01p -10.f -10. 2.119E180 301.51f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.01p -10.f -8. 553.9E144 333.33f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.01p -10.f -6. 144.8E111 377.96f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.01p -10.f -4. 37.85E+78 447.21f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.01p -10.f -2. 9.894E+45 577.35f 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 2.586E+12 1.p 100.K 100.K 386.64f 100.K 4. #Freq vr(2) vi(2) 10. 1. -6.2832u 100. 1. -62.832u 1.K 1. -628.32u 10.K 0.99996 -0.0062829 100.K 0.99607 -0.062585 1.Meg 0.71696 -0.45048 10.Meg 0.024705 -0.15522 100.Meg 253.24u -0.015911 1.G 2.533u -0.0015915 v(1) -10. -5. 0. 5. 10. v(2) -10. -5. 0. 5. 10. +----------------------+---------------------+----------------------+---------------------+ 0. | . * . | 5.n | . + * . | 10.n | . .+ . * | 15.n | . . + . * | 20.n | . . + . * | 25.n | . . + . * 30.n | . . + . * | 35.n | . . + . * | 40.n | . . + . * | 45.n | . . + * . | 50.n | . * + . | 55.n | . * . + . | 60.n | * . .+ . | 65.n | * . + . | 70.n | * . + . . | 75.n * . + . . | 80.n | * . + . . | 85.n | * . + . . | 90.n | * . + . . | 95.n | . *+ . . | 100.n | . + * . | 105.n | . + . * . | 110.n | . + . . * | 115.n | . + . . * | 120.n | . + . . * | 125.n | . + . * 130.n | . . + . * | 135.n | . . + . * | 140.n | . . + . * | 145.n | . . + * . | 150.n | . * + . | 155.n | . * . + . | 160.n | * . .+ . | 165.n | * . + . | 170.n | * . + . . | 175.n * . + . . | 180.n | * . + . . | 185.n | * . + . . | 190.n | * . + . . | 195.n | . *+ . . | +----------------------+---------------------+----------------------+---------------------+ #Freq vr(2) vi(2) 10. 1. -3.1486u 100. 1. -31.486u 1.K 1. -314.86u 10.K 0.99999 -0.0031485 100.K 0.99901 -0.031454 1.Meg 0.90981 -0.28646 10.Meg 0.091631 -0.2885 100.Meg 0.0010077 -0.031729 1.G 10.087u -0.003176 v(1) -10. -5. 0. 5. 10. v(2) -10. -5. 0. 5. 10. +----------------------+---------------------+----------------------+---------------------+ 0. | . * . | 5.n | . + * . | 10.n | . .+ . * | 15.n | . . + . * | 20.n | . . + . * | 25.n | . . + . * 30.n | . . + . * | 35.n | . . + . * | 40.n | . . + . * | 45.n | . . + * . | 50.n | . * + . | 55.n | . * . + . | 60.n | * . .+ . | 65.n | * . + . | 70.n | * . + . . | 75.n * . + . . | 80.n | * . + . . | 85.n | * . + . . | 90.n | * . + . . | 95.n | . *+ . . | 100.n | . + * . | 105.n | . + . * . | 110.n | . + . . * | 115.n | . + . . * | 120.n | . + . . * | 125.n | . + . * 130.n | . . + . * | 135.n | . . + . * | 140.n | . . + . * | 145.n | . . + * . | 150.n | . * + . | 155.n | . * . + . | 160.n | * . .+ . | 165.n | * . + . | +----------------------+---------------------+----------------------+---------------------+ #Freq vr(2) vi(2) 10. 1. -6.0368u 100. 1. -60.368u 1.K 1. -603.67u 10.K 0.99996 -0.0060365 100.K 0.99637 -0.060148 1.Meg 0.73291 -0.44244 10.Meg 0.026708 -0.16123 100.Meg 274.33u -0.016561 1.G 2.7441u -0.0016565 v(1) -10. -5. 0. 5. 10. v(2) -10. -5. 0. 5. 10. +----------------------+---------------------+----------------------+---------------------+ 0. | . * . | 5.n | . + * . | 10.n | . .+ . * | 15.n | . . + . * | 20.n | . . + . * | 25.n | . . + . * 30.n | . . + . * | 35.n | . . + . * | 40.n | . . + . * | 45.n | . . + * . | 50.n | . * + . | 55.n | . * . + . | 60.n | * . .+ . | 65.n | * . + . | 70.n | * . + . . | 75.n * . + . . | 80.n | * . + . . | 85.n | * . + . . | 90.n | * . + . . | 95.n | . *+ . . | 100.n | . + * . | 105.n | . + . * . | 110.n | . + . . * | 115.n | . + . . * | 120.n | . + . . * | 125.n | . + . * 130.n | . . + . * | 135.n | . . + . * | +----------------------+---------------------+----------------------+---------------------+ #Freq vr(2) vi(2) 10. 0.0035801 -123.81p 100. 0.0035801 -1.2381n 1.K 0.0035801 -12.381n 10.K 0.0035801 -123.81n 100.K 0.0035801 -1.2381u 1.Meg 0.0035801 -12.38u 10.Meg 0.0035759 -123.66u 100.Meg 0.0031977 -0.0011058 1.G 276.27u -955.39u v(1) -10. -5. 0. 5. 10. v(2) -10. -5. 0. 5. 10. +----------------------+---------------------+----------------------+---------------------+ 0. | . * . | 5.n | . + * . | 10.n | . .+ . * | 15.n | . . + . * | 20.n | . . + . * | 25.n | . . + . * 30.n | . . + . * | 35.n | . . + . * | 40.n | . . + . * | 45.n | . . + * . | 50.n | . * + . | 55.n | . * . + . | 60.n | * . .+ . | 65.n | * . + . | 70.n | * . + . . | 75.n * . + . . | 80.n | * . + . . | 85.n | * . + . . | 90.n | * . + . . | 95.n | . *+ . . | 100.n | . + * . | 105.n | . + . * . | 110.n | . + . . * | 115.n | . + . . * | 120.n | . + . . * | 125.n | . + . * +----------------------+---------------------+----------------------+---------------------+ #Freq vr(2) vi(2) 10. 1. -6.3201u 100. 1. -63.201u 1.K 1. -632.01u 10.K 0.99996 -0.0063198 100.K 0.99602 -0.062949 1.Meg 0.71458 -0.45162 10.Meg 0.024424 -0.15436 100.Meg 250.29u -0.015819 1.G 2.5035u -0.0015823 Gnucap System status iterations: op=4, dc=24, tran=365, fourier=0, total=2342 transient timesteps: accepted=284, rejected=8, total=292 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.2.ckt.out000066400000000000000000000001271316501211100162500ustar00rootroot00000000000000simple diode test # v(1) v(2) 27. 10. 2.1726 tests/==out/d_diode.3.ckt.out000066400000000000000000000071431316501211100162560ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 1. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5 gparallel=1e-5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.59234 -94.077u 94.077u 94.077u 0.59234 274.17 1.5448p 100.K 273.42 0.0036473 273.42 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -5. 50.u -50.u -50.u -5. 100.K 408.25f 100.K 50.K 10.u 50.K 4. -8. -8. -4. 40.u -40.u -40.u -4. 100.K 447.21f 100.K 50.K 10.u 50.K 4. -6. -6. -3. 30.u -30.u -30.u -3. 100.K 500.f 100.K 50.K 10.u 50.K 4. -4. -4. -2. 20.u -20.u -20.u -2. 100.K 577.35f 100.K 50.K 10.u 50.K 4. -2. -2. -1. 10.u -10.u -10.u -1. 100.K 707.11f 100.K 50.K 10.u 50.K 4. 0. 0. 0. 0. 0. 0. 0. 100.K 1.p 100.K 50.K 10.u 50.K 4. 2. 2. 0.53636 -14.636u 14.636u 14.636u 0.53636 1.7364K 1.4656p 100.K 1.7068K 575.89u 1.7068K 6. 4. 4. 0.56367 -34.363u 34.363u 34.363u 0.56367 747.05 1.5043p 100.K 741.51 0.0013386 741.51 5. 6. 6. 0.57697 -54.23u 54.23u 54.23u 0.57697 474.67 1.5231p 100.K 472.43 0.0021067 472.43 5. 8. 8. 0.58576 -74.142u 74.142u 74.142u 0.58576 347.63 1.5355p 100.K 346.43 0.0028766 346.43 5. 10. 10. 0.59234 -94.077u 94.077u 94.077u 0.59234 274.17 1.5448p 100.K 273.42 0.0036473 273.42 5. Gnucap System status iterations: op=6, dc=50, tran=0, fourier=0, total=56 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.59233 -94.067u 94.067u 94.067u 0.59233 274.2 1.5448p 100.K 273.45 0.0036469 273.45 6. 10. 10. 0.59234 -94.077u 94.077u 94.076u 0.59234 274.17 1.5448p 104.01K 273.45 0.0036473 273.45 2. 10.001 10.001 0.59234 -94.087u 94.087u 94.086u 0.59234 274.14 1.5448p 104.27K 273.43 0.0036477 273.43 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.59234 -94.077u 94.077u 94.077u 0.59234 274.17 1.5448p 100.K 273.42 0.0036473 273.42 Gnucap System status iterations: op=6, dc=10, tran=0, fourier=0, total=72 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.4.ckt.out000066400000000000000000000071241316501211100162560ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 2. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 100.K 273.7 0.0036436 273.7 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -10. 0. -10.02p -20.f -10. 1.06E180 603.02f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.02p -20.f -8. 277.E144 666.67f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.02p -20.f -6. 72.4E111 755.93f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.02p -20.f -4. 18.93E+78 894.43f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.02p -20.f -2. 4.947E+45 1.1547p 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 1.293E+12 2.p 100.K 100.K 773.27f 100.K 4. 2. 2. 0.52806 -14.719u 14.719u 14.719u 0.52806 1.7572K 2.9078p 100.K 1.7268K 569.1u 1.7268K 10. 4. 4. 0.55009 -34.499u 34.499u 34.499u 0.55009 749.71 2.9701p 100.K 744.13 0.0013339 744.13 5. 6. 6. 0.56186 -54.381u 54.381u 54.381u 0.56186 475.61 3.0034p 100.K 473.36 0.0021026 473.36 5. 8. 8. 0.56993 -74.301u 74.301u 74.301u 0.56993 348.1 3.0262p 100.K 346.89 0.0028727 346.89 5. 10. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 100.K 273.7 0.0036436 273.7 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.57608 -94.229u 94.229u 94.229u 0.57608 274.48 3.0436p 100.K 273.73 0.0036432 273.73 9. 10. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 104.01K 273.73 0.0036436 273.73 2. 10.001 10.001 0.57609 -94.249u 94.249u 94.249u 0.57609 274.42 3.0436p 104.01K 273.7 0.003644 273.7 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 100.K 273.7 0.0036436 273.7 Gnucap System status iterations: op=9, dc=13, tran=0, fourier=0, total=85 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.5.ckt.out000066400000000000000000000071241316501211100162570ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 2. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 100.K 273.7 0.0036436 273.7 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -10. 0. -10.02p -20.f -10. 1.06E180 603.02f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.02p -20.f -8. 277.E144 666.67f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.02p -20.f -6. 72.4E111 755.93f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.02p -20.f -4. 18.93E+78 894.43f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.02p -20.f -2. 4.947E+45 1.1547p 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 1.293E+12 2.p 100.K 100.K 773.27f 100.K 4. 2. 2. 0.52806 -14.719u 14.719u 14.719u 0.52806 1.7572K 2.9078p 100.K 1.7268K 569.1u 1.7268K 10. 4. 4. 0.55009 -34.499u 34.499u 34.499u 0.55009 749.71 2.9701p 100.K 744.13 0.0013339 744.13 5. 6. 6. 0.56186 -54.381u 54.381u 54.381u 0.56186 475.61 3.0034p 100.K 473.36 0.0021026 473.36 5. 8. 8. 0.56993 -74.301u 74.301u 74.301u 0.56993 348.1 3.0262p 100.K 346.89 0.0028727 346.89 5. 10. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 100.K 273.7 0.0036436 273.7 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.57608 -94.229u 94.229u 94.229u 0.57608 274.48 3.0436p 100.K 273.73 0.0036432 273.73 9. 10. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 104.01K 273.73 0.0036436 273.73 2. 10.001 10.001 0.57609 -94.249u 94.249u 94.249u 0.57609 274.42 3.0436p 104.01K 273.7 0.003644 273.7 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.57608 -94.239u 94.239u 94.239u 0.57608 274.45 3.0436p 100.K 273.7 0.0036436 273.7 Gnucap System status iterations: op=9, dc=13, tran=0, fourier=0, total=85 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.6.ckt.out000066400000000000000000000071361316501211100162630ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd NA( 1.) m=2. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.57608 -94.239u 94.239u 47.12u 0.57608 548.91 1.5218p 100.K 273.7 0.0018218 273.7 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -10. 0. -10.02p -10.f -10. 2.119E180 301.51f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.02p -10.f -8. 553.9E144 333.33f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.02p -10.f -6. 144.8E111 377.96f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.02p -10.f -4. 37.85E+78 447.21f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.02p -10.f -2. 9.894E+45 577.35f 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 2.586E+12 1.p 100.K 100.K 386.64f 100.K 4. 2. 2. 0.52806 -14.719u 14.719u 7.3597u 0.52806 3.5143K 1.4539p 100.K 1.7268K 284.55u 1.7268K 10. 4. 4. 0.55009 -34.499u 34.499u 17.25u 0.55009 1.4994K 1.4851p 100.K 744.13 666.93u 744.13 5. 6. 6. 0.56186 -54.381u 54.381u 27.191u 0.56186 951.21 1.5017p 100.K 473.36 0.0010513 473.36 5. 8. 8. 0.56993 -74.301u 74.301u 37.15u 0.56993 696.2 1.5131p 100.K 346.89 0.0014364 346.89 5. 10. 10. 0.57608 -94.239u 94.239u 47.12u 0.57608 548.91 1.5218p 100.K 273.7 0.0018218 273.7 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.57608 -94.229u 94.229u 47.115u 0.57608 548.96 1.5218p 100.K 273.73 0.0018216 273.73 9. 10. 10. 0.57608 -94.239u 94.239u 47.12u 0.57608 548.91 1.5218p 104.01K 273.73 0.0018218 273.73 2. 10.001 10.001 0.57609 -94.249u 94.249u 47.125u 0.57609 548.85 1.5218p 104.01K 273.7 0.001822 273.7 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.57608 -94.239u 94.239u 47.12u 0.57608 548.91 1.5218p 100.K 273.7 0.0018218 273.7 Gnucap System status iterations: op=9, dc=13, tran=0, fourier=0, total=85 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.7.ckt.out000066400000000000000000000071271316501211100162640ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 2 m=2 .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.5582 -94.418u 94.418u 47.209u 0.5582 547.87 2.9931p 100.K 273.18 0.0018253 273.18 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -10. 0. -10.04p -20.f -10. 1.06E180 603.02f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.04p -20.f -8. 277.E144 666.67f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.04p -20.f -6. 72.4E111 755.93f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.04p -20.f -4. 18.93E+78 894.43f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.04p -20.f -2. 4.947E+45 1.1547p 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 1.293E+12 2.p 100.K 100.K 773.27f 100.K 4. 2. 2. 0.51044 -14.896u 14.896u 7.4478u 0.51044 3.4727K 2.858p 100.K 1.7067K 287.96u 1.7067K 10. 4. 4. 0.5323 -34.677u 34.677u 17.339u 0.5323 1.4917K 2.9198p 100.K 740.34 670.37u 740.34 5. 6. 6. 0.54402 -54.56u 54.56u 27.28u 0.54402 948.1 2.9529p 100.K 471.82 0.0010547 471.82 5. 8. 8. 0.55207 -74.479u 74.479u 37.24u 0.55207 694.53 2.9757p 100.K 346.06 0.0014398 346.06 5. 10. 10. 0.5582 -94.418u 94.418u 47.209u 0.5582 547.87 2.9931p 100.K 273.18 0.0018253 273.18 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.5582 -94.408u 94.408u 47.204u 0.5582 547.92 2.993p 100.K 273.21 0.0018251 273.21 9. 10. 10. 0.5582 -94.418u 94.418u 47.209u 0.5582 547.87 2.9931p 104.01K 273.21 0.0018253 273.21 2. 10.001 10.001 0.55821 -94.428u 94.428u 47.214u 0.55821 547.81 2.9931p 104.01K 273.18 0.0018255 273.18 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.5582 -94.418u 94.418u 47.209u 0.5582 547.87 2.9931p 100.K 273.18 0.0018253 273.18 Gnucap System status iterations: op=9, dc=13, tran=0, fourier=0, total=85 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.8.ckt.out000066400000000000000000000071241316501211100162620ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd 4. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.5582 -94.418u 94.418u 94.418u 0.5582 273.93 5.9861p 100.K 273.18 0.0036505 273.18 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -10. 0. -10.04p -40.f -10. 529.8E177 1.206p 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.04p -40.f -8. 138.5E144 1.3333p 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.04p -40.f -6. 36.2E111 1.5119p 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.04p -40.f -4. 9.463E+78 1.7889p 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.04p -40.f -2. 2.474E+45 2.3094p 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 646.6G 4.p 100.K 100.K 1.5465p 100.K 4. 2. 2. 0.51044 -14.896u 14.896u 14.896u 0.51044 1.7364K 5.7159p 100.K 1.7067K 575.92u 1.7067K 10. 4. 4. 0.5323 -34.677u 34.677u 34.677u 0.5323 745.86 5.8396p 100.K 740.34 0.0013407 740.34 5. 6. 6. 0.54402 -54.56u 54.56u 54.56u 0.54402 474.05 5.9059p 100.K 471.82 0.0021095 471.82 5. 8. 8. 0.55207 -74.479u 74.479u 74.479u 0.55207 347.27 5.9514p 100.K 346.06 0.0028796 346.06 5. 10. 10. 0.5582 -94.418u 94.418u 94.418u 0.5582 273.93 5.9861p 100.K 273.18 0.0036505 273.18 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.5582 -94.408u 94.408u 94.408u 0.5582 273.96 5.9861p 100.K 273.21 0.0036501 273.21 9. 10. 10. 0.5582 -94.418u 94.418u 94.418u 0.5582 273.93 5.9861p 104.01K 273.21 0.0036505 273.21 2. 10.001 10.001 0.55821 -94.428u 94.428u 94.428u 0.55821 273.9 5.9861p 104.01K 273.18 0.0036509 273.18 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.5582 -94.418u 94.418u 94.418u 0.5582 273.93 5.9861p 100.K 273.18 0.0036505 273.18 Gnucap System status iterations: op=9, dc=13, tran=0, fourier=0, total=85 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.9.ckt.out000066400000000000000000000071361316501211100162660ustar00rootroot00000000000000simple diode test V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 100.K D1 ( 2 0 ) ddd NA( 1.) m=4. .model ddd d ( tnom=NA( 27.) is=10.f rs=0. n=1. tt=0. cjo=1.p pb=1. mj=0.5 egap=1.11 xti=3. kf=0. af=1. fc=0.5) # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.5582 -94.418u 94.418u 23.604u 0.5582 1.0957K 1.4965p 100.K 273.18 912.63u 273.18 # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) -10. -10. -10. 0. -10.04p -10.f -10. 2.119E180 301.51f 100.K 100.K 0. 100.K 4. -8. -8. -8. 0. -8.04p -10.f -8. 553.9E144 333.33f 100.K 100.K 0. 100.K 4. -6. -6. -6. 0. -6.04p -10.f -6. 144.8E111 377.96f 100.K 100.K 0. 100.K 4. -4. -4. -4. 0. -4.04p -10.f -4. 37.85E+78 447.21f 100.K 100.K 0. 100.K 4. -2. -2. -2. 0. -2.04p -10.f -2. 9.894E+45 577.35f 100.K 100.K 0. 100.K 4. 0. 0. 0. 0. 0. 0. 0. 2.586E+12 1.p 100.K 100.K 386.64f 100.K 4. 2. 2. 0.51044 -14.896u 14.896u 3.7239u 0.51044 6.9455K 1.429p 100.K 1.7067K 143.98u 1.7067K 10. 4. 4. 0.5323 -34.677u 34.677u 8.6693u 0.5323 2.9834K 1.4599p 100.K 740.34 335.18u 740.34 5. 6. 6. 0.54402 -54.56u 54.56u 13.64u 0.54402 1.8962K 1.4765p 100.K 471.82 527.37u 471.82 5. 8. 8. 0.55207 -74.479u 74.479u 18.62u 0.55207 1.3891K 1.4878p 100.K 346.06 719.91u 346.06 5. 10. 10. 0.5582 -94.418u 94.418u 23.604u 0.5582 1.0957K 1.4965p 100.K 273.18 912.63u 273.18 5. Gnucap System status iterations: op=9, dc=54, tran=0, fourier=0, total=63 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) iter(0) 9.999 9.999 0.5582 -94.408u 94.408u 23.602u 0.5582 1.0958K 1.4965p 100.K 273.21 912.54u 273.21 9. 10. 10. 0.5582 -94.418u 94.418u 23.604u 0.5582 1.0957K 1.4965p 104.01K 273.21 912.63u 273.21 2. 10.001 10.001 0.55821 -94.428u 94.428u 23.607u 0.55821 1.0956K 1.4965p 104.01K 273.18 912.73u 273.18 2. # v(1) v(2) i(V1) i(R1) id(D1) vd(D1) req(D1) cap(D1) z(D1) zraw(D1) y(D1) z(2) 27. 10. 0.5582 -94.418u 94.418u 23.604u 0.5582 1.0957K 1.4965p 100.K 273.18 912.63u 273.18 Gnucap System status iterations: op=9, dc=13, tran=0, fourier=0, total=85 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/d_diode.error1.ckt.out000066400000000000000000000000371316501211100173210ustar00rootroot00000000000000 d1: model foo is not a diode tests/==out/d_logic.1.ckt.out000066400000000000000000000011411316501211100162550ustar00rootroot00000000000000'6 inverters as gates # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 66.926n 5. 66.926n 5. 66.926n 5. 0.01 3.01 0.01 3.01 0.01 3.01 0.01 4.21 Gnucap System status iterations: op=13, dc=0, tran=0, fourier=0, total=13 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=53.1%, ac density=53.1% tests/==out/d_logic.2.ckt.out000066400000000000000000000011411316501211100162560ustar00rootroot00000000000000'6 inverters as gates # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 66.926n 5. 66.926n 5. 66.926n 5. 0.01 3.01 0.01 3.01 0.01 3.01 0.01 4.21 Gnucap System status iterations: op=13, dc=0, tran=0, fourier=0, total=13 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=53.1%, ac density=53.1% tests/==out/d_logic.3.ckt.out000066400000000000000000000011371316501211100162640ustar00rootroot00000000000000'6 inverters as gates # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 0. 5. 0. 5. 0. 5. 0.01 3. 0. 3. 0. 3. 0. 4.21 Gnucap System status iterations: op=3, dc=0, tran=0, fourier=0, total=3 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=53.1%, ac density=53.1% tests/==out/d_logic.4.ckt.out000066400000000000000000000015771316501211100162750ustar00rootroot00000000000000'6 inverters as gates U2: can't find subckt: mosinv1, forcing digital U3: can't find subckt: mosinv1, forcing digital U4: can't find subckt: mosinv1, forcing digital U5: can't find subckt: mosinv1, forcing digital U6: can't find subckt: mosinv1, forcing digital U7: can't find subckt: mosinv1, forcing digital # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 0. 5. 0. 5. 0. 5. 0.01 3. 0. 3. 0. 3. 0. 4.21 Gnucap System status iterations: op=3, dc=0, tran=0, fourier=0, total=3 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=12.5%, ac density=12.5% tests/==out/d_logic.5.ckt.out000066400000000000000000000015771316501211100162760ustar00rootroot00000000000000'6 inverters as gates U2: can't find subckt: mosinv1, forcing digital U3: can't find subckt: mosinv1, forcing digital U4: can't find subckt: mosinv1, forcing digital U5: can't find subckt: mosinv1, forcing digital U6: can't find subckt: mosinv1, forcing digital U7: can't find subckt: mosinv1, forcing digital # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 0. 5. 0. 5. 0. 5. 0.01 3. 0. 3. 0. 3. 0. 4.21 Gnucap System status iterations: op=3, dc=0, tran=0, fourier=0, total=3 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=12.5%, ac density=12.5% tests/==out/d_logic.6.ckt.out000066400000000000000000000015771316501211100162770ustar00rootroot00000000000000'6 inverters as gates U2: can't find subckt: mosinv1, forcing digital U3: can't find subckt: mosinv1, forcing digital U4: can't find subckt: mosinv1, forcing digital U5: can't find subckt: mosinv1, forcing digital U6: can't find subckt: mosinv1, forcing digital U7: can't find subckt: mosinv1, forcing digital # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 0. 5. 0. 5. 0. 5. 0.01 3. 0. 3. 0. 3. 0. 4.21 Gnucap System status iterations: op=3, dc=0, tran=0, fourier=0, total=3 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=12.5%, ac density=12.5% tests/==out/d_logic.7.ckt.out000066400000000000000000000024611316501211100162710ustar00rootroot00000000000000'6 inverters as gates U7: can't find subckt: mosinv1, forcing digital U6: can't find subckt: mosinv1, forcing digital U5: can't find subckt: mosinv1, forcing digital U4: can't find subckt: mosinv1, forcing digital U3: can't find subckt: mosinv1, forcing digital U2: can't find subckt: mosinv1, forcing digital # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) logic(1) logic(2) logic(3) logic(4) logic(5) logic(6) logic(7) logic(8) 27. 0. 5. 0. 5. 0. 5. 0. 5. 0.01 3. 0. 3. 0. 3. 0. 4.21 Vdd ( 8 0 ) DC 5. V1 ( 1 0 ) generator scale= 1. U7 ( 7 0 8 8 6 ) mos inv U6 ( 6 0 8 8 5 ) mos inv U5 ( 5 0 8 8 4 ) mos inv U4 ( 4 0 8 8 3 ) mos inv U3 ( 3 0 8 8 2 ) mos inv U2 ( 2 0 8 8 1 ) mos inv .model mos logic ( delay=1n vmax=5. vmin=0. unknown=NA( 2.5) rise=1n fall=1n rs=100. rw=1.G thh=0.75 thl=0.25 mr=5. mf=5. over=10k tnom=NA( 27.)) *'.option trace *'.print tran v(nodes) l(nodes) *'.tran 0 10 .05 watch Gnucap System status iterations: op=8, dc=0, tran=0, fourier=0, total=8 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=8, subckt=0, model=0, total=8 dctran density=12.5%, ac density=12.5% tests/==out/d_logic.error1.ckt.out000066400000000000000000000000561316501211100173330ustar00rootroot00000000000000 u1: model mos is not a logic family (LOGIC) tests/==out/d_logic_nand-dc.ckt.out000066400000000000000000000012201316501211100175000ustar00rootroot00000000000000* nor-test U2: can't find subckt: CMOSnor2, forcing digital U1: can't find subckt: CMOSnor2, forcing digital # V(V2) V(V3) V(U1) V(U2) logic(U2) logic(U1) 0. 0. 10. 5. 0. 0. 3. 2. 2. 10. 5. 0. 0. 3. 4. 4. 10. 5. 0. 0. 2. 6. 6. 10. 0. 0. 0. 0. 8. 8. 10. 0. 0. 0. 0. 10. 10. 10. 0. 0. 0. 0. tests/==out/d_logic_tr_ab1.ckt.out000066400000000000000000000407311316501211100173560ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3.01 9. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 17. 1. 500.n 2.5079 1.41 2.2469 2.41 10. 9. 1.u 2.5157 1.41 2.134 2.41 6. 6. 5.0833u 2.5798 1.41 1.6917 2.41 7. 6. 8.0778u 2.6268 1.41 1.5043 2.41 5. 6. 11.072u 2.6738 1.41 1.3584 2.41 5. 6. 17.56u 2.7753 1.41 1.1182 0.31 5. 6. 28.373u 2.9433 1.41 0.83917 0.31 5. 6. 39.187u 3.1093 1.41 0.64188 0.31 5. 6. 50.u 3.2725 1.41 0.49388 0.31 5. 1. 75.u 3.635 1.41 0.26659 0.31 6. 6. 100.u 3.9695 3.31 0.1365 0.31 5. 1. 150.u 4.5225 3.31 0.025518 0.31 6. 1. 200.u 4.8776 3.31 0.0016644 0.31 6. 1. 250.u 5. 3.31 41.392u 0.31 6. 1. 300.u 4.8776 3.31 0.0014927 0.31 5. 1. 350.u 4.5225 3.31 0.025134 0.31 5. 1. 400.u 3.9695 3.31 0.13582 0.31 6. 1. 450.u 3.2725 2.31 0.49247 0.31 6. 1. 500.u 2.5 2.41 2.4323 1.31 11. 1. 550.u 1.7275 2.41 4.5061 3.21 7. 1. 600.u 1.0305 0.31 4.8635 3.21 6. 1. 650.u 0.47746 0.31 4.9745 3.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 6. 1. 750.u 142.f 0.31 5. 3.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 5. 1. 850.u 0.47746 0.31 4.9749 3.21 5. 1. 900.u 1.0305 0.31 4.8642 3.21 6. 1. 950.u 1.7275 1.31 4.5075 3.21 6. 1. 0.001 2.5 1.41 2.5677 2.21 11. 1. 0.00105 3.2725 1.41 0.49394 0.11 7. 1. 0.0011 3.9695 3.31 0.13655 0.11 6. 1. 0.00115 4.5225 3.31 0.025518 0.11 6. 1. 0.0012 4.8776 3.31 0.0016644 0.11 6. 1. 0.00125 5. 3.31 41.392u 0.11 6. 1. 0.0013 4.8776 3.31 0.0014927 0.11 5. 1. 0.00135 4.5225 3.31 0.025134 0.11 5. 1. 0.0014 3.9695 3.31 0.13582 0.11 6. 1. 0.00145 3.2725 2.31 0.49247 0.11 6. 1. 0.0015 2.5 2.41 2.4323 1.11 11. 1. 0.00155 1.7275 2.41 4.5061 3.01 7. 1. 0.0016 1.0305 0.31 4.8635 3.01 6. 1. 0.00165 0.47746 0.31 4.9745 3.01 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 6. 1. 0.00175 142.f 0.31 5. 3.01 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 5. 1. 0.00185 0.47746 0.31 4.9749 3.01 5. 1. 0.0019 1.0305 0.31 4.8642 3.01 6. 1. 0.00195 1.7275 1.31 4.5075 3.01 6. 1. 0.002 2.5 1.41 2.5677 2.01 11. 1. 0.00205 3.2725 1.41 0.49394 0.01 7. 1. 0.0021 3.9695 3.31 0.13655 0.01 6. 1. 0.00215 4.5225 3.31 0.025518 0.01 6. 1. 0.0022 4.8776 3.31 0.0016644 0.01 6. 1. 0.00225 5. 3.31 41.392u 0.01 6. 1. 0.0023 4.8776 3.31 0.0014927 0.01 5. 1. 0.00235 4.5225 3.31 0.025134 0.01 5. 1. 0.0024 3.9695 3.31 0.13582 0.01 6. 1. 0.00245 3.2725 2.31 0.49247 0.01 6. 1. 0.0025 2.5 2.41 2.4323 1.01 11. 1. 0.00255 1.7275 2.41 4.5061 3.01 7. 1. 0.0026 1.0305 0.31 4.8635 3.01 6. 1. 0.00265 0.47746 0.31 4.9745 3.01 6. 1. 0.0027 0.12236 0.31 4.9983 3.01 6. 1. 0.00275 142.f 0.31 5. 3.01 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 5. 1. 0.00285 0.47746 0.31 4.9749 3.01 5. 1. 0.0029 1.0305 0.31 4.8642 3.01 6. 1. 0.00295 1.7275 1.31 4.5075 3.01 6. 1. 0.003 2.5 1.41 2.5677 2.01 11. 1. 0.00305 3.2725 1.41 0.49394 0.01 7. 1. 0.0031 3.9695 3.31 0.13655 0.01 6. 1. 0.00315 4.5225 3.31 0.025518 0.01 6. 1. 0.0032 4.8776 3.31 0.0016644 0.01 6. 1. 0.00325 5. 3.31 41.392u 0.01 6. 1. 0.0033 4.8776 3.31 0.0014927 0.01 5. 1. 0.00335 4.5225 3.31 0.025134 0.01 5. 1. 0.0034 3.9695 3.31 0.13582 0.01 6. 1. 0.00345 3.2725 2.31 0.49247 0.01 6. 1. 0.0035 2.5 2.41 2.4323 1.01 11. 1. 0.00355 1.7275 2.41 4.5061 3.01 7. 1. 0.0036 1.0305 0.31 4.8635 3.01 6. 1. 0.00365 0.47746 0.31 4.9745 3.01 6. 1. 0.0037 0.12236 0.31 4.9983 3.01 6. 1. 0.00375 142.f 0.31 5. 3.01 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 5. 1. 0.00385 0.47746 0.31 4.9749 3.01 5. 1. 0.0039 1.0305 0.31 4.8642 3.01 6. 1. 0.00395 1.7275 1.31 4.5075 3.01 6. 1. 0.004 2.5 1.41 2.5677 2.01 11. 1. 0.00405 3.2725 1.41 0.49394 0.01 7. 1. 0.0041 3.9695 3.31 0.13655 0.01 6. 1. 0.00415 4.5225 3.31 0.025518 0.01 6. 1. 0.0042 4.8776 3.31 0.0016644 0.01 6. 1. 0.00425 5. 3.31 41.392u 0.01 6. 1. 0.0043 4.8776 3.31 0.0014927 0.01 5. 1. 0.00435 4.5225 3.31 0.025134 0.01 5. 1. 0.0044 3.9695 3.31 0.13582 0.01 6. 1. 0.00445 3.2725 2.31 0.49247 0.01 6. 1. 0.0045 2.5 2.41 2.4323 1.01 11. 1. 0.00455 1.7275 2.41 4.5061 3.01 7. 1. 0.0046 1.0305 0.31 4.8635 3.01 6. 1. 0.00465 0.47746 0.31 4.9745 3.01 6. 1. 0.0047 0.12236 0.31 4.9983 3.01 6. 1. 0.00475 142.f 0.31 5. 3.01 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 5. 1. 0.00485 0.47746 0.31 4.9749 3.01 5. 1. 0.0049 1.0305 0.31 4.8642 3.01 6. 1. 0.00495 1.7275 1.31 4.5075 3.01 6. 1. 0.005 2.5 1.41 2.5677 2.01 11. 1. 0.00505 3.2725 1.41 0.49394 0.01 7. 1. 0.0051 3.9695 3.31 0.13655 0.01 6. 1. 0.00515 4.5225 3.31 0.025518 0.01 6. 1. 0.0052 4.8776 3.31 0.0016644 0.01 6. 1. 0.00525 5. 3.31 41.392u 0.01 6. 1. 0.0053 4.8776 3.31 0.0014927 0.01 5. 1. 0.00535 4.5225 3.31 0.025134 0.01 5. 1. 0.0054 3.9695 3.31 0.13582 0.01 6. 1. 0.00545 3.2725 2.31 0.49247 0.01 6. 1. 0.0055 2.5 2.41 2.4323 1.01 11. 1. 0.00555 1.7275 2.41 4.5061 3.01 7. 1. 0.0056 1.0305 0.31 4.8635 3.01 6. 1. 0.00565 0.47746 0.31 4.9745 3.01 6. 1. 0.0057 0.12236 0.31 4.9983 3.01 6. 1. 0.00575 142.f 0.31 5. 3.01 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 5. 1. 0.00585 0.47746 0.31 4.9749 3.01 5. 1. 0.0059 1.0305 0.31 4.8642 3.01 6. 1. 0.00595 1.7275 1.31 4.5075 3.01 6. 1. 0.006 2.5 1.41 2.5677 2.01 11. 1. 0.00605 3.2725 1.41 0.49394 0.01 7. 1. 0.0061 3.9695 3.31 0.13655 0.01 6. 1. 0.00615 4.5225 3.31 0.025518 0.01 6. 1. 0.0062 4.8776 3.31 0.0016644 0.01 6. 1. 0.00625 5. 3.31 41.392u 0.01 6. 1. 0.0063 4.8776 3.31 0.0014927 0.01 5. 1. 0.00635 4.5225 3.31 0.025134 0.01 5. 1. 0.0064 3.9695 3.31 0.13582 0.01 6. 1. 0.00645 3.2725 2.31 0.49247 0.01 6. 1. 0.0065 2.5 2.41 2.4323 1.01 11. 1. 0.00655 1.7275 2.41 4.5061 3.01 7. 1. 0.0066 1.0305 0.31 4.8635 3.01 6. 1. 0.00665 0.47746 0.31 4.9745 3.01 6. 1. 0.0067 0.12236 0.31 4.9983 3.01 6. 1. 0.00675 142.f 0.31 5. 3.01 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 5. 1. 0.00685 0.47746 0.31 4.9749 3.01 5. 1. 0.0069 1.0305 0.31 4.8642 3.01 6. 1. 0.00695 1.7275 1.31 4.5075 3.01 6. 1. 0.007 2.5 1.41 2.5677 2.01 11. 1. 0.00705 3.2725 1.41 0.49394 0.01 7. 1. 0.0071 3.9695 3.31 0.13655 0.01 6. 1. 0.00715 4.5225 3.31 0.025518 0.01 6. 1. 0.0072 4.8776 3.31 0.0016644 0.01 6. 1. 0.00725 5. 3.31 41.392u 0.01 6. 1. 0.0073 4.8776 3.31 0.0014927 0.01 5. 1. 0.00735 4.5225 3.31 0.025134 0.01 5. 1. 0.0074 3.9695 3.31 0.13582 0.01 6. 1. 0.00745 3.2725 2.31 0.49247 0.01 6. 1. 0.0075 2.5 2.41 2.4323 1.01 11. 1. 0.00755 1.7275 2.41 4.5061 3.01 7. 1. 0.0076 1.0305 0.31 4.8635 3.01 6. 1. 0.00765 0.47746 0.31 4.9745 3.01 6. 1. 0.0077 0.12236 0.31 4.9983 3.01 6. 1. 0.00775 142.f 0.31 5. 3.01 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 5. 1. 0.00785 0.47746 0.31 4.9749 3.01 5. 1. 0.0079 1.0305 0.31 4.8642 3.01 6. 1. 0.00795 1.7275 1.31 4.5075 3.01 6. 1. 0.008 2.5 1.41 2.5677 2.01 11. 1. 0.00805 3.2725 1.41 0.49394 0.01 7. 1. 0.0081 3.9695 3.31 0.13655 0.01 6. 1. 0.00815 4.5225 3.31 0.025518 0.01 6. 1. 0.0082 4.8776 3.31 0.0016644 0.01 6. 1. 0.00825 5. 3.31 41.392u 0.01 6. 1. 0.0083 4.8776 3.31 0.0014927 0.01 5. 1. 0.00835 4.5225 3.31 0.025134 0.01 5. 1. 0.0084 3.9695 3.31 0.13582 0.01 6. 1. 0.00845 3.2725 2.31 0.49247 0.01 6. 1. 0.0085 2.5 2.41 2.4323 1.01 11. 1. 0.00855 1.7275 2.41 4.5061 3.01 7. 1. 0.0086 1.0305 0.31 4.8635 3.01 6. 1. 0.00865 0.47746 0.31 4.9745 3.01 6. 1. 0.0087 0.12236 0.31 4.9983 3.01 6. 1. 0.00875 142.f 0.31 5. 3.01 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 5. 1. 0.00885 0.47746 0.31 4.9749 3.01 5. 1. 0.0089 1.0305 0.31 4.8642 3.01 6. 1. 0.00895 1.7275 1.31 4.5075 3.01 6. 1. 0.009 2.5 1.41 2.5677 2.01 11. 1. 0.00905 3.2725 1.41 0.49394 0.01 7. 1. 0.0091 3.9695 3.31 0.13655 0.01 6. 1. 0.00915 4.5225 3.31 0.025518 0.01 6. 1. 0.0092 4.8776 3.31 0.0016644 0.01 6. 1. 0.00925 5. 3.31 41.392u 0.01 6. 1. 0.0093 4.8776 3.31 0.0014927 0.01 5. 1. 0.00935 4.5225 3.31 0.025134 0.01 5. 1. 0.0094 3.9695 3.31 0.13582 0.01 6. 1. 0.00945 3.2725 2.31 0.49247 0.01 6. 1. 0.0095 2.5 2.41 2.4323 1.01 11. 1. 0.00955 1.7275 2.41 4.5061 3.01 7. 1. 0.0096 1.0305 0.31 4.8635 3.01 6. 1. 0.00965 0.47746 0.31 4.9745 3.01 6. 1. 0.0097 0.12236 0.31 4.9983 3.01 6. 1. 0.00975 142.f 0.31 5. 3.01 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 5. 1. 0.00985 0.47746 0.31 4.9749 3.01 5. 1. 0.0099 1.0305 0.31 4.8642 3.01 6. 1. 0.00995 1.7275 1.31 4.5075 3.01 6. 1. 0.01 2.5 1.41 2.5677 2.01 11. 1. Gnucap System status iterations: op=9, dc=0, tran=1348, fourier=0, total=1567 transient timesteps: accepted=210, rejected=0, total=210 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_ab2.ckt.out000066400000000000000000000520451316501211100173600ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3.01 66.926n 0.01 9. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 2.57 1.41 17. 1. 500.n 2.5079 1.41 2.4622 2.41 3.0399 1.41 9. 9. 1.u 2.5157 1.41 2.3909 2.41 3.3973 1.41 6. 6. 5.4545u 2.5857 1.41 1.7291 2.41 4.4962 3.31 8. 6. 9.9091u 2.6556 1.41 1.43 2.41 4.6984 3.31 6. 6. 14.364u 2.7253 1.41 1.2359 0.31 4.7898 3.31 6. 6. 18.818u 2.7949 1.41 1.0856 0.31 4.8454 3.31 5. 6. 26.614u 2.9161 1.41 0.88156 0.31 4.9039 3.31 6. 6. 38.307u 3.0959 1.41 0.65812 0.31 4.9494 3.31 6. 6. 50.u 3.2725 1.41 0.49534 0.31 4.9724 3.31 6. 1. 75.u 3.635 1.41 0.26737 0.31 4.9923 3.31 6. 6. 100.u 3.9695 3.31 0.13689 0.31 4.998 3.31 6. 1. 150.u 4.5225 3.31 0.025657 0.31 4.9999 3.31 6. 1. 200.u 4.8776 3.31 0.0016918 0.31 5. 3.31 6. 1. 250.u 5. 3.31 43.235u 0.31 5. 3.31 6. 1. 300.u 4.8776 3.31 0.0014922 0.31 5. 3.31 6. 1. 350.u 4.5225 3.31 0.025103 0.31 4.9999 3.31 6. 1. 400.u 3.9695 3.31 0.13566 0.31 4.9981 3.31 6. 1. 450.u 3.2725 2.31 0.49174 0.31 4.9732 3.31 6. 1. 500.u 2.5 2.41 2.3301 1.31 3.637 2.31 10. 1. 550.u 1.7275 2.41 4.4998 3.21 0.029753 0.21 8. 1. 600.u 1.0305 0.31 4.8629 3.21 0.0020666 0.21 7. 1. 650.u 0.47746 0.31 4.9743 3.21 104.23u 0.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 8.3763u 0.21 6. 1. 750.u 141.f 0.31 5. 3.21 619.23n 0.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 358.92n 0.21 6. 1. 850.u 0.47746 0.31 4.9749 3.21 54.991u 0.21 6. 1. 900.u 1.0305 0.31 4.8643 3.21 0.0018536 0.21 6. 1. 950.u 1.7275 1.31 4.5083 3.21 0.026757 0.21 6. 1. 0.001 2.5 1.41 2.6699 2.21 1.363 1.21 10. 1. 0.00105 3.2725 1.41 0.50022 0.11 4.9702 3.11 8. 1. 0.0011 3.9695 3.31 0.13709 0.11 4.9979 3.11 7. 1. 0.00115 4.5225 3.31 0.025657 0.11 4.9999 3.11 6. 1. 0.0012 4.8776 3.31 0.0016918 0.11 5. 3.11 6. 1. 0.00125 5. 3.31 43.235u 0.11 5. 3.11 6. 1. 0.0013 4.8776 3.31 0.0014922 0.11 5. 3.11 6. 1. 0.00135 4.5225 3.31 0.025103 0.11 4.9999 3.11 6. 1. 0.0014 3.9695 3.31 0.13566 0.11 4.9981 3.11 6. 1. 0.00145 3.2725 2.31 0.49174 0.11 4.9732 3.11 6. 1. 0.0015 2.5 2.41 2.3301 1.11 3.637 2.11 10. 1. 0.00155 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0016 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00165 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00175 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00185 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0019 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00195 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.002 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00205 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0021 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00215 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0022 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00225 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0023 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00235 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0024 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00245 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0025 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00255 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0026 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00265 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0027 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00275 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00285 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0029 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00295 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.003 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00305 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0031 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00315 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0032 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00325 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0033 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00335 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0034 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00345 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0035 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00355 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0036 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00365 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0037 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00375 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00385 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0039 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00395 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.004 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00405 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0041 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00415 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0042 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00425 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0043 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00435 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0044 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00445 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0045 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00455 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0046 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00465 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0047 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00475 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00485 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0049 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00495 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.005 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00505 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0051 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00515 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0052 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00525 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0053 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00535 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0054 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00545 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0055 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00555 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0056 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00565 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0057 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00575 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00585 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0059 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00595 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.006 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00605 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0061 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00615 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0062 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00625 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0063 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00635 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0064 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00645 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0065 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00655 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0066 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00665 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0067 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00675 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00685 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0069 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00695 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.007 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00705 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0071 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00715 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0072 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00725 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0073 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00735 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0074 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00745 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0075 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00755 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0076 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00765 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0077 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00775 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00785 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0079 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00795 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.008 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00805 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0081 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00815 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0082 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00825 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0083 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00835 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0084 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00845 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0085 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00855 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0086 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00865 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0087 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00875 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00885 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0089 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00895 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.009 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00905 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0091 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00915 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0092 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00925 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0093 4.8776 3.31 0.0014922 0.01 5. 3.01 6. 1. 0.00935 4.5225 3.31 0.025103 0.01 4.9999 3.01 6. 1. 0.0094 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00945 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0095 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00955 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0096 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00965 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0097 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00975 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 358.92n 0.01 6. 1. 0.00985 0.47746 0.31 4.9749 3.01 54.991u 0.01 6. 1. 0.0099 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00995 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.01 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. Gnucap System status iterations: op=9, dc=0, tran=1412, fourier=0, total=1631 transient timesteps: accepted=210, rejected=0, total=210 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_an1.ckt.out000066400000000000000000000407311316501211100173720ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3.01 9. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 17. 1. 500.n 2.5079 1.41 2.2469 2.41 10. 9. 1.u 2.5157 1.41 2.134 2.41 6. 6. 5.0833u 2.5798 1.41 1.6917 2.41 7. 6. 8.0778u 2.6268 1.41 1.5043 2.41 5. 6. 11.072u 2.6738 1.41 1.3584 2.41 5. 6. 17.56u 2.7753 1.41 1.1182 0.31 5. 6. 28.373u 2.9433 1.41 0.83917 0.31 5. 6. 39.187u 3.1093 1.41 0.64188 0.31 5. 6. 50.u 3.2725 1.41 0.49388 0.31 5. 1. 75.u 3.635 1.41 0.26659 0.31 6. 6. 100.u 3.9695 3.31 0.1365 0.31 5. 1. 150.u 4.5225 3.31 0.025518 0.31 6. 1. 200.u 4.8776 3.31 0.0016644 0.31 6. 1. 250.u 5. 3.31 41.392u 0.31 6. 1. 300.u 4.8776 3.31 0.0014927 0.31 5. 1. 350.u 4.5225 3.31 0.025134 0.31 5. 1. 400.u 3.9695 3.31 0.13582 0.31 6. 1. 450.u 3.2725 2.31 0.49247 0.31 6. 1. 500.u 2.5 2.41 2.4323 1.31 11. 1. 550.u 1.7275 2.41 4.5061 3.21 7. 1. 600.u 1.0305 0.31 4.8635 3.21 6. 1. 650.u 0.47746 0.31 4.9745 3.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 6. 1. 750.u 142.f 0.31 5. 3.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 5. 1. 850.u 0.47746 0.31 4.9749 3.21 5. 1. 900.u 1.0305 0.31 4.8642 3.21 6. 1. 950.u 1.7275 1.31 4.5075 3.21 6. 1. 0.001 2.5 1.41 2.5677 2.21 11. 1. 0.00105 3.2725 1.41 0.49394 0.11 7. 1. 0.0011 3.9695 3.31 0.13655 0.11 6. 1. 0.00115 4.5225 3.31 0.025518 0.11 6. 1. 0.0012 4.8776 3.31 0.0016644 0.11 6. 1. 0.00125 5. 3.31 41.392u 0.11 6. 1. 0.0013 4.8776 3.31 0.0014927 0.11 5. 1. 0.00135 4.5225 3.31 0.025134 0.11 5. 1. 0.0014 3.9695 3.31 0.13582 0.11 6. 1. 0.00145 3.2725 2.31 0.49247 0.11 6. 1. 0.0015 2.5 2.41 2.4323 1.11 11. 1. 0.00155 1.7275 2.41 4.5061 3.01 7. 1. 0.0016 1.0305 0.31 4.8635 3.01 6. 1. 0.00165 0.47746 0.31 4.9745 3.01 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 6. 1. 0.00175 141.f 0.31 5. 3.01 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 5. 1. 0.00185 0.47746 0.31 4.9749 3.01 5. 1. 0.0019 1.0305 0.31 4.8642 3.01 6. 1. 0.00195 1.7275 1.31 4.5075 3.01 6. 1. 0.002 2.5 1.41 2.5677 2.01 11. 1. 0.00205 3.2725 1.41 0.49394 0.01 7. 1. 0.0021 3.9695 3.31 0.13655 0.01 6. 1. 0.00215 4.5225 3.31 0.025518 0.01 6. 1. 0.0022 4.8776 3.31 0.0016644 0.01 6. 1. 0.00225 5. 3.31 41.392u 0.01 6. 1. 0.0023 4.8776 3.31 0.0014927 0.01 5. 1. 0.00235 4.5225 3.31 0.025134 0.01 5. 1. 0.0024 3.9695 3.31 0.13582 0.01 6. 1. 0.00245 3.2725 2.31 0.49247 0.01 6. 1. 0.0025 2.5 2.41 2.4323 1.01 11. 1. 0.00255 1.7275 2.41 4.5061 3.01 7. 1. 0.0026 1.0305 0.31 4.8635 3.01 6. 1. 0.00265 0.47746 0.31 4.9745 3.01 6. 1. 0.0027 0.12236 0.31 4.9983 3.01 6. 1. 0.00275 141.f 0.31 5. 3.01 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 5. 1. 0.00285 0.47746 0.31 4.9749 3.01 5. 1. 0.0029 1.0305 0.31 4.8642 3.01 6. 1. 0.00295 1.7275 1.31 4.5075 3.01 6. 1. 0.003 2.5 1.41 2.5677 2.01 11. 1. 0.00305 3.2725 1.41 0.49394 0.01 7. 1. 0.0031 3.9695 3.31 0.13655 0.01 6. 1. 0.00315 4.5225 3.31 0.025518 0.01 6. 1. 0.0032 4.8776 3.31 0.0016644 0.01 6. 1. 0.00325 5. 3.31 41.392u 0.01 6. 1. 0.0033 4.8776 3.31 0.0014927 0.01 5. 1. 0.00335 4.5225 3.31 0.025134 0.01 5. 1. 0.0034 3.9695 3.31 0.13582 0.01 6. 1. 0.00345 3.2725 2.31 0.49247 0.01 6. 1. 0.0035 2.5 2.41 2.4323 1.01 11. 1. 0.00355 1.7275 2.41 4.5061 3.01 7. 1. 0.0036 1.0305 0.31 4.8635 3.01 6. 1. 0.00365 0.47746 0.31 4.9745 3.01 6. 1. 0.0037 0.12236 0.31 4.9983 3.01 6. 1. 0.00375 141.f 0.31 5. 3.01 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 5. 1. 0.00385 0.47746 0.31 4.9749 3.01 5. 1. 0.0039 1.0305 0.31 4.8642 3.01 6. 1. 0.00395 1.7275 1.31 4.5075 3.01 6. 1. 0.004 2.5 1.41 2.5677 2.01 11. 1. 0.00405 3.2725 1.41 0.49394 0.01 7. 1. 0.0041 3.9695 3.31 0.13655 0.01 6. 1. 0.00415 4.5225 3.31 0.025518 0.01 6. 1. 0.0042 4.8776 3.31 0.0016644 0.01 6. 1. 0.00425 5. 3.31 41.392u 0.01 6. 1. 0.0043 4.8776 3.31 0.0014927 0.01 5. 1. 0.00435 4.5225 3.31 0.025134 0.01 5. 1. 0.0044 3.9695 3.31 0.13582 0.01 6. 1. 0.00445 3.2725 2.31 0.49247 0.01 6. 1. 0.0045 2.5 2.41 2.4323 1.01 11. 1. 0.00455 1.7275 2.41 4.5061 3.01 7. 1. 0.0046 1.0305 0.31 4.8635 3.01 6. 1. 0.00465 0.47746 0.31 4.9745 3.01 6. 1. 0.0047 0.12236 0.31 4.9983 3.01 6. 1. 0.00475 141.f 0.31 5. 3.01 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 5. 1. 0.00485 0.47746 0.31 4.9749 3.01 5. 1. 0.0049 1.0305 0.31 4.8642 3.01 6. 1. 0.00495 1.7275 1.31 4.5075 3.01 6. 1. 0.005 2.5 1.41 2.5677 2.01 11. 1. 0.00505 3.2725 1.41 0.49394 0.01 7. 1. 0.0051 3.9695 3.31 0.13655 0.01 6. 1. 0.00515 4.5225 3.31 0.025518 0.01 6. 1. 0.0052 4.8776 3.31 0.0016644 0.01 6. 1. 0.00525 5. 3.31 41.392u 0.01 6. 1. 0.0053 4.8776 3.31 0.0014927 0.01 5. 1. 0.00535 4.5225 3.31 0.025134 0.01 5. 1. 0.0054 3.9695 3.31 0.13582 0.01 6. 1. 0.00545 3.2725 2.31 0.49247 0.01 6. 1. 0.0055 2.5 2.41 2.4323 1.01 11. 1. 0.00555 1.7275 2.41 4.5061 3.01 7. 1. 0.0056 1.0305 0.31 4.8635 3.01 6. 1. 0.00565 0.47746 0.31 4.9745 3.01 6. 1. 0.0057 0.12236 0.31 4.9983 3.01 6. 1. 0.00575 142.f 0.31 5. 3.01 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 5. 1. 0.00585 0.47746 0.31 4.9749 3.01 5. 1. 0.0059 1.0305 0.31 4.8642 3.01 6. 1. 0.00595 1.7275 1.31 4.5075 3.01 6. 1. 0.006 2.5 1.41 2.5677 2.01 11. 1. 0.00605 3.2725 1.41 0.49394 0.01 7. 1. 0.0061 3.9695 3.31 0.13655 0.01 6. 1. 0.00615 4.5225 3.31 0.025518 0.01 6. 1. 0.0062 4.8776 3.31 0.0016644 0.01 6. 1. 0.00625 5. 3.31 41.392u 0.01 6. 1. 0.0063 4.8776 3.31 0.0014927 0.01 5. 1. 0.00635 4.5225 3.31 0.025134 0.01 5. 1. 0.0064 3.9695 3.31 0.13582 0.01 6. 1. 0.00645 3.2725 2.31 0.49247 0.01 6. 1. 0.0065 2.5 2.41 2.4323 1.01 11. 1. 0.00655 1.7275 2.41 4.5061 3.01 7. 1. 0.0066 1.0305 0.31 4.8635 3.01 6. 1. 0.00665 0.47746 0.31 4.9745 3.01 6. 1. 0.0067 0.12236 0.31 4.9983 3.01 6. 1. 0.00675 141.f 0.31 5. 3.01 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 5. 1. 0.00685 0.47746 0.31 4.9749 3.01 5. 1. 0.0069 1.0305 0.31 4.8642 3.01 6. 1. 0.00695 1.7275 1.31 4.5075 3.01 6. 1. 0.007 2.5 1.41 2.5677 2.01 11. 1. 0.00705 3.2725 1.41 0.49394 0.01 7. 1. 0.0071 3.9695 3.31 0.13655 0.01 6. 1. 0.00715 4.5225 3.31 0.025518 0.01 6. 1. 0.0072 4.8776 3.31 0.0016644 0.01 6. 1. 0.00725 5. 3.31 41.392u 0.01 6. 1. 0.0073 4.8776 3.31 0.0014927 0.01 5. 1. 0.00735 4.5225 3.31 0.025134 0.01 5. 1. 0.0074 3.9695 3.31 0.13582 0.01 6. 1. 0.00745 3.2725 2.31 0.49247 0.01 6. 1. 0.0075 2.5 2.41 2.4323 1.01 11. 1. 0.00755 1.7275 2.41 4.5061 3.01 7. 1. 0.0076 1.0305 0.31 4.8635 3.01 6. 1. 0.00765 0.47746 0.31 4.9745 3.01 6. 1. 0.0077 0.12236 0.31 4.9983 3.01 6. 1. 0.00775 142.f 0.31 5. 3.01 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 5. 1. 0.00785 0.47746 0.31 4.9749 3.01 5. 1. 0.0079 1.0305 0.31 4.8642 3.01 6. 1. 0.00795 1.7275 1.31 4.5075 3.01 6. 1. 0.008 2.5 1.41 2.5677 2.01 11. 1. 0.00805 3.2725 1.41 0.49394 0.01 7. 1. 0.0081 3.9695 3.31 0.13655 0.01 6. 1. 0.00815 4.5225 3.31 0.025518 0.01 6. 1. 0.0082 4.8776 3.31 0.0016644 0.01 6. 1. 0.00825 5. 3.31 41.392u 0.01 6. 1. 0.0083 4.8776 3.31 0.0014927 0.01 5. 1. 0.00835 4.5225 3.31 0.025134 0.01 5. 1. 0.0084 3.9695 3.31 0.13582 0.01 6. 1. 0.00845 3.2725 2.31 0.49247 0.01 6. 1. 0.0085 2.5 2.41 2.4323 1.01 11. 1. 0.00855 1.7275 2.41 4.5061 3.01 7. 1. 0.0086 1.0305 0.31 4.8635 3.01 6. 1. 0.00865 0.47746 0.31 4.9745 3.01 6. 1. 0.0087 0.12236 0.31 4.9983 3.01 6. 1. 0.00875 141.f 0.31 5. 3.01 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 5. 1. 0.00885 0.47746 0.31 4.9749 3.01 5. 1. 0.0089 1.0305 0.31 4.8642 3.01 6. 1. 0.00895 1.7275 1.31 4.5075 3.01 6. 1. 0.009 2.5 1.41 2.5677 2.01 11. 1. 0.00905 3.2725 1.41 0.49394 0.01 7. 1. 0.0091 3.9695 3.31 0.13655 0.01 6. 1. 0.00915 4.5225 3.31 0.025518 0.01 6. 1. 0.0092 4.8776 3.31 0.0016644 0.01 6. 1. 0.00925 5. 3.31 41.392u 0.01 6. 1. 0.0093 4.8776 3.31 0.0014927 0.01 5. 1. 0.00935 4.5225 3.31 0.025134 0.01 5. 1. 0.0094 3.9695 3.31 0.13582 0.01 6. 1. 0.00945 3.2725 2.31 0.49247 0.01 6. 1. 0.0095 2.5 2.41 2.4323 1.01 11. 1. 0.00955 1.7275 2.41 4.5061 3.01 7. 1. 0.0096 1.0305 0.31 4.8635 3.01 6. 1. 0.00965 0.47746 0.31 4.9745 3.01 6. 1. 0.0097 0.12236 0.31 4.9983 3.01 6. 1. 0.00975 141.f 0.31 5. 3.01 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 5. 1. 0.00985 0.47746 0.31 4.9749 3.01 5. 1. 0.0099 1.0305 0.31 4.8642 3.01 6. 1. 0.00995 1.7275 1.31 4.5075 3.01 6. 1. 0.01 2.5 1.41 2.5677 2.01 11. 1. Gnucap System status iterations: op=9, dc=0, tran=1348, fourier=0, total=1567 transient timesteps: accepted=210, rejected=0, total=210 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_an2.ckt.out000066400000000000000000000520451316501211100173740ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3.01 66.926n 0.01 9. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 2.57 1.41 17. 1. 500.n 2.5079 1.41 2.4626 2.41 3.0373 1.41 9. 9. 1.u 2.5157 1.41 2.3913 2.41 3.3959 1.41 6. 6. 5.4545u 2.5857 1.41 1.7292 2.41 4.4961 3.31 8. 6. 9.9091u 2.6556 1.41 1.43 2.41 4.6984 3.31 6. 6. 14.364u 2.7253 1.41 1.2359 0.31 4.7898 3.31 6. 6. 18.818u 2.7949 1.41 1.0856 0.31 4.8454 3.31 5. 6. 26.614u 2.9161 1.41 0.88156 0.31 4.9039 3.31 6. 6. 38.307u 3.0959 1.41 0.65812 0.31 4.9494 3.31 6. 6. 50.u 3.2725 1.41 0.49534 0.31 4.9724 3.31 6. 1. 75.u 3.635 1.41 0.26737 0.31 4.9923 3.31 6. 6. 100.u 3.9695 3.31 0.13689 0.31 4.998 3.31 6. 1. 150.u 4.5225 3.31 0.025657 0.31 4.9999 3.31 6. 1. 200.u 4.8776 3.31 0.0016918 0.31 5. 3.31 6. 1. 250.u 5. 3.31 43.235u 0.31 5. 3.31 6. 1. 300.u 4.8776 3.31 0.0014911 0.31 5. 3.31 6. 1. 350.u 4.5225 3.31 0.025105 0.31 4.9999 3.31 6. 1. 400.u 3.9695 3.31 0.13566 0.31 4.9981 3.31 6. 1. 450.u 3.2725 2.31 0.49174 0.31 4.9732 3.31 6. 1. 500.u 2.5 2.41 2.3301 1.31 3.637 2.31 10. 1. 550.u 1.7275 2.41 4.4998 3.21 0.029753 0.21 8. 1. 600.u 1.0305 0.31 4.8629 3.21 0.0020666 0.21 7. 1. 650.u 0.47746 0.31 4.9743 3.21 104.23u 0.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 8.3763u 0.21 6. 1. 750.u 141.f 0.31 5. 3.21 619.23n 0.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 -193.13n 0.21 6. 1. 850.u 0.47746 0.31 4.9749 3.21 55.48u 0.21 6. 1. 900.u 1.0305 0.31 4.8643 3.21 0.0018536 0.21 6. 1. 950.u 1.7275 1.31 4.5083 3.21 0.026757 0.21 6. 1. 0.001 2.5 1.41 2.6699 2.21 1.363 1.21 10. 1. 0.00105 3.2725 1.41 0.50022 0.11 4.9702 3.11 8. 1. 0.0011 3.9695 3.31 0.13709 0.11 4.9979 3.11 7. 1. 0.00115 4.5225 3.31 0.025657 0.11 4.9999 3.11 6. 1. 0.0012 4.8776 3.31 0.0016918 0.11 5. 3.11 6. 1. 0.00125 5. 3.31 43.235u 0.11 5. 3.11 6. 1. 0.0013 4.8776 3.31 0.0014911 0.11 5. 3.11 6. 1. 0.00135 4.5225 3.31 0.025105 0.11 4.9999 3.11 6. 1. 0.0014 3.9695 3.31 0.13566 0.11 4.9981 3.11 6. 1. 0.00145 3.2725 2.31 0.49174 0.11 4.9732 3.11 6. 1. 0.0015 2.5 2.41 2.3301 1.11 3.637 2.11 10. 1. 0.00155 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0016 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00165 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00175 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00185 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0019 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00195 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.002 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00205 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0021 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00215 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0022 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00225 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0023 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00235 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0024 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00245 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0025 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00255 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0026 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00265 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0027 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00275 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00285 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0029 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00295 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.003 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00305 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0031 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00315 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0032 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00325 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0033 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00335 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0034 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00345 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0035 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00355 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0036 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00365 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0037 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00375 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00385 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0039 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00395 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.004 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00405 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0041 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00415 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0042 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00425 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0043 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00435 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0044 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00445 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0045 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00455 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0046 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00465 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0047 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00475 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00485 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0049 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00495 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.005 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00505 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0051 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00515 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0052 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00525 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0053 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00535 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0054 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00545 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0055 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00555 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0056 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00565 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0057 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00575 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00585 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0059 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00595 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.006 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00605 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0061 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00615 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0062 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00625 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0063 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00635 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0064 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00645 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0065 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00655 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0066 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00665 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0067 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00675 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00685 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0069 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00695 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.007 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00705 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0071 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00715 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0072 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00725 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0073 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00735 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0074 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00745 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0075 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00755 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0076 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00765 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0077 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00775 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00785 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0079 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00795 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.008 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00805 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0081 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00815 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0082 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00825 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0083 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00835 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0084 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00845 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0085 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00855 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0086 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00865 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0087 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00875 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00885 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0089 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00895 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.009 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. 0.00905 3.2725 1.41 0.50022 0.01 4.9702 3.01 8. 1. 0.0091 3.9695 3.31 0.13709 0.01 4.9979 3.01 7. 1. 0.00915 4.5225 3.31 0.025657 0.01 4.9999 3.01 6. 1. 0.0092 4.8776 3.31 0.0016918 0.01 5. 3.01 6. 1. 0.00925 5. 3.31 43.235u 0.01 5. 3.01 6. 1. 0.0093 4.8776 3.31 0.0014911 0.01 5. 3.01 6. 1. 0.00935 4.5225 3.31 0.025105 0.01 4.9999 3.01 6. 1. 0.0094 3.9695 3.31 0.13566 0.01 4.9981 3.01 6. 1. 0.00945 3.2725 2.31 0.49174 0.01 4.9732 3.01 6. 1. 0.0095 2.5 2.41 2.3301 1.01 3.637 2.01 10. 1. 0.00955 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0096 1.0305 0.31 4.8629 3.01 0.0020666 0.01 7. 1. 0.00965 0.47746 0.31 4.9743 3.01 104.23u 0.01 6. 1. 0.0097 0.12236 0.31 4.9983 3.01 8.3763u 0.01 6. 1. 0.00975 141.f 0.31 5. 3.01 619.23n 0.01 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 -193.13n 0.01 6. 1. 0.00985 0.47746 0.31 4.9749 3.01 55.48u 0.01 6. 1. 0.0099 1.0305 0.31 4.8643 3.01 0.0018536 0.01 6. 1. 0.00995 1.7275 1.31 4.5083 3.01 0.026757 0.01 6. 1. 0.01 2.5 1.41 2.6699 2.01 1.363 1.01 10. 1. Gnucap System status iterations: op=9, dc=0, tran=1412, fourier=0, total=1631 transient timesteps: accepted=210, rejected=0, total=210 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_db1.ckt.out000066400000000000000000000430331316501211100173570ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3. 3. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 5. 3. 3. 1. 500.n 2.5079 1.41 5. 3. 3. 9. 1.u 2.5157 1.41 5. 3. 3. 6. 10.8u 2.6695 1.41 5. 3. 3. 6. 50.u 3.2725 1.41 5. 3. 3. 1. 100.u 3.9695 3.31 5. 2. 3. 1. 100.1u 3.9707 3.31 0. 0. 3. 2. 150.u 4.5225 3.31 0. 0. 3. 1. 200.u 4.8776 3.31 0. 0. 3. 1. 250.u 5. 3.31 0. 0. 3. 1. 300.u 4.8776 3.31 0. 0. 3. 1. 350.u 4.5225 3.31 0. 0. 3. 1. 400.u 3.9695 3.31 0. 0. 3. 1. 450.u 3.2725 2.31 0. 0. 3. 1. 500.u 2.5 2.41 0. 0. 3. 1. 550.u 1.7275 2.41 0. 0. 3. 1. 600.u 1.0305 0.31 0. 1. 3. 1. 600.1u 1.0293 0.31 5. 3. 3. 2. 650.u 0.47746 0.31 5. 3. 3. 1. 700.u 0.12236 0.31 5. 3. 3. 1. 750.u 0. 0.31 5. 3. 3. 1. 800.u 0.12236 0.31 5. 3. 3. 1. 850.u 0.47746 0.31 5. 3. 3. 1. 900.u 1.0305 0.31 5. 3. 3. 1. 950.u 1.7275 1.31 5. 3. 3. 1. 0.001 2.5 1.41 5. 3. 3. 1. 0.00105 3.2725 1.41 5. 3. 3. 1. 0.0011 3.9695 3.31 5. 2. 3. 1. 0.0011001 3.9707 3.31 0. 0. 3. 2. 0.00115 4.5225 3.31 0. 0. 3. 1. 0.0012 4.8776 3.31 0. 0. 3. 1. 0.00125 5. 3.31 0. 0. 3. 1. 0.0013 4.8776 3.31 0. 0. 3. 1. 0.00135 4.5225 3.31 0. 0. 3. 1. 0.0014 3.9695 3.31 0. 0. 3. 1. 0.00145 3.2725 2.31 0. 0. 3. 1. 0.0015 2.5 2.41 0. 0. 3. 1. 0.00155 1.7275 2.41 0. 0. 3. 1. 0.0016 1.0305 0.31 0. 1. 3. 1. 0.0016001 1.0293 0.31 5. 3. 3. 2. 0.00165 0.47746 0.31 5. 3. 3. 1. 0.0017 0.12236 0.31 5. 3. 3. 1. 0.00175 0. 0.31 5. 3. 3. 1. 0.0018 0.12236 0.31 5. 3. 3. 1. 0.00185 0.47746 0.31 5. 3. 3. 1. 0.0019 1.0305 0.31 5. 3. 3. 1. 0.00195 1.7275 1.31 5. 3. 3. 1. 0.002 2.5 1.41 5. 3. 3. 1. 0.00205 3.2725 1.41 5. 3. 3. 1. 0.0021 3.9695 3.31 5. 2. 3. 1. 0.0021001 3.9707 3.31 0. 0. 3. 2. 0.00215 4.5225 3.31 0. 0. 3. 1. 0.0022 4.8776 3.31 0. 0. 3. 1. 0.00225 5. 3.31 0. 0. 3. 1. 0.0023 4.8776 3.31 0. 0. 3. 1. 0.00235 4.5225 3.31 0. 0. 3. 1. 0.0024 3.9695 3.31 0. 0. 3. 1. 0.00245 3.2725 2.31 0. 0. 3. 1. 0.0025 2.5 2.41 0. 0. 3. 1. 0.00255 1.7275 2.41 0. 0. 3. 1. 0.0026 1.0305 0.31 0. 1. 3. 1. 0.0026001 1.0293 0.31 5. 3. 3. 2. 0.00265 0.47746 0.31 5. 3. 3. 1. 0.0027 0.12236 0.31 5. 3. 3. 1. 0.00275 0. 0.31 5. 3. 3. 1. 0.0028 0.12236 0.31 5. 3. 3. 1. 0.00285 0.47746 0.31 5. 3. 3. 1. 0.0029 1.0305 0.31 5. 3. 3. 1. 0.00295 1.7275 1.31 5. 3. 3. 1. 0.003 2.5 1.41 5. 3. 3. 1. 0.00305 3.2725 1.41 5. 3. 3. 1. 0.0031 3.9695 3.31 5. 2. 3. 1. 0.0031001 3.9707 3.31 0. 0. 3. 2. 0.00315 4.5225 3.31 0. 0. 3. 1. 0.0032 4.8776 3.31 0. 0. 3. 1. 0.00325 5. 3.31 0. 0. 3. 1. 0.0033 4.8776 3.31 0. 0. 3. 1. 0.00335 4.5225 3.31 0. 0. 3. 1. 0.0034 3.9695 3.31 0. 0. 3. 1. 0.00345 3.2725 2.31 0. 0. 3. 1. 0.0035 2.5 2.41 0. 0. 3. 1. 0.00355 1.7275 2.41 0. 0. 3. 1. 0.0036 1.0305 0.31 0. 1. 3. 1. 0.0036001 1.0293 0.31 5. 3. 3. 2. 0.00365 0.47746 0.31 5. 3. 3. 1. 0.0037 0.12236 0.31 5. 3. 3. 1. 0.00375 0. 0.31 5. 3. 3. 1. 0.0038 0.12236 0.31 5. 3. 3. 1. 0.00385 0.47746 0.31 5. 3. 3. 1. 0.0039 1.0305 0.31 5. 3. 3. 1. 0.00395 1.7275 1.31 5. 3. 3. 1. 0.004 2.5 1.41 5. 3. 3. 1. 0.00405 3.2725 1.41 5. 3. 3. 1. 0.0041 3.9695 3.31 5. 2. 3. 1. 0.0041001 3.9707 3.31 0. 0. 3. 2. 0.00415 4.5225 3.31 0. 0. 3. 1. 0.0042 4.8776 3.31 0. 0. 3. 1. 0.00425 5. 3.31 0. 0. 3. 1. 0.0043 4.8776 3.31 0. 0. 3. 1. 0.00435 4.5225 3.31 0. 0. 3. 1. 0.0044 3.9695 3.31 0. 0. 3. 1. 0.00445 3.2725 2.31 0. 0. 3. 1. 0.0045 2.5 2.41 0. 0. 3. 1. 0.00455 1.7275 2.41 0. 0. 3. 1. 0.0046 1.0305 0.31 0. 1. 3. 1. 0.0046001 1.0293 0.31 5. 3. 3. 2. 0.00465 0.47746 0.31 5. 3. 3. 1. 0.0047 0.12236 0.31 5. 3. 3. 1. 0.00475 0. 0.31 5. 3. 3. 1. 0.0048 0.12236 0.31 5. 3. 3. 1. 0.00485 0.47746 0.31 5. 3. 3. 1. 0.0049 1.0305 0.31 5. 3. 3. 1. 0.00495 1.7275 1.31 5. 3. 3. 1. 0.005 2.5 1.41 5. 3. 3. 1. 0.00505 3.2725 1.41 5. 3. 3. 1. 0.0051 3.9695 3.31 5. 2. 3. 1. 0.0051001 3.9707 3.31 0. 0. 3. 2. 0.00515 4.5225 3.31 0. 0. 3. 1. 0.0052 4.8776 3.31 0. 0. 3. 1. 0.00525 5. 3.31 0. 0. 3. 1. 0.0053 4.8776 3.31 0. 0. 3. 1. 0.00535 4.5225 3.31 0. 0. 3. 1. 0.0054 3.9695 3.31 0. 0. 3. 1. 0.00545 3.2725 2.31 0. 0. 3. 1. 0.0055 2.5 2.41 0. 0. 3. 1. 0.00555 1.7275 2.41 0. 0. 3. 1. 0.0056 1.0305 0.31 0. 1. 3. 1. 0.0056001 1.0293 0.31 5. 3. 3. 2. 0.00565 0.47746 0.31 5. 3. 3. 1. 0.0057 0.12236 0.31 5. 3. 3. 1. 0.00575 0. 0.31 5. 3. 3. 1. 0.0058 0.12236 0.31 5. 3. 3. 1. 0.00585 0.47746 0.31 5. 3. 3. 1. 0.0059 1.0305 0.31 5. 3. 3. 1. 0.00595 1.7275 1.31 5. 3. 3. 1. 0.006 2.5 1.41 5. 3. 3. 1. 0.00605 3.2725 1.41 5. 3. 3. 1. 0.0061 3.9695 3.31 5. 2. 3. 1. 0.0061001 3.9707 3.31 0. 0. 3. 2. 0.00615 4.5225 3.31 0. 0. 3. 1. 0.0062 4.8776 3.31 0. 0. 3. 1. 0.00625 5. 3.31 0. 0. 3. 1. 0.0063 4.8776 3.31 0. 0. 3. 1. 0.00635 4.5225 3.31 0. 0. 3. 1. 0.0064 3.9695 3.31 0. 0. 3. 1. 0.00645 3.2725 2.31 0. 0. 3. 1. 0.0065 2.5 2.41 0. 0. 3. 1. 0.00655 1.7275 2.41 0. 0. 3. 1. 0.0066 1.0305 0.31 0. 1. 3. 1. 0.0066001 1.0293 0.31 5. 3. 3. 2. 0.00665 0.47746 0.31 5. 3. 3. 1. 0.0067 0.12236 0.31 5. 3. 3. 1. 0.00675 0. 0.31 5. 3. 3. 1. 0.0068 0.12236 0.31 5. 3. 3. 1. 0.00685 0.47746 0.31 5. 3. 3. 1. 0.0069 1.0305 0.31 5. 3. 3. 1. 0.00695 1.7275 1.31 5. 3. 3. 1. 0.007 2.5 1.41 5. 3. 3. 1. 0.00705 3.2725 1.41 5. 3. 3. 1. 0.0071 3.9695 3.31 5. 2. 3. 1. 0.0071001 3.9707 3.31 0. 0. 3. 2. 0.00715 4.5225 3.31 0. 0. 3. 1. 0.0072 4.8776 3.31 0. 0. 3. 1. 0.00725 5. 3.31 0. 0. 3. 1. 0.0073 4.8776 3.31 0. 0. 3. 1. 0.00735 4.5225 3.31 0. 0. 3. 1. 0.0074 3.9695 3.31 0. 0. 3. 1. 0.00745 3.2725 2.31 0. 0. 3. 1. 0.0075 2.5 2.41 0. 0. 3. 1. 0.00755 1.7275 2.41 0. 0. 3. 1. 0.0076 1.0305 0.31 0. 1. 3. 1. 0.0076001 1.0293 0.31 5. 3. 3. 2. 0.00765 0.47746 0.31 5. 3. 3. 1. 0.0077 0.12236 0.31 5. 3. 3. 1. 0.00775 0. 0.31 5. 3. 3. 1. 0.0078 0.12236 0.31 5. 3. 3. 1. 0.00785 0.47746 0.31 5. 3. 3. 1. 0.0079 1.0305 0.31 5. 3. 3. 1. 0.00795 1.7275 1.31 5. 3. 3. 1. 0.008 2.5 1.41 5. 3. 3. 1. 0.00805 3.2725 1.41 5. 3. 3. 1. 0.0081 3.9695 3.31 5. 2. 3. 1. 0.0081001 3.9707 3.31 0. 0. 3. 2. 0.00815 4.5225 3.31 0. 0. 3. 1. 0.0082 4.8776 3.31 0. 0. 3. 1. 0.00825 5. 3.31 0. 0. 3. 1. 0.0083 4.8776 3.31 0. 0. 3. 1. 0.00835 4.5225 3.31 0. 0. 3. 1. 0.0084 3.9695 3.31 0. 0. 3. 1. 0.00845 3.2725 2.31 0. 0. 3. 1. 0.0085 2.5 2.41 0. 0. 3. 1. 0.00855 1.7275 2.41 0. 0. 3. 1. 0.0086 1.0305 0.31 0. 1. 3. 1. 0.0086001 1.0293 0.31 5. 3. 3. 2. 0.00865 0.47746 0.31 5. 3. 3. 1. 0.0087 0.12236 0.31 5. 3. 3. 1. 0.00875 0. 0.31 5. 3. 3. 1. 0.0088 0.12236 0.31 5. 3. 3. 1. 0.00885 0.47746 0.31 5. 3. 3. 1. 0.0089 1.0305 0.31 5. 3. 3. 1. 0.00895 1.7275 1.31 5. 3. 3. 1. 0.009 2.5 1.41 5. 3. 3. 1. 0.00905 3.2725 1.41 5. 3. 3. 1. 0.0091 3.9695 3.31 5. 2. 3. 1. 0.0091001 3.9707 3.31 0. 0. 3. 2. 0.00915 4.5225 3.31 0. 0. 3. 1. 0.0092 4.8776 3.31 0. 0. 3. 1. 0.00925 5. 3.31 0. 0. 3. 1. 0.0093 4.8776 3.31 0. 0. 3. 1. 0.00935 4.5225 3.31 0. 0. 3. 1. 0.0094 3.9695 3.31 0. 0. 3. 1. 0.00945 3.2725 2.31 0. 0. 3. 1. 0.0095 2.5 2.41 0. 0. 3. 1. 0.00955 1.7275 2.41 0. 0. 3. 1. 0.0096 1.0305 0.31 0. 1. 3. 1. 0.0096001 1.0293 0.31 5. 3. 3. 2. 0.00965 0.47746 0.31 5. 3. 3. 1. 0.0097 0.12236 0.31 5. 3. 3. 1. 0.00975 0. 0.31 5. 3. 3. 1. 0.0098 0.12236 0.31 5. 3. 3. 1. 0.00985 0.47746 0.31 5. 3. 3. 1. 0.0099 1.0305 0.31 5. 3. 3. 1. 0.00995 1.7275 1.31 5. 3. 3. 1. 0.01 2.5 1.41 5. 3. 3. 1. Gnucap System status iterations: op=3, dc=0, tran=672, fourier=0, total=899 transient timesteps: accepted=224, rejected=0, total=224 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_db2.ckt.out000066400000000000000000000605531316501211100173660ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3. 0. 0. 3. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 5. 3. 0. 0. 3. 1. 500.n 2.5079 1.41 5. 3. 0. 0. 3. 9. 1.u 2.5157 1.41 5. 3. 0. 0. 3. 6. 10.8u 2.6695 1.41 5. 3. 0. 0. 3. 6. 50.u 3.2725 1.41 5. 3. 0. 0. 3. 1. 100.u 3.9695 3.31 5. 2. 0. 0. 3. 1. 100.1u 3.9707 3.31 0. 0. 0. 1. 3. 2. 100.2u 3.972 3.31 0. 0. 5. 3. 3. 2. 150.u 4.5225 3.31 0. 0. 5. 3. 3. 1. 200.u 4.8776 3.31 0. 0. 5. 3. 3. 1. 250.u 5. 3.31 0. 0. 5. 3. 3. 1. 300.u 4.8776 3.31 0. 0. 5. 3. 3. 1. 350.u 4.5225 3.31 0. 0. 5. 3. 3. 1. 400.u 3.9695 3.31 0. 0. 5. 3. 3. 1. 450.u 3.2725 2.31 0. 0. 5. 3. 3. 1. 500.u 2.5 2.41 0. 0. 5. 3. 3. 1. 550.u 1.7275 2.41 0. 0. 5. 3. 3. 1. 600.u 1.0305 0.31 0. 1. 5. 3. 3. 1. 600.1u 1.0293 0.31 5. 3. 5. 2. 3. 2. 600.2u 1.028 0.31 5. 3. 0. 0. 3. 2. 650.u 0.47746 0.31 5. 3. 0. 0. 3. 1. 700.u 0.12236 0.31 5. 3. 0. 0. 3. 1. 750.u 0. 0.31 5. 3. 0. 0. 3. 1. 800.u 0.12236 0.31 5. 3. 0. 0. 3. 1. 850.u 0.47746 0.31 5. 3. 0. 0. 3. 1. 900.u 1.0305 0.31 5. 3. 0. 0. 3. 1. 950.u 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.001 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00105 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0011 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0011001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0011002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00115 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0012 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00125 5. 3.31 0. 0. 5. 3. 3. 1. 0.0013 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00135 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0014 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00145 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0015 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00155 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0016 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0016001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0016002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00165 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0017 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00175 0. 0.31 5. 3. 0. 0. 3. 1. 0.0018 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00185 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0019 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00195 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.002 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00205 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0021 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0021001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0021002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00215 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0022 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00225 5. 3.31 0. 0. 5. 3. 3. 1. 0.0023 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00235 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0024 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00245 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0025 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00255 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0026 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0026001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0026002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00265 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0027 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00275 0. 0.31 5. 3. 0. 0. 3. 1. 0.0028 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00285 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0029 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00295 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.003 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00305 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0031 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0031001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0031002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00315 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0032 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00325 5. 3.31 0. 0. 5. 3. 3. 1. 0.0033 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00335 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0034 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00345 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0035 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00355 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0036 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0036001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0036002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00365 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0037 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00375 0. 0.31 5. 3. 0. 0. 3. 1. 0.0038 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00385 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0039 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00395 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.004 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00405 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0041 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0041001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0041002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00415 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0042 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00425 5. 3.31 0. 0. 5. 3. 3. 1. 0.0043 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00435 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0044 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00445 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0045 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00455 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0046 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0046001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0046002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00465 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0047 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00475 0. 0.31 5. 3. 0. 0. 3. 1. 0.0048 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00485 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0049 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00495 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.005 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00505 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0051 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0051001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0051002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00515 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0052 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00525 5. 3.31 0. 0. 5. 3. 3. 1. 0.0053 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00535 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0054 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00545 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0055 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00555 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0056 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0056001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0056002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00565 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0057 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00575 0. 0.31 5. 3. 0. 0. 3. 1. 0.0058 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00585 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0059 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00595 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.006 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00605 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0061 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0061001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0061002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00615 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0062 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00625 5. 3.31 0. 0. 5. 3. 3. 1. 0.0063 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00635 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0064 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00645 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0065 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00655 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0066 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0066001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0066002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00665 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0067 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00675 0. 0.31 5. 3. 0. 0. 3. 1. 0.0068 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00685 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0069 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00695 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.007 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00705 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0071 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0071001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0071002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00715 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0072 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00725 5. 3.31 0. 0. 5. 3. 3. 1. 0.0073 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00735 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0074 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00745 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0075 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00755 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0076 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0076001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0076002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00765 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0077 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00775 0. 0.31 5. 3. 0. 0. 3. 1. 0.0078 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00785 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0079 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00795 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.008 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00805 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0081 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0081001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0081002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00815 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0082 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00825 5. 3.31 0. 0. 5. 3. 3. 1. 0.0083 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00835 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0084 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00845 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0085 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00855 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0086 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0086001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0086002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00865 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0087 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00875 0. 0.31 5. 3. 0. 0. 3. 1. 0.0088 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00885 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0089 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00895 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.009 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00905 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0091 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0091001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0091002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00915 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0092 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00925 5. 3.31 0. 0. 5. 3. 3. 1. 0.0093 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00935 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0094 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00945 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0095 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00955 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0096 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0096001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0096002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00965 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0097 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00975 0. 0.31 5. 3. 0. 0. 3. 1. 0.0098 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00985 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0099 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00995 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.01 2.5 1.41 5. 3. 0. 0. 3. 1. Gnucap System status iterations: op=3, dc=0, tran=732, fourier=0, total=979 transient timesteps: accepted=244, rejected=0, total=244 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_dn1.ckt.out000066400000000000000000000430331316501211100173730ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3. 3. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 5. 3. 3. 1. 500.n 2.5079 1.41 5. 3. 3. 9. 1.u 2.5157 1.41 5. 3. 3. 6. 10.8u 2.6695 1.41 5. 3. 3. 6. 50.u 3.2725 1.41 5. 3. 3. 1. 100.u 3.9695 3.31 5. 2. 3. 1. 100.1u 3.9707 3.31 0. 0. 3. 2. 150.u 4.5225 3.31 0. 0. 3. 1. 200.u 4.8776 3.31 0. 0. 3. 1. 250.u 5. 3.31 0. 0. 3. 1. 300.u 4.8776 3.31 0. 0. 3. 1. 350.u 4.5225 3.31 0. 0. 3. 1. 400.u 3.9695 3.31 0. 0. 3. 1. 450.u 3.2725 2.31 0. 0. 3. 1. 500.u 2.5 2.41 0. 0. 3. 1. 550.u 1.7275 2.41 0. 0. 3. 1. 600.u 1.0305 0.31 0. 1. 3. 1. 600.1u 1.0293 0.31 5. 3. 3. 2. 650.u 0.47746 0.31 5. 3. 3. 1. 700.u 0.12236 0.31 5. 3. 3. 1. 750.u 0. 0.31 5. 3. 3. 1. 800.u 0.12236 0.31 5. 3. 3. 1. 850.u 0.47746 0.31 5. 3. 3. 1. 900.u 1.0305 0.31 5. 3. 3. 1. 950.u 1.7275 1.31 5. 3. 3. 1. 0.001 2.5 1.41 5. 3. 3. 1. 0.00105 3.2725 1.41 5. 3. 3. 1. 0.0011 3.9695 3.31 5. 2. 3. 1. 0.0011001 3.9707 3.31 0. 0. 3. 2. 0.00115 4.5225 3.31 0. 0. 3. 1. 0.0012 4.8776 3.31 0. 0. 3. 1. 0.00125 5. 3.31 0. 0. 3. 1. 0.0013 4.8776 3.31 0. 0. 3. 1. 0.00135 4.5225 3.31 0. 0. 3. 1. 0.0014 3.9695 3.31 0. 0. 3. 1. 0.00145 3.2725 2.31 0. 0. 3. 1. 0.0015 2.5 2.41 0. 0. 3. 1. 0.00155 1.7275 2.41 0. 0. 3. 1. 0.0016 1.0305 0.31 0. 1. 3. 1. 0.0016001 1.0293 0.31 5. 3. 3. 2. 0.00165 0.47746 0.31 5. 3. 3. 1. 0.0017 0.12236 0.31 5. 3. 3. 1. 0.00175 0. 0.31 5. 3. 3. 1. 0.0018 0.12236 0.31 5. 3. 3. 1. 0.00185 0.47746 0.31 5. 3. 3. 1. 0.0019 1.0305 0.31 5. 3. 3. 1. 0.00195 1.7275 1.31 5. 3. 3. 1. 0.002 2.5 1.41 5. 3. 3. 1. 0.00205 3.2725 1.41 5. 3. 3. 1. 0.0021 3.9695 3.31 5. 2. 3. 1. 0.0021001 3.9707 3.31 0. 0. 3. 2. 0.00215 4.5225 3.31 0. 0. 3. 1. 0.0022 4.8776 3.31 0. 0. 3. 1. 0.00225 5. 3.31 0. 0. 3. 1. 0.0023 4.8776 3.31 0. 0. 3. 1. 0.00235 4.5225 3.31 0. 0. 3. 1. 0.0024 3.9695 3.31 0. 0. 3. 1. 0.00245 3.2725 2.31 0. 0. 3. 1. 0.0025 2.5 2.41 0. 0. 3. 1. 0.00255 1.7275 2.41 0. 0. 3. 1. 0.0026 1.0305 0.31 0. 1. 3. 1. 0.0026001 1.0293 0.31 5. 3. 3. 2. 0.00265 0.47746 0.31 5. 3. 3. 1. 0.0027 0.12236 0.31 5. 3. 3. 1. 0.00275 0. 0.31 5. 3. 3. 1. 0.0028 0.12236 0.31 5. 3. 3. 1. 0.00285 0.47746 0.31 5. 3. 3. 1. 0.0029 1.0305 0.31 5. 3. 3. 1. 0.00295 1.7275 1.31 5. 3. 3. 1. 0.003 2.5 1.41 5. 3. 3. 1. 0.00305 3.2725 1.41 5. 3. 3. 1. 0.0031 3.9695 3.31 5. 2. 3. 1. 0.0031001 3.9707 3.31 0. 0. 3. 2. 0.00315 4.5225 3.31 0. 0. 3. 1. 0.0032 4.8776 3.31 0. 0. 3. 1. 0.00325 5. 3.31 0. 0. 3. 1. 0.0033 4.8776 3.31 0. 0. 3. 1. 0.00335 4.5225 3.31 0. 0. 3. 1. 0.0034 3.9695 3.31 0. 0. 3. 1. 0.00345 3.2725 2.31 0. 0. 3. 1. 0.0035 2.5 2.41 0. 0. 3. 1. 0.00355 1.7275 2.41 0. 0. 3. 1. 0.0036 1.0305 0.31 0. 1. 3. 1. 0.0036001 1.0293 0.31 5. 3. 3. 2. 0.00365 0.47746 0.31 5. 3. 3. 1. 0.0037 0.12236 0.31 5. 3. 3. 1. 0.00375 0. 0.31 5. 3. 3. 1. 0.0038 0.12236 0.31 5. 3. 3. 1. 0.00385 0.47746 0.31 5. 3. 3. 1. 0.0039 1.0305 0.31 5. 3. 3. 1. 0.00395 1.7275 1.31 5. 3. 3. 1. 0.004 2.5 1.41 5. 3. 3. 1. 0.00405 3.2725 1.41 5. 3. 3. 1. 0.0041 3.9695 3.31 5. 2. 3. 1. 0.0041001 3.9707 3.31 0. 0. 3. 2. 0.00415 4.5225 3.31 0. 0. 3. 1. 0.0042 4.8776 3.31 0. 0. 3. 1. 0.00425 5. 3.31 0. 0. 3. 1. 0.0043 4.8776 3.31 0. 0. 3. 1. 0.00435 4.5225 3.31 0. 0. 3. 1. 0.0044 3.9695 3.31 0. 0. 3. 1. 0.00445 3.2725 2.31 0. 0. 3. 1. 0.0045 2.5 2.41 0. 0. 3. 1. 0.00455 1.7275 2.41 0. 0. 3. 1. 0.0046 1.0305 0.31 0. 1. 3. 1. 0.0046001 1.0293 0.31 5. 3. 3. 2. 0.00465 0.47746 0.31 5. 3. 3. 1. 0.0047 0.12236 0.31 5. 3. 3. 1. 0.00475 0. 0.31 5. 3. 3. 1. 0.0048 0.12236 0.31 5. 3. 3. 1. 0.00485 0.47746 0.31 5. 3. 3. 1. 0.0049 1.0305 0.31 5. 3. 3. 1. 0.00495 1.7275 1.31 5. 3. 3. 1. 0.005 2.5 1.41 5. 3. 3. 1. 0.00505 3.2725 1.41 5. 3. 3. 1. 0.0051 3.9695 3.31 5. 2. 3. 1. 0.0051001 3.9707 3.31 0. 0. 3. 2. 0.00515 4.5225 3.31 0. 0. 3. 1. 0.0052 4.8776 3.31 0. 0. 3. 1. 0.00525 5. 3.31 0. 0. 3. 1. 0.0053 4.8776 3.31 0. 0. 3. 1. 0.00535 4.5225 3.31 0. 0. 3. 1. 0.0054 3.9695 3.31 0. 0. 3. 1. 0.00545 3.2725 2.31 0. 0. 3. 1. 0.0055 2.5 2.41 0. 0. 3. 1. 0.00555 1.7275 2.41 0. 0. 3. 1. 0.0056 1.0305 0.31 0. 1. 3. 1. 0.0056001 1.0293 0.31 5. 3. 3. 2. 0.00565 0.47746 0.31 5. 3. 3. 1. 0.0057 0.12236 0.31 5. 3. 3. 1. 0.00575 0. 0.31 5. 3. 3. 1. 0.0058 0.12236 0.31 5. 3. 3. 1. 0.00585 0.47746 0.31 5. 3. 3. 1. 0.0059 1.0305 0.31 5. 3. 3. 1. 0.00595 1.7275 1.31 5. 3. 3. 1. 0.006 2.5 1.41 5. 3. 3. 1. 0.00605 3.2725 1.41 5. 3. 3. 1. 0.0061 3.9695 3.31 5. 2. 3. 1. 0.0061001 3.9707 3.31 0. 0. 3. 2. 0.00615 4.5225 3.31 0. 0. 3. 1. 0.0062 4.8776 3.31 0. 0. 3. 1. 0.00625 5. 3.31 0. 0. 3. 1. 0.0063 4.8776 3.31 0. 0. 3. 1. 0.00635 4.5225 3.31 0. 0. 3. 1. 0.0064 3.9695 3.31 0. 0. 3. 1. 0.00645 3.2725 2.31 0. 0. 3. 1. 0.0065 2.5 2.41 0. 0. 3. 1. 0.00655 1.7275 2.41 0. 0. 3. 1. 0.0066 1.0305 0.31 0. 1. 3. 1. 0.0066001 1.0293 0.31 5. 3. 3. 2. 0.00665 0.47746 0.31 5. 3. 3. 1. 0.0067 0.12236 0.31 5. 3. 3. 1. 0.00675 0. 0.31 5. 3. 3. 1. 0.0068 0.12236 0.31 5. 3. 3. 1. 0.00685 0.47746 0.31 5. 3. 3. 1. 0.0069 1.0305 0.31 5. 3. 3. 1. 0.00695 1.7275 1.31 5. 3. 3. 1. 0.007 2.5 1.41 5. 3. 3. 1. 0.00705 3.2725 1.41 5. 3. 3. 1. 0.0071 3.9695 3.31 5. 2. 3. 1. 0.0071001 3.9707 3.31 0. 0. 3. 2. 0.00715 4.5225 3.31 0. 0. 3. 1. 0.0072 4.8776 3.31 0. 0. 3. 1. 0.00725 5. 3.31 0. 0. 3. 1. 0.0073 4.8776 3.31 0. 0. 3. 1. 0.00735 4.5225 3.31 0. 0. 3. 1. 0.0074 3.9695 3.31 0. 0. 3. 1. 0.00745 3.2725 2.31 0. 0. 3. 1. 0.0075 2.5 2.41 0. 0. 3. 1. 0.00755 1.7275 2.41 0. 0. 3. 1. 0.0076 1.0305 0.31 0. 1. 3. 1. 0.0076001 1.0293 0.31 5. 3. 3. 2. 0.00765 0.47746 0.31 5. 3. 3. 1. 0.0077 0.12236 0.31 5. 3. 3. 1. 0.00775 0. 0.31 5. 3. 3. 1. 0.0078 0.12236 0.31 5. 3. 3. 1. 0.00785 0.47746 0.31 5. 3. 3. 1. 0.0079 1.0305 0.31 5. 3. 3. 1. 0.00795 1.7275 1.31 5. 3. 3. 1. 0.008 2.5 1.41 5. 3. 3. 1. 0.00805 3.2725 1.41 5. 3. 3. 1. 0.0081 3.9695 3.31 5. 2. 3. 1. 0.0081001 3.9707 3.31 0. 0. 3. 2. 0.00815 4.5225 3.31 0. 0. 3. 1. 0.0082 4.8776 3.31 0. 0. 3. 1. 0.00825 5. 3.31 0. 0. 3. 1. 0.0083 4.8776 3.31 0. 0. 3. 1. 0.00835 4.5225 3.31 0. 0. 3. 1. 0.0084 3.9695 3.31 0. 0. 3. 1. 0.00845 3.2725 2.31 0. 0. 3. 1. 0.0085 2.5 2.41 0. 0. 3. 1. 0.00855 1.7275 2.41 0. 0. 3. 1. 0.0086 1.0305 0.31 0. 1. 3. 1. 0.0086001 1.0293 0.31 5. 3. 3. 2. 0.00865 0.47746 0.31 5. 3. 3. 1. 0.0087 0.12236 0.31 5. 3. 3. 1. 0.00875 0. 0.31 5. 3. 3. 1. 0.0088 0.12236 0.31 5. 3. 3. 1. 0.00885 0.47746 0.31 5. 3. 3. 1. 0.0089 1.0305 0.31 5. 3. 3. 1. 0.00895 1.7275 1.31 5. 3. 3. 1. 0.009 2.5 1.41 5. 3. 3. 1. 0.00905 3.2725 1.41 5. 3. 3. 1. 0.0091 3.9695 3.31 5. 2. 3. 1. 0.0091001 3.9707 3.31 0. 0. 3. 2. 0.00915 4.5225 3.31 0. 0. 3. 1. 0.0092 4.8776 3.31 0. 0. 3. 1. 0.00925 5. 3.31 0. 0. 3. 1. 0.0093 4.8776 3.31 0. 0. 3. 1. 0.00935 4.5225 3.31 0. 0. 3. 1. 0.0094 3.9695 3.31 0. 0. 3. 1. 0.00945 3.2725 2.31 0. 0. 3. 1. 0.0095 2.5 2.41 0. 0. 3. 1. 0.00955 1.7275 2.41 0. 0. 3. 1. 0.0096 1.0305 0.31 0. 1. 3. 1. 0.0096001 1.0293 0.31 5. 3. 3. 2. 0.00965 0.47746 0.31 5. 3. 3. 1. 0.0097 0.12236 0.31 5. 3. 3. 1. 0.00975 0. 0.31 5. 3. 3. 1. 0.0098 0.12236 0.31 5. 3. 3. 1. 0.00985 0.47746 0.31 5. 3. 3. 1. 0.0099 1.0305 0.31 5. 3. 3. 1. 0.00995 1.7275 1.31 5. 3. 3. 1. 0.01 2.5 1.41 5. 3. 3. 1. Gnucap System status iterations: op=3, dc=0, tran=672, fourier=0, total=899 transient timesteps: accepted=224, rejected=0, total=224 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_dn2.ckt.out000066400000000000000000000605531316501211100174020ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3. 0. 0. 3. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 5. 3. 0. 0. 3. 1. 500.n 2.5079 1.41 5. 3. 0. 0. 3. 9. 1.u 2.5157 1.41 5. 3. 0. 0. 3. 6. 10.8u 2.6695 1.41 5. 3. 0. 0. 3. 6. 50.u 3.2725 1.41 5. 3. 0. 0. 3. 1. 100.u 3.9695 3.31 5. 2. 0. 0. 3. 1. 100.1u 3.9707 3.31 0. 0. 0. 1. 3. 2. 100.2u 3.972 3.31 0. 0. 5. 3. 3. 2. 150.u 4.5225 3.31 0. 0. 5. 3. 3. 1. 200.u 4.8776 3.31 0. 0. 5. 3. 3. 1. 250.u 5. 3.31 0. 0. 5. 3. 3. 1. 300.u 4.8776 3.31 0. 0. 5. 3. 3. 1. 350.u 4.5225 3.31 0. 0. 5. 3. 3. 1. 400.u 3.9695 3.31 0. 0. 5. 3. 3. 1. 450.u 3.2725 2.31 0. 0. 5. 3. 3. 1. 500.u 2.5 2.41 0. 0. 5. 3. 3. 1. 550.u 1.7275 2.41 0. 0. 5. 3. 3. 1. 600.u 1.0305 0.31 0. 1. 5. 3. 3. 1. 600.1u 1.0293 0.31 5. 3. 5. 2. 3. 2. 600.2u 1.028 0.31 5. 3. 0. 0. 3. 2. 650.u 0.47746 0.31 5. 3. 0. 0. 3. 1. 700.u 0.12236 0.31 5. 3. 0. 0. 3. 1. 750.u 0. 0.31 5. 3. 0. 0. 3. 1. 800.u 0.12236 0.31 5. 3. 0. 0. 3. 1. 850.u 0.47746 0.31 5. 3. 0. 0. 3. 1. 900.u 1.0305 0.31 5. 3. 0. 0. 3. 1. 950.u 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.001 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00105 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0011 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0011001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0011002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00115 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0012 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00125 5. 3.31 0. 0. 5. 3. 3. 1. 0.0013 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00135 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0014 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00145 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0015 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00155 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0016 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0016001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0016002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00165 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0017 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00175 0. 0.31 5. 3. 0. 0. 3. 1. 0.0018 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00185 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0019 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00195 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.002 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00205 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0021 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0021001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0021002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00215 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0022 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00225 5. 3.31 0. 0. 5. 3. 3. 1. 0.0023 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00235 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0024 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00245 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0025 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00255 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0026 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0026001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0026002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00265 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0027 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00275 0. 0.31 5. 3. 0. 0. 3. 1. 0.0028 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00285 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0029 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00295 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.003 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00305 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0031 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0031001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0031002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00315 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0032 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00325 5. 3.31 0. 0. 5. 3. 3. 1. 0.0033 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00335 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0034 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00345 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0035 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00355 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0036 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0036001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0036002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00365 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0037 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00375 0. 0.31 5. 3. 0. 0. 3. 1. 0.0038 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00385 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0039 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00395 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.004 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00405 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0041 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0041001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0041002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00415 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0042 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00425 5. 3.31 0. 0. 5. 3. 3. 1. 0.0043 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00435 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0044 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00445 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0045 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00455 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0046 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0046001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0046002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00465 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0047 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00475 0. 0.31 5. 3. 0. 0. 3. 1. 0.0048 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00485 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0049 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00495 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.005 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00505 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0051 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0051001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0051002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00515 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0052 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00525 5. 3.31 0. 0. 5. 3. 3. 1. 0.0053 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00535 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0054 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00545 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0055 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00555 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0056 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0056001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0056002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00565 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0057 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00575 0. 0.31 5. 3. 0. 0. 3. 1. 0.0058 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00585 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0059 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00595 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.006 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00605 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0061 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0061001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0061002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00615 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0062 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00625 5. 3.31 0. 0. 5. 3. 3. 1. 0.0063 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00635 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0064 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00645 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0065 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00655 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0066 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0066001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0066002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00665 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0067 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00675 0. 0.31 5. 3. 0. 0. 3. 1. 0.0068 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00685 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0069 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00695 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.007 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00705 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0071 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0071001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0071002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00715 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0072 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00725 5. 3.31 0. 0. 5. 3. 3. 1. 0.0073 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00735 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0074 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00745 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0075 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00755 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0076 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0076001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0076002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00765 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0077 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00775 0. 0.31 5. 3. 0. 0. 3. 1. 0.0078 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00785 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0079 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00795 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.008 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00805 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0081 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0081001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0081002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00815 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0082 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00825 5. 3.31 0. 0. 5. 3. 3. 1. 0.0083 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00835 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0084 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00845 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0085 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00855 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0086 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0086001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0086002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00865 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0087 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00875 0. 0.31 5. 3. 0. 0. 3. 1. 0.0088 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00885 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0089 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00895 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.009 2.5 1.41 5. 3. 0. 0. 3. 1. 0.00905 3.2725 1.41 5. 3. 0. 0. 3. 1. 0.0091 3.9695 3.31 5. 2. 0. 0. 3. 1. 0.0091001 3.9707 3.31 0. 0. 0. 1. 3. 2. 0.0091002 3.972 3.31 0. 0. 5. 3. 3. 2. 0.00915 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0092 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00925 5. 3.31 0. 0. 5. 3. 3. 1. 0.0093 4.8776 3.31 0. 0. 5. 3. 3. 1. 0.00935 4.5225 3.31 0. 0. 5. 3. 3. 1. 0.0094 3.9695 3.31 0. 0. 5. 3. 3. 1. 0.00945 3.2725 2.31 0. 0. 5. 3. 3. 1. 0.0095 2.5 2.41 0. 0. 5. 3. 3. 1. 0.00955 1.7275 2.41 0. 0. 5. 3. 3. 1. 0.0096 1.0305 0.31 0. 1. 5. 3. 3. 1. 0.0096001 1.0293 0.31 5. 3. 5. 2. 3. 2. 0.0096002 1.028 0.31 5. 3. 0. 0. 3. 2. 0.00965 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0097 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00975 0. 0.31 5. 3. 0. 0. 3. 1. 0.0098 0.12236 0.31 5. 3. 0. 0. 3. 1. 0.00985 0.47746 0.31 5. 3. 0. 0. 3. 1. 0.0099 1.0305 0.31 5. 3. 0. 0. 3. 1. 0.00995 1.7275 1.31 5. 3. 0. 0. 3. 1. 0.01 2.5 1.41 5. 3. 0. 0. 3. 1. Gnucap System status iterations: op=3, dc=0, tran=732, fourier=0, total=979 transient timesteps: accepted=244, rejected=0, total=244 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_mb1a.ckt.out000066400000000000000000000432701316501211100175340ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3.01 9. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 17. 1. 500.n 2.5079 1.41 2.2469 2.41 10. 9. 1.u 2.5157 1.41 2.134 2.41 6. 6. 5.0833u 2.5798 1.41 1.6917 0.31 7. 6. 8.0778u 2.6268 1.41 1.5043 0.31 5. 6. 11.072u 2.6738 1.41 1.3584 0.31 5. 6. 17.56u 2.7753 1.41 1.1182 0.31 5. 6. 28.373u 2.9433 1.41 0.83917 0.31 5. 6. 39.187u 3.1093 3.31 0.64188 0.31 5. 6. 50.u 3.2725 3.31 0.49388 0.31 5. 1. 75.u 3.635 3.31 0.26659 0.31 6. 6. 100.u 3.9695 3.31 0.1365 0.31 5. 1. 150.u 4.5225 3.31 0.025518 0.31 6. 1. 200.u 4.8776 3.31 0.0016644 0.31 6. 1. 250.u 5. 3.31 41.392u 0.31 6. 1. 300.u 4.8776 3.31 0.0014927 0.31 5. 1. 350.u 4.5225 3.31 0.025134 0.31 5. 1. 400.u 3.9695 3.31 0.13582 0.31 6. 1. 450.u 3.2725 3.31 0.49247 0.31 6. 1. 500.u 2.5 2.31 2.4323 1.31 11. 1. 550.u 1.7275 0.21 4.5061 3.21 7. 1. 600.u 1.0305 0.21 4.8635 3.21 6. 1. 650.u 0.47746 0.21 4.9745 3.21 6. 1. 700.u 0.12236 0.21 4.9983 3.21 6. 1. 750.u 142.f 0.21 5. 3.21 6. 1. 800.u 0.12236 0.21 4.9985 3.21 5. 1. 850.u 0.47746 0.21 4.9749 3.21 5. 1. 900.u 1.0305 0.21 4.8642 3.21 6. 1. 950.u 1.7275 0.21 4.5075 3.21 6. 1. 0.001 2.5 1.21 2.5677 2.21 11. 1. 0.00105 3.2725 3.11 0.49394 0.11 7. 1. 0.0011 3.9695 3.11 0.13655 0.11 6. 1. 0.00115 4.5225 3.11 0.025518 0.11 6. 1. 0.0012 4.8776 3.11 0.0016644 0.11 6. 1. 0.00125 5. 3.11 41.392u 0.11 6. 1. 0.0013 4.8776 3.11 0.0014927 0.11 5. 1. 0.00135 4.5225 3.11 0.025134 0.11 5. 1. 0.0014 3.9695 3.11 0.13582 0.11 6. 1. 0.00145 3.2725 3.11 0.49247 0.11 6. 1. 0.0015 2.5 2.11 2.4323 1.11 11. 1. 0.00155 1.7275 0.01 4.5061 3.01 7. 1. 0.0016 1.0305 0.01 5. 3. 3. 1. 0.00165 0.47746 0.01 5. 3. 3. 1. 0.0017 0.12236 0.01 5. 3. 3. 1. 0.00175 0. 0.01 5. 3. 3. 1. 0.0018 0.12236 0.01 5. 3. 3. 1. 0.00185 0.47746 0.01 5. 3. 3. 1. 0.0019 1.0305 0.01 5. 3. 3. 1. 0.00195 1.7275 0.01 5. 3. 3. 1. 0.002 2.5 1.01 5. 3. 3. 1. 0.00205 3.2725 3.01 5. 2. 3. 1. 0.0020501 3.274 3.01 0. 0. 3. 2. 0.0021 3.9695 3.01 0. 0. 3. 1. 0.00215 4.5225 3.01 0. 0. 3. 1. 0.0022 4.8776 3.01 0. 0. 3. 1. 0.00225 5. 3.01 0. 0. 3. 1. 0.0023 4.8776 3.01 0. 0. 3. 1. 0.00235 4.5225 3.01 0. 0. 3. 1. 0.0024 3.9695 3.01 0. 0. 3. 1. 0.00245 3.2725 3.01 0. 0. 3. 1. 0.0025 2.5 2.01 0. 0. 3. 1. 0.00255 1.7275 0.01 0. 1. 3. 1. 0.0025501 1.726 0.01 5. 3. 3. 2. 0.0026 1.0305 0.01 5. 3. 3. 1. 0.00265 0.47746 0.01 5. 3. 3. 1. 0.0027 0.12236 0.01 5. 3. 3. 1. 0.00275 0. 0.01 5. 3. 3. 1. 0.0028 0.12236 0.01 5. 3. 3. 1. 0.00285 0.47746 0.01 5. 3. 3. 1. 0.0029 1.0305 0.01 5. 3. 3. 1. 0.00295 1.7275 0.01 5. 3. 3. 1. 0.003 2.5 1.01 5. 3. 3. 1. 0.00305 3.2725 3.01 5. 2. 3. 1. 0.0030501 3.274 3.01 0. 0. 3. 2. 0.0031 3.9695 3.01 0. 0. 3. 1. 0.00315 4.5225 3.01 0. 0. 3. 1. 0.0032 4.8776 3.01 0. 0. 3. 1. 0.00325 5. 3.01 0. 0. 3. 1. 0.0033 4.8776 3.01 0. 0. 3. 1. 0.00335 4.5225 3.01 0. 0. 3. 1. 0.0034 3.9695 3.01 0. 0. 3. 1. 0.00345 3.2725 3.01 0. 0. 3. 1. 0.0035 2.5 2.01 0. 0. 3. 1. 0.00355 1.7275 0.01 0. 1. 3. 1. 0.0035501 1.726 0.01 5. 3. 3. 2. 0.0036 1.0305 0.01 5. 3. 3. 1. 0.00365 0.47746 0.01 5. 3. 3. 1. 0.0037 0.12236 0.01 5. 3. 3. 1. 0.00375 0. 0.01 5. 3. 3. 1. 0.0038 0.12236 0.01 5. 3. 3. 1. 0.00385 0.47746 0.01 5. 3. 3. 1. 0.0039 1.0305 0.01 5. 3. 3. 1. 0.00395 1.7275 0.01 5. 3. 3. 1. 0.004 2.5 1.01 5. 3. 3. 1. 0.00405 3.2725 3.01 5. 2. 3. 1. 0.0040501 3.274 3.01 0. 0. 3. 2. 0.0041 3.9695 3.01 0. 0. 3. 1. 0.00415 4.5225 3.01 0. 0. 3. 1. 0.0042 4.8776 3.01 0. 0. 3. 1. 0.00425 5. 3.01 0. 0. 3. 1. 0.0043 4.8776 3.01 0. 0. 3. 1. 0.00435 4.5225 3.01 0. 0. 3. 1. 0.0044 3.9695 3.01 0. 0. 3. 1. 0.00445 3.2725 3.01 0. 0. 3. 1. 0.0045 2.5 2.01 0. 0. 3. 1. 0.00455 1.7275 0.01 0. 1. 3. 1. 0.0045501 1.726 0.01 5. 3. 3. 2. 0.0046 1.0305 0.01 5. 3. 3. 1. 0.00465 0.47746 0.01 5. 3. 3. 1. 0.0047 0.12236 0.01 5. 3. 3. 1. 0.00475 0. 0.01 5. 3. 3. 1. 0.0048 0.12236 0.01 5. 3. 3. 1. 0.00485 0.47746 0.01 5. 3. 3. 1. 0.0049 1.0305 0.01 5. 3. 3. 1. 0.00495 1.7275 0.01 5. 3. 3. 1. 0.005 2.5 1.01 5. 3. 3. 1. 0.00505 3.2725 3.01 5. 2. 3. 1. 0.0050501 3.274 3.01 0. 0. 3. 2. 0.0051 3.9695 3.01 0. 0. 3. 1. 0.00515 4.5225 3.01 0. 0. 3. 1. 0.0052 4.8776 3.01 0. 0. 3. 1. 0.00525 5. 3.01 0. 0. 3. 1. 0.0053 4.8776 3.01 0. 0. 3. 1. 0.00535 4.5225 3.01 0. 0. 3. 1. 0.0054 3.9695 3.01 0. 0. 3. 1. 0.00545 3.2725 3.01 0. 0. 3. 1. 0.0055 2.5 2.01 0. 0. 3. 1. 0.00555 1.7275 0.01 0. 1. 3. 1. 0.0055501 1.726 0.01 5. 3. 3. 2. 0.0056 1.0305 0.01 5. 3. 3. 1. 0.00565 0.47746 0.01 5. 3. 3. 1. 0.0057 0.12236 0.01 5. 3. 3. 1. 0.00575 0. 0.01 5. 3. 3. 1. 0.0058 0.12236 0.01 5. 3. 3. 1. 0.00585 0.47746 0.01 5. 3. 3. 1. 0.0059 1.0305 0.01 5. 3. 3. 1. 0.00595 1.7275 0.01 5. 3. 3. 1. 0.006 2.5 1.01 5. 3. 3. 1. 0.00605 3.2725 3.01 5. 2. 3. 1. 0.0060501 3.274 3.01 0. 0. 3. 2. 0.0061 3.9695 3.01 0. 0. 3. 1. 0.00615 4.5225 3.01 0. 0. 3. 1. 0.0062 4.8776 3.01 0. 0. 3. 1. 0.00625 5. 3.01 0. 0. 3. 1. 0.0063 4.8776 3.01 0. 0. 3. 1. 0.00635 4.5225 3.01 0. 0. 3. 1. 0.0064 3.9695 3.01 0. 0. 3. 1. 0.00645 3.2725 3.01 0. 0. 3. 1. 0.0065 2.5 2.01 0. 0. 3. 1. 0.00655 1.7275 0.01 0. 1. 3. 1. 0.0065501 1.726 0.01 5. 3. 3. 2. 0.0066 1.0305 0.01 5. 3. 3. 1. 0.00665 0.47746 0.01 5. 3. 3. 1. 0.0067 0.12236 0.01 5. 3. 3. 1. 0.00675 0. 0.01 5. 3. 3. 1. 0.0068 0.12236 0.01 5. 3. 3. 1. 0.00685 0.47746 0.01 5. 3. 3. 1. 0.0069 1.0305 0.01 5. 3. 3. 1. 0.00695 1.7275 0.01 5. 3. 3. 1. 0.007 2.5 1.01 5. 3. 3. 1. 0.00705 3.2725 3.01 5. 2. 3. 1. 0.0070501 3.274 3.01 0. 0. 3. 2. 0.0071 3.9695 3.01 0. 0. 3. 1. 0.00715 4.5225 3.01 0. 0. 3. 1. 0.0072 4.8776 3.01 0. 0. 3. 1. 0.00725 5. 3.01 0. 0. 3. 1. 0.0073 4.8776 3.01 0. 0. 3. 1. 0.00735 4.5225 3.01 0. 0. 3. 1. 0.0074 3.9695 3.01 0. 0. 3. 1. 0.00745 3.2725 3.01 0. 0. 3. 1. 0.0075 2.5 2.01 0. 0. 3. 1. 0.00755 1.7275 0.01 0. 1. 3. 1. 0.0075501 1.726 0.01 5. 3. 3. 2. 0.0076 1.0305 0.01 5. 3. 3. 1. 0.00765 0.47746 0.01 5. 3. 3. 1. 0.0077 0.12236 0.01 5. 3. 3. 1. 0.00775 0. 0.01 5. 3. 3. 1. 0.0078 0.12236 0.01 5. 3. 3. 1. 0.00785 0.47746 0.01 5. 3. 3. 1. 0.0079 1.0305 0.01 5. 3. 3. 1. 0.00795 1.7275 0.01 5. 3. 3. 1. 0.008 2.5 1.01 5. 3. 3. 1. 0.00805 3.2725 3.01 5. 2. 3. 1. 0.0080501 3.274 3.01 0. 0. 3. 2. 0.0081 3.9695 3.01 0. 0. 3. 1. 0.00815 4.5225 3.01 0. 0. 3. 1. 0.0082 4.8776 3.01 0. 0. 3. 1. 0.00825 5. 3.01 0. 0. 3. 1. 0.0083 4.8776 3.01 0. 0. 3. 1. 0.00835 4.5225 3.01 0. 0. 3. 1. 0.0084 3.9695 3.01 0. 0. 3. 1. 0.00845 3.2725 3.01 0. 0. 3. 1. 0.0085 2.5 2.01 0. 0. 3. 1. 0.00855 1.7275 0.01 0. 1. 3. 1. 0.0085501 1.726 0.01 5. 3. 3. 2. 0.0086 1.0305 0.01 5. 3. 3. 1. 0.00865 0.47746 0.01 5. 3. 3. 1. 0.0087 0.12236 0.01 5. 3. 3. 1. 0.00875 0. 0.01 5. 3. 3. 1. 0.0088 0.12236 0.01 5. 3. 3. 1. 0.00885 0.47746 0.01 5. 3. 3. 1. 0.0089 1.0305 0.01 5. 3. 3. 1. 0.00895 1.7275 0.01 5. 3. 3. 1. 0.009 2.5 1.01 5. 3. 3. 1. 0.00905 3.2725 3.01 5. 2. 3. 1. 0.0090501 3.274 3.01 0. 0. 3. 2. 0.0091 3.9695 3.01 0. 0. 3. 1. 0.00915 4.5225 3.01 0. 0. 3. 1. 0.0092 4.8776 3.01 0. 0. 3. 1. 0.00925 5. 3.01 0. 0. 3. 1. 0.0093 4.8776 3.01 0. 0. 3. 1. 0.00935 4.5225 3.01 0. 0. 3. 1. 0.0094 3.9695 3.01 0. 0. 3. 1. 0.00945 3.2725 3.01 0. 0. 3. 1. 0.0095 2.5 2.01 0. 0. 3. 1. 0.00955 1.7275 0.01 0. 1. 3. 1. 0.0095501 1.726 0.01 5. 3. 3. 2. 0.0096 1.0305 0.01 5. 3. 3. 1. 0.00965 0.47746 0.01 5. 3. 3. 1. 0.0097 0.12236 0.01 5. 3. 3. 1. 0.00975 0. 0.01 5. 3. 3. 1. 0.0098 0.12236 0.01 5. 3. 3. 1. 0.00985 0.47746 0.01 5. 3. 3. 1. 0.0099 1.0305 0.01 5. 3. 3. 1. 0.00995 1.7275 0.01 5. 3. 3. 1. 0.01 2.5 1.01 5. 3. 3. 1. Gnucap System status iterations: op=9, dc=0, tran=822, fourier=0, total=1057 transient timesteps: accepted=226, rejected=0, total=226 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_mb1b.ckt.out000066400000000000000000000407311316501211100175340ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3.01 9. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 17. 1. 500.n 2.5079 1.41 2.2469 2.41 10. 9. 1.u 2.5157 1.41 2.134 2.41 6. 6. 5.0833u 2.5798 1.41 1.6917 2.41 7. 6. 8.0778u 2.6268 1.41 1.5043 2.41 5. 6. 11.072u 2.6738 1.41 1.3584 2.41 5. 6. 17.56u 2.7753 1.41 1.1182 0.31 5. 6. 28.373u 2.9433 1.41 0.83917 0.31 5. 6. 39.187u 3.1093 1.41 0.64188 0.31 5. 6. 50.u 3.2725 1.41 0.49388 0.31 5. 1. 75.u 3.635 1.41 0.26659 0.31 6. 6. 100.u 3.9695 3.31 0.1365 0.31 5. 1. 150.u 4.5225 3.31 0.025518 0.31 6. 1. 200.u 4.8776 3.31 0.0016644 0.31 6. 1. 250.u 5. 3.31 41.392u 0.31 6. 1. 300.u 4.8776 3.31 0.0014927 0.31 5. 1. 350.u 4.5225 3.31 0.025134 0.31 5. 1. 400.u 3.9695 3.31 0.13582 0.31 6. 1. 450.u 3.2725 2.31 0.49247 0.31 6. 1. 500.u 2.5 2.41 2.4323 1.31 11. 1. 550.u 1.7275 2.41 4.5061 3.21 7. 1. 600.u 1.0305 0.31 4.8635 3.21 6. 1. 650.u 0.47746 0.31 4.9745 3.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 6. 1. 750.u 142.f 0.31 5. 3.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 5. 1. 850.u 0.47746 0.31 4.9749 3.21 5. 1. 900.u 1.0305 0.31 4.8642 3.21 6. 1. 950.u 1.7275 1.31 4.5075 3.21 6. 1. 0.001 2.5 1.41 2.5677 2.21 11. 1. 0.00105 3.2725 1.41 0.49394 0.11 7. 1. 0.0011 3.9695 3.31 0.13655 0.11 6. 1. 0.00115 4.5225 3.31 0.025518 0.11 6. 1. 0.0012 4.8776 3.31 0.0016644 0.11 6. 1. 0.00125 5. 3.31 41.392u 0.11 6. 1. 0.0013 4.8776 3.31 0.0014927 0.11 5. 1. 0.00135 4.5225 3.31 0.025134 0.11 5. 1. 0.0014 3.9695 3.31 0.13582 0.11 6. 1. 0.00145 3.2725 2.31 0.49247 0.11 6. 1. 0.0015 2.5 2.41 2.4323 1.11 11. 1. 0.00155 1.7275 2.41 4.5061 3.01 7. 1. 0.0016 1.0305 0.31 4.8635 3.01 6. 1. 0.00165 0.47746 0.31 4.9745 3.01 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 6. 1. 0.00175 142.f 0.31 5. 3.01 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 5. 1. 0.00185 0.47746 0.31 4.9749 3.01 5. 1. 0.0019 1.0305 0.31 4.8642 3.01 6. 1. 0.00195 1.7275 1.31 4.5075 3.01 6. 1. 0.002 2.5 1.41 2.5677 2.01 11. 1. 0.00205 3.2725 1.41 0.49394 0.01 7. 1. 0.0021 3.9695 3.31 0.13655 0.01 6. 1. 0.00215 4.5225 3.31 0.025518 0.01 6. 1. 0.0022 4.8776 3.31 0.0016644 0.01 6. 1. 0.00225 5. 3.31 41.392u 0.01 6. 1. 0.0023 4.8776 3.31 0.0014927 0.01 5. 1. 0.00235 4.5225 3.31 0.025134 0.01 5. 1. 0.0024 3.9695 3.31 0.13582 0.01 6. 1. 0.00245 3.2725 2.31 0.49247 0.01 6. 1. 0.0025 2.5 2.41 2.4323 1.01 11. 1. 0.00255 1.7275 2.41 4.5061 3.01 7. 1. 0.0026 1.0305 0.31 4.8635 3.01 6. 1. 0.00265 0.47746 0.31 4.9745 3.01 6. 1. 0.0027 0.12236 0.31 4.9983 3.01 6. 1. 0.00275 142.f 0.31 5. 3.01 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 5. 1. 0.00285 0.47746 0.31 4.9749 3.01 5. 1. 0.0029 1.0305 0.31 4.8642 3.01 6. 1. 0.00295 1.7275 1.31 4.5075 3.01 6. 1. 0.003 2.5 1.41 2.5677 2.01 11. 1. 0.00305 3.2725 1.41 0.49394 0.01 7. 1. 0.0031 3.9695 3.31 0.13655 0.01 6. 1. 0.00315 4.5225 3.31 0.025518 0.01 6. 1. 0.0032 4.8776 3.31 0.0016644 0.01 6. 1. 0.00325 5. 3.31 41.392u 0.01 6. 1. 0.0033 4.8776 3.31 0.0014927 0.01 5. 1. 0.00335 4.5225 3.31 0.025134 0.01 5. 1. 0.0034 3.9695 3.31 0.13582 0.01 6. 1. 0.00345 3.2725 2.31 0.49247 0.01 6. 1. 0.0035 2.5 2.41 2.4323 1.01 11. 1. 0.00355 1.7275 2.41 4.5061 3.01 7. 1. 0.0036 1.0305 0.31 4.8635 3.01 6. 1. 0.00365 0.47746 0.31 4.9745 3.01 6. 1. 0.0037 0.12236 0.31 4.9983 3.01 6. 1. 0.00375 142.f 0.31 5. 3.01 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 5. 1. 0.00385 0.47746 0.31 4.9749 3.01 5. 1. 0.0039 1.0305 0.31 4.8642 3.01 6. 1. 0.00395 1.7275 1.31 4.5075 3.01 6. 1. 0.004 2.5 1.41 2.5677 2.01 11. 1. 0.00405 3.2725 1.41 0.49394 0.01 7. 1. 0.0041 3.9695 3.31 0.13655 0.01 6. 1. 0.00415 4.5225 3.31 0.025518 0.01 6. 1. 0.0042 4.8776 3.31 0.0016644 0.01 6. 1. 0.00425 5. 3.31 41.392u 0.01 6. 1. 0.0043 4.8776 3.31 0.0014927 0.01 5. 1. 0.00435 4.5225 3.31 0.025134 0.01 5. 1. 0.0044 3.9695 3.31 0.13582 0.01 6. 1. 0.00445 3.2725 2.31 0.49247 0.01 6. 1. 0.0045 2.5 2.41 2.4323 1.01 11. 1. 0.00455 1.7275 2.41 4.5061 3.01 7. 1. 0.0046 1.0305 0.31 4.8635 3.01 6. 1. 0.00465 0.47746 0.31 4.9745 3.01 6. 1. 0.0047 0.12236 0.31 4.9983 3.01 6. 1. 0.00475 142.f 0.31 5. 3.01 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 5. 1. 0.00485 0.47746 0.31 4.9749 3.01 5. 1. 0.0049 1.0305 0.31 4.8642 3.01 6. 1. 0.00495 1.7275 1.31 4.5075 3.01 6. 1. 0.005 2.5 1.41 2.5677 2.01 11. 1. 0.00505 3.2725 1.41 0.49394 0.01 7. 1. 0.0051 3.9695 3.31 0.13655 0.01 6. 1. 0.00515 4.5225 3.31 0.025518 0.01 6. 1. 0.0052 4.8776 3.31 0.0016644 0.01 6. 1. 0.00525 5. 3.31 41.392u 0.01 6. 1. 0.0053 4.8776 3.31 0.0014927 0.01 5. 1. 0.00535 4.5225 3.31 0.025134 0.01 5. 1. 0.0054 3.9695 3.31 0.13582 0.01 6. 1. 0.00545 3.2725 2.31 0.49247 0.01 6. 1. 0.0055 2.5 2.41 2.4323 1.01 11. 1. 0.00555 1.7275 2.41 4.5061 3.01 7. 1. 0.0056 1.0305 0.31 4.8635 3.01 6. 1. 0.00565 0.47746 0.31 4.9745 3.01 6. 1. 0.0057 0.12236 0.31 4.9983 3.01 6. 1. 0.00575 142.f 0.31 5. 3.01 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 5. 1. 0.00585 0.47746 0.31 4.9749 3.01 5. 1. 0.0059 1.0305 0.31 4.8642 3.01 6. 1. 0.00595 1.7275 1.31 4.5075 3.01 6. 1. 0.006 2.5 1.41 2.5677 2.01 11. 1. 0.00605 3.2725 1.41 0.49394 0.01 7. 1. 0.0061 3.9695 3.31 0.13655 0.01 6. 1. 0.00615 4.5225 3.31 0.025518 0.01 6. 1. 0.0062 4.8776 3.31 0.0016644 0.01 6. 1. 0.00625 5. 3.31 41.392u 0.01 6. 1. 0.0063 4.8776 3.31 0.0014927 0.01 5. 1. 0.00635 4.5225 3.31 0.025134 0.01 5. 1. 0.0064 3.9695 3.31 0.13582 0.01 6. 1. 0.00645 3.2725 2.31 0.49247 0.01 6. 1. 0.0065 2.5 2.41 2.4323 1.01 11. 1. 0.00655 1.7275 2.41 4.5061 3.01 7. 1. 0.0066 1.0305 0.31 4.8635 3.01 6. 1. 0.00665 0.47746 0.31 4.9745 3.01 6. 1. 0.0067 0.12236 0.31 4.9983 3.01 6. 1. 0.00675 142.f 0.31 5. 3.01 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 5. 1. 0.00685 0.47746 0.31 4.9749 3.01 5. 1. 0.0069 1.0305 0.31 4.8642 3.01 6. 1. 0.00695 1.7275 1.31 4.5075 3.01 6. 1. 0.007 2.5 1.41 2.5677 2.01 11. 1. 0.00705 3.2725 1.41 0.49394 0.01 7. 1. 0.0071 3.9695 3.31 0.13655 0.01 6. 1. 0.00715 4.5225 3.31 0.025518 0.01 6. 1. 0.0072 4.8776 3.31 0.0016644 0.01 6. 1. 0.00725 5. 3.31 41.392u 0.01 6. 1. 0.0073 4.8776 3.31 0.0014927 0.01 5. 1. 0.00735 4.5225 3.31 0.025134 0.01 5. 1. 0.0074 3.9695 3.31 0.13582 0.01 6. 1. 0.00745 3.2725 2.31 0.49247 0.01 6. 1. 0.0075 2.5 2.41 2.4323 1.01 11. 1. 0.00755 1.7275 2.41 4.5061 3.01 7. 1. 0.0076 1.0305 0.31 4.8635 3.01 6. 1. 0.00765 0.47746 0.31 4.9745 3.01 6. 1. 0.0077 0.12236 0.31 4.9983 3.01 6. 1. 0.00775 142.f 0.31 5. 3.01 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 5. 1. 0.00785 0.47746 0.31 4.9749 3.01 5. 1. 0.0079 1.0305 0.31 4.8642 3.01 6. 1. 0.00795 1.7275 1.31 4.5075 3.01 6. 1. 0.008 2.5 1.41 2.5677 2.01 11. 1. 0.00805 3.2725 1.41 0.49394 0.01 7. 1. 0.0081 3.9695 3.31 0.13655 0.01 6. 1. 0.00815 4.5225 3.31 0.025518 0.01 6. 1. 0.0082 4.8776 3.31 0.0016644 0.01 6. 1. 0.00825 5. 3.31 41.392u 0.01 6. 1. 0.0083 4.8776 3.31 0.0014927 0.01 5. 1. 0.00835 4.5225 3.31 0.025134 0.01 5. 1. 0.0084 3.9695 3.31 0.13582 0.01 6. 1. 0.00845 3.2725 2.31 0.49247 0.01 6. 1. 0.0085 2.5 2.41 2.4323 1.01 11. 1. 0.00855 1.7275 2.41 4.5061 3.01 7. 1. 0.0086 1.0305 0.31 4.8635 3.01 6. 1. 0.00865 0.47746 0.31 4.9745 3.01 6. 1. 0.0087 0.12236 0.31 4.9983 3.01 6. 1. 0.00875 142.f 0.31 5. 3.01 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 5. 1. 0.00885 0.47746 0.31 4.9749 3.01 5. 1. 0.0089 1.0305 0.31 4.8642 3.01 6. 1. 0.00895 1.7275 1.31 4.5075 3.01 6. 1. 0.009 2.5 1.41 2.5677 2.01 11. 1. 0.00905 3.2725 1.41 0.49394 0.01 7. 1. 0.0091 3.9695 3.31 0.13655 0.01 6. 1. 0.00915 4.5225 3.31 0.025518 0.01 6. 1. 0.0092 4.8776 3.31 0.0016644 0.01 6. 1. 0.00925 5. 3.31 41.392u 0.01 6. 1. 0.0093 4.8776 3.31 0.0014927 0.01 5. 1. 0.00935 4.5225 3.31 0.025134 0.01 5. 1. 0.0094 3.9695 3.31 0.13582 0.01 6. 1. 0.00945 3.2725 2.31 0.49247 0.01 6. 1. 0.0095 2.5 2.41 2.4323 1.01 11. 1. 0.00955 1.7275 2.41 4.5061 3.01 7. 1. 0.0096 1.0305 0.31 4.8635 3.01 6. 1. 0.00965 0.47746 0.31 4.9745 3.01 6. 1. 0.0097 0.12236 0.31 4.9983 3.01 6. 1. 0.00975 142.f 0.31 5. 3.01 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 5. 1. 0.00985 0.47746 0.31 4.9749 3.01 5. 1. 0.0099 1.0305 0.31 4.8642 3.01 6. 1. 0.00995 1.7275 1.31 4.5075 3.01 6. 1. 0.01 2.5 1.41 2.5677 2.01 11. 1. Gnucap System status iterations: op=9, dc=0, tran=1348, fourier=0, total=1567 transient timesteps: accepted=210, rejected=0, total=210 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_mb2a.ckt.out000066400000000000000000000602441316501211100175350ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3.01 66.926n 0.01 9. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 2.57 1.41 17. 1. 500.n 2.5079 1.41 2.4622 2.41 3.0399 3.31 9. 9. 1.u 2.5157 1.41 2.3909 2.41 3.3973 3.31 6. 6. 5.4545u 2.5857 1.41 1.7291 0.31 4.4962 3.31 8. 6. 9.9091u 2.6556 1.41 1.43 0.31 4.6984 3.31 6. 6. 14.364u 2.7253 1.41 1.2359 0.31 4.7898 3.31 6. 6. 18.818u 2.7949 1.41 1.0856 0.31 4.8454 3.31 5. 6. 26.614u 2.9161 1.41 0.88156 0.31 4.9039 3.31 6. 6. 38.307u 3.0959 3.31 0.65812 0.31 4.9494 3.31 6. 6. 50.u 3.2725 3.31 0.49534 0.31 4.9724 3.31 6. 1. 75.u 3.635 3.31 0.26737 0.31 4.9923 3.31 6. 6. 100.u 3.9695 3.31 0.13689 0.31 4.998 3.31 6. 1. 150.u 4.5225 3.31 0.025657 0.31 4.9999 3.31 6. 1. 200.u 4.8776 3.31 0.0016918 0.31 5. 3.31 6. 1. 250.u 5. 3.31 43.235u 0.31 5. 3.31 6. 1. 300.u 4.8776 3.31 0.0014922 0.31 5. 3.31 6. 1. 350.u 4.5225 3.31 0.025103 0.31 4.9999 3.31 6. 1. 400.u 3.9695 3.31 0.13566 0.31 4.9981 3.31 6. 1. 450.u 3.2725 3.31 0.49174 0.31 4.9732 3.31 6. 1. 500.u 2.5 2.31 2.3301 1.31 3.637 3.31 10. 1. 550.u 1.7275 0.21 4.4998 3.21 0.029753 0.21 8. 1. 600.u 1.0305 0.21 4.8629 3.21 0.0020666 0.21 7. 1. 650.u 0.47746 0.21 4.9743 3.21 104.23u 0.21 6. 1. 700.u 0.12236 0.21 4.9983 3.21 8.3763u 0.21 6. 1. 750.u 141.f 0.21 5. 3.21 619.23n 0.21 6. 1. 800.u 0.12236 0.21 4.9985 3.21 358.92n 0.21 6. 1. 850.u 0.47746 0.21 4.9749 3.21 54.991u 0.21 6. 1. 900.u 1.0305 0.21 4.8643 3.21 0.0018536 0.21 6. 1. 950.u 1.7275 0.21 4.5083 3.21 0.026757 0.21 6. 1. 0.001 2.5 1.21 2.6699 2.21 1.363 0.21 10. 1. 0.00105 3.2725 3.11 0.50022 0.11 4.9702 3.11 8. 1. 0.0011 3.9695 3.11 0.13709 0.11 4.9979 3.11 7. 1. 0.00115 4.5225 3.11 0.025657 0.11 4.9999 3.11 6. 1. 0.0012 4.8776 3.11 0.0016918 0.11 5. 3.11 6. 1. 0.00125 5. 3.11 43.235u 0.11 5. 3.11 6. 1. 0.0013 4.8776 3.11 0.0014922 0.11 5. 3.11 6. 1. 0.00135 4.5225 3.11 0.025103 0.11 4.9999 3.11 6. 1. 0.0014 3.9695 3.11 0.13566 0.11 4.9981 3.11 6. 1. 0.00145 3.2725 3.11 0.49174 0.11 4.9732 3.11 6. 1. 0.0015 2.5 2.11 2.3301 1.11 3.637 3.11 10. 1. 0.00155 1.7275 0.01 4.4998 3.01 0.029753 0.01 8. 1. 0.0016 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00165 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0017 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00175 0. 0.01 5. 3. 0. 0. 3. 1. 0.0018 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00185 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0019 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00195 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.002 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00205 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0020501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0020502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0021 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00215 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0022 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00225 5. 3.01 0. 0. 5. 3. 3. 1. 0.0023 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00235 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0024 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00245 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0025 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00255 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0025501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0025502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0026 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00265 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0027 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00275 0. 0.01 5. 3. 0. 0. 3. 1. 0.0028 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00285 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0029 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00295 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.003 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00305 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0030501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0030502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0031 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00315 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0032 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00325 5. 3.01 0. 0. 5. 3. 3. 1. 0.0033 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00335 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0034 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00345 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0035 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00355 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0035501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0035502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0036 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00365 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0037 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00375 0. 0.01 5. 3. 0. 0. 3. 1. 0.0038 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00385 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0039 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00395 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.004 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00405 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0040501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0040502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0041 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00415 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0042 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00425 5. 3.01 0. 0. 5. 3. 3. 1. 0.0043 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00435 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0044 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00445 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0045 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00455 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0045501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0045502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0046 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00465 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0047 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00475 0. 0.01 5. 3. 0. 0. 3. 1. 0.0048 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00485 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0049 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00495 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.005 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00505 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0050501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0050502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0051 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00515 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0052 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00525 5. 3.01 0. 0. 5. 3. 3. 1. 0.0053 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00535 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0054 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00545 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0055 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00555 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0055501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0055502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0056 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00565 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0057 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00575 0. 0.01 5. 3. 0. 0. 3. 1. 0.0058 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00585 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0059 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00595 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.006 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00605 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0060501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0060502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0061 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00615 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0062 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00625 5. 3.01 0. 0. 5. 3. 3. 1. 0.0063 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00635 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0064 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00645 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0065 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00655 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0065501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0065502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0066 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00665 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0067 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00675 0. 0.01 5. 3. 0. 0. 3. 1. 0.0068 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00685 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0069 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00695 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.007 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00705 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0070501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0070502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0071 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00715 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0072 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00725 5. 3.01 0. 0. 5. 3. 3. 1. 0.0073 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00735 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0074 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00745 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0075 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00755 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0075501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0075502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0076 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00765 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0077 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00775 0. 0.01 5. 3. 0. 0. 3. 1. 0.0078 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00785 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0079 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00795 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.008 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00805 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0080501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0080502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0081 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00815 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0082 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00825 5. 3.01 0. 0. 5. 3. 3. 1. 0.0083 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00835 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0084 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00845 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0085 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00855 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0085501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0085502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0086 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00865 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0087 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00875 0. 0.01 5. 3. 0. 0. 3. 1. 0.0088 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00885 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0089 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00895 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.009 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00905 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0090501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0090502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0091 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00915 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0092 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00925 5. 3.01 0. 0. 5. 3. 3. 1. 0.0093 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00935 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0094 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00945 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0095 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00955 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0095501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0095502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0096 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00965 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0097 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00975 0. 0.01 5. 3. 0. 0. 3. 1. 0.0098 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00985 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0099 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00995 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.01 2.5 1.01 5. 3. 0. 0. 3. 1. Gnucap System status iterations: op=9, dc=0, tran=884, fourier=0, total=1135 transient timesteps: accepted=242, rejected=0, total=242 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_mb2b.ckt.out000066400000000000000000000602451316501211100175370ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3.01 66.926n 0.01 9. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 2.57 1.41 17. 1. 500.n 2.5079 1.41 2.4622 2.41 3.0399 1.41 9. 9. 1.u 2.5157 1.41 2.3909 2.41 3.3973 1.41 6. 6. 5.4545u 2.5857 1.41 1.7291 2.41 4.4962 3.31 8. 6. 9.9091u 2.6556 1.41 1.43 2.41 4.6984 3.31 6. 6. 14.364u 2.7253 1.41 1.2359 0.31 4.7898 3.31 6. 6. 18.818u 2.7949 1.41 1.0856 0.31 4.8454 3.31 5. 6. 26.614u 2.9161 1.41 0.88156 0.31 4.9039 3.31 6. 6. 38.307u 3.0959 1.41 0.65812 0.31 4.9494 3.31 6. 6. 50.u 3.2725 1.41 0.49534 0.31 4.9724 3.31 6. 1. 75.u 3.635 1.41 0.26737 0.31 4.9923 3.31 6. 6. 100.u 3.9695 3.31 0.13689 0.31 4.998 3.31 6. 1. 150.u 4.5225 3.31 0.025657 0.31 4.9999 3.31 6. 1. 200.u 4.8776 3.31 0.0016918 0.31 5. 3.31 6. 1. 250.u 5. 3.31 43.235u 0.31 5. 3.31 6. 1. 300.u 4.8776 3.31 0.0014922 0.31 5. 3.31 6. 1. 350.u 4.5225 3.31 0.025103 0.31 4.9999 3.31 6. 1. 400.u 3.9695 3.31 0.13566 0.31 4.9981 3.31 6. 1. 450.u 3.2725 2.31 0.49174 0.31 4.9732 3.31 6. 1. 500.u 2.5 2.41 2.3301 1.31 3.637 2.31 10. 1. 550.u 1.7275 2.41 4.4998 3.21 0.029753 0.21 8. 1. 600.u 1.0305 0.31 4.8629 3.21 0.0020666 0.21 7. 1. 650.u 0.47746 0.31 4.9743 3.21 104.23u 0.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 8.3763u 0.21 6. 1. 750.u 141.f 0.31 5. 3.21 619.23n 0.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 358.92n 0.21 6. 1. 850.u 0.47746 0.31 4.9749 3.21 54.991u 0.21 6. 1. 900.u 1.0305 0.31 4.8643 3.21 0.0018536 0.21 6. 1. 950.u 1.7275 1.31 4.5083 3.21 0.026757 0.21 6. 1. 0.001 2.5 1.41 2.6699 2.21 1.363 1.21 10. 1. 0.00105 3.2725 1.41 0.50022 0.11 4.9702 3.11 8. 1. 0.0011 3.9695 3.31 0.13709 0.11 4.9979 3.11 7. 1. 0.00115 4.5225 3.31 0.025657 0.11 4.9999 3.11 6. 1. 0.0012 4.8776 3.31 0.0016918 0.11 5. 3.11 6. 1. 0.00125 5. 3.31 43.235u 0.11 5. 3.11 6. 1. 0.0013 4.8776 3.31 0.0014922 0.11 5. 3.11 6. 1. 0.00135 4.5225 3.31 0.025103 0.11 4.9999 3.11 6. 1. 0.0014 3.9695 3.31 0.13566 0.11 4.9981 3.11 6. 1. 0.00145 3.2725 2.31 0.49174 0.11 4.9732 3.11 6. 1. 0.0015 2.5 2.41 2.3301 1.11 3.637 2.11 10. 1. 0.00155 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0016 1.0305 0.31 4.8634 3.01 0. 0. 6. 1. 0.00165 0.47746 0.31 4.9745 3.01 0. 0. 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00175 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00185 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0019 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00195 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.002 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00205 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0020501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0021 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0021499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00215 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0022 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00225 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0023 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00235 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0024 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00245 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0025 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00255 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0025501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0026 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0026499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00265 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0027 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00275 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00285 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0029 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00295 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.003 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00305 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0030501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0031 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0031499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00315 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0032 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00325 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0033 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00335 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0034 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00345 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0035 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00355 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0035501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0036 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0036499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00365 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0037 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00375 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00385 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0039 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00395 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.004 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00405 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0040501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0041 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0041499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00415 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0042 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00425 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0043 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00435 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0044 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00445 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0045 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00455 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0045501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0046 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0046499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00465 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0047 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00475 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00485 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0049 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00495 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.005 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00505 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0050501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0051 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0051499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00515 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0052 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00525 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0053 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00535 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0054 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00545 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0055 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00555 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0055501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0056 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0056499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00565 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0057 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00575 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00585 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0059 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00595 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.006 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00605 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0060501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0061 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0061499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00615 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0062 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00625 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0063 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00635 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0064 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00645 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0065 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00655 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0065501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0066 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0066499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00665 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0067 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00675 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00685 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0069 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00695 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.007 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00705 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0070501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0071 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0071499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00715 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0072 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00725 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0073 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00735 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0074 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00745 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0075 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00755 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0075501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0076 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0076499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00765 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0077 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00775 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00785 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0079 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00795 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.008 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00805 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0080501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0081 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0081499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00815 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0082 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00825 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0083 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00835 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0084 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00845 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0085 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00855 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0085501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0086 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0086499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00865 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0087 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00875 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00885 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0089 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00895 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.009 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00905 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0090501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0091 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0091499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00915 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0092 4.8776 3.31 0.0016648 0.01 5. 3. 6. 1. 0.00925 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0093 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00935 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0094 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00945 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0095 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00955 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0095501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0096 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0096499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00965 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0097 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00975 142.f 0.31 5. 3.01 0. 0. 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00985 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0099 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00995 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.01 2.5 1.41 2.5677 2.01 0. 0. 11. 1. Gnucap System status iterations: op=9, dc=0, tran=1490, fourier=0, total=1741 transient timesteps: accepted=242, rejected=0, total=242 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_mn1a.ckt.out000066400000000000000000000432701316501211100175500ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3.01 9. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 17. 1. 500.n 2.5079 1.41 2.2469 2.41 10. 9. 1.u 2.5157 1.41 2.134 2.41 6. 6. 5.0833u 2.5798 1.41 1.6917 0.31 7. 6. 8.0778u 2.6268 1.41 1.5043 0.31 5. 6. 11.072u 2.6738 1.41 1.3584 0.31 5. 6. 17.56u 2.7753 1.41 1.1182 0.31 5. 6. 28.373u 2.9433 1.41 0.83917 0.31 5. 6. 39.187u 3.1093 3.31 0.64188 0.31 5. 6. 50.u 3.2725 3.31 0.49388 0.31 5. 1. 75.u 3.635 3.31 0.26659 0.31 6. 6. 100.u 3.9695 3.31 0.1365 0.31 5. 1. 150.u 4.5225 3.31 0.025518 0.31 6. 1. 200.u 4.8776 3.31 0.0016644 0.31 6. 1. 250.u 5. 3.31 41.392u 0.31 6. 1. 300.u 4.8776 3.31 0.0014927 0.31 5. 1. 350.u 4.5225 3.31 0.025134 0.31 5. 1. 400.u 3.9695 3.31 0.13582 0.31 6. 1. 450.u 3.2725 3.31 0.49247 0.31 6. 1. 500.u 2.5 2.31 2.4323 1.31 11. 1. 550.u 1.7275 0.21 4.5061 3.21 7. 1. 600.u 1.0305 0.21 4.8635 3.21 6. 1. 650.u 0.47746 0.21 4.9745 3.21 6. 1. 700.u 0.12236 0.21 4.9983 3.21 6. 1. 750.u 142.f 0.21 5. 3.21 6. 1. 800.u 0.12236 0.21 4.9985 3.21 5. 1. 850.u 0.47746 0.21 4.9749 3.21 5. 1. 900.u 1.0305 0.21 4.8642 3.21 6. 1. 950.u 1.7275 0.21 4.5075 3.21 6. 1. 0.001 2.5 1.21 2.5677 2.21 11. 1. 0.00105 3.2725 3.11 0.49394 0.11 7. 1. 0.0011 3.9695 3.11 0.13655 0.11 6. 1. 0.00115 4.5225 3.11 0.025518 0.11 6. 1. 0.0012 4.8776 3.11 0.0016644 0.11 6. 1. 0.00125 5. 3.11 41.392u 0.11 6. 1. 0.0013 4.8776 3.11 0.0014927 0.11 5. 1. 0.00135 4.5225 3.11 0.025134 0.11 5. 1. 0.0014 3.9695 3.11 0.13582 0.11 6. 1. 0.00145 3.2725 3.11 0.49247 0.11 6. 1. 0.0015 2.5 2.11 2.4323 1.11 11. 1. 0.00155 1.7275 0.01 4.5061 3.01 7. 1. 0.0016 1.0305 0.01 5. 3. 3. 1. 0.00165 0.47746 0.01 5. 3. 3. 1. 0.0017 0.12236 0.01 5. 3. 3. 1. 0.00175 0. 0.01 5. 3. 3. 1. 0.0018 0.12236 0.01 5. 3. 3. 1. 0.00185 0.47746 0.01 5. 3. 3. 1. 0.0019 1.0305 0.01 5. 3. 3. 1. 0.00195 1.7275 0.01 5. 3. 3. 1. 0.002 2.5 1.01 5. 3. 3. 1. 0.00205 3.2725 3.01 5. 2. 3. 1. 0.0020501 3.274 3.01 0. 0. 3. 2. 0.0021 3.9695 3.01 0. 0. 3. 1. 0.00215 4.5225 3.01 0. 0. 3. 1. 0.0022 4.8776 3.01 0. 0. 3. 1. 0.00225 5. 3.01 0. 0. 3. 1. 0.0023 4.8776 3.01 0. 0. 3. 1. 0.00235 4.5225 3.01 0. 0. 3. 1. 0.0024 3.9695 3.01 0. 0. 3. 1. 0.00245 3.2725 3.01 0. 0. 3. 1. 0.0025 2.5 2.01 0. 0. 3. 1. 0.00255 1.7275 0.01 0. 1. 3. 1. 0.0025501 1.726 0.01 5. 3. 3. 2. 0.0026 1.0305 0.01 5. 3. 3. 1. 0.00265 0.47746 0.01 5. 3. 3. 1. 0.0027 0.12236 0.01 5. 3. 3. 1. 0.00275 0. 0.01 5. 3. 3. 1. 0.0028 0.12236 0.01 5. 3. 3. 1. 0.00285 0.47746 0.01 5. 3. 3. 1. 0.0029 1.0305 0.01 5. 3. 3. 1. 0.00295 1.7275 0.01 5. 3. 3. 1. 0.003 2.5 1.01 5. 3. 3. 1. 0.00305 3.2725 3.01 5. 2. 3. 1. 0.0030501 3.274 3.01 0. 0. 3. 2. 0.0031 3.9695 3.01 0. 0. 3. 1. 0.00315 4.5225 3.01 0. 0. 3. 1. 0.0032 4.8776 3.01 0. 0. 3. 1. 0.00325 5. 3.01 0. 0. 3. 1. 0.0033 4.8776 3.01 0. 0. 3. 1. 0.00335 4.5225 3.01 0. 0. 3. 1. 0.0034 3.9695 3.01 0. 0. 3. 1. 0.00345 3.2725 3.01 0. 0. 3. 1. 0.0035 2.5 2.01 0. 0. 3. 1. 0.00355 1.7275 0.01 0. 1. 3. 1. 0.0035501 1.726 0.01 5. 3. 3. 2. 0.0036 1.0305 0.01 5. 3. 3. 1. 0.00365 0.47746 0.01 5. 3. 3. 1. 0.0037 0.12236 0.01 5. 3. 3. 1. 0.00375 0. 0.01 5. 3. 3. 1. 0.0038 0.12236 0.01 5. 3. 3. 1. 0.00385 0.47746 0.01 5. 3. 3. 1. 0.0039 1.0305 0.01 5. 3. 3. 1. 0.00395 1.7275 0.01 5. 3. 3. 1. 0.004 2.5 1.01 5. 3. 3. 1. 0.00405 3.2725 3.01 5. 2. 3. 1. 0.0040501 3.274 3.01 0. 0. 3. 2. 0.0041 3.9695 3.01 0. 0. 3. 1. 0.00415 4.5225 3.01 0. 0. 3. 1. 0.0042 4.8776 3.01 0. 0. 3. 1. 0.00425 5. 3.01 0. 0. 3. 1. 0.0043 4.8776 3.01 0. 0. 3. 1. 0.00435 4.5225 3.01 0. 0. 3. 1. 0.0044 3.9695 3.01 0. 0. 3. 1. 0.00445 3.2725 3.01 0. 0. 3. 1. 0.0045 2.5 2.01 0. 0. 3. 1. 0.00455 1.7275 0.01 0. 1. 3. 1. 0.0045501 1.726 0.01 5. 3. 3. 2. 0.0046 1.0305 0.01 5. 3. 3. 1. 0.00465 0.47746 0.01 5. 3. 3. 1. 0.0047 0.12236 0.01 5. 3. 3. 1. 0.00475 0. 0.01 5. 3. 3. 1. 0.0048 0.12236 0.01 5. 3. 3. 1. 0.00485 0.47746 0.01 5. 3. 3. 1. 0.0049 1.0305 0.01 5. 3. 3. 1. 0.00495 1.7275 0.01 5. 3. 3. 1. 0.005 2.5 1.01 5. 3. 3. 1. 0.00505 3.2725 3.01 5. 2. 3. 1. 0.0050501 3.274 3.01 0. 0. 3. 2. 0.0051 3.9695 3.01 0. 0. 3. 1. 0.00515 4.5225 3.01 0. 0. 3. 1. 0.0052 4.8776 3.01 0. 0. 3. 1. 0.00525 5. 3.01 0. 0. 3. 1. 0.0053 4.8776 3.01 0. 0. 3. 1. 0.00535 4.5225 3.01 0. 0. 3. 1. 0.0054 3.9695 3.01 0. 0. 3. 1. 0.00545 3.2725 3.01 0. 0. 3. 1. 0.0055 2.5 2.01 0. 0. 3. 1. 0.00555 1.7275 0.01 0. 1. 3. 1. 0.0055501 1.726 0.01 5. 3. 3. 2. 0.0056 1.0305 0.01 5. 3. 3. 1. 0.00565 0.47746 0.01 5. 3. 3. 1. 0.0057 0.12236 0.01 5. 3. 3. 1. 0.00575 0. 0.01 5. 3. 3. 1. 0.0058 0.12236 0.01 5. 3. 3. 1. 0.00585 0.47746 0.01 5. 3. 3. 1. 0.0059 1.0305 0.01 5. 3. 3. 1. 0.00595 1.7275 0.01 5. 3. 3. 1. 0.006 2.5 1.01 5. 3. 3. 1. 0.00605 3.2725 3.01 5. 2. 3. 1. 0.0060501 3.274 3.01 0. 0. 3. 2. 0.0061 3.9695 3.01 0. 0. 3. 1. 0.00615 4.5225 3.01 0. 0. 3. 1. 0.0062 4.8776 3.01 0. 0. 3. 1. 0.00625 5. 3.01 0. 0. 3. 1. 0.0063 4.8776 3.01 0. 0. 3. 1. 0.00635 4.5225 3.01 0. 0. 3. 1. 0.0064 3.9695 3.01 0. 0. 3. 1. 0.00645 3.2725 3.01 0. 0. 3. 1. 0.0065 2.5 2.01 0. 0. 3. 1. 0.00655 1.7275 0.01 0. 1. 3. 1. 0.0065501 1.726 0.01 5. 3. 3. 2. 0.0066 1.0305 0.01 5. 3. 3. 1. 0.00665 0.47746 0.01 5. 3. 3. 1. 0.0067 0.12236 0.01 5. 3. 3. 1. 0.00675 0. 0.01 5. 3. 3. 1. 0.0068 0.12236 0.01 5. 3. 3. 1. 0.00685 0.47746 0.01 5. 3. 3. 1. 0.0069 1.0305 0.01 5. 3. 3. 1. 0.00695 1.7275 0.01 5. 3. 3. 1. 0.007 2.5 1.01 5. 3. 3. 1. 0.00705 3.2725 3.01 5. 2. 3. 1. 0.0070501 3.274 3.01 0. 0. 3. 2. 0.0071 3.9695 3.01 0. 0. 3. 1. 0.00715 4.5225 3.01 0. 0. 3. 1. 0.0072 4.8776 3.01 0. 0. 3. 1. 0.00725 5. 3.01 0. 0. 3. 1. 0.0073 4.8776 3.01 0. 0. 3. 1. 0.00735 4.5225 3.01 0. 0. 3. 1. 0.0074 3.9695 3.01 0. 0. 3. 1. 0.00745 3.2725 3.01 0. 0. 3. 1. 0.0075 2.5 2.01 0. 0. 3. 1. 0.00755 1.7275 0.01 0. 1. 3. 1. 0.0075501 1.726 0.01 5. 3. 3. 2. 0.0076 1.0305 0.01 5. 3. 3. 1. 0.00765 0.47746 0.01 5. 3. 3. 1. 0.0077 0.12236 0.01 5. 3. 3. 1. 0.00775 0. 0.01 5. 3. 3. 1. 0.0078 0.12236 0.01 5. 3. 3. 1. 0.00785 0.47746 0.01 5. 3. 3. 1. 0.0079 1.0305 0.01 5. 3. 3. 1. 0.00795 1.7275 0.01 5. 3. 3. 1. 0.008 2.5 1.01 5. 3. 3. 1. 0.00805 3.2725 3.01 5. 2. 3. 1. 0.0080501 3.274 3.01 0. 0. 3. 2. 0.0081 3.9695 3.01 0. 0. 3. 1. 0.00815 4.5225 3.01 0. 0. 3. 1. 0.0082 4.8776 3.01 0. 0. 3. 1. 0.00825 5. 3.01 0. 0. 3. 1. 0.0083 4.8776 3.01 0. 0. 3. 1. 0.00835 4.5225 3.01 0. 0. 3. 1. 0.0084 3.9695 3.01 0. 0. 3. 1. 0.00845 3.2725 3.01 0. 0. 3. 1. 0.0085 2.5 2.01 0. 0. 3. 1. 0.00855 1.7275 0.01 0. 1. 3. 1. 0.0085501 1.726 0.01 5. 3. 3. 2. 0.0086 1.0305 0.01 5. 3. 3. 1. 0.00865 0.47746 0.01 5. 3. 3. 1. 0.0087 0.12236 0.01 5. 3. 3. 1. 0.00875 0. 0.01 5. 3. 3. 1. 0.0088 0.12236 0.01 5. 3. 3. 1. 0.00885 0.47746 0.01 5. 3. 3. 1. 0.0089 1.0305 0.01 5. 3. 3. 1. 0.00895 1.7275 0.01 5. 3. 3. 1. 0.009 2.5 1.01 5. 3. 3. 1. 0.00905 3.2725 3.01 5. 2. 3. 1. 0.0090501 3.274 3.01 0. 0. 3. 2. 0.0091 3.9695 3.01 0. 0. 3. 1. 0.00915 4.5225 3.01 0. 0. 3. 1. 0.0092 4.8776 3.01 0. 0. 3. 1. 0.00925 5. 3.01 0. 0. 3. 1. 0.0093 4.8776 3.01 0. 0. 3. 1. 0.00935 4.5225 3.01 0. 0. 3. 1. 0.0094 3.9695 3.01 0. 0. 3. 1. 0.00945 3.2725 3.01 0. 0. 3. 1. 0.0095 2.5 2.01 0. 0. 3. 1. 0.00955 1.7275 0.01 0. 1. 3. 1. 0.0095501 1.726 0.01 5. 3. 3. 2. 0.0096 1.0305 0.01 5. 3. 3. 1. 0.00965 0.47746 0.01 5. 3. 3. 1. 0.0097 0.12236 0.01 5. 3. 3. 1. 0.00975 0. 0.01 5. 3. 3. 1. 0.0098 0.12236 0.01 5. 3. 3. 1. 0.00985 0.47746 0.01 5. 3. 3. 1. 0.0099 1.0305 0.01 5. 3. 3. 1. 0.00995 1.7275 0.01 5. 3. 3. 1. 0.01 2.5 1.01 5. 3. 3. 1. Gnucap System status iterations: op=9, dc=0, tran=822, fourier=0, total=1057 transient timesteps: accepted=226, rejected=0, total=226 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_mn1b.ckt.out000066400000000000000000000407311316501211100175500ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) iter(0) control(0) 27. 0. 0.01 5. 3.01 9. 0. #Time v(1) l(1) v(2) l(2) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 17. 1. 500.n 2.5079 1.41 2.2469 2.41 10. 9. 1.u 2.5157 1.41 2.134 2.41 6. 6. 5.0833u 2.5798 1.41 1.6917 2.41 7. 6. 8.0778u 2.6268 1.41 1.5043 2.41 5. 6. 11.072u 2.6738 1.41 1.3584 2.41 5. 6. 17.56u 2.7753 1.41 1.1182 0.31 5. 6. 28.373u 2.9433 1.41 0.83917 0.31 5. 6. 39.187u 3.1093 1.41 0.64188 0.31 5. 6. 50.u 3.2725 1.41 0.49388 0.31 5. 1. 75.u 3.635 1.41 0.26659 0.31 6. 6. 100.u 3.9695 3.31 0.1365 0.31 5. 1. 150.u 4.5225 3.31 0.025518 0.31 6. 1. 200.u 4.8776 3.31 0.0016644 0.31 6. 1. 250.u 5. 3.31 41.392u 0.31 6. 1. 300.u 4.8776 3.31 0.0014927 0.31 5. 1. 350.u 4.5225 3.31 0.025134 0.31 5. 1. 400.u 3.9695 3.31 0.13582 0.31 6. 1. 450.u 3.2725 2.31 0.49247 0.31 6. 1. 500.u 2.5 2.41 2.4323 1.31 11. 1. 550.u 1.7275 2.41 4.5061 3.21 7. 1. 600.u 1.0305 0.31 4.8635 3.21 6. 1. 650.u 0.47746 0.31 4.9745 3.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 6. 1. 750.u 142.f 0.31 5. 3.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 5. 1. 850.u 0.47746 0.31 4.9749 3.21 5. 1. 900.u 1.0305 0.31 4.8642 3.21 6. 1. 950.u 1.7275 1.31 4.5075 3.21 6. 1. 0.001 2.5 1.41 2.5677 2.21 11. 1. 0.00105 3.2725 1.41 0.49394 0.11 7. 1. 0.0011 3.9695 3.31 0.13655 0.11 6. 1. 0.00115 4.5225 3.31 0.025518 0.11 6. 1. 0.0012 4.8776 3.31 0.0016644 0.11 6. 1. 0.00125 5. 3.31 41.392u 0.11 6. 1. 0.0013 4.8776 3.31 0.0014927 0.11 5. 1. 0.00135 4.5225 3.31 0.025134 0.11 5. 1. 0.0014 3.9695 3.31 0.13582 0.11 6. 1. 0.00145 3.2725 2.31 0.49247 0.11 6. 1. 0.0015 2.5 2.41 2.4323 1.11 11. 1. 0.00155 1.7275 2.41 4.5061 3.01 7. 1. 0.0016 1.0305 0.31 4.8635 3.01 6. 1. 0.00165 0.47746 0.31 4.9745 3.01 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 6. 1. 0.00175 141.f 0.31 5. 3.01 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 5. 1. 0.00185 0.47746 0.31 4.9749 3.01 5. 1. 0.0019 1.0305 0.31 4.8642 3.01 6. 1. 0.00195 1.7275 1.31 4.5075 3.01 6. 1. 0.002 2.5 1.41 2.5677 2.01 11. 1. 0.00205 3.2725 1.41 0.49394 0.01 7. 1. 0.0021 3.9695 3.31 0.13655 0.01 6. 1. 0.00215 4.5225 3.31 0.025518 0.01 6. 1. 0.0022 4.8776 3.31 0.0016644 0.01 6. 1. 0.00225 5. 3.31 41.392u 0.01 6. 1. 0.0023 4.8776 3.31 0.0014927 0.01 5. 1. 0.00235 4.5225 3.31 0.025134 0.01 5. 1. 0.0024 3.9695 3.31 0.13582 0.01 6. 1. 0.00245 3.2725 2.31 0.49247 0.01 6. 1. 0.0025 2.5 2.41 2.4323 1.01 11. 1. 0.00255 1.7275 2.41 4.5061 3.01 7. 1. 0.0026 1.0305 0.31 4.8635 3.01 6. 1. 0.00265 0.47746 0.31 4.9745 3.01 6. 1. 0.0027 0.12236 0.31 4.9983 3.01 6. 1. 0.00275 141.f 0.31 5. 3.01 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 5. 1. 0.00285 0.47746 0.31 4.9749 3.01 5. 1. 0.0029 1.0305 0.31 4.8642 3.01 6. 1. 0.00295 1.7275 1.31 4.5075 3.01 6. 1. 0.003 2.5 1.41 2.5677 2.01 11. 1. 0.00305 3.2725 1.41 0.49394 0.01 7. 1. 0.0031 3.9695 3.31 0.13655 0.01 6. 1. 0.00315 4.5225 3.31 0.025518 0.01 6. 1. 0.0032 4.8776 3.31 0.0016644 0.01 6. 1. 0.00325 5. 3.31 41.392u 0.01 6. 1. 0.0033 4.8776 3.31 0.0014927 0.01 5. 1. 0.00335 4.5225 3.31 0.025134 0.01 5. 1. 0.0034 3.9695 3.31 0.13582 0.01 6. 1. 0.00345 3.2725 2.31 0.49247 0.01 6. 1. 0.0035 2.5 2.41 2.4323 1.01 11. 1. 0.00355 1.7275 2.41 4.5061 3.01 7. 1. 0.0036 1.0305 0.31 4.8635 3.01 6. 1. 0.00365 0.47746 0.31 4.9745 3.01 6. 1. 0.0037 0.12236 0.31 4.9983 3.01 6. 1. 0.00375 141.f 0.31 5. 3.01 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 5. 1. 0.00385 0.47746 0.31 4.9749 3.01 5. 1. 0.0039 1.0305 0.31 4.8642 3.01 6. 1. 0.00395 1.7275 1.31 4.5075 3.01 6. 1. 0.004 2.5 1.41 2.5677 2.01 11. 1. 0.00405 3.2725 1.41 0.49394 0.01 7. 1. 0.0041 3.9695 3.31 0.13655 0.01 6. 1. 0.00415 4.5225 3.31 0.025518 0.01 6. 1. 0.0042 4.8776 3.31 0.0016644 0.01 6. 1. 0.00425 5. 3.31 41.392u 0.01 6. 1. 0.0043 4.8776 3.31 0.0014927 0.01 5. 1. 0.00435 4.5225 3.31 0.025134 0.01 5. 1. 0.0044 3.9695 3.31 0.13582 0.01 6. 1. 0.00445 3.2725 2.31 0.49247 0.01 6. 1. 0.0045 2.5 2.41 2.4323 1.01 11. 1. 0.00455 1.7275 2.41 4.5061 3.01 7. 1. 0.0046 1.0305 0.31 4.8635 3.01 6. 1. 0.00465 0.47746 0.31 4.9745 3.01 6. 1. 0.0047 0.12236 0.31 4.9983 3.01 6. 1. 0.00475 141.f 0.31 5. 3.01 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 5. 1. 0.00485 0.47746 0.31 4.9749 3.01 5. 1. 0.0049 1.0305 0.31 4.8642 3.01 6. 1. 0.00495 1.7275 1.31 4.5075 3.01 6. 1. 0.005 2.5 1.41 2.5677 2.01 11. 1. 0.00505 3.2725 1.41 0.49394 0.01 7. 1. 0.0051 3.9695 3.31 0.13655 0.01 6. 1. 0.00515 4.5225 3.31 0.025518 0.01 6. 1. 0.0052 4.8776 3.31 0.0016644 0.01 6. 1. 0.00525 5. 3.31 41.392u 0.01 6. 1. 0.0053 4.8776 3.31 0.0014927 0.01 5. 1. 0.00535 4.5225 3.31 0.025134 0.01 5. 1. 0.0054 3.9695 3.31 0.13582 0.01 6. 1. 0.00545 3.2725 2.31 0.49247 0.01 6. 1. 0.0055 2.5 2.41 2.4323 1.01 11. 1. 0.00555 1.7275 2.41 4.5061 3.01 7. 1. 0.0056 1.0305 0.31 4.8635 3.01 6. 1. 0.00565 0.47746 0.31 4.9745 3.01 6. 1. 0.0057 0.12236 0.31 4.9983 3.01 6. 1. 0.00575 142.f 0.31 5. 3.01 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 5. 1. 0.00585 0.47746 0.31 4.9749 3.01 5. 1. 0.0059 1.0305 0.31 4.8642 3.01 6. 1. 0.00595 1.7275 1.31 4.5075 3.01 6. 1. 0.006 2.5 1.41 2.5677 2.01 11. 1. 0.00605 3.2725 1.41 0.49394 0.01 7. 1. 0.0061 3.9695 3.31 0.13655 0.01 6. 1. 0.00615 4.5225 3.31 0.025518 0.01 6. 1. 0.0062 4.8776 3.31 0.0016644 0.01 6. 1. 0.00625 5. 3.31 41.392u 0.01 6. 1. 0.0063 4.8776 3.31 0.0014927 0.01 5. 1. 0.00635 4.5225 3.31 0.025134 0.01 5. 1. 0.0064 3.9695 3.31 0.13582 0.01 6. 1. 0.00645 3.2725 2.31 0.49247 0.01 6. 1. 0.0065 2.5 2.41 2.4323 1.01 11. 1. 0.00655 1.7275 2.41 4.5061 3.01 7. 1. 0.0066 1.0305 0.31 4.8635 3.01 6. 1. 0.00665 0.47746 0.31 4.9745 3.01 6. 1. 0.0067 0.12236 0.31 4.9983 3.01 6. 1. 0.00675 141.f 0.31 5. 3.01 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 5. 1. 0.00685 0.47746 0.31 4.9749 3.01 5. 1. 0.0069 1.0305 0.31 4.8642 3.01 6. 1. 0.00695 1.7275 1.31 4.5075 3.01 6. 1. 0.007 2.5 1.41 2.5677 2.01 11. 1. 0.00705 3.2725 1.41 0.49394 0.01 7. 1. 0.0071 3.9695 3.31 0.13655 0.01 6. 1. 0.00715 4.5225 3.31 0.025518 0.01 6. 1. 0.0072 4.8776 3.31 0.0016644 0.01 6. 1. 0.00725 5. 3.31 41.392u 0.01 6. 1. 0.0073 4.8776 3.31 0.0014927 0.01 5. 1. 0.00735 4.5225 3.31 0.025134 0.01 5. 1. 0.0074 3.9695 3.31 0.13582 0.01 6. 1. 0.00745 3.2725 2.31 0.49247 0.01 6. 1. 0.0075 2.5 2.41 2.4323 1.01 11. 1. 0.00755 1.7275 2.41 4.5061 3.01 7. 1. 0.0076 1.0305 0.31 4.8635 3.01 6. 1. 0.00765 0.47746 0.31 4.9745 3.01 6. 1. 0.0077 0.12236 0.31 4.9983 3.01 6. 1. 0.00775 142.f 0.31 5. 3.01 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 5. 1. 0.00785 0.47746 0.31 4.9749 3.01 5. 1. 0.0079 1.0305 0.31 4.8642 3.01 6. 1. 0.00795 1.7275 1.31 4.5075 3.01 6. 1. 0.008 2.5 1.41 2.5677 2.01 11. 1. 0.00805 3.2725 1.41 0.49394 0.01 7. 1. 0.0081 3.9695 3.31 0.13655 0.01 6. 1. 0.00815 4.5225 3.31 0.025518 0.01 6. 1. 0.0082 4.8776 3.31 0.0016644 0.01 6. 1. 0.00825 5. 3.31 41.392u 0.01 6. 1. 0.0083 4.8776 3.31 0.0014927 0.01 5. 1. 0.00835 4.5225 3.31 0.025134 0.01 5. 1. 0.0084 3.9695 3.31 0.13582 0.01 6. 1. 0.00845 3.2725 2.31 0.49247 0.01 6. 1. 0.0085 2.5 2.41 2.4323 1.01 11. 1. 0.00855 1.7275 2.41 4.5061 3.01 7. 1. 0.0086 1.0305 0.31 4.8635 3.01 6. 1. 0.00865 0.47746 0.31 4.9745 3.01 6. 1. 0.0087 0.12236 0.31 4.9983 3.01 6. 1. 0.00875 141.f 0.31 5. 3.01 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 5. 1. 0.00885 0.47746 0.31 4.9749 3.01 5. 1. 0.0089 1.0305 0.31 4.8642 3.01 6. 1. 0.00895 1.7275 1.31 4.5075 3.01 6. 1. 0.009 2.5 1.41 2.5677 2.01 11. 1. 0.00905 3.2725 1.41 0.49394 0.01 7. 1. 0.0091 3.9695 3.31 0.13655 0.01 6. 1. 0.00915 4.5225 3.31 0.025518 0.01 6. 1. 0.0092 4.8776 3.31 0.0016644 0.01 6. 1. 0.00925 5. 3.31 41.392u 0.01 6. 1. 0.0093 4.8776 3.31 0.0014927 0.01 5. 1. 0.00935 4.5225 3.31 0.025134 0.01 5. 1. 0.0094 3.9695 3.31 0.13582 0.01 6. 1. 0.00945 3.2725 2.31 0.49247 0.01 6. 1. 0.0095 2.5 2.41 2.4323 1.01 11. 1. 0.00955 1.7275 2.41 4.5061 3.01 7. 1. 0.0096 1.0305 0.31 4.8635 3.01 6. 1. 0.00965 0.47746 0.31 4.9745 3.01 6. 1. 0.0097 0.12236 0.31 4.9983 3.01 6. 1. 0.00975 141.f 0.31 5. 3.01 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 5. 1. 0.00985 0.47746 0.31 4.9749 3.01 5. 1. 0.0099 1.0305 0.31 4.8642 3.01 6. 1. 0.00995 1.7275 1.31 4.5075 3.01 6. 1. 0.01 2.5 1.41 2.5677 2.01 11. 1. Gnucap System status iterations: op=9, dc=0, tran=1348, fourier=0, total=1567 transient timesteps: accepted=210, rejected=0, total=210 nodes: user=3, subckt=0, model=0, total=3 dctran density=100.0%, ac density=100.0% tests/==out/d_logic_tr_mn2a.ckt.out000066400000000000000000000602441316501211100175510ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3.01 66.926n 0.01 9. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 2.57 1.41 17. 1. 500.n 2.5079 1.41 2.4626 2.41 3.0373 3.31 9. 9. 1.u 2.5157 1.41 2.3913 2.41 3.3959 3.31 6. 6. 5.4545u 2.5857 1.41 1.7292 0.31 4.4961 3.31 8. 6. 9.9091u 2.6556 1.41 1.43 0.31 4.6984 3.31 6. 6. 14.364u 2.7253 1.41 1.2359 0.31 4.7898 3.31 6. 6. 18.818u 2.7949 1.41 1.0856 0.31 4.8454 3.31 5. 6. 26.614u 2.9161 1.41 0.88156 0.31 4.9039 3.31 6. 6. 38.307u 3.0959 3.31 0.65812 0.31 4.9494 3.31 6. 6. 50.u 3.2725 3.31 0.49534 0.31 4.9724 3.31 6. 1. 75.u 3.635 3.31 0.26737 0.31 4.9923 3.31 6. 6. 100.u 3.9695 3.31 0.13689 0.31 4.998 3.31 6. 1. 150.u 4.5225 3.31 0.025657 0.31 4.9999 3.31 6. 1. 200.u 4.8776 3.31 0.0016918 0.31 5. 3.31 6. 1. 250.u 5. 3.31 43.235u 0.31 5. 3.31 6. 1. 300.u 4.8776 3.31 0.0014911 0.31 5. 3.31 6. 1. 350.u 4.5225 3.31 0.025105 0.31 4.9999 3.31 6. 1. 400.u 3.9695 3.31 0.13566 0.31 4.9981 3.31 6. 1. 450.u 3.2725 3.31 0.49174 0.31 4.9732 3.31 6. 1. 500.u 2.5 2.31 2.3301 1.31 3.637 3.31 10. 1. 550.u 1.7275 0.21 4.4998 3.21 0.029753 0.21 8. 1. 600.u 1.0305 0.21 4.8629 3.21 0.0020666 0.21 7. 1. 650.u 0.47746 0.21 4.9743 3.21 104.23u 0.21 6. 1. 700.u 0.12236 0.21 4.9983 3.21 8.3763u 0.21 6. 1. 750.u 141.f 0.21 5. 3.21 619.23n 0.21 6. 1. 800.u 0.12236 0.21 4.9985 3.21 -193.13n 0.21 6. 1. 850.u 0.47746 0.21 4.9749 3.21 55.48u 0.21 6. 1. 900.u 1.0305 0.21 4.8643 3.21 0.0018536 0.21 6. 1. 950.u 1.7275 0.21 4.5083 3.21 0.026757 0.21 6. 1. 0.001 2.5 1.21 2.6699 2.21 1.363 0.21 10. 1. 0.00105 3.2725 3.11 0.50022 0.11 4.9702 3.11 8. 1. 0.0011 3.9695 3.11 0.13709 0.11 4.9979 3.11 7. 1. 0.00115 4.5225 3.11 0.025657 0.11 4.9999 3.11 6. 1. 0.0012 4.8776 3.11 0.0016918 0.11 5. 3.11 6. 1. 0.00125 5. 3.11 43.235u 0.11 5. 3.11 6. 1. 0.0013 4.8776 3.11 0.0014911 0.11 5. 3.11 6. 1. 0.00135 4.5225 3.11 0.025105 0.11 4.9999 3.11 6. 1. 0.0014 3.9695 3.11 0.13566 0.11 4.9981 3.11 6. 1. 0.00145 3.2725 3.11 0.49174 0.11 4.9732 3.11 6. 1. 0.0015 2.5 2.11 2.3301 1.11 3.637 3.11 10. 1. 0.00155 1.7275 0.01 4.4998 3.01 0.029753 0.01 8. 1. 0.0016 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00165 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0017 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00175 0. 0.01 5. 3. 0. 0. 3. 1. 0.0018 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00185 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0019 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00195 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.002 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00205 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0020501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0020502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0021 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00215 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0022 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00225 5. 3.01 0. 0. 5. 3. 3. 1. 0.0023 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00235 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0024 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00245 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0025 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00255 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0025501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0025502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0026 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00265 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0027 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00275 0. 0.01 5. 3. 0. 0. 3. 1. 0.0028 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00285 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0029 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00295 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.003 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00305 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0030501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0030502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0031 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00315 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0032 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00325 5. 3.01 0. 0. 5. 3. 3. 1. 0.0033 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00335 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0034 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00345 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0035 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00355 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0035501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0035502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0036 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00365 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0037 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00375 0. 0.01 5. 3. 0. 0. 3. 1. 0.0038 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00385 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0039 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00395 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.004 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00405 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0040501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0040502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0041 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00415 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0042 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00425 5. 3.01 0. 0. 5. 3. 3. 1. 0.0043 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00435 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0044 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00445 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0045 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00455 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0045501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0045502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0046 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00465 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0047 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00475 0. 0.01 5. 3. 0. 0. 3. 1. 0.0048 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00485 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0049 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00495 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.005 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00505 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0050501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0050502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0051 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00515 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0052 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00525 5. 3.01 0. 0. 5. 3. 3. 1. 0.0053 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00535 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0054 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00545 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0055 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00555 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0055501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0055502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0056 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00565 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0057 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00575 0. 0.01 5. 3. 0. 0. 3. 1. 0.0058 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00585 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0059 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00595 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.006 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00605 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0060501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0060502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0061 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00615 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0062 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00625 5. 3.01 0. 0. 5. 3. 3. 1. 0.0063 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00635 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0064 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00645 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0065 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00655 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0065501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0065502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0066 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00665 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0067 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00675 0. 0.01 5. 3. 0. 0. 3. 1. 0.0068 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00685 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0069 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00695 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.007 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00705 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0070501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0070502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0071 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00715 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0072 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00725 5. 3.01 0. 0. 5. 3. 3. 1. 0.0073 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00735 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0074 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00745 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0075 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00755 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0075501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0075502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0076 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00765 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0077 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00775 0. 0.01 5. 3. 0. 0. 3. 1. 0.0078 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00785 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0079 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00795 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.008 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00805 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0080501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0080502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0081 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00815 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0082 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00825 5. 3.01 0. 0. 5. 3. 3. 1. 0.0083 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00835 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0084 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00845 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0085 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00855 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0085501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0085502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0086 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00865 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0087 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00875 0. 0.01 5. 3. 0. 0. 3. 1. 0.0088 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00885 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0089 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00895 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.009 2.5 1.01 5. 3. 0. 0. 3. 1. 0.00905 3.2725 3.01 5. 2. 0. 0. 3. 1. 0.0090501 3.274 3.01 0. 0. 0. 1. 3. 2. 0.0090502 3.2755 3.01 0. 0. 5. 3. 3. 2. 0.0091 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00915 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0092 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00925 5. 3.01 0. 0. 5. 3. 3. 1. 0.0093 4.8776 3.01 0. 0. 5. 3. 3. 1. 0.00935 4.5225 3.01 0. 0. 5. 3. 3. 1. 0.0094 3.9695 3.01 0. 0. 5. 3. 3. 1. 0.00945 3.2725 3.01 0. 0. 5. 3. 3. 1. 0.0095 2.5 2.01 0. 0. 5. 3. 3. 1. 0.00955 1.7275 0.01 0. 1. 5. 3. 3. 1. 0.0095501 1.726 0.01 5. 3. 5. 2. 3. 2. 0.0095502 1.7245 0.01 5. 3. 0. 0. 3. 2. 0.0096 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00965 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0097 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00975 0. 0.01 5. 3. 0. 0. 3. 1. 0.0098 0.12236 0.01 5. 3. 0. 0. 3. 1. 0.00985 0.47746 0.01 5. 3. 0. 0. 3. 1. 0.0099 1.0305 0.01 5. 3. 0. 0. 3. 1. 0.00995 1.7275 0.01 5. 3. 0. 0. 3. 1. 0.01 2.5 1.01 5. 3. 0. 0. 3. 1. Gnucap System status iterations: op=9, dc=0, tran=884, fourier=0, total=1135 transient timesteps: accepted=242, rejected=0, total=242 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_logic_tr_mn2b.ckt.out000066400000000000000000000602451316501211100175530ustar00rootroot00000000000000'1 inverters as gates # v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 27. 0. 0.01 5. 3.01 66.926n 0.01 9. 0. #Time v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) 0. 2.5 1.41 2.4995 1.41 2.57 1.41 17. 1. 500.n 2.5079 1.41 2.4626 2.41 3.0373 1.41 9. 9. 1.u 2.5157 1.41 2.3913 2.41 3.3959 1.41 6. 6. 5.4545u 2.5857 1.41 1.7292 2.41 4.4961 3.31 8. 6. 9.9091u 2.6556 1.41 1.43 2.41 4.6984 3.31 6. 6. 14.364u 2.7253 1.41 1.2359 0.31 4.7898 3.31 6. 6. 18.818u 2.7949 1.41 1.0856 0.31 4.8454 3.31 5. 6. 26.614u 2.9161 1.41 0.88156 0.31 4.9039 3.31 6. 6. 38.307u 3.0959 1.41 0.65812 0.31 4.9494 3.31 6. 6. 50.u 3.2725 1.41 0.49534 0.31 4.9724 3.31 6. 1. 75.u 3.635 1.41 0.26737 0.31 4.9923 3.31 6. 6. 100.u 3.9695 3.31 0.13689 0.31 4.998 3.31 6. 1. 150.u 4.5225 3.31 0.025657 0.31 4.9999 3.31 6. 1. 200.u 4.8776 3.31 0.0016918 0.31 5. 3.31 6. 1. 250.u 5. 3.31 43.235u 0.31 5. 3.31 6. 1. 300.u 4.8776 3.31 0.0014911 0.31 5. 3.31 6. 1. 350.u 4.5225 3.31 0.025105 0.31 4.9999 3.31 6. 1. 400.u 3.9695 3.31 0.13566 0.31 4.9981 3.31 6. 1. 450.u 3.2725 2.31 0.49174 0.31 4.9732 3.31 6. 1. 500.u 2.5 2.41 2.3301 1.31 3.637 2.31 10. 1. 550.u 1.7275 2.41 4.4998 3.21 0.029753 0.21 8. 1. 600.u 1.0305 0.31 4.8629 3.21 0.0020666 0.21 7. 1. 650.u 0.47746 0.31 4.9743 3.21 104.23u 0.21 6. 1. 700.u 0.12236 0.31 4.9983 3.21 8.3763u 0.21 6. 1. 750.u 141.f 0.31 5. 3.21 619.23n 0.21 6. 1. 800.u 0.12236 0.31 4.9985 3.21 -193.13n 0.21 6. 1. 850.u 0.47746 0.31 4.9749 3.21 55.48u 0.21 6. 1. 900.u 1.0305 0.31 4.8643 3.21 0.0018536 0.21 6. 1. 950.u 1.7275 1.31 4.5083 3.21 0.026757 0.21 6. 1. 0.001 2.5 1.41 2.6699 2.21 1.363 1.21 10. 1. 0.00105 3.2725 1.41 0.50022 0.11 4.9702 3.11 8. 1. 0.0011 3.9695 3.31 0.13709 0.11 4.9979 3.11 7. 1. 0.00115 4.5225 3.31 0.025657 0.11 4.9999 3.11 6. 1. 0.0012 4.8776 3.31 0.0016918 0.11 5. 3.11 6. 1. 0.00125 5. 3.31 43.235u 0.11 5. 3.11 6. 1. 0.0013 4.8776 3.31 0.0014911 0.11 5. 3.11 6. 1. 0.00135 4.5225 3.31 0.025105 0.11 4.9999 3.11 6. 1. 0.0014 3.9695 3.31 0.13566 0.11 4.9981 3.11 6. 1. 0.00145 3.2725 2.31 0.49174 0.11 4.9732 3.11 6. 1. 0.0015 2.5 2.41 2.3301 1.11 3.637 2.11 10. 1. 0.00155 1.7275 2.41 4.4998 3.01 0.029753 0.01 8. 1. 0.0016 1.0305 0.31 4.8634 3.01 0. 0. 6. 1. 0.00165 0.47746 0.31 4.9745 3.01 0. 0. 6. 1. 0.0017 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00175 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0018 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00185 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0019 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00195 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.002 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00205 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0020501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0021 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0021499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00215 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0022 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00225 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0023 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00235 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0024 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00245 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0025 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00255 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0025501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0026 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0026499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00265 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0027 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00275 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0028 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00285 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0029 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00295 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.003 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00305 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0030501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0031 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0031499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00315 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0032 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00325 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0033 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00335 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0034 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00345 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0035 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00355 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0035501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0036 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0036499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00365 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0037 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00375 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0038 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00385 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0039 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00395 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.004 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00405 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0040501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0041 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0041499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00415 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0042 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00425 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0043 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00435 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0044 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00445 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0045 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00455 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0045501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0046 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0046499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00465 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0047 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00475 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0048 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00485 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0049 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00495 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.005 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00505 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0050501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0051 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0051499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00515 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0052 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00525 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0053 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00535 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0054 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00545 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0055 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00555 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0055501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0056 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0056499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00565 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0057 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00575 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0058 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00585 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0059 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00595 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.006 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00605 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0060501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0061 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0061499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00615 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0062 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00625 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0063 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00635 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0064 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00645 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0065 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00655 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0065501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0066 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0066499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00665 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0067 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00675 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0068 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00685 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0069 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00695 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.007 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00705 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0070501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0071 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0071499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00715 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0072 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00725 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0073 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00735 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0074 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00745 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0075 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00755 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0075501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0076 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0076499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00765 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0077 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00775 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0078 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00785 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0079 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00795 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.008 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00805 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0080501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0081 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0081499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00815 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0082 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00825 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0083 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00835 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0084 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00845 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0085 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00855 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0085501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0086 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0086499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00865 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0087 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00875 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0088 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00885 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0089 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00895 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.009 2.5 1.41 2.5677 2.01 0. 0. 11. 1. 0.00905 3.2725 1.41 0.49394 0.01 0. 1. 7. 1. 0.0090501 3.274 1.41 0.49267 0.01 5. 3. 4. 2. 0.0091 3.9695 3.31 0.13655 0.01 5. 3. 6. 1. 0.0091499 4.5216 3.31 0.025622 0.01 5. 3. 6. 6. 0.00915 4.5225 3.31 0.025472 0.01 5. 3. 4. 1. 0.0092 4.8776 3.31 0.0016644 0.01 5. 3. 6. 1. 0.00925 5. 3.31 41.392u 0.01 5. 3. 6. 1. 0.0093 4.8776 3.31 0.0014927 0.01 5. 3. 5. 1. 0.00935 4.5225 3.31 0.025134 0.01 5. 3. 5. 1. 0.0094 3.9695 3.31 0.13582 0.01 5. 3. 6. 1. 0.00945 3.2725 2.31 0.49247 0.01 5. 3. 6. 1. 0.0095 2.5 2.41 2.4323 1.01 5. 3. 11. 1. 0.00955 1.7275 2.41 4.5061 3.01 5. 2. 7. 1. 0.0095501 1.726 2.41 4.5073 3.01 0. 0. 4. 2. 0.0096 1.0305 0.31 4.8635 3.01 0. 0. 6. 1. 0.0096499 0.47838 0.31 4.9744 3.01 0. 0. 6. 6. 0.00965 0.47746 0.31 4.9745 3.01 0. 0. 4. 1. 0.0097 0.12236 0.31 4.9983 3.01 0. 0. 6. 1. 0.00975 141.f 0.31 5. 3.01 0. 0. 6. 1. 0.0098 0.12236 0.31 4.9985 3.01 0. 0. 5. 1. 0.00985 0.47746 0.31 4.9749 3.01 0. 0. 5. 1. 0.0099 1.0305 0.31 4.8642 3.01 0. 0. 6. 1. 0.00995 1.7275 1.31 4.5075 3.01 0. 0. 6. 1. 0.01 2.5 1.41 2.5677 2.01 0. 0. 11. 1. Gnucap System status iterations: op=9, dc=0, tran=1490, fourier=0, total=1741 transient timesteps: accepted=242, rejected=0, total=242 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_macro.1.ckt.out000066400000000000000000000014361316501211100162700ustar00rootroot00000000000000' # v(1) v(2) v(3) v(4) v(5) 27. 0.38461 0.99999 0.076922 0.38461 0.076922 # v(1) v(2) v(3) v(4) v(5) v(X1.R1) v(X1.R1) v(X1.R2) v(X1.R3) v(X1.R4) v(X1.r5) v(X1.r6) v(X1.R2) + v(X2.R2) 27. 0.38461 0.99999 0.076922 0.38461 0.076922 0.61538 0.61538 0.38461 0.23077 0.15384 0.076922 0.076922 0.38461 + 0.38461 tran ac dc op v(1) v(2) v(3) v(4) v(5) v(X1.R1) v(X1.R1) v(X1.R2) v(X1.R3) v(X1.R4) v(X1.r5) v(X1.r6) v(X1.R2) v(X2.R2) fourier V1 ( 2 0 ) DC 1. X1 ( 2 1 3 ) zzz X2 ( 2 4 5 ) zzz .subckt zzz ( 1 2 4 ) R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R3 ( 2 3 ) 1. R4 ( 3 0 ) 1. r5 ( 3 4 ) 1. r6 ( 4 0 ) 1. .ends zzz tests/==out/d_mos.error1.ckt.out000066400000000000000000000000401316501211100170250ustar00rootroot00000000000000 m1: model foo is not a mosfet tests/==out/d_mos.error2.ckt.out000066400000000000000000000000401316501211100170260ustar00rootroot00000000000000 m1: model foo is not a mosfet tests/==out/d_mos.error3.ckt.out000066400000000000000000000001171316501211100170340ustar00rootroot00000000000000 .model foo dsdaf ^ ? model: "dsdaf" no match m1: can't find: foo tests/==out/d_mos.error4.ckt.out000066400000000000000000000000401316501211100170300ustar00rootroot00000000000000 m1: model foo is not a mosfet tests/==out/d_mos1.bin1.ckt.out000066400000000000000000000001101316501211100165230ustar00rootroot00000000000000.title mos1 inverter Mp1: no bins match: PMOS Mp1: no bins match: PMOS tests/==out/d_mos1.bin2.ckt.out000066400000000000000000000147501316501211100165430ustar00rootroot00000000000000.title mos1 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 0.25 5. 0.25 5. 4.5538 5. 4.2521 5. 0.5 5. 0.5 5. 4.5237 5. 4.2012 5. 0.75 5. 0.75 4.9996 4.4887 4.9996 4.1419 4.9981 1. 5. 1. 4.9863 4.434 4.9863 4.0717 4.9304 1.25 5. 1.25 4.95 4.3459 4.95 3.9865 4.7661 1.5 5. 1.5 4.8833 4.2105 4.8833 3.8801 4.5051 1.75 5. 1.75 4.7738 3.9994 4.7738 3.7406 4.1474 2. 5. 2. 4.5974 3.6348 4.5974 3.5423 3.6931 2.25 5. 2.25 4.2916 2.4 4.2916 3.2012 3.1421 2.5 5. 2.5 1.7997 0.95409 1.7997 2.5056 2.4944 2.75 5. 2.75 0.70836 0.56003 0.70836 1.8579 1.7988 3. 5. 3. 0.40263 0.33713 0.40263 1.3069 1.4577 3.25 5. 3.25 0.22621 0.19496 0.22621 0.8526 1.2594 3.5 5. 3.5 0.11672 0.10244 0.11672 0.49493 1.1199 3.75 5. 3.75 0.05 0.044449 0.05 0.23393 1.0135 4. 5. 4. 0.013665 0.012265 0.013665 0.0696 0.92831 4.25 5. 4.25 352.14u 318.49u 352.14u 0.0019334 0.85806 4.5 5. 4.5 6.842n 6.2274n 6.842n 40.213n 0.79877 4.75 5. 4.75 6.4196n 5.8756n 6.4196n 40.213n 0.74787 5. 5. 5. 6.0464n 5.5614n 6.0464n 40.213n 0.70357 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 100.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 200.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 300.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 400.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 500.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 600.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 700.p 5. 0. 5. 4.5801 5. 4.2964 5. 800.p 5. 0. 5. 4.5801 5. 4.2964 5. 900.p 5. 0. 5. 4.5801 5. 4.2964 5. 1.n 5. 1.f 5. 4.5801 5. 4.2964 5. 1.1n 5. 0.25 5. 4.5538 5. 4.2521 5. 1.2n 5. 0.5 5. 4.5237 5. 4.2012 5. 1.3n 5. 0.75 4.9996 4.4887 5. 4.1419 4.9981 1.4n 5. 1. 4.9863 4.434 4.9994 4.0717 4.9304 1.5n 5. 1.25 4.95 4.3459 4.9977 3.9865 4.7661 1.6n 5. 1.5 4.8833 4.2105 4.9926 3.8801 4.5051 1.7n 5. 1.75 4.7738 3.9994 4.9827 3.7406 4.1474 1.8n 5. 2. 4.5974 3.6348 4.9666 3.5423 3.6931 1.9n 5. 2.25 4.2916 2.4 4.9428 3.2012 3.1421 2.n 5. 2.5 1.7997 0.95409 4.9098 2.5056 2.4944 2.1n 5. 2.75 0.70836 0.56003 4.866 1.8579 1.7988 2.2n 5. 3. 0.40263 0.33713 4.8095 1.3069 1.4577 2.3n 5. 3.25 0.22621 0.19496 4.7384 0.8526 1.2594 2.4n 5. 3.5 0.11672 0.10244 4.6502 0.49493 1.1199 2.5n 5. 3.75 0.05 0.044449 4.5423 0.23393 1.0135 2.6n 5. 4. 0.013665 0.012265 4.412 0.0696 0.92831 2.7n 5. 4.25 352.14u 318.49u 4.2568 0.0019334 0.85806 2.8n 5. 4.5 6.842n 6.2274n 4.0765 40.213n 0.79877 2.9n 5. 4.75 6.4196n 5.8756n 3.8717 40.213n 0.74787 3.n 5. 5. 6.0464n 5.5614n 3.6426 40.213n 0.70357 3.1n 5. 5. 6.0464n 5.5614n 3.4021 40.213n 0.70357 3.2n 5. 5. 6.0464n 5.5614n 3.1687 40.213n 0.70357 3.3n 5. 5. 6.0464n 5.5614n 2.9422 40.213n 0.70357 3.4n 5. 5. 6.0464n 5.5614n 2.7239 40.213n 0.70357 3.5n 5. 5. 6.0464n 5.5614n 2.5145 40.213n 0.70357 3.6n 5. 5. 6.0464n 5.5614n 2.315 40.213n 0.70357 3.7n 5. 5. 6.0464n 5.5614n 2.1257 40.213n 0.70357 3.8n 5. 5. 6.0464n 5.5614n 1.9471 40.213n 0.70357 3.9n 5. 5. 6.0464n 5.5614n 1.7794 40.213n 0.70357 4.n 5. 5. 6.0464n 5.5614n 1.6227 40.213n 0.70357 4.1n 5. 5. 6.0464n 5.5614n 1.4768 40.213n 0.70357 4.2n 5. 5. 6.0464n 5.5614n 1.3414 40.213n 0.70357 4.3n 5. 5. 6.0464n 5.5614n 1.2164 40.213n 0.70357 4.4n 5. 5. 6.0464n 5.5614n 1.1013 40.213n 0.70357 4.5n 5. 5. 6.0464n 5.5614n 0.99558 40.213n 0.70357 4.6n 5. 5. 6.0464n 5.5614n 0.89882 40.213n 0.70357 4.7n 5. 5. 6.0464n 5.5614n 0.81047 40.213n 0.70357 4.8n 5. 5. 6.0464n 5.5614n 0.72998 40.213n 0.70357 4.9n 5. 5. 6.0464n 5.5614n 0.65682 40.213n 0.70357 5.n 5. 5. 6.0464n 5.5614n 0.59044 40.213n 0.70357 tests/==out/d_mos1.bin3.ckt.out000066400000000000000000000147501316501211100165440ustar00rootroot00000000000000.title mos1 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 0.25 5. 0.25 5. 4.5538 5. 4.2521 5. 0.5 5. 0.5 5. 4.5237 5. 4.2012 5. 0.75 5. 0.75 4.9996 4.4887 4.9996 4.1419 4.9981 1. 5. 1. 4.9863 4.434 4.9863 4.0717 4.9304 1.25 5. 1.25 4.95 4.3459 4.95 3.9865 4.7661 1.5 5. 1.5 4.8833 4.2105 4.8833 3.8801 4.5051 1.75 5. 1.75 4.7738 3.9994 4.7738 3.7406 4.1474 2. 5. 2. 4.5974 3.6348 4.5974 3.5423 3.6931 2.25 5. 2.25 4.2916 2.4 4.2916 3.2012 3.1421 2.5 5. 2.5 1.7997 0.95409 1.7997 2.5056 2.4944 2.75 5. 2.75 0.70836 0.56003 0.70836 1.8579 1.7988 3. 5. 3. 0.40263 0.33713 0.40263 1.3069 1.4577 3.25 5. 3.25 0.22621 0.19496 0.22621 0.8526 1.2594 3.5 5. 3.5 0.11672 0.10244 0.11672 0.49493 1.1199 3.75 5. 3.75 0.05 0.044449 0.05 0.23393 1.0135 4. 5. 4. 0.013665 0.012265 0.013665 0.0696 0.92831 4.25 5. 4.25 352.14u 318.49u 352.14u 0.0019334 0.85806 4.5 5. 4.5 6.842n 6.2274n 6.842n 40.213n 0.79877 4.75 5. 4.75 6.4196n 5.8756n 6.4196n 40.213n 0.74787 5. 5. 5. 6.0464n 5.5614n 6.0464n 40.213n 0.70357 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 100.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 200.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 300.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 400.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 500.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 600.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 700.p 5. 0. 5. 4.5801 5. 4.2964 5. 800.p 5. 0. 5. 4.5801 5. 4.2964 5. 900.p 5. 0. 5. 4.5801 5. 4.2964 5. 1.n 5. 1.f 5. 4.5801 5. 4.2964 5. 1.1n 5. 0.25 5. 4.5538 5. 4.2521 5. 1.2n 5. 0.5 5. 4.5237 5. 4.2012 5. 1.3n 5. 0.75 4.9996 4.4887 5. 4.1419 4.9981 1.4n 5. 1. 4.9863 4.434 4.9994 4.0717 4.9304 1.5n 5. 1.25 4.95 4.3459 4.9977 3.9865 4.7661 1.6n 5. 1.5 4.8833 4.2105 4.9926 3.8801 4.5051 1.7n 5. 1.75 4.7738 3.9994 4.9827 3.7406 4.1474 1.8n 5. 2. 4.5974 3.6348 4.9666 3.5423 3.6931 1.9n 5. 2.25 4.2916 2.4 4.9428 3.2012 3.1421 2.n 5. 2.5 1.7997 0.95409 4.9098 2.5056 2.4944 2.1n 5. 2.75 0.70836 0.56003 4.866 1.8579 1.7988 2.2n 5. 3. 0.40263 0.33713 4.8095 1.3069 1.4577 2.3n 5. 3.25 0.22621 0.19496 4.7384 0.8526 1.2594 2.4n 5. 3.5 0.11672 0.10244 4.6502 0.49493 1.1199 2.5n 5. 3.75 0.05 0.044449 4.5423 0.23393 1.0135 2.6n 5. 4. 0.013665 0.012265 4.412 0.0696 0.92831 2.7n 5. 4.25 352.14u 318.49u 4.2568 0.0019334 0.85806 2.8n 5. 4.5 6.842n 6.2274n 4.0765 40.213n 0.79877 2.9n 5. 4.75 6.4196n 5.8756n 3.8717 40.213n 0.74787 3.n 5. 5. 6.0464n 5.5614n 3.6426 40.213n 0.70357 3.1n 5. 5. 6.0464n 5.5614n 3.4021 40.213n 0.70357 3.2n 5. 5. 6.0464n 5.5614n 3.1687 40.213n 0.70357 3.3n 5. 5. 6.0464n 5.5614n 2.9422 40.213n 0.70357 3.4n 5. 5. 6.0464n 5.5614n 2.7239 40.213n 0.70357 3.5n 5. 5. 6.0464n 5.5614n 2.5145 40.213n 0.70357 3.6n 5. 5. 6.0464n 5.5614n 2.315 40.213n 0.70357 3.7n 5. 5. 6.0464n 5.5614n 2.1257 40.213n 0.70357 3.8n 5. 5. 6.0464n 5.5614n 1.9471 40.213n 0.70357 3.9n 5. 5. 6.0464n 5.5614n 1.7794 40.213n 0.70357 4.n 5. 5. 6.0464n 5.5614n 1.6227 40.213n 0.70357 4.1n 5. 5. 6.0464n 5.5614n 1.4768 40.213n 0.70357 4.2n 5. 5. 6.0464n 5.5614n 1.3414 40.213n 0.70357 4.3n 5. 5. 6.0464n 5.5614n 1.2164 40.213n 0.70357 4.4n 5. 5. 6.0464n 5.5614n 1.1013 40.213n 0.70357 4.5n 5. 5. 6.0464n 5.5614n 0.99558 40.213n 0.70357 4.6n 5. 5. 6.0464n 5.5614n 0.89882 40.213n 0.70357 4.7n 5. 5. 6.0464n 5.5614n 0.81047 40.213n 0.70357 4.8n 5. 5. 6.0464n 5.5614n 0.72998 40.213n 0.70357 4.9n 5. 5. 6.0464n 5.5614n 0.65682 40.213n 0.70357 5.n 5. 5. 6.0464n 5.5614n 0.59044 40.213n 0.70357 tests/==out/d_mos1.inv1.ckt.out000066400000000000000000000147501316501211100165660ustar00rootroot00000000000000.title mos1 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 0.25 5. 0.25 5. 4.5538 5. 4.2521 5. 0.5 5. 0.5 5. 4.5237 5. 4.2012 5. 0.75 5. 0.75 4.9996 4.4887 4.9996 4.1419 4.9981 1. 5. 1. 4.9863 4.434 4.9863 4.0717 4.9304 1.25 5. 1.25 4.95 4.3459 4.95 3.9865 4.7661 1.5 5. 1.5 4.8833 4.2105 4.8833 3.8801 4.5051 1.75 5. 1.75 4.7738 3.9994 4.7738 3.7406 4.1474 2. 5. 2. 4.5974 3.6348 4.5974 3.5423 3.6931 2.25 5. 2.25 4.2916 2.4 4.2916 3.2012 3.1421 2.5 5. 2.5 1.7997 0.95409 1.7997 2.5056 2.4944 2.75 5. 2.75 0.70836 0.56003 0.70836 1.8579 1.7988 3. 5. 3. 0.40263 0.33713 0.40263 1.3069 1.4577 3.25 5. 3.25 0.22621 0.19496 0.22621 0.8526 1.2594 3.5 5. 3.5 0.11672 0.10244 0.11672 0.49493 1.1199 3.75 5. 3.75 0.05 0.044449 0.05 0.23393 1.0135 4. 5. 4. 0.013665 0.012265 0.013665 0.0696 0.92831 4.25 5. 4.25 352.14u 318.49u 352.14u 0.0019334 0.85806 4.5 5. 4.5 6.842n 6.2274n 6.842n 40.213n 0.79877 4.75 5. 4.75 6.4196n 5.8756n 6.4196n 40.213n 0.74787 5. 5. 5. 6.0464n 5.5614n 6.0464n 40.213n 0.70357 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 100.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 200.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 300.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 400.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 500.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 600.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 700.p 5. 0. 5. 4.5801 5. 4.2964 5. 800.p 5. 0. 5. 4.5801 5. 4.2964 5. 900.p 5. 0. 5. 4.5801 5. 4.2964 5. 1.n 5. 1.f 5. 4.5801 5. 4.2964 5. 1.1n 5. 0.25 5. 4.5538 5. 4.2521 5. 1.2n 5. 0.5 5. 4.5237 5. 4.2012 5. 1.3n 5. 0.75 4.9996 4.4887 5. 4.1419 4.9981 1.4n 5. 1. 4.9863 4.434 4.9994 4.0717 4.9304 1.5n 5. 1.25 4.95 4.3459 4.9977 3.9865 4.7661 1.6n 5. 1.5 4.8833 4.2105 4.9926 3.8801 4.5051 1.7n 5. 1.75 4.7738 3.9994 4.9827 3.7406 4.1474 1.8n 5. 2. 4.5974 3.6348 4.9666 3.5423 3.6931 1.9n 5. 2.25 4.2916 2.4 4.9428 3.2012 3.1421 2.n 5. 2.5 1.7997 0.95409 4.9098 2.5056 2.4944 2.1n 5. 2.75 0.70836 0.56003 4.866 1.8579 1.7988 2.2n 5. 3. 0.40263 0.33713 4.8095 1.3069 1.4577 2.3n 5. 3.25 0.22621 0.19496 4.7384 0.8526 1.2594 2.4n 5. 3.5 0.11672 0.10244 4.6502 0.49493 1.1199 2.5n 5. 3.75 0.05 0.044449 4.5423 0.23393 1.0135 2.6n 5. 4. 0.013665 0.012265 4.412 0.0696 0.92831 2.7n 5. 4.25 352.14u 318.49u 4.2568 0.0019334 0.85806 2.8n 5. 4.5 6.842n 6.2274n 4.0765 40.213n 0.79877 2.9n 5. 4.75 6.4196n 5.8756n 3.8717 40.213n 0.74787 3.n 5. 5. 6.0464n 5.5614n 3.6426 40.213n 0.70357 3.1n 5. 5. 6.0464n 5.5614n 3.4021 40.213n 0.70357 3.2n 5. 5. 6.0464n 5.5614n 3.1687 40.213n 0.70357 3.3n 5. 5. 6.0464n 5.5614n 2.9422 40.213n 0.70357 3.4n 5. 5. 6.0464n 5.5614n 2.7239 40.213n 0.70357 3.5n 5. 5. 6.0464n 5.5614n 2.5145 40.213n 0.70357 3.6n 5. 5. 6.0464n 5.5614n 2.315 40.213n 0.70357 3.7n 5. 5. 6.0464n 5.5614n 2.1257 40.213n 0.70357 3.8n 5. 5. 6.0464n 5.5614n 1.9471 40.213n 0.70357 3.9n 5. 5. 6.0464n 5.5614n 1.7794 40.213n 0.70357 4.n 5. 5. 6.0464n 5.5614n 1.6227 40.213n 0.70357 4.1n 5. 5. 6.0464n 5.5614n 1.4768 40.213n 0.70357 4.2n 5. 5. 6.0464n 5.5614n 1.3414 40.213n 0.70357 4.3n 5. 5. 6.0464n 5.5614n 1.2164 40.213n 0.70357 4.4n 5. 5. 6.0464n 5.5614n 1.1013 40.213n 0.70357 4.5n 5. 5. 6.0464n 5.5614n 0.99558 40.213n 0.70357 4.6n 5. 5. 6.0464n 5.5614n 0.89882 40.213n 0.70357 4.7n 5. 5. 6.0464n 5.5614n 0.81047 40.213n 0.70357 4.8n 5. 5. 6.0464n 5.5614n 0.72998 40.213n 0.70357 4.9n 5. 5. 6.0464n 5.5614n 0.65682 40.213n 0.70357 5.n 5. 5. 6.0464n 5.5614n 0.59044 40.213n 0.70357 tests/==out/d_mos1.inv2.ckt.out000066400000000000000000000147501316501211100165670ustar00rootroot00000000000000.title mos1 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 0.25 5. 0.25 5. 4.5538 5. 4.2521 5. 0.5 5. 0.5 5. 4.5237 5. 4.2012 5. 0.75 5. 0.75 4.9996 4.4887 4.9996 4.1419 4.9981 1. 5. 1. 4.9863 4.434 4.9863 4.0717 4.9304 1.25 5. 1.25 4.95 4.3459 4.95 3.9865 4.7661 1.5 5. 1.5 4.8833 4.2105 4.8833 3.8801 4.5051 1.75 5. 1.75 4.7738 3.9994 4.7738 3.7406 4.1474 2. 5. 2. 4.5974 3.6348 4.5974 3.5423 3.6931 2.25 5. 2.25 4.2916 2.4 4.2916 3.2012 3.1421 2.5 5. 2.5 1.7997 0.95409 1.7997 2.5056 2.4944 2.75 5. 2.75 0.70836 0.56003 0.70836 1.8579 1.7988 3. 5. 3. 0.40263 0.33713 0.40263 1.3069 1.4577 3.25 5. 3.25 0.22621 0.19496 0.22621 0.8526 1.2594 3.5 5. 3.5 0.11672 0.10244 0.11672 0.49493 1.1199 3.75 5. 3.75 0.05 0.044449 0.05 0.23393 1.0135 4. 5. 4. 0.013665 0.012265 0.013665 0.0696 0.92831 4.25 5. 4.25 352.14u 318.49u 352.14u 0.0019334 0.85806 4.5 5. 4.5 6.842n 6.2274n 6.842n 40.213n 0.79877 4.75 5. 4.75 6.4196n 5.8756n 6.4196n 40.213n 0.74787 5. 5. 5. 6.0464n 5.5614n 6.0464n 40.213n 0.70357 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 100.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 200.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 300.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 400.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 500.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 600.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 700.p 5. 0. 5. 4.5801 5. 4.2964 5. 800.p 5. 0. 5. 4.5801 5. 4.2964 5. 900.p 5. 0. 5. 4.5801 5. 4.2964 5. 1.n 5. 1.f 5. 4.5801 5. 4.2964 5. 1.1n 5. 0.25 5. 4.5538 5. 4.2521 5. 1.2n 5. 0.5 5. 4.5237 5. 4.2012 5. 1.3n 5. 0.75 4.9996 4.4887 5. 4.1419 4.9981 1.4n 5. 1. 4.9863 4.434 4.9994 4.0717 4.9304 1.5n 5. 1.25 4.95 4.3459 4.9977 3.9865 4.7661 1.6n 5. 1.5 4.8833 4.2105 4.9926 3.8801 4.5051 1.7n 5. 1.75 4.7738 3.9994 4.9827 3.7406 4.1474 1.8n 5. 2. 4.5974 3.6348 4.9666 3.5423 3.6931 1.9n 5. 2.25 4.2916 2.4 4.9428 3.2012 3.1421 2.n 5. 2.5 1.7997 0.95409 4.9098 2.5056 2.4944 2.1n 5. 2.75 0.70836 0.56003 4.866 1.8579 1.7988 2.2n 5. 3. 0.40263 0.33713 4.8095 1.3069 1.4577 2.3n 5. 3.25 0.22621 0.19496 4.7384 0.8526 1.2594 2.4n 5. 3.5 0.11672 0.10244 4.6502 0.49493 1.1199 2.5n 5. 3.75 0.05 0.044449 4.5423 0.23393 1.0135 2.6n 5. 4. 0.013665 0.012265 4.412 0.0696 0.92831 2.7n 5. 4.25 352.14u 318.49u 4.2568 0.0019334 0.85806 2.8n 5. 4.5 6.842n 6.2274n 4.0765 40.213n 0.79877 2.9n 5. 4.75 6.4196n 5.8756n 3.8717 40.213n 0.74787 3.n 5. 5. 6.0464n 5.5614n 3.6426 40.213n 0.70357 3.1n 5. 5. 6.0464n 5.5614n 3.4021 40.213n 0.70357 3.2n 5. 5. 6.0464n 5.5614n 3.1687 40.213n 0.70357 3.3n 5. 5. 6.0464n 5.5614n 2.9422 40.213n 0.70357 3.4n 5. 5. 6.0464n 5.5614n 2.7239 40.213n 0.70357 3.5n 5. 5. 6.0464n 5.5614n 2.5145 40.213n 0.70357 3.6n 5. 5. 6.0464n 5.5614n 2.315 40.213n 0.70357 3.7n 5. 5. 6.0464n 5.5614n 2.1257 40.213n 0.70357 3.8n 5. 5. 6.0464n 5.5614n 1.9471 40.213n 0.70357 3.9n 5. 5. 6.0464n 5.5614n 1.7794 40.213n 0.70357 4.n 5. 5. 6.0464n 5.5614n 1.6227 40.213n 0.70357 4.1n 5. 5. 6.0464n 5.5614n 1.4768 40.213n 0.70357 4.2n 5. 5. 6.0464n 5.5614n 1.3414 40.213n 0.70357 4.3n 5. 5. 6.0464n 5.5614n 1.2164 40.213n 0.70357 4.4n 5. 5. 6.0464n 5.5614n 1.1013 40.213n 0.70357 4.5n 5. 5. 6.0464n 5.5614n 0.99558 40.213n 0.70357 4.6n 5. 5. 6.0464n 5.5614n 0.89882 40.213n 0.70357 4.7n 5. 5. 6.0464n 5.5614n 0.81047 40.213n 0.70357 4.8n 5. 5. 6.0464n 5.5614n 0.72998 40.213n 0.70357 4.9n 5. 5. 6.0464n 5.5614n 0.65682 40.213n 0.70357 5.n 5. 5. 6.0464n 5.5614n 0.59044 40.213n 0.70357 tests/==out/d_mos1.inv3.ckt.out000066400000000000000000000147501316501211100165700ustar00rootroot00000000000000.title mos1 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 0.25 5. 0.25 5. 4.5538 5. 4.2521 5. 0.5 5. 0.5 5. 4.5237 5. 4.2012 5. 0.75 5. 0.75 4.9996 4.4887 4.9996 4.1419 4.9981 1. 5. 1. 4.9863 4.434 4.9863 4.0717 4.9304 1.25 5. 1.25 4.95 4.3459 4.95 3.9865 4.7661 1.5 5. 1.5 4.8833 4.2105 4.8833 3.8801 4.5051 1.75 5. 1.75 4.7738 3.9994 4.7738 3.7406 4.1474 2. 5. 2. 4.5974 3.6348 4.5974 3.5423 3.6931 2.25 5. 2.25 4.2916 2.4 4.2916 3.2012 3.1421 2.5 5. 2.5 1.7997 0.95409 1.7997 2.5056 2.4944 2.75 5. 2.75 0.70836 0.56003 0.70836 1.8579 1.7988 3. 5. 3. 0.40263 0.33713 0.40263 1.3069 1.4577 3.25 5. 3.25 0.22621 0.19496 0.22621 0.8526 1.2594 3.5 5. 3.5 0.11672 0.10244 0.11672 0.49493 1.1199 3.75 5. 3.75 0.05 0.044449 0.05 0.23393 1.0135 4. 5. 4. 0.013665 0.012265 0.013665 0.0696 0.92831 4.25 5. 4.25 352.14u 318.49u 352.14u 0.0019334 0.85806 4.5 5. 4.5 6.842n 6.2274n 6.842n 40.213n 0.79877 4.75 5. 4.75 6.4196n 5.8756n 6.4196n 40.213n 0.74787 5. 5. 5. 6.0464n 5.5614n 6.0464n 40.213n 0.70357 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5801 5. 4.2964 5. 100.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 200.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 300.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 400.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 500.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 600.p 5. 0. 5. 4.5801 5.0001 4.2964 5. 700.p 5. 0. 5. 4.5801 5. 4.2964 5. 800.p 5. 0. 5. 4.5801 5. 4.2964 5. 900.p 5. 0. 5. 4.5801 5. 4.2964 5. 1.n 5. 1.f 5. 4.5801 5. 4.2964 5. 1.1n 5. 0.25 5. 4.5538 5. 4.2521 5. 1.2n 5. 0.5 5. 4.5237 5. 4.2012 5. 1.3n 5. 0.75 4.9996 4.4887 5. 4.1419 4.9981 1.4n 5. 1. 4.9863 4.434 4.9994 4.0717 4.9304 1.5n 5. 1.25 4.95 4.3459 4.9977 3.9865 4.7661 1.6n 5. 1.5 4.8833 4.2105 4.9926 3.8801 4.5051 1.7n 5. 1.75 4.7738 3.9994 4.9827 3.7406 4.1474 1.8n 5. 2. 4.5974 3.6348 4.9666 3.5423 3.6931 1.9n 5. 2.25 4.2916 2.4 4.9428 3.2012 3.1421 2.n 5. 2.5 1.7997 0.95409 4.9098 2.5056 2.4944 2.1n 5. 2.75 0.70836 0.56003 4.866 1.8579 1.7988 2.2n 5. 3. 0.40263 0.33713 4.8095 1.3069 1.4577 2.3n 5. 3.25 0.22621 0.19496 4.7384 0.8526 1.2594 2.4n 5. 3.5 0.11672 0.10244 4.6502 0.49493 1.1199 2.5n 5. 3.75 0.05 0.044449 4.5423 0.23393 1.0135 2.6n 5. 4. 0.013665 0.012265 4.412 0.0696 0.92831 2.7n 5. 4.25 352.14u 318.49u 4.2568 0.0019334 0.85806 2.8n 5. 4.5 6.842n 6.2274n 4.0765 40.213n 0.79877 2.9n 5. 4.75 6.4196n 5.8756n 3.8717 40.213n 0.74787 3.n 5. 5. 6.0464n 5.5614n 3.6426 40.213n 0.70357 3.1n 5. 5. 6.0464n 5.5614n 3.4021 40.213n 0.70357 3.2n 5. 5. 6.0464n 5.5614n 3.1687 40.213n 0.70357 3.3n 5. 5. 6.0464n 5.5614n 2.9422 40.213n 0.70357 3.4n 5. 5. 6.0464n 5.5614n 2.7239 40.213n 0.70357 3.5n 5. 5. 6.0464n 5.5614n 2.5145 40.213n 0.70357 3.6n 5. 5. 6.0464n 5.5614n 2.315 40.213n 0.70357 3.7n 5. 5. 6.0464n 5.5614n 2.1257 40.213n 0.70357 3.8n 5. 5. 6.0464n 5.5614n 1.9471 40.213n 0.70357 3.9n 5. 5. 6.0464n 5.5614n 1.7794 40.213n 0.70357 4.n 5. 5. 6.0464n 5.5614n 1.6227 40.213n 0.70357 4.1n 5. 5. 6.0464n 5.5614n 1.4768 40.213n 0.70357 4.2n 5. 5. 6.0464n 5.5614n 1.3414 40.213n 0.70357 4.3n 5. 5. 6.0464n 5.5614n 1.2164 40.213n 0.70357 4.4n 5. 5. 6.0464n 5.5614n 1.1013 40.213n 0.70357 4.5n 5. 5. 6.0464n 5.5614n 0.99558 40.213n 0.70357 4.6n 5. 5. 6.0464n 5.5614n 0.89882 40.213n 0.70357 4.7n 5. 5. 6.0464n 5.5614n 0.81047 40.213n 0.70357 4.8n 5. 5. 6.0464n 5.5614n 0.72998 40.213n 0.70357 4.9n 5. 5. 6.0464n 5.5614n 0.65682 40.213n 0.70357 5.n 5. 5. 6.0464n 5.5614n 0.59044 40.213n 0.70357 tests/==out/d_mos1.lin1.ckt.out000066400000000000000000000062071316501211100165520ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -833.99n 0. 0. 8.3399n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 833.99n 3.2367 0.0099992 -1.2349 1.3449 1.8918 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 442.01n 83.193u 140.81n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.698f 31.274f 0. 1.8918 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.668f 33.244f 0. -833.99n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.3392n 8.3392n 0. 833.99n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099997 0.01 -287.36n 3. 3. 0.0099993 0.01 -729.36n 4. 4. 0.0099988 0.01 -1.1713u 5. 5. 0.0099984 0.01 -1.6132u 6. 6. 0.0099979 0.01 -2.0551u 7. 7. 0.0099975 0.01 -2.497u 8. 8. 0.0099971 0.01 -2.9388u 9. 9. 0.0099966 0.01 -3.3805u 10. 10. 0.0099962 0.01 -3.8223u Vgs ( 1 0 ) DC 3.236734 M1 ( 2 1 0 4 ) cmosn l=9.u w=9.u nrd=1. nrs=1. Vds ( 3 0 ) DC 0.01 Rds ( 2 3 ) 1. Vbs ( 4 0 ) DC -1.234875 .model cmosn nmos1 ( level=1 kp=41.5964u vto=0.844345 gamma=0.863074 phi=0.6 + lambda=.01 tox=41.8n nsub=15.3142E+15 nss=1.E+12 xj=400.n uo=503.521 tpg=1 + tnom=NA( 27.) fc=0.5 pb=0.7 cj=384.4u mj=0.4884 cjsw=527.2p mjsw=0.3002 is=0 + js=0. rsh=0. rd=0. rs=0. cbd=0. cbs=0. cgso=218.971p cgdo=218.971p cgbo=0. + ld=265.073n) * vmax= 55.9035K tests/==out/d_mos1.lin1.late.ckt.out000066400000000000000000000052421316501211100174740ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -833.99n 0. 0. 8.3399n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 833.99n 3.2367 0.0099992 -1.2349 1.3449 1.8918 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 442.01n 83.193u 140.81n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.698f 31.274f 0. 1.8918 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.668f 33.244f 0. -833.99n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.3392n 8.3392n 0. 833.99n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099997 0.01 -287.36n 3. 3. 0.0099993 0.01 -729.36n 4. 4. 0.0099988 0.01 -1.1713u 5. 5. 0.0099984 0.01 -1.6132u 6. 6. 0.0099979 0.01 -2.0551u 7. 7. 0.0099975 0.01 -2.497u 8. 8. 0.0099971 0.01 -2.9388u 9. 9. 0.0099966 0.01 -3.3805u 10. 10. 0.0099962 0.01 -3.8223u tests/==out/d_mos1.lin1.none.ckt.out000066400000000000000000000052421316501211100175060ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -833.99n 0. 0. 8.3399n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 833.99n 3.2367 0.0099992 -1.2349 1.3449 1.8918 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 442.01n 83.193u 140.81n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.698f 31.274f 0. 1.8918 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.668f 33.244f 0. -833.99n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.3392n 8.3392n 0. 833.99n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099997 0.01 -287.36n 3. 3. 0.0099993 0.01 -729.36n 4. 4. 0.0099988 0.01 -1.1713u 5. 5. 0.0099984 0.01 -1.6132u 6. 6. 0.0099979 0.01 -2.0551u 7. 7. 0.0099975 0.01 -2.497u 8. 8. 0.0099971 0.01 -2.9388u 9. 9. 0.0099966 0.01 -3.3805u 10. 10. 0.0099962 0.01 -3.8223u tests/==out/d_mos1.lin2.ckt.out000066400000000000000000000052651316501211100165560ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, short channel cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099809 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -19.062u 0. 0. 190.62n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 19.062u 3.2367 0.0099809 -1.2349 1.3449 1.8918 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 10.103u 0.0019048 3.2185u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 2.7499f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 1.3841f 1.3656f 0. 1.8918 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 3.3549f 3.3364f 0. -19.062u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 190.26n 190.26n 0. 19.062u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049905 3.2317 -1.2399 -0.0049905 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099809 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099934 0.01 -6.5759u 3. 3. 0.0099833 0.01 -16.675u 4. 4. 0.0099732 0.01 -26.753u 5. 5. 0.0099632 0.01 -36.811u 6. 6. 0.0099532 0.01 -46.848u 7. 7. 0.0099431 0.01 -56.865u 8. 8. 0.0099331 0.01 -66.863u 9. 9. 0.0099232 0.01 -76.84u 10. 10. 0.0099132 0.01 -86.797u tests/==out/d_mos1.lin3.ckt.out000066400000000000000000000052461316501211100165560ustar00rootroot00000000000000nmos n gate, linear, lambda not specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -833.91n 0. 0. 8.3391n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 833.91n 3.2367 0.0099992 -1.2349 1.3449 1.8918 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 83.177u 140.8n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.698f 31.274f 0. 1.8918 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.668f 33.244f 0. -833.91n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.3384n 8.3384n 0. 833.91n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099997 0.01 -287.33n 3. 3. 0.0099993 0.01 -729.29n 4. 4. 0.0099988 0.01 -1.1712u 5. 5. 0.0099984 0.01 -1.6131u 6. 6. 0.0099979 0.01 -2.0549u 7. 7. 0.0099975 0.01 -2.4967u 8. 8. 0.0099971 0.01 -2.9385u 9. 9. 0.0099966 0.01 -3.3802u 10. 10. 0.0099962 0.01 -3.8219u tests/==out/d_mos1.lin4.ckt.out000066400000000000000000000052661316501211100165610ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, vmax specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -833.91n 0. 0. 8.3391n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 833.91n 3.2367 0.0099992 -1.2349 1.3449 1.8918 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 83.177u 140.8n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.698f 31.274f 0. 1.8918 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.668f 33.244f 0. -833.91n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.3384n 8.3384n 0. 833.91n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.0099997 0.01 -287.33n 3. 3. 0.0099993 0.01 -729.29n 4. 4. 0.0099988 0.01 -1.1712u 5. 5. 0.0099984 0.01 -1.6131u 6. 6. 0.0099979 0.01 -2.0549u 7. 7. 0.0099975 0.01 -2.4967u 8. 8. 0.0099971 0.01 -2.9385u 9. 9. 0.0099966 0.01 -3.3802u 10. 10. 0.0099962 0.01 -3.8219u tests/==out/d_mos1.lin5.ckt.out000066400000000000000000000051761316501211100165620ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, source tied to substrate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) iter(0) 27. 3.2367 0.0099989 0.01 5. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. -1.0551u 0. 10.551n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 1.0551u 3.2367 0.0099989 0. 0.84435 2.3924 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.95n 105.3u 246.22n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.531f 31.443f 0. 2.3924 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.501f 33.413f 0. -1.0551u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 10.55n 10.55n 0. 1.0551u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049995 3.2317 -0.0049995 -0.0049995 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099989 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.0099999 0.01 -66.589n 2. 2. 0.0099995 0.01 -508.56n 3. 3. 0.009999 0.01 -950.5n 4. 4. 0.0099986 0.01 -1.3924u 5. 5. 0.0099982 0.01 -1.8343u 6. 6. 0.0099977 0.01 -2.2761u 7. 7. 0.0099973 0.01 -2.7179u 8. 8. 0.0099968 0.01 -3.1596u 9. 9. 0.0099964 0.01 -3.6013u 10. 10. 0.009996 0.01 -4.043u tests/==out/d_mos1.n+1.ckt.out000066400000000000000000000001451316501211100162730ustar00rootroot00000000000000nmos same gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos1.n-1.ckt.out000066400000000000000000000001441316501211100162740ustar00rootroot00000000000000nmos opp gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos1.n0.ckt.out000066400000000000000000000001431316501211100162150ustar00rootroot00000000000000nmos al gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos1.nand1.ckt.out000066400000000000000000000162121316501211100167050ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6873 0. 265.02G 1. -2. 5. 0. 209.31Meg 0. 265.02G 2. -3. 5. 0. 5.03 0. 265.02G 3. -4. 5. 0. 5.0001 0. 265.02G 4. -5. 5. 0. 5. 0. 265.02G 5. -6. 5. 0. 5. 0. 265.02G 6. -7. 5. 0. 5. 0. 265.02G 7. -8. 5. 0. 5. 0. 265.02G 8. 27. 5. 0. 5. 0. 265.02G 9. # Cgs(XI10.Mp1) Cgd(XI10.Mp1) Cgb(XI10.Mp1) 27. 0. 0. 0. # Cgs(XI10.Mp2) Cgd(XI10.Mp2) Cgb(XI10.Mp2) 27. 0. 0. 0. # Cgs(XI10.Mn1) Cgd(XI10.Mn1) Cgb(XI10.Mn1) 27. 0. 0. 0. # Cgs(XI10.Mn2) Cgd(XI10.Mn2) Cgb(XI10.Mn2) 27. 0. 0. 0. #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 0. 9. 1.p 0. 5.0001 0. 4. 3.6757p 0. 5.0001 0. 4. 100.p 0. 5.0001 0. 4. 200.p 0. 5.0001 0. 4. 300.p 0. 5.0001 0. 4. 400.p 0. 5. 0. 4. 500.p 0. 5. 0. 4. 600.p 0. 5. 0. 4. 700.p 0. 5. 0. 4. 800.p 0. 5. 0. 4. 900.p 0. 5. 0. 4. 1.n 1.f 5. 0. 4. 1.1n 0.25 5. 0. 5. 1.2n 0.5 5. 0. 5. 1.3n 0.75 5. 0.014645 7. 1.4n 1. 4.9997 0.087868 5. 1.5n 1.25 4.9989 0.16109 5. 1.6n 1.5 4.9965 0.23431 5. 1.7n 1.75 4.9919 0.30754 5. 1.8n 2. 4.9846 0.38076 5. 1.9n 2.25 4.9738 0.45398 5. 2.n 2.5 4.9589 0.52721 5. 2.1n 2.75 4.9391 0.60043 5. 2.2n 3. 4.9135 0.67365 5. 2.3n 3.25 4.8809 0.74688 5. 2.4n 3.5 4.8402 0.8201 5. 2.5n 3.75 4.7896 0.89332 5. 2.6n 4. 4.7271 0.96655 5. 2.7n 4.25 4.6514 1.0398 5. 2.8n 4.5 4.5605 1.113 5. 2.9n 4.75 4.4575 1.1862 4. 3.n 5. 4.3416 1.2594 4. 3.1n 5. 4.2188 1.2589 4. 3.2n 5. 4.0956 1.256 4. 3.3n 5. 3.9727 1.2506 4. 3.4n 5. 3.8504 1.2429 4. 3.5n 5. 3.7288 1.2327 4. 3.6n 5. 3.6081 1.2203 4. 3.7n 5. 3.4885 1.2058 4. 3.8n 5. 3.3703 1.1892 4. 3.9n 5. 3.2534 1.1707 4. 4.n 5. 3.1382 1.1504 4. 4.1n 5. 3.0248 1.1286 4. 4.2n 5. 2.9133 1.1052 4. 4.3n 5. 2.8038 1.0806 4. 4.4n 5. 2.6965 1.0549 4. 4.5n 5. 2.5914 1.0282 4. 4.6n 5. 2.4888 1.0007 4. 4.7n 5. 2.3885 0.97256 4. 4.8n 5. 2.2908 0.94391 4. 4.9n 5. 2.1957 0.91489 4. 5.n 5. 2.1032 0.88564 4. 5.1n 5. 2.0134 0.85628 4. 5.2n 5. 1.9263 0.82694 4. 5.3n 5. 1.8419 0.79771 4. 5.4n 5. 1.7603 0.76869 4. 5.5n 5. 1.6813 0.73998 4. 5.6n 5. 1.6051 0.71164 4. 5.7n 5. 1.5315 0.68375 4. 5.8n 5. 1.4606 0.65638 4. 5.9n 5. 1.3924 0.62957 4. 6.n 5. 1.3267 0.60336 4. 6.1n 5. 1.2636 0.57781 4. 6.2n 5. 1.2031 0.55293 4. 6.3n 5. 1.1449 0.52876 4. 6.4n 5. 1.0892 0.50531 4. 6.5n 5. 1.0358 0.48259 4. 6.6n 5. 0.98464 0.46063 4. 6.7n 5. 0.93573 0.43941 4. 6.8n 5. 0.88895 0.41894 4. 6.9n 5. 0.84427 0.39922 4. 7.n 5. 0.80159 0.38025 4. 7.1n 5. 0.76086 0.36201 4. 7.2n 5. 0.72201 0.34449 4. 7.3n 5. 0.68496 0.32769 4. 7.4n 5. 0.64967 0.31158 4. 7.5n 5. 0.61605 0.29616 4. 7.6n 5. 0.58404 0.2814 4. 7.7n 5. 0.55358 0.26728 4. 7.8n 5. 0.5246 0.25379 4. 7.9n 5. 0.49705 0.24091 4. 8.n 5. 0.47086 0.22862 4. 8.1n 5. 0.44598 0.2169 4. 8.2n 5. 0.42234 0.20572 4. 8.3n 5. 0.39989 0.19507 4. 8.4n 5. 0.37858 0.18494 4. 8.5n 5. 0.35836 0.17529 4. 8.6n 5. 0.33917 0.16611 4. 8.7n 5. 0.32097 0.15738 4. 8.8n 5. 0.30372 0.14908 4. 8.9n 5. 0.28735 0.14119 4. 9.n 5. 0.27184 0.1337 4. 9.1n 5. 0.25714 0.12659 4. 9.2n 5. 0.24322 0.11984 4. 9.3n 5. 0.23002 0.11343 4. 9.4n 5. 0.21752 0.10735 4. 9.5n 5. 0.20569 0.10159 4. 9.6n 5. 0.19448 0.096118 4. 9.7n 5. 0.18388 0.090934 4. 9.8n 5. 0.17383 0.086021 4. 9.9n 5. 0.16433 0.081365 4. 10.n 5. 0.15534 0.076954 4. Gnucap System status iterations: op=9, dc=0, tran=437, fourier=0, total=585 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos1.nand2.ckt.out000066400000000000000000000162121316501211100167060ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6873 0. 265.02G 1. -2. 5. 0. 209.31Meg 0. 265.02G 2. -3. 5. 0. 5.03 0. 265.02G 3. -4. 5. 0. 5.0001 0. 265.02G 4. -5. 5. 0. 5. 0. 265.02G 5. -6. 5. 0. 5. 0. 265.02G 6. -7. 5. 0. 5. 0. 265.02G 7. -8. 5. 0. 5. 0. 265.02G 8. 27. 5. 0. 5. 0. 265.02G 9. # Cgs(XI10.Mp1) Cgd(XI10.Mp1) Cgb(XI10.Mp1) 27. 0. 0. 0. # Cgs(XI10.Mp2) Cgd(XI10.Mp2) Cgb(XI10.Mp2) 27. 0. 0. 0. # Cgs(XI10.Mn1) Cgd(XI10.Mn1) Cgb(XI10.Mn1) 27. 0. 0. 0. # Cgs(XI10.Mn2) Cgd(XI10.Mn2) Cgb(XI10.Mn2) 27. 0. 0. 0. #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 0. 9. 1.p 0. 5.0001 0. 4. 3.6757p 0. 5.0001 0. 4. 100.p 0. 5.0001 0. 4. 200.p 0. 5.0001 0. 4. 300.p 0. 5.0001 0. 4. 400.p 0. 5. 0. 4. 500.p 0. 5. 0. 4. 600.p 0. 5. 0. 4. 700.p 0. 5. 0. 4. 800.p 0. 5. 0. 4. 900.p 0. 5. 0. 4. 1.n 1.f 5. 0. 4. 1.1n 0.25 5. 0. 5. 1.2n 0.5 5. 0. 5. 1.3n 0.75 5. 0.014645 7. 1.4n 1. 4.9997 0.087868 5. 1.5n 1.25 4.9989 0.16109 5. 1.6n 1.5 4.9965 0.23431 5. 1.7n 1.75 4.9919 0.30754 5. 1.8n 2. 4.9846 0.38076 5. 1.9n 2.25 4.9738 0.45398 5. 2.n 2.5 4.9589 0.52721 5. 2.1n 2.75 4.9391 0.60043 5. 2.2n 3. 4.9135 0.67365 5. 2.3n 3.25 4.8809 0.74688 5. 2.4n 3.5 4.8402 0.8201 5. 2.5n 3.75 4.7896 0.89332 5. 2.6n 4. 4.7271 0.96655 5. 2.7n 4.25 4.6514 1.0398 5. 2.8n 4.5 4.5605 1.113 5. 2.9n 4.75 4.4575 1.1862 4. 3.n 5. 4.3416 1.2594 4. 3.1n 5. 4.2188 1.2589 4. 3.2n 5. 4.0956 1.256 4. 3.3n 5. 3.9727 1.2506 4. 3.4n 5. 3.8504 1.2429 4. 3.5n 5. 3.7288 1.2327 4. 3.6n 5. 3.6081 1.2203 4. 3.7n 5. 3.4885 1.2058 4. 3.8n 5. 3.3703 1.1892 4. 3.9n 5. 3.2534 1.1707 4. 4.n 5. 3.1382 1.1504 4. 4.1n 5. 3.0248 1.1286 4. 4.2n 5. 2.9133 1.1052 4. 4.3n 5. 2.8038 1.0806 4. 4.4n 5. 2.6965 1.0549 4. 4.5n 5. 2.5914 1.0282 4. 4.6n 5. 2.4888 1.0007 4. 4.7n 5. 2.3885 0.97256 4. 4.8n 5. 2.2908 0.94391 4. 4.9n 5. 2.1957 0.91489 4. 5.n 5. 2.1032 0.88564 4. 5.1n 5. 2.0134 0.85628 4. 5.2n 5. 1.9263 0.82694 4. 5.3n 5. 1.8419 0.79771 4. 5.4n 5. 1.7603 0.76869 4. 5.5n 5. 1.6813 0.73998 4. 5.6n 5. 1.6051 0.71164 4. 5.7n 5. 1.5315 0.68375 4. 5.8n 5. 1.4606 0.65638 4. 5.9n 5. 1.3924 0.62957 4. 6.n 5. 1.3267 0.60336 4. 6.1n 5. 1.2636 0.57781 4. 6.2n 5. 1.2031 0.55293 4. 6.3n 5. 1.1449 0.52876 4. 6.4n 5. 1.0892 0.50531 4. 6.5n 5. 1.0358 0.48259 4. 6.6n 5. 0.98464 0.46063 4. 6.7n 5. 0.93573 0.43941 4. 6.8n 5. 0.88895 0.41894 4. 6.9n 5. 0.84427 0.39922 4. 7.n 5. 0.80159 0.38025 4. 7.1n 5. 0.76086 0.36201 4. 7.2n 5. 0.72201 0.34449 4. 7.3n 5. 0.68496 0.32769 4. 7.4n 5. 0.64967 0.31158 4. 7.5n 5. 0.61605 0.29616 4. 7.6n 5. 0.58404 0.2814 4. 7.7n 5. 0.55358 0.26728 4. 7.8n 5. 0.5246 0.25379 4. 7.9n 5. 0.49705 0.24091 4. 8.n 5. 0.47086 0.22862 4. 8.1n 5. 0.44598 0.2169 4. 8.2n 5. 0.42234 0.20572 4. 8.3n 5. 0.39989 0.19507 4. 8.4n 5. 0.37858 0.18494 4. 8.5n 5. 0.35836 0.17529 4. 8.6n 5. 0.33917 0.16611 4. 8.7n 5. 0.32097 0.15738 4. 8.8n 5. 0.30372 0.14908 4. 8.9n 5. 0.28735 0.14119 4. 9.n 5. 0.27184 0.1337 4. 9.1n 5. 0.25714 0.12659 4. 9.2n 5. 0.24322 0.11984 4. 9.3n 5. 0.23002 0.11343 4. 9.4n 5. 0.21752 0.10735 4. 9.5n 5. 0.20569 0.10159 4. 9.6n 5. 0.19448 0.096118 4. 9.7n 5. 0.18388 0.090934 4. 9.8n 5. 0.17383 0.086021 4. 9.9n 5. 0.16433 0.081365 4. 10.n 5. 0.15534 0.076954 4. Gnucap System status iterations: op=9, dc=0, tran=437, fourier=0, total=585 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos1.nand3.ckt.out000066400000000000000000000056601316501211100167140ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6873 0. 265.02G 1. -2. 5. 0. 209.31Meg 0. 265.02G 2. -3. 5. 0. 5.03 0. 265.02G 3. -4. 5. 0. 5.0001 0. 265.02G 4. -5. 5. 0. 5. 0. 265.02G 5. -6. 5. 0. 5. 0. 265.02G 6. -7. 5. 0. 5. 0. 265.02G 7. -8. 5. 0. 5. 0. 265.02G 8. 27. 5. 0. 5. 0. 265.02G 9. # Cgs(XI10.Mp1) Cgd(XI10.Mp1) Cgb(XI10.Mp1) 27. 0. 0. 0. # Cgs(XI10.Mp2) Cgd(XI10.Mp2) Cgb(XI10.Mp2) 27. 0. 0. 0. # Cgs(XI10.Mn1) Cgd(XI10.Mn1) Cgb(XI10.Mn1) 27. 0. 0. 0. # Cgs(XI10.Mn2) Cgd(XI10.Mn2) Cgb(XI10.Mn2) 27. 0. 0. 0. #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 0. 9. 1.6667p 0. 5.0001 0. 16. 2.7667p 0. 5.0001 0. 4. 58.p 0. 5.0001 0. 4. 96.836p 0. 5.0001 0. 4. 135.67p 0. 5.0001 0. 4. 1.n 0. 5. 0. 4. 1.5n 1.25 4.9964 0.16109 15. 2.n 2.5 4.9563 0.52721 5. 2.5n 3.75 4.771 0.89332 5. 2.9167n 4.7917 4.4206 1.1984 5. 3.n 5. 4.3228 1.2594 4. 3.3889n 5. 3.8467 1.2426 5. 3.625n 5. 3.5574 1.2144 5. 3.8611n 5. 3.2776 1.1747 5. 4.0972n 5. 3.0067 1.1249 5. 4.6875n 5. 2.3824 0.97079 5. 5.2778n 5. 1.8456 0.79901 5. 5.8681n 5. 1.4018 0.63329 5. 6.6944n 5. 0.92778 0.43594 5. 7.5208n 5. 0.59957 0.28857 5. 8.0167n 5. 0.45858 0.22284 5. 8.5125n 5. 0.34873 0.17068 5. 9.0083n 5. 0.26439 0.1301 5. 9.5042n 5. 0.19999 0.098807 5. 10.n 5. 0.15102 0.074834 5. Gnucap System status iterations: op=9, dc=0, tran=149, fourier=0, total=224 transient timesteps: accepted=26, rejected=4, total=30 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos1.p+1.ckt.out000066400000000000000000000001451316501211100162750ustar00rootroot00000000000000pmos same gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos1.p-1.ckt.out000066400000000000000000000001441316501211100162760ustar00rootroot00000000000000pmos opp gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos1.p0.ckt.out000066400000000000000000000001431316501211100162170ustar00rootroot00000000000000pmos al gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos1.plin.ckt.out000066400000000000000000000026701316501211100166510ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. -3.2367 0.0099992 0.01 1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -839.74n 0. 0. 8.3974n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 839.74n -3.2367 0.0099992 1.2349 -1.3417 1.905 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 83.76u 141.18n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.431f 31.542f 0. 1.905 1.3417 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.402f 33.513f 0. -839.74n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.3967n 8.3967n 0. 839.74n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 -3.2417 1.2299 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 -3.2367 1.2349 0. tests/==out/d_mos1.psat1.ckt.out000066400000000000000000000037621316501211100167420ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -2.3111 -5. 0. 2. -3. -2.0351 -5. 0. 3. -4. -2.0082 -5. 0. 4. -5. -2.0079 -5. 0. 5. -6. -2.0079 -5. 0. 6. 27. -2.0079 -5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 29.921u 0. 149.6u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -29.921u 29.921u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -2.0079 -2.0079 0. 2.0079 0.84435 1.1636 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 51.43u 0. 28.652u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.004 -1.004 1.004 1.004 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -2.0079 -2.0079 0. 0. -0.84435 1.1636 tests/==out/d_mos1.psat2.ckt.out000066400000000000000000000036721316501211100167430ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -4.1501 -5. 0. 2. -3. -4.1396 -5. 0. 3. -4. -4.1395 -5. 0. 4. -5. -4.1395 -5. 0. 5. 27. -4.1395 -5. 0. 6. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 8.605u 0. 43.025u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -8.6049u 8.6049u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -4.1395 -4.1395 0. 4.1395 3.5155 0.62399 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 27.58u 0. 15.365u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -2.0698 -2.0698 2.0698 2.0698 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -4.1395 -4.1395 0. 0. -3.5155 0.62399 tests/==out/d_mos1.psat3.ckt.out000066400000000000000000000037621316501211100167440ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -3.348 -5. 0. 2. -3. -3.2468 -5. 0. 3. -4. -3.2423 -5. 0. 4. -5. -3.2423 -5. 0. 5. -6. -3.2423 -5. 0. 6. 27. -3.2423 -5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 17.577u 0. 87.887u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -17.577u 17.577u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -3.2423 -3.2423 0. 3.2423 2.3504 0.89183 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 39.419u 0. 21.961u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.6211 -1.6211 1.6211 1.6211 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -3.2423 -3.2423 0. 0. -2.3504 0.89183 tests/==out/d_mos1.sat1.ckt.out000066400000000000000000000040261316501211100165540ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. 5. 5. 0. 1. -2. 2.3111 5. 0. 2. -3. 2.0351 5. 0. 3. -4. 2.0082 5. 0. 4. -5. 2.0079 5. 0. 5. -6. 2.0079 5. 0. 6. 27. 2.0079 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -29.921u 0. 149.6u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. 29.921u -29.921u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. 2.0079 2.0079 0. -2.0079 0.84435 1.1636 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 51.43u 0. 28.652u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.004 1.004 -1.004 -1.004 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. 2.0079 2.0079 0. 0. 0.84435 1.1636 tests/==out/d_mos1.sat2.ckt.out000066400000000000000000000033371316501211100165610ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.0069 5. 629.f 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -29.931u 62.853n 149.66u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 29.931u 2.0069 2.0069 628.53f 0.84435 1.1625 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 51.384u 0. 28.627u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1625 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -29.868u 0. 62.853n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 60.068u 60.068u 0. 29.868u -62.853n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0034 1.0034 -1.0034 -1.0034 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.0069 2.0069 628.53f 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.0069 -62.853n 126.14n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 628.53f 20.E-21 0. 0. 31.93Meg 1. tests/==out/d_mos1.sat3.ckt.out000066400000000000000000000032721316501211100165600ustar00rootroot00000000000000nmos n gate, saturated, is/js default cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.0079 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -29.921u 2.7842p 149.6u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 29.921u 2.0079 2.0079 27.84E-18 0.84435 1.1636 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 51.43u 0. 28.652u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1636 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -29.921u 0. 2.7842p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 60.078u 60.078u 0. 29.921u -2.7842p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.004 1.004 -1.004 -1.004 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.0079 2.0079 27.84E-18 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.0079 -2.7842p 5.5905p 0. 721.17G -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 27.84E-18 0. 0. 0. 721.17G 1. tests/==out/d_mos1.sat4.ckt.out000066400000000000000000000033251316501211100165600ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), +body cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.4225 5. -1.2349 8. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -25.775u 153.2n 128.88u 189.19n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 25.775u 2.4225 2.4225 -1.2349 1.3449 1.0776 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 47.628u 0. 15.173u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.0776 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -25.622u 0. 153.22n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.629u 62.629u 0. 25.661u -114.54n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.2112 1.2112 -2.4461 -1.2112 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.4225 2.4225 -1.2349 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -3.6573 -114.54n 418.92n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. -1.2349 -38.674n 47.758n 0. 31.93Meg -1. tests/==out/d_mos1.sat5.ckt.out000066400000000000000000000042531316501211100165620ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), no bulk source cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) iter(0) 27. 2.0069 5. 7. # i(Vds) ps(Vds) 27. -29.931u 149.66u # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 29.931u 2.0069 2.0069 0. 0.84435 1.1625 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 51.384u 0. 28.627u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1625 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -29.868u 0. 62.853n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 60.068u 60.068u 0. 29.868u -62.853n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0034 1.0034 -1.0034 -1.0034 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.0069 2.0069 0. 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.0069 -62.853n 126.14n 0. 31.93Meg -1. .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb ... b.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) ^ ? no match .print op v(dsb ... b.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) ^ ? no match .print op v(dsb ... 1) r(dsb.m1) region(dsb.m1) ^ ? no match # 27. tests/==out/d_mos1.sat6.ckt.out000066400000000000000000000033321316501211100165600ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) no bulk cap cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.0069 5. 629.f 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -29.931u 62.853n 149.66u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 29.931u 2.0069 2.0069 628.53f 0.84435 1.1625 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 51.384u 0. 28.627u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1625 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -29.868u 0. 62.853n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 60.068u 60.068u 0. 29.868u -62.853n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0034 1.0034 -1.0034 -1.0034 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.0069 2.0069 628.53f 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.0069 -62.853n 126.14n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 628.53f 20.E-21 0. 0. 31.93Meg 1. tests/==out/d_mos1.sat7.ckt.out000066400000000000000000000024641316501211100165660ustar00rootroot00000000000000nmos n gate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) iter(0) 27. 2.0079 5. 7. # i(Vds) ps(Vds) 27. -29.921u 149.6u # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 29.921u 2.0079 2.0079 0. 0.84435 1.1636 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 51.43u 0. 28.652u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1636 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -29.921u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 60.078u 60.078u 0. 29.921u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.004 1.004 -1.004 -1.004 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.0079 2.0079 0. 0. tests/==out/d_mos1.sts.ckt.out000066400000000000000000000027071316501211100165210ustar00rootroot00000000000000nmos n gate, sub-threshold cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 0.23673 5. 5. -1.2349 4. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 0.23673 5. -1.2349 1.3449 0. # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 6. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 62.973f -1.1082 1.3449 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 1.9707f 1.9707f 62.973f 0. 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 2.5 -2.2633 -3.7349 -2.5 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 5. 0.23673 -1.2349 0. tests/==out/d_mos1.zero.ckt.out000066400000000000000000000106701316501211100166650ustar00rootroot00000000000000nmos n gate, vds = 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) gds(M1) vdsat(M1) von(M1) 0. 0. 0. 0. 0. 0. -1. 0. 0. 0. 0. 0.84435 -2. 0. 0. 22.1u 0.5 0.84435 -3. 0. 0. 105.74u 2.3924 0.84435 -4. 0. 0. 105.74u 2.3924 0.84435 27. 0. 0. 105.74u 2.3924 0.84435 # v(1) v(2) v(3) v(4) v(5) iter(0) 27. 3.2367 0. 0. 0. 3.2367 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. 0. 0.84435 2.3924 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 105.74u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.487f 31.487f 0. 2.3924 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.457f 33.457f 0. 0. 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 0. 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 0. 0. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.84956 -0.35705 10.Meg 1. 0.055373 -0.22421 100.Meg 1. 0.0027087 -0.023863 1.G 1. 0.0011942 -0.0034452 # gds(M1) cgs(M1) iter(0) 0. 118.79u 31.487f 5. 25. 106.61u 31.487f 3. 50. 96.731u 31.487f 3. 75. 88.602u 31.487f 3. 100. 81.832u 31.487f 3. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.8495 -0.35699 10.Meg 1. 0.055851 -0.22398 100.Meg 1. 0.0032554 -0.023949 1.G 1. 0.0011909 -0.0037185 #Time v(5) v(1) 0. 0. 0. 1.n 0. 0. 2.n 4. 0.029914 3.n 4. 0.088938 4.n 4. 0.14689 5.n 4. 0.20406 6.n 4. 0.2611 7.n 4. 0.32094 8.n 4. 0.38678 9.n 4. 0.46126 10.n 4. 0.54669 11.n 4. 0.62281 12.n 4. 0.69944 13.n 4. 0.77412 14.n 4. 0.84501 15.n 4. 0.91102 16.n 4. 0.96954 17.n 4. 1.0205 18.n 4. 1.0651 19.n 4. 1.1072 20.n 4. 1.1479 21.n 4. 1.188 22.n 4. 1.2275 23.n 4. 1.2667 24.n 4. 1.3056 25.n 4. 1.344 26.n 4. 1.3821 27.n 4. 1.4197 28.n 4. 1.4568 29.n 4. 1.4936 30.n 4. 1.5299 #Freq v(5) vr(1) vi(1) 1.K 1. 1. -427.77u 10.K 1. 0.99998 -0.0042776 100.K 1. 0.99816 -0.042698 1.Meg 1. 0.84466 -0.3609 10.Meg 1. 0.057156 -0.2192 100.Meg 1. 0.0064045 -0.024621 1.G 1. 794.44u -0.0043894 tests/==out/d_mos2.inv1.ckt.out000066400000000000000000000153001316501211100165570ustar00rootroot00000000000000.title mos2 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5941 5. 4.2966 5. 0.25 5. 0.25 5. 4.5687 5. 4.2523 5. 0.5 5. 0.5 5. 4.5397 5. 4.2014 5. 0.75 5. 0.75 4.9996 4.5058 4.9996 4.1421 4.9981 1. 5. 1. 4.9863 4.4525 4.9863 4.0719 4.9304 1.25 5. 1.25 4.95 4.3664 4.95 3.9868 4.766 1.5 5. 1.5 4.8833 4.2335 4.8833 3.8803 4.505 1.75 5. 1.75 4.7738 4.0264 4.7738 3.7408 4.1472 2. 5. 2. 4.5974 3.6708 4.5974 3.5426 3.6928 2.25 5. 2.25 4.2916 2.4863 4.2916 3.2017 3.1417 2.5 5. 2.5 1.7997 0.96441 1.7997 2.5062 2.4938 2.75 5. 2.75 0.70836 0.56397 0.70836 1.8583 1.7983 3. 5. 3. 0.40263 0.33902 0.40263 1.3072 1.4574 3.25 5. 3.25 0.22621 0.19589 0.22621 0.85279 1.2592 3.5 5. 3.5 0.11672 0.10288 0.11672 0.49504 1.1197 3.75 5. 3.75 0.05 0.044621 0.05 0.23399 1.0132 4. 5. 4. 0.013665 0.012309 0.013665 0.069615 0.92812 4.25 5. 4.25 352.14u 319.55u 352.14u 0.0019338 0.85788 4.5 5. 4.5 6.6046n 6.0301n 6.6046n 38.826n 0.79861 4.75 5. 4.75 6.1969n 5.6885n 6.1969n 38.826n 0.74772 5. 5. 5. 5.8366n 5.3834n 5.8366n 38.826n 0.70343 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5941 5. 4.2966 5. 100.p 5. -598.f 5. 4.5941 5.0001 4.2966 5. 200.p 5. 593.f 5. 4.5941 5.0001 4.2966 5. 300.p 5. -597.f 5. 4.5941 5.0001 4.2966 5. 400.p 5. 593.f 5. 4.5941 5.0001 4.2966 5. 500.p 5. -597.f 5. 4.5941 5.0001 4.2966 5. 600.p 5. 593.f 5. 4.5941 5. 4.2966 5. 700.p 5. -596.f 5. 4.5941 5. 4.2966 5. 800.p 5. 594.f 5. 4.5941 5. 4.2966 5. 900.p 5. -596.f 5. 4.5941 5. 4.2966 5. 1.n 5. 595.f 5. 4.5941 5. 4.2966 5. 1.1n 5. 0.25 5.0036 4.5726 5.0002 4.2564 5. 1.2n 5. 0.5 5.0001 4.5398 5.0004 4.2016 5. 1.3n 5. 0.75 5.0037 4.5103 5.0005 4.1469 4.9981 1.4n 5. 1. 4.9868 4.4532 5.0001 4.0723 4.9304 1.5n 5. 1.25 4.9551 4.3723 4.9985 3.9926 4.766 1.6n 5. 1.5 4.8847 4.2354 4.9933 3.8813 4.505 1.7n 5. 1.75 4.7811 4.0359 4.9832 3.7489 4.1472 1.8n 5. 2. 4.6014 3.6774 4.9667 3.5447 3.6928 1.9n 5. 2.25 4.3076 2.5396 4.9423 3.2158 3.1417 2.n 5. 2.5 3.3831 0.98029 4.9084 2.4993 2.4938 2.1n 5. 2.75 0.76532 0.57075 4.8633 1.8652 1.8068 2.2n 5. 3. 0.38105 0.34487 4.8052 1.3004 1.4629 2.3n 5. 3.25 0.25336 0.19927 4.7319 0.8596 1.2644 2.4n 5. 3.5 0.10213 0.10647 4.641 0.48823 1.1232 2.5n 5. 3.75 0.068749 0.046829 4.5295 0.2408 1.0168 2.6n 5. 4. 0.0023751 0.014893 4.3947 0.062805 0.93073 2.7n 5. 4.25 0.014863 0.0019397 4.234 0.0087439 0.86066 2.8n 5. 4.5 -0.0091904 0.0020795 4.0472 -0.0068101 0.80071 2.9n 5. 4.75 0.01204 0.001447 3.8351 0.0068101 0.75 3.n 5. 5. -0.0075557 0.0018432 3.5981 -0.0068101 0.7052 3.1n 5. 5. 0.0073605 -0.0017956 3.35 0.0068101 0.70171 3.2n 5. 5. -0.0071459 0.0018432 3.1098 -0.0068101 0.7052 3.3n 5. 5. 0.0069606 -0.0018881 2.8775 0.0068101 0.70161 3.4n 5. 5. -0.0067582 0.0019357 2.6542 -0.0068101 0.70529 3.5n 5. 5. 0.0065825 -0.0019829 2.4408 0.0068101 0.70152 3.6n 5. 5. -0.0063916 0.0020329 2.2381 -0.0068101 0.70539 3.7n 5. 5. 0.0062248 -0.0020824 2.0467 0.0068101 0.70142 3.8n 5. 5. -0.0060449 0.002135 1.8669 -0.0068101 0.70549 3.9n 5. 5. 0.0058867 -0.0021869 1.6988 0.0068101 0.70132 4.n 5. 5. -0.0057169 0.0022422 1.5423 -0.0068101 0.7056 4.1n 5. 5. 0.0055669 -0.0022967 1.3974 0.0068101 0.70121 4.2n 5. 5. -0.0054068 0.0023548 1.2637 -0.0068101 0.70559 4.3n 5. 5. 0.0052645 -0.002412 1.1408 0.0068101 0.70132 4.4n 5. 5. -0.0051134 0.0024731 1.0281 -0.0068101 0.70559 4.5n 5. 5. 0.0049785 -0.0025331 0.92522 0.0068101 0.70121 4.6n 5. 5. -0.004836 0.00247 0.8315 -0.0068101 0.70559 4.7n 5. 5. 0.0047081 -0.002406 0.74635 0.0068101 0.70133 4.8n 5. 5. -0.0045736 0.00247 0.66918 -0.0068101 0.70559 4.9n 5. 5. 0.0044524 -0.0025298 0.59939 0.0068101 0.70122 5.n 5. 5. -0.0043254 0.0024668 0.53638 -0.0068101 0.70559 Gnucap System status iterations: op=9, dc=148, tran=273, fourier=0, total=483 transient timesteps: accepted=53, rejected=0, total=53 nodes: user=7, subckt=0, model=0, total=7 dctran density=59.2%, ac density=59.2% tests/==out/d_mos2.lin1.ckt.out000066400000000000000000000063161316501211100165540ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -847.7n 0. 0. 8.477n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 847.7n 3.2367 0.0099992 -1.2349 1.5263 1.5205 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 442.01n 84.498u 133.8n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.556f 31.417f 0. 1.7104 1.5263 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.527f 33.388f 0. -847.7n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4763n 8.4763n 0. 847.7n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -7.8342n 2. 2. 0.0099997 0.01 -301.07n 3. 3. 0.0099993 0.01 -743.07n 4. 4. 0.0099989 0.01 -1.1464u 5. 5. 0.0099985 0.01 -1.4888u 6. 6. 0.0099982 0.01 -1.8162u 7. 7. 0.0099979 0.01 -2.1324u 8. 8. 0.0099976 0.01 -2.4397u 9. 9. 0.0099973 0.01 -2.7395u 10. 10. 0.009997 0.01 -3.033u Vgs ( 1 0 ) DC 3.236734 M1 ( 2 1 0 4 ) cmosn l=9.u w=9.u nrd=1. nrs=1. Vds ( 3 0 ) DC 0.01 Rds ( 2 3 ) 1. Vbs ( 4 0 ) DC -1.234875 .model cmosn nmos2 ( level=2 kp=41.5964u nfs=3.5934E+12 neff=1.001 + ucrit=161.166K uexp=0.163917 delta=0.36745 vto=0.844345 gamma=0.863074 + phi=0.6 lambda=.01 tox=41.8n nsub=15.3142E+15 nss=1.E+12 xj=400.n uo=503.521 + tpg=1 tnom=NA( 27.) fc=0.5 pb=0.7 cj=384.4u mj=0.4884 cjsw=527.2p mjsw=0.3002 + is=0 js=0. rsh=0. rd=0. rs=0. cbd=0. cbs=0. cgso=218.971p cgdo=218.971p + cgbo=0. ld=265.073n) * vmax= 55.9035K tests/==out/d_mos2.lin1.late.ckt.out000066400000000000000000000052421316501211100174750ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -847.7n 0. 0. 8.477n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 847.7n 3.2367 0.0099992 -1.2349 1.5263 1.5205 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 442.01n 84.498u 133.8n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.556f 31.417f 0. 1.7104 1.5263 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.527f 33.388f 0. -847.7n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4763n 8.4763n 0. 847.7n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -7.8342n 2. 2. 0.0099997 0.01 -301.07n 3. 3. 0.0099993 0.01 -743.07n 4. 4. 0.0099989 0.01 -1.1464u 5. 5. 0.0099985 0.01 -1.4888u 6. 6. 0.0099982 0.01 -1.8162u 7. 7. 0.0099979 0.01 -2.1324u 8. 8. 0.0099976 0.01 -2.4397u 9. 9. 0.0099973 0.01 -2.7395u 10. 10. 0.009997 0.01 -3.033u tests/==out/d_mos2.lin1r.ckt.out000066400000000000000000000052421316501211100167330ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 -0.0099991 -0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 853.46n 0. 0. 8.5346n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. -853.46n 3.2367 -0.0099991 -1.2349 1.5233 1.5304 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 442.01n 85.074u 134.17n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.418f 31.555f 0. 1.7235 1.5233 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.389f 33.526f 0. 853.46n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.5338n 8.5338n 0. 853.46n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -0.0049996 3.2417 -1.2299 0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. -0.0099991 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. -0.01 -0.01 0. -9. -9. -0.01 -0.01 0. -8. -8. -0.01 -0.01 0. -7. -7. -0.01 -0.01 0. -6. -6. -0.01 -0.01 0. -5. -5. -0.01 -0.01 0. -4. -4. -0.01 -0.01 0. -3. -3. -0.01 -0.01 0. -2. -2. -0.01 -0.01 0. -1. -1. -0.01 -0.01 0. 0. 0. -0.01 -0.01 0. 1. 1. -0.01 -0.01 8.3284n 2. 2. -0.0099997 -0.01 306.83n 3. 3. -0.0099993 -0.01 748.83n 4. 4. -0.0099988 -0.01 1.151u 5. 5. -0.0099985 -0.01 1.4931u 6. 6. -0.0099982 -0.01 1.8204u 7. 7. -0.0099979 -0.01 2.1365u 8. 8. -0.0099976 -0.01 2.4436u 9. 9. -0.0099973 -0.01 2.7434u 10. 10. -0.009997 -0.01 3.0368u tests/==out/d_mos2.lin1z.ckt.out000066400000000000000000000052421316501211100167430ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0. 0. -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. -1.2349 1.5263 1.5205 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 85.056u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.487f 31.487f 0. 1.7104 1.5263 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.457f 33.457f 0. 0. 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 -1.2349 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0. 0. 0. -9. -9. 0. 0. 0. -8. -8. 0. 0. 0. -7. -7. 0. 0. 0. -6. -6. 0. 0. 0. -5. -5. 0. 0. 0. -4. -4. 0. 0. 0. -3. -3. 0. 0. 0. -2. -2. 0. 0. 0. -1. -1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 2. 2. 0. 0. 0. 3. 3. 0. 0. 0. 4. 4. 0. 0. 0. 5. 5. 0. 0. 0. 6. 6. 0. 0. 0. 7. 7. 0. 0. 0. 8. 8. 0. 0. 0. 9. 9. 0. 0. 0. 10. 10. 0. 0. 0. tests/==out/d_mos2.lin2.ckt.out000066400000000000000000000052651316501211100165570ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, short channel cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099463 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -53.69u 0. 0. 536.9n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 53.69u 3.2367 0.0099463 -1.2349 0.64031 2.6457 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 12.688u 0.0053929 -1.1585u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 2.7499f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 1.3767f 1.3732f 0. 2.5964 0.64031 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 3.3474f 3.3439f 0. -53.69u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 534.02n 534.02n 0. 53.69u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049732 3.2318 -1.2398 -0.0049732 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099463 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 -1.4674n 0. 0. 0.0099998 0.01 -202.6n 1. 1. 0.009987 0.01 -13.029u 2. 2. 0.0099662 0.01 -33.803u 3. 3. 0.0099494 0.01 -50.641u 4. 4. 0.0099372 0.01 -62.767u 5. 5. 0.0099267 0.01 -73.339u 6. 6. 0.0099171 0.01 -82.867u 7. 7. 0.0099083 0.01 -91.655u 8. 8. 0.0099001 0.01 -99.893u 9. 9. 0.0098923 0.01 -107.71u 10. 10. 0.0098848 0.01 -115.18u tests/==out/d_mos2.lin3.ckt.out000066400000000000000000000052461316501211100165570ustar00rootroot00000000000000nmos n gate, linear, lambda not specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099991 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -872.5n 0. 0. 8.725n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 872.5n 3.2367 0.0099991 -1.2349 1.5263 1.5205 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 452.51n 86.964u 137.18n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.556f 31.417f 0. 1.7104 1.5263 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.527f 33.388f 0. -872.5n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.7242n 8.7242n 0. 872.5n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099991 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -8.1063n 2. 2. 0.0099997 0.01 -311.04n 3. 3. 0.0099992 0.01 -765.32n 4. 4. 0.0099988 0.01 -1.1776u 5. 5. 0.0099985 0.01 -1.5257u 6. 6. 0.0099981 0.01 -1.8578u 7. 7. 0.0099978 0.01 -2.1777u 8. 8. 0.0099975 0.01 -2.488u 9. 9. 0.0099972 0.01 -2.7905u 10. 10. 0.0099969 0.01 -3.0864u tests/==out/d_mos2.lin4.ckt.out000066400000000000000000000052661316501211100165620ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, vmax specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -847.61n 0. 0. 8.4761n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 847.61n 3.2367 0.0099992 -1.2349 1.5263 1.3965 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 380.68n 84.571u 119.67n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.562f 31.411f 0. 1.7104 1.5263 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.533f 33.382f 0. -847.61n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4754n 8.4754n 0. 847.61n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -7.8335n 2. 2. 0.0099997 0.01 -301.04n 3. 3. 0.0099993 0.01 -742.99n 4. 4. 0.0099989 0.01 -1.1463u 5. 5. 0.0099985 0.01 -1.4886u 6. 6. 0.0099982 0.01 -1.816u 7. 7. 0.0099979 0.01 -2.1322u 8. 8. 0.0099976 0.01 -2.4394u 9. 9. 0.0099973 0.01 -2.7392u 10. 10. 0.009997 0.01 -3.0327u tests/==out/d_mos2.lin5.ckt.out000066400000000000000000000051761316501211100165630ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, source tied to substrate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) iter(0) 27. 3.2367 0.0099989 0.01 5. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. -1.0757u 0. 10.757n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 1.0757u 3.2367 0.0099989 0. 1.0523 1.7556 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 365.34n 107.24u 195.64n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.547f 31.427f 0. 2.1844 1.0523 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.517f 33.397f 0. -1.0757u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 10.756n 10.756n 0. 1.0757u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049995 3.2317 -0.0049995 -0.0049995 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099989 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 -813.88p 1. 1. 0.0099999 0.01 -76.574n 2. 2. 0.0099995 0.01 -529.13n 3. 3. 0.009999 0.01 -982.49n 4. 4. 0.0099987 0.01 -1.3477u 5. 5. 0.0099983 0.01 -1.6876u 6. 6. 0.009998 0.01 -2.0135u 7. 7. 0.0099977 0.01 -2.3286u 8. 8. 0.0099974 0.01 -2.6351u 9. 9. 0.0099971 0.01 -2.9342u 10. 10. 0.0099968 0.01 -3.2272u tests/==out/d_mos2.n+1.ckt.out000066400000000000000000000001451316501211100162740ustar00rootroot00000000000000nmos same gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos2.n-1.ckt.out000066400000000000000000000001441316501211100162750ustar00rootroot00000000000000nmos opp gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos2.n0.ckt.out000066400000000000000000000001431316501211100162160ustar00rootroot00000000000000nmos al gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos2.nand1.ckt.out000066400000000000000000000162121316501211100167060ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6873 0. 100.K 1. -2. 5. 0. 216.83Meg 0. 100.K 2. -3. 5. 0. 5.0289 0. 100.K 3. -4. 5. 0. 5.0001 0. 100.K 4. -5. 5. 0. 5. 0. 100.K 5. -6. 5. 0. 5. 0. 100.K 6. -7. 5. 0. 5. 0. 100.K 7. -8. 5. 0. 5. 0. 100.K 8. 27. 5. 0. 5. 0. 100.K 9. # Cgs(XI10.Mp1) Cgd(XI10.Mp1) Cgb(XI10.Mp1) 27. 795.3E-18 828.8E-18 0. # Cgs(XI10.Mp2) Cgd(XI10.Mp2) Cgb(XI10.Mp2) 27. 795.3E-18 828.8E-18 0. # Cgs(XI10.Mn1) Cgd(XI10.Mn1) Cgb(XI10.Mn1) 27. 0. 0. 1.6575f # Cgs(XI10.Mn2) Cgd(XI10.Mn2) Cgb(XI10.Mn2) 27. 0. 0. 1.6575f #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 0. 9. 1.p 1.591p 5.0001 0. 4. 3.6757p 1.177p 5.0001 0. 4. 100.p -1.196p 5.0001 0. 4. 200.p 1.178p 5.0001 0. 4. 300.p -1.192p 5. 0. 4. 400.p 1.181p 5. 0. 4. 500.p -1.19p 5. 0. 4. 600.p 1.183p 5. 0. 4. 700.p -1.188p 5. 0. 4. 800.p 1.184p 5. 0. 4. 900.p -1.187p 5. 0. 4. 1.n 1.186p 5. 0. 4. 1.1n 0.25 5.0004 0. 5. 1.2n 0.5 5.0007 0.064263 6. 1.3n 0.75 5.0009 0.12565 6. 1.4n 1. 5.0009 0.12302 7. 1.5n 1.25 5.0004 0.16498 6. 1.6n 1.5 4.9982 0.23929 5. 1.7n 1.75 4.9936 0.30673 5. 1.8n 2. 4.9862 0.38058 5. 1.9n 2.25 4.9752 0.45125 5. 2.n 2.5 4.96 0.52487 5. 2.1n 2.75 4.9397 0.59664 5. 2.2n 3. 4.9135 0.67014 5. 2.3n 3.25 4.8801 0.74241 5. 2.4n 3.5 4.8382 0.81585 5. 2.5n 3.75 4.786 0.88839 5. 2.6n 4. 4.7214 0.96178 5. 2.7n 4.25 4.643 1.0345 5. 2.8n 4.5 4.5484 1.1079 5. 2.9n 4.75 4.4413 1.1807 4. 3.n 5. 4.3208 1.254 4. 3.1n 5. 4.193 1.2491 4. 3.2n 5. 4.0648 1.2494 5. 3.3n 5. 3.9371 1.2396 5. 3.4n 5. 3.8099 1.2343 5. 3.5n 5. 3.6837 1.2197 5. 3.6n 5. 3.5585 1.2092 5. 3.7n 5. 3.4347 1.1902 4. 3.8n 5. 3.3123 1.1751 4. 3.9n 5. 3.1916 1.1523 4. 4.n 5. 3.0727 1.1331 4. 4.1n 5. 2.9559 1.1071 4. 4.2n 5. 2.8412 1.0846 4. 4.3n 5. 2.7289 1.0561 4. 4.4n 5. 2.6189 1.031 4. 4.5n 5. 2.5115 1.0007 4. 4.6n 5. 2.4068 0.97374 4. 4.7n 5. 2.3048 0.94231 4. 4.8n 5. 2.2055 0.9142 4. 4.9n 5. 2.1091 0.88226 4. 5.n 5. 2.0156 0.8536 4. 5.1n 5. 1.925 0.82169 4. 5.2n 5. 1.8374 0.79302 4. 5.3n 5. 1.7527 0.76159 4. 5.4n 5. 1.6709 0.73336 4. 5.5n 5. 1.5921 0.70279 4. 5.6n 5. 1.5161 0.67535 4. 5.7n 5. 1.4431 0.64595 4. 5.8n 5. 1.3729 0.61958 4. 5.9n 5. 1.3055 0.59156 4. 6.n 5. 1.2408 0.56647 4. 6.1n 5. 1.1788 0.53998 4. 6.2n 5. 1.1195 0.51632 4. 6.3n 5. 1.0627 0.49145 4. 6.4n 5. 1.0084 0.46929 4. 6.5n 5. 0.95653 0.44609 4. 6.6n 5. 0.90701 0.42547 4. 6.7n 5. 0.85977 0.40395 4. 6.8n 5. 0.81473 0.38488 4. 6.9n 5. 0.77181 0.365 4. 7.n 5. 0.73094 0.34745 4. 7.1n 5. 0.69205 0.32918 4. 7.2n 5. 0.65505 0.3131 4. 7.3n 5. 0.61988 0.29636 4. 7.4n 5. 0.58645 0.28168 4. 7.5n 5. 0.55471 0.2664 4. 7.6n 5. 0.52457 0.25305 4. 7.7n 5. 0.49597 0.23914 4. 7.8n 5. 0.46883 0.22703 4. 7.9n 5. 0.4431 0.2144 4. 8.n 5. 0.41871 0.20345 4. 8.1n 5. 0.3956 0.19201 4. 8.2n 5. 0.37371 0.18214 4. 8.3n 5. 0.35297 0.17178 4. 8.4n 5. 0.33334 0.1629 4. 8.5n 5. 0.31476 0.15356 4. 8.6n 5. 0.29718 0.14558 4. 8.7n 5. 0.28055 0.13715 4. 8.8n 5. 0.26482 0.13 4. 8.9n 5. 0.24994 0.12242 4. 9.n 5. 0.23588 0.11602 4. 9.1n 5. 0.22258 0.1092 4. 9.2n 5. 0.21002 0.10348 4. 9.3n 5. 0.19815 0.097349 4. 9.4n 5. 0.18694 0.092246 4. 9.5n 5. 0.17634 0.086743 4. 9.6n 5. 0.16634 0.082195 4. 9.7n 5. 0.1569 0.077389 4. 9.8n 5. 0.14799 0.073228 4. 9.9n 5. 0.13957 0.068899 4. 10.n 5. 0.13163 0.065214 4. Gnucap System status iterations: op=9, dc=0, tran=445, fourier=0, total=593 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos2.p+1.ckt.out000066400000000000000000000001451316501211100162760ustar00rootroot00000000000000pmos same gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos2.p-1.ckt.out000066400000000000000000000001441316501211100162770ustar00rootroot00000000000000pmos opp gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos2.p0.ckt.out000066400000000000000000000001431316501211100162200ustar00rootroot00000000000000pmos al gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos2.plin.ckt.out000066400000000000000000000026701316501211100166520ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. -3.2367 0.0099991 0.01 1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -878.4n 0. 0. 8.784n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 878.4n -3.2367 0.0099991 1.2349 -1.5233 1.5304 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 452.48n 87.554u 137.56n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.418f 31.555f 0. 1.7235 1.5233 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.389f 33.526f 0. -878.4n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.7832n 8.7832n 0. 878.4n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 -3.2417 1.2299 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099991 -3.2367 1.2349 0. tests/==out/d_mos2.psat1.ckt.out000066400000000000000000000037621316501211100167430ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -4.9582 -5. 0. 1. -2. -2.3546 -5. 0. 2. -3. -2.1742 -5. 0. 3. -4. -2.1636 -5. 0. 4. -5. -2.1636 -5. 0. 5. -6. -2.1636 -5. 0. 6. 27. -2.1636 -5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 28.364u 0. 141.82u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -28.364u 28.364u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -2.1636 -2.1636 0. 2.1636 1.0461 0.94266 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 43.291u 248.15n 17.74u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.0818 -1.0818 1.0818 1.0818 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -2.1636 -2.1636 0. 0. -1.0461 1.1174 tests/==out/d_mos2.psat2.ckt.out000066400000000000000000000036021316501211100167350ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -4.2057 -5. 0. 2. -3. -4.2056 -5. 0. 3. -4. -4.2056 -5. 0. 4. 27. -4.2056 -5. 0. 5. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 7.9442u 0. 39.721u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -7.9442u 7.9442u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -4.2056 -4.2056 0. 4.2056 3.7141 0.48653 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 22.655u 74.136n 10.302u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -2.1028 -2.1028 2.1028 2.1028 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -4.2056 -4.2056 0. 0. -3.7141 0.49143 tests/==out/d_mos2.psat3.ckt.out000066400000000000000000000037621316501211100167450ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -3.3951 -5. 0. 2. -3. -3.3523 -5. 0. 3. -4. -3.3516 -5. 0. 4. -5. -3.3516 -5. 0. 5. -6. -3.3516 -5. 0. 6. 27. -3.3516 -5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 16.484u 0. 82.421u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -16.484u 16.484u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -3.3516 -3.3516 0. 3.3516 2.5502 0.70995 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 32.858u 144.77n 14.145u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.6758 -1.6758 1.6758 1.6758 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -3.3516 -3.3516 0. 0. -2.5502 0.80133 tests/==out/d_mos2.sat1.ckt.out000066400000000000000000000040261316501211100165550ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. 4.9582 5. 0. 1. -2. 2.3546 5. 0. 2. -3. 2.1742 5. 0. 3. -4. 2.1636 5. 0. 4. -5. 2.1636 5. 0. 5. -6. 2.1636 5. 0. 6. 27. 2.1636 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.364u 0. 141.82u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. 28.364u -28.364u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. 2.1636 2.1636 0. -2.1636 1.0461 0.94266 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 43.291u 248.15n 17.74u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0818 1.0818 -1.0818 -1.0818 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. 2.1636 2.1636 0. 0. 1.0461 1.1174 tests/==out/d_mos2.sat2.ckt.out000066400000000000000000000033371316501211100165620ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.1623 5. 677.f 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.377u 67.72n 141.88u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.377u 2.1623 2.1623 677.2f 1.0461 0.94171 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 43.247u 247.78n 17.726u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1162 1.0461 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.309u 0. 67.72n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.36u 61.36u 0. 28.309u -67.72n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0812 1.0812 -1.0812 -1.0812 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1623 2.1623 677.2f 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1623 -67.72n 146.43n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 677.2f 21.E-21 0. 0. 31.93Meg 1. tests/==out/d_mos2.sat3.ckt.out000066400000000000000000000032721316501211100165610ustar00rootroot00000000000000nmos n gate, saturated, is/js default cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.1636 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.364u 3.0001p 141.82u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.364u 2.1636 2.1636 30.E-18 1.0461 0.94266 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 43.291u 248.15n 17.74u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1174 1.0461 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.364u 0. 3.0001p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.368u 61.368u 0. 28.364u -3.0001p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0818 1.0818 -1.0818 -1.0818 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1636 2.1636 30.E-18 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1636 -3.0001p 6.491p 0. 721.17G -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 30.E-18 0. 0. 0. 721.17G 1. tests/==out/d_mos2.sat4.ckt.out000066400000000000000000000033251316501211100165610ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), +body cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.4867 5. -1.2349 8. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -25.133u 155.2n 125.67u 191.65n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 25.133u 2.4867 2.4867 -1.2349 1.5185 0.92457 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 42.535u 240.73n 11.532u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 0.96815 1.5185 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -24.978u 0. 155.23n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.69u 62.69u 0. 25.017u -116.55n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.2433 1.2433 -2.4782 -1.2433 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.4867 2.4867 -1.2349 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -3.7216 -116.55n 433.76n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. -1.2349 -38.674n 47.758n 0. 31.93Meg -1. tests/==out/d_mos2.sat5.ckt.out000066400000000000000000000042531316501211100165630ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), no bulk source cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) iter(0) 27. 2.1623 5. 7. # i(Vds) ps(Vds) 27. -28.377u 141.88u # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.377u 2.1623 2.1623 0. 1.0461 0.94171 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 43.247u 247.78n 17.726u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1162 1.0461 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.309u 0. 67.72n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.36u 61.36u 0. 28.309u -67.72n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0812 1.0812 -1.0812 -1.0812 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1623 2.1623 0. 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1623 -67.72n 146.43n 0. 31.93Meg -1. .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb ... b.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) ^ ? no match .print op v(dsb ... b.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) ^ ? no match .print op v(dsb ... 1) r(dsb.m1) region(dsb.m1) ^ ? no match # 27. tests/==out/d_mos2.sat6.ckt.out000066400000000000000000000033321316501211100165610ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) no bulk cap cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.1623 5. 677.f 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.377u 67.72n 141.88u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.377u 2.1623 2.1623 677.2f 1.0461 0.94171 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 43.247u 247.78n 17.726u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1162 1.0461 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.309u 0. 67.72n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.36u 61.36u 0. 28.309u -67.72n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0812 1.0812 -1.0812 -1.0812 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1623 2.1623 677.2f 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1623 -67.72n 146.43n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 677.2f 21.E-21 0. 0. 31.93Meg 1. tests/==out/d_mos2.sat7.ckt.out000066400000000000000000000024641316501211100165670ustar00rootroot00000000000000nmos n gate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) iter(0) 27. 2.1685 5. 7. # i(Vds) ps(Vds) 27. -28.315u 141.58u # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.315u 2.1685 2.1685 0. 1.0461 0.89728 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 42.753u 541.38n 17.55u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1223 1.0461 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.315u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.401u 61.401u 0. 28.315u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0842 1.0842 -1.0842 -1.0842 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1685 2.1685 0. 0. tests/==out/d_mos2.sts.ckt.out000066400000000000000000000027071316501211100165220ustar00rootroot00000000000000nmos n gate, sub-threshold cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 0.23673 4.9998 5. -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 2.1066n 0.23673 4.9998 -1.2349 1.5134 0.16435 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 9.8472n 63.329p 2.6873n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 5. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 62.973f -1.2767 1.5134 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 1.9707f 1.9707f 62.973f -2.1066n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 10.533n 10.533n 0. 2.1066n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 2.4999 -2.2632 -3.7348 -2.4999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 4.9998 0.23673 -1.2349 0. tests/==out/d_mos2.zero.ckt.out000066400000000000000000000060201316501211100166600ustar00rootroot00000000000000nmos n gate, vds = 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) gds(M1) vdsat(M1) von(M1) 0. 0. 0. 0. 0. 0. -1. 0. 0. 84.322n 0.14481 1.0524 -2. 0. 0. 32.888u 0.49041 1.0524 -3. 0. 0. 107.92u 1.7555 1.0524 -4. 0. 0. 107.92u 1.7555 1.0524 27. 0. 0. 107.92u 1.7555 1.0524 # v(1) v(2) v(3) v(4) v(5) iter(0) 27. 3.2367 0. 0. 0. 3.2367 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. 0. 1.0524 1.7555 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 107.92u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.487f 31.487f 0. 2.1844 1.0524 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.457f 33.457f 0. 0. 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 0. 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 0. 0. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.84956 -0.35705 10.Meg 1. 0.055339 -0.22423 100.Meg 1. 0.0026696 -0.023858 1.G 1. 0.0011918 -0.0034234 # gds(M1) cgs(M1) iter(0) 0. 121.67u 31.487f 5. 25. 108.84u 31.487f 3. 50. 98.418u 31.487f 3. 75. 89.834u 31.487f 3. 100. 82.672u 31.487f 3. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.8495 -0.35699 10.Meg 1. 0.05583 -0.22399 100.Meg 1. 0.0032316 -0.023945 1.G 1. 0.0011922 -0.0037079 tests/==out/d_mos3.inv1.ckt.out000066400000000000000000000153001316501211100165600ustar00rootroot00000000000000.title mos3 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5941 5. 4.2966 5. 0.25 5. 0.25 5. 4.5687 5. 4.2523 5. 0.5 5. 0.5 5. 4.5397 5. 4.2014 5. 0.75 5. 0.75 4.9996 4.5058 4.9996 4.1421 4.9981 1. 5. 1. 4.9863 4.4525 4.9863 4.0719 4.9304 1.25 5. 1.25 4.95 4.3664 4.95 3.9868 4.766 1.5 5. 1.5 4.8833 4.2335 4.8833 3.8803 4.505 1.75 5. 1.75 4.7738 4.0264 4.7738 3.7408 4.1472 2. 5. 2. 4.5974 3.6708 4.5974 3.5426 3.6928 2.25 5. 2.25 4.2916 2.4863 4.2916 3.2017 3.1417 2.5 5. 2.5 1.7997 0.96441 1.7997 2.5062 2.4938 2.75 5. 2.75 0.70836 0.56397 0.70836 1.8583 1.7983 3. 5. 3. 0.40263 0.33902 0.40263 1.3072 1.4574 3.25 5. 3.25 0.22621 0.19589 0.22621 0.85279 1.2592 3.5 5. 3.5 0.11672 0.10288 0.11672 0.49504 1.1197 3.75 5. 3.75 0.05 0.044621 0.05 0.23399 1.0132 4. 5. 4. 0.013665 0.012309 0.013665 0.069615 0.92812 4.25 5. 4.25 352.14u 319.55u 352.14u 0.0019338 0.85788 4.5 5. 4.5 6.6046n 6.0301n 6.6046n 38.826n 0.79861 4.75 5. 4.75 6.1969n 5.6885n 6.1969n 38.826n 0.74772 5. 5. 5. 5.8366n 5.3834n 5.8366n 38.826n 0.70343 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.5941 5. 4.2966 5. 100.p 5. -598.f 5. 4.5941 5.0001 4.2966 5. 200.p 5. 593.f 5. 4.5941 5.0001 4.2966 5. 300.p 5. -597.f 5. 4.5941 5.0001 4.2966 5. 400.p 5. 593.f 5. 4.5941 5.0001 4.2966 5. 500.p 5. -597.f 5. 4.5941 5.0001 4.2966 5. 600.p 5. 593.f 5. 4.5941 5. 4.2966 5. 700.p 5. -596.f 5. 4.5941 5. 4.2966 5. 800.p 5. 594.f 5. 4.5941 5. 4.2966 5. 900.p 5. -596.f 5. 4.5941 5. 4.2966 5. 1.n 5. 595.f 5. 4.5941 5. 4.2966 5. 1.1n 5. 0.25 5.0036 4.5726 5.0002 4.2564 5. 1.2n 5. 0.5 5.0001 4.5398 5.0004 4.2016 5. 1.3n 5. 0.75 5.0037 4.5103 5.0005 4.1469 4.9981 1.4n 5. 1. 4.9868 4.4532 5.0001 4.0723 4.9304 1.5n 5. 1.25 4.9551 4.3723 4.9985 3.9926 4.766 1.6n 5. 1.5 4.8847 4.2354 4.9933 3.8813 4.505 1.7n 5. 1.75 4.7811 4.0359 4.9832 3.7489 4.1472 1.8n 5. 2. 4.6014 3.6774 4.9667 3.5447 3.6928 1.9n 5. 2.25 4.3076 2.5396 4.9423 3.2158 3.1417 2.n 5. 2.5 3.3831 0.98029 4.9084 2.4993 2.4938 2.1n 5. 2.75 0.76532 0.57075 4.8633 1.8652 1.8068 2.2n 5. 3. 0.38105 0.34487 4.8052 1.3004 1.4629 2.3n 5. 3.25 0.25336 0.19927 4.7319 0.8596 1.2644 2.4n 5. 3.5 0.10213 0.10647 4.641 0.48823 1.1232 2.5n 5. 3.75 0.068749 0.046829 4.5295 0.2408 1.0168 2.6n 5. 4. 0.0023751 0.014893 4.3947 0.062805 0.93073 2.7n 5. 4.25 0.014863 0.0019397 4.234 0.0087439 0.86066 2.8n 5. 4.5 -0.0091904 0.0020795 4.0472 -0.0068101 0.80071 2.9n 5. 4.75 0.01204 0.001447 3.8351 0.0068101 0.75 3.n 5. 5. -0.0075557 0.0018432 3.5981 -0.0068101 0.7052 3.1n 5. 5. 0.0073605 -0.0017956 3.35 0.0068101 0.70171 3.2n 5. 5. -0.0071459 0.0018432 3.1098 -0.0068101 0.7052 3.3n 5. 5. 0.0069606 -0.0018881 2.8775 0.0068101 0.70161 3.4n 5. 5. -0.0067582 0.0019357 2.6542 -0.0068101 0.70529 3.5n 5. 5. 0.0065825 -0.0019829 2.4408 0.0068101 0.70152 3.6n 5. 5. -0.0063916 0.0020329 2.2381 -0.0068101 0.70539 3.7n 5. 5. 0.0062248 -0.0020824 2.0467 0.0068101 0.70142 3.8n 5. 5. -0.0060449 0.002135 1.8669 -0.0068101 0.70549 3.9n 5. 5. 0.0058867 -0.0021869 1.6988 0.0068101 0.70132 4.n 5. 5. -0.0057169 0.0022422 1.5423 -0.0068101 0.7056 4.1n 5. 5. 0.0055669 -0.0022967 1.3974 0.0068101 0.70121 4.2n 5. 5. -0.0054068 0.0023548 1.2637 -0.0068101 0.70559 4.3n 5. 5. 0.0052645 -0.002412 1.1408 0.0068101 0.70132 4.4n 5. 5. -0.0051134 0.0024731 1.0281 -0.0068101 0.70559 4.5n 5. 5. 0.0049785 -0.0025331 0.92522 0.0068101 0.70121 4.6n 5. 5. -0.004836 0.00247 0.8315 -0.0068101 0.70559 4.7n 5. 5. 0.0047081 -0.002406 0.74635 0.0068101 0.70133 4.8n 5. 5. -0.0045736 0.00247 0.66918 -0.0068101 0.70559 4.9n 5. 5. 0.0044524 -0.0025298 0.59939 0.0068101 0.70122 5.n 5. 5. -0.0043254 0.0024668 0.53638 -0.0068101 0.70559 Gnucap System status iterations: op=9, dc=148, tran=273, fourier=0, total=483 transient timesteps: accepted=53, rejected=0, total=53 nodes: user=7, subckt=0, model=0, total=7 dctran density=59.2%, ac density=59.2% tests/==out/d_mos3.lin1.ckt.out000066400000000000000000000062631316501211100165560ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -842.71n 0. 0. 8.4271n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 842.71n 3.2367 0.0099992 -1.2349 1.5384 1.6452 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 84.022u 136.98n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.551f 31.423f 0. 1.6984 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.521f 33.393f 0. -842.71n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4264n 8.4264n 0. 842.71n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -7.461n 2. 2. 0.0099997 0.01 -296.14n 3. 3. 0.0099993 0.01 -738.09n 4. 4. 0.0099988 0.01 -1.18u 5. 5. 0.0099984 0.01 -1.6219u 6. 6. 0.0099979 0.01 -2.0637u 7. 7. 0.0099975 0.01 -2.5055u 8. 8. 0.0099971 0.01 -2.9473u 9. 9. 0.0099966 0.01 -3.389u 10. 10. 0.0099962 0.01 -3.8307u Vgs ( 1 0 ) DC 3.236734 M1 ( 2 1 0 4 ) cmosn l=9.u w=9.u nrd=1. nrs=1. Vds ( 3 0 ) DC 0.01 Rds ( 2 3 ) 1. Vbs ( 4 0 ) DC -1.234875 .model cmosn nmos3 ( level=3 kp=41.5964u nfs=3.5934E+12 theta=0. eta=0. + kappa=0.2 delta=0.36745 vto=0.844345 gamma=0.863074 phi=0.6 tox=41.8n + nsub=15.3142E+15 nss=1.E+12 xj=400.n uo=503.521 tpg=1 tnom=NA( 27.) fc=0.5 + pb=0.7 cj=384.4u mj=0.4884 cjsw=527.2p mjsw=0.3002 is=0 js=0. rsh=0. rd=0. + rs=0. cbd=0. cbs=0. cgso=218.971p cgdo=218.971p cgbo=0. ld=265.073n) * vmax= 55.9035K tests/==out/d_mos3.lin1r.ckt.out000066400000000000000000000052421316501211100167340ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 -0.0099992 -0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 848.51n 0. 0. 8.4851n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. -848.51n 3.2367 -0.0099992 -1.2349 1.5353 1.6559 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 84.601u 137.36n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.423f 31.55f 0. 1.7114 1.5353 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.394f 33.521f 0. 848.51n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4843n 8.4843n 0. 848.51n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -0.0049996 3.2417 -1.2299 0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. -0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. -0.01 -0.01 0. -9. -9. -0.01 -0.01 0. -8. -8. -0.01 -0.01 0. -7. -7. -0.01 -0.01 0. -6. -6. -0.01 -0.01 0. -5. -5. -0.01 -0.01 0. -4. -4. -0.01 -0.01 0. -3. -3. -0.01 -0.01 0. -2. -2. -0.01 -0.01 0. -1. -1. -0.01 -0.01 0. 0. 0. -0.01 -0.01 0. 1. 1. -0.01 -0.01 7.9337n 2. 2. -0.0099997 -0.01 301.93n 3. 3. -0.0099993 -0.01 743.89n 4. 4. -0.0099988 -0.01 1.1858u 5. 5. -0.0099984 -0.01 1.6277u 6. 6. -0.0099979 -0.01 2.0695u 7. 7. -0.0099975 -0.01 2.5113u 8. 8. -0.009997 -0.01 2.9531u 9. 9. -0.0099966 -0.01 3.3948u 10. 10. -0.0099962 -0.01 3.8365u tests/==out/d_mos3.lin1z.ckt.out000066400000000000000000000052421316501211100167440ustar00rootroot00000000000000nmos n gate, linear, lambda specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0. 0. -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. -1.2349 1.5384 1.6452 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 84.535u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.487f 31.487f 0. 1.6984 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.457f 33.457f 0. 0. 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 -1.2349 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0. 0. 0. -9. -9. 0. 0. 0. -8. -8. 0. 0. 0. -7. -7. 0. 0. 0. -6. -6. 0. 0. 0. -5. -5. 0. 0. 0. -4. -4. 0. 0. 0. -3. -3. 0. 0. 0. -2. -2. 0. 0. 0. -1. -1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 2. 2. 0. 0. 0. 3. 3. 0. 0. 0. 4. 4. 0. 0. 0. 5. 5. 0. 0. 0. 6. 6. 0. 0. 0. 7. 7. 0. 0. 0. 8. 8. 0. 0. 0. 9. 9. 0. 0. 0. 10. 10. 0. 0. 0. tests/==out/d_mos3.lin2.ckt.out000066400000000000000000000052651316501211100165600ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, short channel cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099729 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -27.101u 0. 0. 271.01n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 27.101u 3.2367 0.0099729 -1.2349 0.75545 2.546 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 10.095u 0.0027122 -510.67n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 2.7499f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 1.3767f 1.3731f 0. 2.4813 0.75545 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 3.3475f 3.3439f 0. -27.101u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 270.28n 270.28n 0. 27.101u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049864 3.2317 -1.2399 -0.0049864 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099729 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 -458.39p 0. 0. 0.0099999 0.01 -55.195n 1. 1. 0.0099955 0.01 -4.5326u 2. 2. 0.0099854 0.01 -14.635u 3. 3. 0.0099753 0.01 -24.718u 4. 4. 0.0099652 0.01 -34.78u 5. 5. 0.0099552 0.01 -44.821u 6. 6. 0.0099452 0.01 -54.843u 7. 7. 0.0099352 0.01 -64.844u 8. 8. 0.0099252 0.01 -74.825u 9. 9. 0.0099152 0.01 -84.786u 10. 10. 0.0099053 0.01 -94.728u tests/==out/d_mos3.lin3.ckt.out000066400000000000000000000052461316501211100165600ustar00rootroot00000000000000nmos n gate, linear, lambda not specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -842.71n 0. 0. 8.4271n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 842.71n 3.2367 0.0099992 -1.2349 1.5384 1.6452 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 84.022u 136.98n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.551f 31.423f 0. 1.6984 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.521f 33.393f 0. -842.71n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4264n 8.4264n 0. 842.71n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -7.461n 2. 2. 0.0099997 0.01 -296.14n 3. 3. 0.0099993 0.01 -738.09n 4. 4. 0.0099988 0.01 -1.18u 5. 5. 0.0099984 0.01 -1.6219u 6. 6. 0.0099979 0.01 -2.0637u 7. 7. 0.0099975 0.01 -2.5055u 8. 8. 0.0099971 0.01 -2.9473u 9. 9. 0.0099966 0.01 -3.389u 10. 10. 0.0099962 0.01 -3.8307u tests/==out/d_mos3.lin4.ckt.out000066400000000000000000000052661316501211100165630ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, vmax specified cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099992 0.01 -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -841.82n 0. 0. 8.4182n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 841.82n 3.2367 0.0099992 -1.2349 1.5384 1.5024 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.49n 83.843u 136.84n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.557f 31.416f 0. 1.6984 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.527f 33.387f 0. -841.82n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4175n 8.4175n 0. 841.82n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 3.2317 -1.2399 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 -7.4532n 2. 2. 0.0099997 0.01 -295.83n 3. 3. 0.0099993 0.01 -737.31n 4. 4. 0.0099988 0.01 -1.1788u 5. 5. 0.0099984 0.01 -1.6202u 6. 6. 0.0099979 0.01 -2.0615u 7. 7. 0.0099975 0.01 -2.5029u 8. 8. 0.0099971 0.01 -2.9442u 9. 9. 0.0099966 0.01 -3.3854u 10. 10. 0.0099962 0.01 -3.8266u tests/==out/d_mos3.lin5.ckt.out000066400000000000000000000051761316501211100165640ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, source tied to substrate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) iter(0) 27. 3.2367 0.0099989 0.01 5. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. -1.0584u 0. 10.584n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 1.0584u 3.2367 0.0099989 0. 1.0559 1.8746 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.95n 105.57u 240.64n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.543f 31.43f 0. 2.1809 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.513f 33.401f 0. -1.0584u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 10.583n 10.583n 0. 1.0584u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049995 3.2317 -0.0049995 -0.0049995 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099989 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 -784.44p 1. 1. 0.0099999 0.01 -73.378n 2. 2. 0.0099995 0.01 -511.84n 3. 3. 0.009999 0.01 -953.77n 4. 4. 0.0099986 0.01 -1.3957u 5. 5. 0.0099982 0.01 -1.8375u 6. 6. 0.0099977 0.01 -2.2793u 7. 7. 0.0099973 0.01 -2.7211u 8. 8. 0.0099968 0.01 -3.1629u 9. 9. 0.0099964 0.01 -3.6046u 10. 10. 0.009996 0.01 -4.0462u tests/==out/d_mos3.n+1.ckt.out000066400000000000000000000001451316501211100162750ustar00rootroot00000000000000nmos same gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos3.n-1.ckt.out000066400000000000000000000001441316501211100162760ustar00rootroot00000000000000nmos opp gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos3.n0.ckt.out000066400000000000000000000001431316501211100162170ustar00rootroot00000000000000nmos al gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos3.nand1.ckt.out000066400000000000000000000162121316501211100167070ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6873 0. 100.K 1. -2. 5. 0. 216.83Meg 0. 100.K 2. -3. 5. 0. 5.0289 0. 100.K 3. -4. 5. 0. 5.0001 0. 100.K 4. -5. 5. 0. 5. 0. 100.K 5. -6. 5. 0. 5. 0. 100.K 6. -7. 5. 0. 5. 0. 100.K 7. -8. 5. 0. 5. 0. 100.K 8. 27. 5. 0. 5. 0. 100.K 9. # Cgs(XI10.Mp1) Cgd(XI10.Mp1) Cgb(XI10.Mp1) 27. 795.3E-18 828.8E-18 0. # Cgs(XI10.Mp2) Cgd(XI10.Mp2) Cgb(XI10.Mp2) 27. 795.3E-18 828.8E-18 0. # Cgs(XI10.Mn1) Cgd(XI10.Mn1) Cgb(XI10.Mn1) 27. 0. 0. 1.6575f # Cgs(XI10.Mn2) Cgd(XI10.Mn2) Cgb(XI10.Mn2) 27. 0. 0. 1.6575f #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 0. 9. 1.p 1.591p 5.0001 0. 4. 3.6757p 1.177p 5.0001 0. 4. 100.p -1.196p 5.0001 0. 4. 200.p 1.178p 5.0001 0. 4. 300.p -1.192p 5. 0. 4. 400.p 1.181p 5. 0. 4. 500.p -1.19p 5. 0. 4. 600.p 1.183p 5. 0. 4. 700.p -1.188p 5. 0. 4. 800.p 1.184p 5. 0. 4. 900.p -1.187p 5. 0. 4. 1.n 1.186p 5. 0. 4. 1.1n 0.25 5.0004 0. 5. 1.2n 0.5 5.0007 0.064263 6. 1.3n 0.75 5.0009 0.12565 6. 1.4n 1. 5.0009 0.12302 7. 1.5n 1.25 5.0004 0.16498 6. 1.6n 1.5 4.9982 0.23929 5. 1.7n 1.75 4.9936 0.30673 5. 1.8n 2. 4.9862 0.38058 5. 1.9n 2.25 4.9752 0.45125 5. 2.n 2.5 4.96 0.52487 5. 2.1n 2.75 4.9397 0.59664 5. 2.2n 3. 4.9135 0.67014 5. 2.3n 3.25 4.8801 0.74241 5. 2.4n 3.5 4.8382 0.81585 5. 2.5n 3.75 4.786 0.88839 5. 2.6n 4. 4.7214 0.96178 5. 2.7n 4.25 4.643 1.0345 5. 2.8n 4.5 4.5484 1.1079 5. 2.9n 4.75 4.4413 1.1807 4. 3.n 5. 4.3208 1.254 4. 3.1n 5. 4.193 1.2491 4. 3.2n 5. 4.0648 1.2494 5. 3.3n 5. 3.9371 1.2396 5. 3.4n 5. 3.8099 1.2343 5. 3.5n 5. 3.6837 1.2197 5. 3.6n 5. 3.5585 1.2092 5. 3.7n 5. 3.4347 1.1902 4. 3.8n 5. 3.3123 1.1751 4. 3.9n 5. 3.1916 1.1523 4. 4.n 5. 3.0727 1.1331 4. 4.1n 5. 2.9559 1.1071 4. 4.2n 5. 2.8412 1.0846 4. 4.3n 5. 2.7289 1.0561 4. 4.4n 5. 2.6189 1.031 4. 4.5n 5. 2.5115 1.0007 4. 4.6n 5. 2.4068 0.97374 4. 4.7n 5. 2.3048 0.94231 4. 4.8n 5. 2.2055 0.9142 4. 4.9n 5. 2.1091 0.88226 4. 5.n 5. 2.0156 0.8536 4. 5.1n 5. 1.925 0.82169 4. 5.2n 5. 1.8374 0.79302 4. 5.3n 5. 1.7527 0.76159 4. 5.4n 5. 1.6709 0.73336 4. 5.5n 5. 1.5921 0.70279 4. 5.6n 5. 1.5161 0.67535 4. 5.7n 5. 1.4431 0.64595 4. 5.8n 5. 1.3729 0.61958 4. 5.9n 5. 1.3055 0.59156 4. 6.n 5. 1.2408 0.56647 4. 6.1n 5. 1.1788 0.53998 4. 6.2n 5. 1.1195 0.51632 4. 6.3n 5. 1.0627 0.49145 4. 6.4n 5. 1.0084 0.46929 4. 6.5n 5. 0.95653 0.44609 4. 6.6n 5. 0.90701 0.42547 4. 6.7n 5. 0.85977 0.40395 4. 6.8n 5. 0.81473 0.38488 4. 6.9n 5. 0.77181 0.365 4. 7.n 5. 0.73094 0.34745 4. 7.1n 5. 0.69205 0.32918 4. 7.2n 5. 0.65505 0.3131 4. 7.3n 5. 0.61988 0.29636 4. 7.4n 5. 0.58645 0.28168 4. 7.5n 5. 0.55471 0.2664 4. 7.6n 5. 0.52457 0.25305 4. 7.7n 5. 0.49597 0.23914 4. 7.8n 5. 0.46883 0.22703 4. 7.9n 5. 0.4431 0.2144 4. 8.n 5. 0.41871 0.20345 4. 8.1n 5. 0.3956 0.19201 4. 8.2n 5. 0.37371 0.18214 4. 8.3n 5. 0.35297 0.17178 4. 8.4n 5. 0.33334 0.1629 4. 8.5n 5. 0.31476 0.15356 4. 8.6n 5. 0.29718 0.14558 4. 8.7n 5. 0.28055 0.13715 4. 8.8n 5. 0.26482 0.13 4. 8.9n 5. 0.24994 0.12242 4. 9.n 5. 0.23588 0.11602 4. 9.1n 5. 0.22258 0.1092 4. 9.2n 5. 0.21002 0.10348 4. 9.3n 5. 0.19815 0.097349 4. 9.4n 5. 0.18694 0.092246 4. 9.5n 5. 0.17634 0.086743 4. 9.6n 5. 0.16634 0.082195 4. 9.7n 5. 0.1569 0.077389 4. 9.8n 5. 0.14799 0.073228 4. 9.9n 5. 0.13957 0.068899 4. 10.n 5. 0.13163 0.065214 4. Gnucap System status iterations: op=9, dc=0, tran=445, fourier=0, total=593 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos3.p+1.ckt.out000066400000000000000000000001451316501211100162770ustar00rootroot00000000000000pmos same gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos3.p-1.ckt.out000066400000000000000000000001441316501211100163000ustar00rootroot00000000000000pmos opp gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos3.p0.ckt.out000066400000000000000000000001431316501211100162210ustar00rootroot00000000000000pmos al gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos3.plin.ckt.out000066400000000000000000000026701316501211100166530ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. -3.2367 0.0099992 0.01 1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -848.51n 0. 0. 8.4851n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 848.51n -3.2367 0.0099992 1.2349 -1.5353 1.6559 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 84.601u 137.36n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.423f 31.55f 0. 1.7114 1.5353 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.394f 33.521f 0. -848.51n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4843n 8.4843n 0. 848.51n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 -3.2417 1.2299 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 -3.2367 1.2349 0. tests/==out/d_mos3.psat1.ckt.out000066400000000000000000000037621316501211100167440ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -4.9599 -5. 0. 1. -2. -2.2749 -5. 0. 2. -3. -2.1248 -5. 0. 3. -4. -2.1176 -5. 0. 4. -5. -2.1176 -5. 0. 5. -6. -2.1176 -5. 0. 6. 27. -2.1176 -5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 28.824u 0. 144.12u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -28.824u 28.824u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -2.1176 -2.1176 0. 2.1176 1.0559 1.0009 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 44.801u 212.71n 19.29u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.0588 -1.0588 1.0588 1.0588 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -2.1176 -2.1176 0. 0. -1.0559 1.0617 tests/==out/d_mos3.psat2.ckt.out000066400000000000000000000036721316501211100167450ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -4.1851 -5. 0. 2. -3. -4.1842 -5. 0. 3. -4. -4.1842 -5. 0. 4. -5. -4.1842 -5. 0. 5. 27. -4.1842 -5. 0. 6. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 8.1582u 0. 40.791u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -8.1581u 8.1581u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -4.1842 -4.1842 0. 4.1842 3.727 0.5289 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 24.058u 33.725n 11.66u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -2.0921 -2.0921 2.0921 2.0921 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -4.1842 -4.1842 0. 0. -3.727 0.45714 tests/==out/d_mos3.psat3.ckt.out000066400000000000000000000036721316501211100167460ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -3.3496 -5. 0. 2. -3. -3.3175 -5. 0. 3. -4. -3.3171 -5. 0. 4. -5. -3.3171 -5. 0. 5. 27. -3.3171 -5. 0. 6. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 16.829u 0. 84.146u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -16.829u 16.829u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -3.3171 -3.3171 0. 3.3171 2.562 0.76152 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 34.441u 82.794n 15.772u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.6585 -1.6585 1.6585 1.6585 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -3.3171 -3.3171 0. 0. -2.562 0.75511 tests/==out/d_mos3.sat000.ckt.out000066400000000000000000000005161316501211100167150ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 >>>>>.print op v(nodes) iter(0) cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict >>>>>.op cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) v(4) iter(0) 27. 2.2 2.2 0. 5. tests/==out/d_mos3.sat007.ckt.out000066400000000000000000000006121316501211100167210ustar00rootroot00000000000000nmos n gate >>>>>.print op v(nodes) iter(0) gm(m1) gds(m1) gmb(m1) cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict >>>>>.op cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) iter(0) gm(M1) gds(M1) gmb(M1) new max = 5, new limit = 5.5 27. 2.1802 5. 7. 39.934u 55.086n 17.198u tests/==out/d_mos3.sat1.ckt.out000066400000000000000000000026321316501211100165570ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) v(4) iter(0) 27. 2.1176 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.824u 0. 144.12u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.824u 2.1176 2.1176 0. 1.0559 1.0009 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 44.801u 212.71n 19.29u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.0617 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.824u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.037u 61.037u 0. 28.824u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0588 1.0588 -1.0588 -1.0588 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1176 2.1176 0. 0. tests/==out/d_mos3.sat2.ckt.out000066400000000000000000000033371316501211100165630ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.1164 5. 663.f 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.836u 66.281n 144.18u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.836u 2.1164 2.1164 662.81f 1.0559 0.99992 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 44.759u 212.33n 19.277u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.0605 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.77u 0. 66.281n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.028u 61.028u 0. 28.77u -66.281n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0582 1.0582 -1.0582 -1.0582 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1164 2.1164 662.81f 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1164 -66.281n 140.27n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 662.81f 21.E-21 0. 0. 31.93Meg 1. tests/==out/d_mos3.sat3.ckt.out000066400000000000000000000032721316501211100165620ustar00rootroot00000000000000nmos n gate, saturated, is/js default cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.1176 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.824u 2.9363p 144.12u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.824u 2.1176 2.1176 29.36E-18 1.0559 1.0009 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 44.801u 212.71n 19.29u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.0617 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.824u 0. 2.9363p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.037u 61.037u 0. 28.824u -2.9363p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0588 1.0588 -1.0588 -1.0588 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1176 2.1176 29.36E-18 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1176 -2.9363p 6.2177p 0. 721.17G -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 29.36E-18 0. 0. 0. 721.17G 1. tests/==out/d_mos3.sat4.ckt.out000066400000000000000000000033251316501211100165620ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), +body cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.4654 5. -1.2349 8. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -25.346u 154.54n 126.73u 190.84n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 25.346u 2.4654 2.4654 -1.2349 1.5384 0.98169 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 44.078u 161.93n 12.743u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 0.927 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -25.192u 0. 154.56n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.679u 62.679u 0. 25.23u -115.89n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.2327 1.2327 -2.4676 -1.2327 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.4654 2.4654 -1.2349 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -3.7002 -115.89n 428.81n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. -1.2349 -38.674n 47.758n 0. 31.93Meg -1. tests/==out/d_mos3.sat5.ckt.out000066400000000000000000000042531316501211100165640ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), no bulk source cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) iter(0) 27. 2.1164 5. 7. # i(Vds) ps(Vds) 27. -28.836u 144.18u # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.836u 2.1164 2.1164 0. 1.0559 0.99992 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 44.759u 212.33n 19.277u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.0605 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.77u 0. 66.281n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.028u 61.028u 0. 28.77u -66.281n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0582 1.0582 -1.0582 -1.0582 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1164 2.1164 0. 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1164 -66.281n 140.27n 0. 31.93Meg -1. .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(d ^ ? no match .print op v(dsb ... b.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) ^ ? no match .print op v(dsb ... b.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) ^ ? no match .print op v(dsb ... 1) r(dsb.m1) region(dsb.m1) ^ ? no match # 27. tests/==out/d_mos3.sat6.ckt.out000066400000000000000000000033321316501211100165620ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) no bulk cap cmosn: rsh - rs - rd conflict: using rsh # v(2) v(3) v(4) iter(0) 27. 2.1164 5. 663.f 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -28.836u 66.281n 144.18u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.836u 2.1164 2.1164 662.81f 1.0559 0.99992 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 44.759u 212.33n 19.277u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.0605 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.77u 0. 66.281n # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.028u 61.028u 0. 28.77u -66.281n ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0582 1.0582 -1.0582 -1.0582 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1164 2.1164 662.81f 0. # v(M1.Ddb) i(M1.Ddb) p(M1.Ddb) cap(M1.Ddb) r(M1.Ddb) region(M1.Ddb) 27. -2.1164 -66.281n 140.27n 0. 31.93Meg -1. # v(M1.Dsb) i(M1.Dsb) p(M1.Dsb) cap(M1.Dsb) r(M1.Dsb) region(M1.Dsb) 27. 662.81f 21.E-21 0. 0. 31.93Meg 1. tests/==out/d_mos3.sat7.ckt.out000066400000000000000000000024641316501211100165700ustar00rootroot00000000000000nmos n gate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) iter(0) 27. 2.1802 5. 7. # i(Vds) ps(Vds) 27. -28.198u 140.99u # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 28.198u 2.1802 2.1802 0. 1.0559 0.99132 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 39.934u 55.086n 17.198u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 41.982f 0. 0. 1.1243 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 43.953f 0. 0. -28.198u 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.477u 61.477u 0. 28.198u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.0901 1.0901 -1.0901 -1.0901 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.1802 2.1802 0. 0. tests/==out/d_mos3.sts.ckt.out000066400000000000000000000027071316501211100165230ustar00rootroot00000000000000nmos n gate, sub-threshold cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 0.23673 4.9998 5. -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 2.0729n 0.23673 4.9998 -1.2349 1.5384 0.18427 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 9.6704n 7.4992p 3.077n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 5. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 62.973f -1.3016 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 1.9707f 1.9707f 62.973f -2.0729n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 10.364n 10.364n 0. 2.0729n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 2.4999 -2.2632 -3.7348 -2.4999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 4.9998 0.23673 -1.2349 0. tests/==out/d_mos3.sts000.ckt.out000066400000000000000000000005541316501211100167410ustar00rootroot00000000000000nmos n gate, sub-threshold >>>>>.print op v(nodes) iter(0) cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict >>>>>.op cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) new max = 5, new limit = 5.5 27. 0.23673 4.9998 5. -1.2349 5. tests/==out/d_mos3.zero.ckt.out000066400000000000000000000060201316501211100166610ustar00rootroot00000000000000nmos n gate, vds = 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) gds(M1) vdsat(M1) von(M1) 0. 0. 0. 0. 0. 0. -1. 0. 0. 80.784n 0.17201 1.0559 -2. 0. 0. 31.839u 0.56236 1.0559 -3. 0. 0. 106.13u 1.8746 1.0559 -4. 0. 0. 106.13u 1.8746 1.0559 27. 0. 0. 106.13u 1.8746 1.0559 # v(1) v(2) v(3) v(4) v(5) iter(0) 27. 3.2367 0. 0. 0. 3.2367 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. 0. 1.0559 1.8746 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 106.13u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.487f 31.487f 0. 2.1809 1.0559 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.457f 33.457f 0. 0. 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 0. 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 0. 0. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.84956 -0.35705 10.Meg 1. 0.055366 -0.22421 100.Meg 1. 0.0027016 -0.023862 1.G 1. 0.0011938 -0.0034413 # gds(M1) cgs(M1) iter(0) 0. 119.28u 31.487f 5. 25. 107.01u 31.487f 3. 50. 97.056u 31.487f 3. 75. 88.868u 31.487f 3. 100. 82.049u 31.487f 3. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.8495 -0.35699 10.Meg 1. 0.055845 -0.22399 100.Meg 1. 0.0032492 -0.023948 1.G 1. 0.0011913 -0.0037158 tests/==out/d_mos4.1.ckt.out000066400000000000000000000035061316501211100160510ustar00rootroot00000000000000Test of MOS BSIM1 implementation; DC transfer curve # I(V1) I(V2) I(V3) I(V4) I(V5) 0. 0. 0. 0. 0. 0. 0.2 0. 0. 0. 0. 0. 0.4 0. 0. 0. 0. 0. 0.6 3.2634n 0. 0. 0. 0. 0.8 324.07n 0. 0. 0. 0. 1. 3.0983u 857.65p 0. 0. 0. 1.2 6.3104u 146.13n 0. 0. 0. 1.4 9.4193u 2.5054u 14.679n 0. 0. 1.6 12.442u 5.7153u 1.0697u 8.6361n 0. 1.8 15.383u 8.8086u 4.4008u 968.95n 20.597n 2. 18.245u 11.817u 7.4983u 4.2572u 1.6509u 2.2 21.031u 14.743u 10.51u 7.3256u 4.8219u 2.4 23.744u 17.591u 13.44u 10.31u 7.8414u 2.6 26.387u 20.364u 16.292u 13.213u 10.779u 2.8 28.962u 23.065u 19.069u 16.04u 13.638u 3. 31.473u 25.696u 21.773u 18.792u 16.422u 3.2 33.922u 28.261u 24.408u 21.473u 19.134u 3.4 36.31u 30.761u 26.975u 24.086u 21.776u 3.6 38.64u 33.199u 29.479u 26.633u 24.351u 3.8 40.915u 35.578u 31.921u 29.116u 26.862u 4. 43.136u 37.899u 34.303u 31.538u 29.311u 4.2 45.305u 40.165u 36.627u 33.901u 31.7u 4.4 47.423u 42.377u 38.896u 36.208u 34.031u 4.6 49.493u 44.538u 41.111u 38.459u 36.307u 4.8 51.517u 46.648u 43.275u 40.658u 38.529u 5. 53.495u 48.711u 45.389u 42.806u 40.7u tests/==out/d_mos4.2.ckt.out000066400000000000000000000035061316501211100160520ustar00rootroot00000000000000Test of MOS BSIM1 implementation; DC transfer curve # I(V1) I(V2) I(V3) I(V4) I(V5) 0. 0. 0. 0. 0. 0. 0.2 0. 0. 0. 0. 0. 0.4 0. 0. 0. 0. 0. 0.6 3.2634n 0. 0. 0. 0. 0.8 324.07n 0. 0. 0. 0. 1. 3.0983u 857.65p 0. 0. 0. 1.2 6.3104u 146.13n 0. 0. 0. 1.4 9.4193u 2.5054u 14.679n 0. 0. 1.6 12.442u 5.7153u 1.0697u 8.6361n 0. 1.8 15.383u 8.8086u 4.4008u 968.95n 20.597n 2. 18.245u 11.817u 7.4983u 4.2572u 1.6509u 2.2 21.031u 14.743u 10.51u 7.3256u 4.8219u 2.4 23.744u 17.591u 13.44u 10.31u 7.8414u 2.6 26.387u 20.364u 16.292u 13.213u 10.779u 2.8 28.962u 23.065u 19.069u 16.04u 13.638u 3. 31.473u 25.696u 21.773u 18.792u 16.422u 3.2 33.922u 28.261u 24.408u 21.473u 19.134u 3.4 36.31u 30.761u 26.975u 24.086u 21.776u 3.6 38.64u 33.199u 29.479u 26.633u 24.351u 3.8 40.915u 35.578u 31.921u 29.116u 26.862u 4. 43.136u 37.899u 34.303u 31.538u 29.311u 4.2 45.305u 40.165u 36.627u 33.901u 31.7u 4.4 47.423u 42.377u 38.896u 36.208u 34.031u 4.6 49.493u 44.538u 41.111u 38.459u 36.307u 4.8 51.517u 46.648u 43.275u 40.658u 38.529u 5. 53.495u 48.711u 45.389u 42.806u 40.7u tests/==out/d_mos4.3.ckt.out000066400000000000000000000035061316501211100160530ustar00rootroot00000000000000Test of MOS BSIM1 implementation; DC transfer curve # I(V1) I(V2) I(V3) I(V4) I(V5) 0. 0. 0. 0. 0. 0. 0.2 0. 0. 0. 0. 0. 0.4 0. 0. 0. 0. 0. 0.6 3.2634n 0. 0. 0. 0. 0.8 324.07n 0. 0. 0. 0. 1. 3.0997u 858.34p 0. 0. 0. 1.2 6.3139u 146.13n 0. 0. 0. 1.4 9.4248u 2.5068u 14.678n 0. 0. 1.6 12.45u 5.7195u 1.0701u 8.6368n 0. 1.8 15.392u 8.8155u 4.4047u 969.21n 20.597n 2. 18.256u 11.826u 7.5057u 4.2617u 1.6521u 2.2 21.043u 14.755u 10.521u 7.3344u 4.8282u 2.4 23.758u 17.606u 13.454u 10.322u 7.8526u 2.6 26.403u 20.381u 16.309u 13.23u 10.795u 2.8 28.98u 23.084u 19.088u 16.06u 13.659u 3. 31.492u 25.717u 21.795u 18.816u 16.447u 3.2 33.942u 28.284u 24.433u 21.501u 19.163u 3.4 36.331u 30.786u 27.003u 24.116u 21.809u 3.6 38.663u 33.226u 29.509u 26.666u 24.388u 3.8 40.939u 35.607u 31.953u 29.152u 26.902u 4. 43.161u 37.929u 34.338u 31.577u 29.354u 4.2 45.331u 40.197u 36.664u 33.943u 31.747u 4.4 47.45u 42.41u 38.935u 36.253u 34.081u 4.6 49.522u 44.573u 41.153u 38.507u 36.36u 4.8 51.546u 46.685u 43.319u 40.708u 38.585u 5. 53.525u 48.749u 45.434u 42.859u 40.759u tests/==out/d_mos49.nand1.ckt.out000066400000000000000000000213561316501211100170060ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6869 5.8842u 996.24Meg 1. -2. 5. 0. 154.84 6.2334u 996.23Meg 2. -3. 5. 0. 4.991 244.14n 996.23Meg 3. -4. 5. 0. 5. 261.7n 996.23Meg 4. -5. 5. 0. 5. 261.7n 996.23Meg 5. -6. 5. 0. 5. 261.7n 996.23Meg 6. -7. 5. 0. 5. 261.7n 996.23Meg 7. 27. 5. 0. 5. 261.7n 996.23Meg 8. # region(XI10.Mp1.Ddb) region(XI10.Mp2.Ddb) region(XI10.Mn1.Ddb) region(XI10.Mn2.Ddb) region(XI10.Mn1.Dsb) 0. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -2. -1. -1. -1. -1. -1. -3. 1. 1. -1. -1. -1. -4. -1. -1. -1. -1. -1. -5. -1. -1. -1. -1. -1. -6. -1. -1. -1. -1. -1. -7. -1. -1. -1. -1. -1. 27. -1. -1. -1. -1. -1. # V(XI10.Mp1.Ddb) V(XI10.Mp2.Ddb) V(XI10.Mn1.Ddb) V(XI10.Mn2.Ddb) V(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -2.3131 -2.3131 -2.6869 -5.8842u -5.8842u -2. 149.84 149.84 -154.84 -6.2334u -6.2334u -3. -0.0089704 -0.0089704 -4.991 -244.14n -244.14n -4. 28.028u 28.028u -5. -261.7n -261.7n -5. -3.4216n -3.4216n -5. -261.7n -261.7n -6. -3.2751n -3.2751n -5. -261.7n -261.7n -7. -3.2751n -3.2751n -5. -261.7n -261.7n 27. -3.2751n -3.2751n -5. -261.7n -261.7n # I(XI10.Mp1.Ddb) I(XI10.Mp2.Ddb) I(XI10.Mn1.Ddb) I(XI10.Mn2.Ddb) I(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -3.2074p -3.2074p -3.7258p -8.159E-18 -8.159E-18 -2. 149.83p 149.83p -154.85p -8.643E-18 -8.643E-18 -3. -46.453u -46.453u -5.001p -339.E-21 -339.E-21 -4. -443.2E-18 -443.2E-18 -5.01p -363.E-21 -363.E-21 -5. -11.E-21 -11.E-21 -5.01p -363.E-21 -363.E-21 -6. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 -7. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 27. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 261.7n 8. 1.p 4.896p 5. 261.7n 5. 3.6757p -1.848p 5. 261.69n 4. 100.p 1.745p 5. 261.71n 5. 200.p -1.78p 5. 261.68n 5. 300.p 1.752p 5. 261.73n 5. 400.p -1.773p 5. 261.64n 5. 500.p 1.758p 5. 261.81n 5. 600.p -1.769p 5. 261.47n 5. 700.p 1.761p 5. 261.47n 5. 800.p -1.767p 5. 261.47n 5. 900.p 1.762p 5. 261.47n 5. 1.n -1.765p 5. 261.47n 5. 1.1n 0.25 5.0038 0.25 5. 1.2n 0.5 5.0066 0.49999 5. 1.3n 0.75 5.0088 0.74996 5. 1.4n 1. 5.0106 1.0001 5. 1.5n 1.25 5.0122 0.98571 5. 1.6n 1.5 5.0131 0.25776 8. 1.7n 1.75 5.0091 0.19372 7. 1.8n 2. 4.998 0.26736 5. 1.9n 2.25 4.9794 0.29414 5. 2.n 2.5 4.9528 0.34525 5. 2.1n 2.75 4.9177 0.38132 5. 2.2n 3. 4.8722 0.4261 5. 2.3n 3.25 4.814 0.46433 5. 2.4n 3.5 4.7392 0.50627 5. 2.5n 3.75 4.6455 0.54481 5. 2.6n 4. 4.5291 0.58496 5. 2.7n 4.25 4.3923 0.62305 5. 2.8n 4.5 4.2409 0.66182 4. 2.9n 4.75 4.0721 0.69912 4. 3.n 5. 3.886 0.73633 4. 3.1n 5. 3.6885 0.71527 4. 3.2n 5. 3.4911 0.72503 4. 3.3n 5. 3.2946 0.71027 4. 3.4n 5. 3.0986 0.71434 4. 3.5n 5. 2.9036 0.70279 4. 3.6n 5. 2.7093 0.70306 4. 3.7n 5. 2.5161 0.6925 4. 3.8n 5. 2.324 0.68827 5. 3.9n 5. 2.1336 0.67568 5. 4.n 5. 1.9456 0.66257 5. 4.1n 5. 1.761 0.63824 5. 4.2n 5. 1.5817 0.60652 5. 4.3n 5. 1.4099 0.5654 5. 4.4n 5. 1.2473 0.52048 5. 4.5n 5. 1.0952 0.47155 5. 4.6n 5. 0.95468 0.42258 5. 4.7n 5. 0.82629 0.37371 5. 4.8n 5. 0.71038 0.32754 5. 4.9n 5. 0.60692 0.28395 5. 5.n 5. 0.51552 0.24445 5. 5.1n 5. 0.4356 0.20859 5. 5.2n 5. 0.36634 0.17708 5. 5.3n 5. 0.30682 0.14927 5. 5.4n 5. 0.25603 0.1254 5. 5.5n 5. 0.21298 0.10474 5. 5.6n 5. 0.17669 0.087316 5. 5.7n 5. 0.14624 0.072447 4. 5.8n 5. 0.12081 0.060069 4. 5.9n 5. 0.099636 0.0496 4. 6.n 5. 0.082061 0.040974 4. 6.1n 5. 0.067509 0.033716 4. 6.2n 5. 0.055485 0.027785 4. 6.3n 5. 0.045567 0.022806 5. 6.4n 5. 0.037397 0.018765 4. 6.5n 5. 0.030691 0.015467 4. 6.6n 5. 0.025178 0.012643 4. 6.7n 5. 0.020647 0.010423 4. 6.8n 5. 0.016981 0.0085257 4. 6.9n 5. 0.013961 0.0070586 4. 7.n 5. 0.011477 0.0057591 4. 7.1n 5. 0.0094325 0.0047773 4. 7.2n 5. 0.0077518 0.0038854 4. 7.3n 5. 0.0063694 0.0032326 4. 7.4n 5. 0.0052335 0.0026184 4. 7.5n 5. 0.0042995 0.0021877 4. 7.6n 5. 0.0035323 0.0017626 4. 7.7n 5. 0.0029015 0.0014814 4. 7.8n 5. 0.0023836 0.0011849 4. 7.9n 5. 0.0019578 0.0010041 4. 8.n 5. 0.0016083 795.31u 4. 8.1n 5. 0.0013208 681.53u 4. 8.2n 5. 0.001085 532.68u 4. 8.3n 5. 891.06u 463.54u 4. 8.4n 5. 731.98u 355.77u 4. 8.5n 5. 601.08u 316.16u 4. 8.6n 5. 493.79u 236.69u 4. 8.7n 5. 405.45u 216.45u 4. 8.8n 5. 333.11u 156.61u 4. 8.9n 5. 273.49u 148.94u 4. 9.n 5. 224.71u 102.84u 4. 9.1n 5. 184.47u 103.16u 4. 9.2n 5. 151.59u 66.783u 4. 9.3n 5. 124.42u 72.067u 4. 9.4n 5. 102.26u 42.667u 4. 9.5n 5. 83.914u 50.897u 4. 9.6n 5. 68.992u 26.588u 4. 9.7n 5. 56.593u 36.437u 4. 9.8n 5. 46.548u 15.916u 4. 9.9n 5. 38.166u 26.516u 4. 10.n 5. 31.408u 8.877u 4. Gnucap System status iterations: op=8, dc=0, tran=469, fourier=0, total=604 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos5.1.ckt.out000066400000000000000000000035061316501211100160520ustar00rootroot00000000000000Test of MOS BSIM2 implementation; DC transfer curve # I(V1) I(V2) I(V3) I(V4) I(V5) 0. 0. 0. 0. 0. 0. 0.2 0. 0. 0. 0. 0. 0.4 623.81p 0. 0. 0. 0. 0.6 122.37n 0. 0. 0. 0. 0.8 2.6904u 0. 0. 0. 0. 1. 7.4749u 94.028n 0. 0. 0. 1.2 12.537u 3.253u 2.056n 0. 0. 1.4 17.421u 8.3849u 1.2574u 0. 0. 1.6 22.134u 13.468u 6.2258u 397.06n 0. 1.8 26.674u 18.36u 11.456u 5.077u 180.13n 2. 31.039u 23.064u 16.47u 10.419u 4.584u 2.2 35.227u 27.577u 21.279u 15.526u 10.013u 2.4 39.237u 31.898u 25.882u 20.41u 15.191u 2.6 43.07u 36.026u 30.276u 25.07u 20.127u 2.8 46.726u 39.961u 34.461u 29.505u 24.822u 3. 50.206u 43.704u 38.437u 33.715u 29.274u 3.2 53.513u 47.256u 42.206u 37.699u 33.484u 3.4 56.649u 50.619u 45.769u 41.462u 37.454u 3.6 59.617u 53.798u 49.13u 45.004u 41.186u 3.8 62.422u 56.796u 52.294u 48.332u 44.685u 4. 65.067u 59.617u 55.265u 51.451u 47.956u 4.2 67.556u 62.266u 58.048u 54.365u 51.006u 4.4 69.895u 64.75u 60.65u 57.083u 53.843u 4.6 72.088u 67.072u 63.076u 59.61u 56.474u 4.8 74.14u 69.239u 65.333u 61.955u 58.907u 5. 76.057u 71.257u 67.429u 64.124u 61.151u tests/==out/d_mos6.inv1.ckt.out000066400000000000000000000147501316501211100165730ustar00rootroot00000000000000.title mos6 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.6489 5. 3.5235 5. 0.25 5. 0.25 5. 4.638 5. 3.4778 5. 0.5 5. 0.5 5. 4.6261 5. 3.4269 5. 0.75 5. 0.75 4.9734 4.5856 4.9734 3.3699 4.93 1. 5. 1. 4.8309 4.4239 4.8309 3.3051 4.58 1.25 5. 1.25 4.6694 4.2379 4.6694 3.2305 4.23 1.5 5. 1.5 4.4818 4.0176 4.4818 3.1432 3.88 1.75 5. 1.75 4.2557 3.7437 4.2557 3.0385 3.53 2. 5. 2. 3.9668 3.3727 3.9668 2.9092 3.18 2.25 5. 2.25 3.5506 2.7354 3.5506 2.7418 2.83 2.5 5. 2.5 2.5 1.6795 2.5 2.5073 2.4927 2.75 5. 2.75 1.4494 1.2121 1.4494 2.17 2.2582 3. 5. 3. 1.0332 0.90212 1.0332 1.82 2.0908 3.25 5. 3.25 0.74425 0.66421 0.74425 1.47 1.9615 3.5 5. 3.5 0.51821 0.46891 0.51821 1.12 1.8568 3.75 5. 3.75 0.33057 0.30205 0.33057 0.77 1.7695 4. 5. 4. 0.16908 0.15563 0.16908 0.42 1.6949 4.25 5. 4.25 0.026631 0.024655 0.026631 0.07 1.6301 4.5 5. 4.5 5.335n 4.9538n 5.335n 14.56n 1.5731 4.75 5. 4.75 5.1677n 4.8092n 5.1677n 14.56n 1.5222 5. 5. 5. 5.0152n 4.6769n 5.0152n 14.56n 1.4765 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.6489 5. 3.5235 5. 100.p 5. 0. 5. 4.6489 5. 3.5235 5. 200.p 5. 0. 5. 4.6489 5. 3.5235 5. 300.p 5. 0. 5. 4.6489 5. 3.5235 5. 400.p 5. 0. 5. 4.6489 5. 3.5235 5. 500.p 5. 0. 5. 4.6489 5. 3.5235 5. 600.p 5. 0. 5. 4.6489 5. 3.5235 5. 700.p 5. 0. 5. 4.6489 5. 3.5235 5. 800.p 5. 0. 5. 4.6489 5. 3.5235 5. 900.p 5. 0. 5. 4.6489 5. 3.5235 5. 1.n 5. 1.f 5. 4.6489 5. 3.5235 5. 1.1n 5. 0.25 5. 4.638 5. 3.4778 5. 1.2n 5. 0.5 5. 4.6261 5. 3.4269 5. 1.3n 5. 0.75 4.9734 4.5856 4.9984 3.3699 4.93 1.4n 5. 1. 4.8309 4.4239 4.9906 3.3051 4.58 1.5n 5. 1.25 4.6694 4.2379 4.9649 3.2305 4.23 1.6n 5. 1.5 4.4818 4.0176 4.9261 3.1432 3.88 1.7n 5. 1.75 4.2557 3.7437 4.8752 3.0385 3.53 1.8n 5. 2. 3.9668 3.3727 4.8129 2.9092 3.18 1.9n 5. 2.25 3.5506 2.7354 4.7393 2.7418 2.83 2.n 5. 2.5 2.5 1.6795 4.6545 2.5073 2.4927 2.1n 5. 2.75 1.4494 1.2121 4.558 2.17 2.2582 2.2n 5. 3. 1.0332 0.90212 4.4489 1.82 2.0908 2.3n 5. 3.25 0.74425 0.66421 4.326 1.47 1.9615 2.4n 5. 3.5 0.51821 0.46891 4.187 1.12 1.8568 2.5n 5. 3.75 0.33057 0.30205 4.0287 0.77 1.7695 2.6n 5. 4. 0.16908 0.15563 3.8459 0.42 1.6949 2.7n 5. 4.25 0.026631 0.024655 3.6338 0.07 1.6301 2.8n 5. 4.5 5.335n 4.9538n 3.3925 14.56n 1.5731 2.9n 5. 4.75 5.1677n 4.8092n 3.1395 14.56n 1.5222 3.n 5. 5. 5.0152n 4.6769n 2.8788 14.56n 1.4765 3.1n 5. 5. 5.0152n 4.6769n 2.6225 14.56n 1.4765 3.2n 5. 5. 5.0152n 4.6769n 2.3802 14.56n 1.4765 3.3n 5. 5. 5.0152n 4.6769n 2.1518 14.56n 1.4765 3.4n 5. 5. 5.0152n 4.6769n 1.9381 14.56n 1.4765 3.5n 5. 5. 5.0152n 4.6769n 1.7397 14.56n 1.4765 3.6n 5. 5. 5.0152n 4.6769n 1.5566 14.56n 1.4765 3.7n 5. 5. 5.0152n 4.6769n 1.3888 14.56n 1.4765 3.8n 5. 5. 5.0152n 4.6769n 1.2357 14.56n 1.4765 3.9n 5. 5. 5.0152n 4.6769n 1.0968 14.56n 1.4765 4.n 5. 5. 5.0152n 4.6769n 0.97146 14.56n 1.4765 4.1n 5. 5. 5.0152n 4.6769n 0.85872 14.56n 1.4765 4.2n 5. 5. 5.0152n 4.6769n 0.75772 14.56n 1.4765 4.3n 5. 5. 5.0152n 4.6769n 0.66754 14.56n 1.4765 4.4n 5. 5. 5.0152n 4.6769n 0.58726 14.56n 1.4765 4.5n 5. 5. 5.0152n 4.6769n 0.516 14.56n 1.4765 4.6n 5. 5. 5.0152n 4.6769n 0.45287 14.56n 1.4765 4.7n 5. 5. 5.0152n 4.6769n 0.39708 14.56n 1.4765 4.8n 5. 5. 5.0152n 4.6769n 0.34787 14.56n 1.4765 4.9n 5. 5. 5.0152n 4.6769n 0.30452 14.56n 1.4765 5.n 5. 5. 5.0152n 4.6769n 0.26639 14.56n 1.4765 tests/==out/d_mos6.lin1.ckt.out000066400000000000000000000056051316501211100165600ustar00rootroot00000000000000nmos n gate, linear # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099998 0.01 -1.2349 4. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -186.12n 0. 0. 1.8612n 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 186.12n -186.11n 0. 3.4385p -1.7123p -1.7262p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 3.2367 0.0099998 -1.2349 0. 3.5982 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 28.79n 18.586u 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 13.998f 13.972f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 13.998f 13.972f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 1.8654n 1.8654n 0. 186.11n -1.7262p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049999 3.2317 -1.2399 -0.0049999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099998 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) i(Rds) -10. -10. 0.01 0.01 0. -1.7362p -9. -9. 0.01 0.01 0. -1.7362p -8. -8. 0.01 0.01 0. -1.7362p -7. -7. 0.01 0.01 0. -1.7362p -6. -6. 0.01 0.01 0. -1.7362p -5. -5. 0.01 0.01 0. -1.7362p -4. -4. 0.01 0.01 0. -1.7362p -3. -3. 0.01 0.01 0. -1.7362p -2. -2. 0.01 0.01 0. -1.7362p -1. -1. 0.01 0.01 0. -1.7362p 0. 0. 0.01 0.01 0. -1.7362p 1. 1. 0.0099999 0.01 -103.34n -103.34n 2. 2. 0.0099999 0.01 -146.25n -146.25n 3. 3. 0.0099998 0.01 -179.17n -179.17n 4. 4. 0.0099998 0.01 -206.93n -206.93n 5. 5. 0.0099998 0.01 -231.38n -231.38n 6. 6. 0.0099997 0.01 -253.49n -253.49n 7. 7. 0.0099997 0.01 -273.82n -273.82n 8. 8. 0.0099997 0.01 -292.74n -292.74n 9. 9. 0.0099997 0.01 -310.52n -310.52n 10. 10. 0.0099997 0.01 -327.33n -327.33n tests/==out/d_mos6.lin1r.ckt.out000066400000000000000000000056051316501211100167420ustar00rootroot00000000000000nmos n gate, linear # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 -0.0099998 -0.01 -1.2349 4. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 186.4n 0. 0. 1.864n 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. -186.4n 186.4n 0. 3.4108p -1.7123p -1.6985p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 3.2367 -0.0099998 -1.2349 0. 3.6037 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 28.746n 18.615u 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 13.972f 13.998f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f -3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 13.972f 13.998f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 1.8682n 1.8682n 0. 186.4n -1.6985p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -0.0049999 3.2417 -1.2299 0.0049999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. -0.0099998 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) i(Rds) -10. -10. -0.01 -0.01 0. -1.6885p -9. -9. -0.01 -0.01 0. -1.6885p -8. -8. -0.01 -0.01 0. -1.6885p -7. -7. -0.01 -0.01 0. -1.6885p -6. -6. -0.01 -0.01 0. -1.6885p -5. -5. -0.01 -0.01 0. -1.6885p -4. -4. -0.01 -0.01 0. -1.6885p -3. -3. -0.01 -0.01 0. -1.6885p -2. -2. -0.01 -0.01 0. -1.6885p -1. -1. -0.01 -0.01 0. -1.6885p 0. 0. -0.01 -0.01 10.099n 10.099n 1. 1. -0.0099999 -0.01 103.85n 103.85n 2. 2. -0.0099999 -0.01 146.61n 146.61n 3. 3. -0.0099998 -0.01 179.47n 179.47n 4. 4. -0.0099998 -0.01 207.18n 207.18n 5. 5. -0.0099998 -0.01 231.61n 231.61n 6. 6. -0.0099997 -0.01 253.7n 253.7n 7. 7. -0.0099997 -0.01 274.01n 274.01n 8. 8. -0.0099997 -0.01 292.92n 292.92n 9. 9. -0.0099997 -0.01 310.69n 310.69n 10. 10. -0.0099997 -0.01 327.49n 327.49n tests/==out/d_mos6.lin1z.ckt.out000066400000000000000000000056051316501211100167520ustar00rootroot00000000000000nmos n gate, linear # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 -1.712p 0. -1.2349 4. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -1.7123p 0. 0. 0. 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 1.7123p 1.7124p 0. 3.4246p -1.7123p -1.7123p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 3.2367 -1.7123p -1.2349 0. 3.5982 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 4.93E-18 18.638u 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 13.985f 13.985f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f -3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 13.985f 13.985f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 4.229p 4.229p 0. 31.91E-18 -1.7123p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -856.15f 3.2367 -1.2349 856.15f # vd(M1) vg(M1) vb(M1) vs(M1) 27. -1.7123p 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) i(Rds) -10. -10. -1.712p 0. -1.7123p -1.7123p -9. -9. -1.712p 0. -1.7123p -1.7123p -8. -8. -1.712p 0. -1.7123p -1.7123p -7. -7. -1.712p 0. -1.7123p -1.7123p -6. -6. -1.712p 0. -1.7123p -1.7123p -5. -5. -1.712p 0. -1.7123p -1.7123p -4. -4. -1.712p 0. -1.7123p -1.7123p -3. -3. -1.712p 0. -1.7123p -1.7123p -2. -2. -1.712p 0. -1.7123p -1.7123p -1. -1. -1.712p 0. -1.7123p -1.7123p 0. 0. -1.712p 0. -1.7123p -1.7123p 1. 1. -1.712p 0. -1.7123p -1.7123p 2. 2. -1.712p 0. -1.7123p -1.7123p 3. 3. -1.712p 0. -1.7123p -1.7123p 4. 4. -1.712p 0. -1.7123p -1.7123p 5. 5. -1.712p 0. -1.7123p -1.7123p 6. 6. -1.712p 0. -1.7123p -1.7123p 7. 7. -1.712p 0. -1.7123p -1.7123p 8. 8. -1.712p 0. -1.7123p -1.7123p 9. 9. -1.712p 0. -1.7123p -1.7123p 10. 10. -1.712p 0. -1.7123p -1.7123p tests/==out/d_mos6.lin2.ckt.out000066400000000000000000000055031316501211100165560ustar00rootroot00000000000000nmos n gate, linear # v(1) v(2) v(3) iter(0) 27. 3.2367 0.0099998 0.01 4. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. -186.11n 0. 1.8611n # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 186.11n -186.11n 0. 13.866f 0. -13.866f # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 3.2367 0.0099998 0. 0. 3.5982 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 28.79n 18.586u 1.3866p 0. # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 13.998f 13.972f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 13.998f 13.972f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 1.8611n 1.8611n 0. 186.11n -13.866f ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049999 3.2317 -0.0049999 -0.0049999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099998 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) i(Rds) -10. -10. 0.01 0.01 0. -23.866f -9. -9. 0.01 0.01 0. -23.866f -8. -8. 0.01 0.01 0. -23.866f -7. -7. 0.01 0.01 0. -23.866f -6. -6. 0.01 0.01 0. -23.866f -5. -5. 0.01 0.01 0. -23.866f -4. -4. 0.01 0.01 0. -23.866f -3. -3. 0.01 0.01 0. -23.866f -2. -2. 0.01 0.01 0. -23.866f -1. -1. 0.01 0.01 0. -23.866f 0. 0. 0.01 0.01 0. -23.866f 1. 1. 0.0099999 0.01 -103.33n -103.33n 2. 2. 0.0099999 0.01 -146.24n -146.24n 3. 3. 0.0099998 0.01 -179.17n -179.17n 4. 4. 0.0099998 0.01 -206.93n -206.93n 5. 5. 0.0099998 0.01 -231.38n -231.38n 6. 6. 0.0099997 0.01 -253.49n -253.49n 7. 7. 0.0099997 0.01 -273.82n -273.82n 8. 8. 0.0099997 0.01 -292.74n -292.74n 9. 9. 0.0099997 0.01 -310.51n -310.51n 10. 10. 0.0099997 0.01 -327.32n -327.32n tests/==out/d_mos6.lin2r.ckt.out000066400000000000000000000055031316501211100167400ustar00rootroot00000000000000nmos n gate, linear # v(1) v(2) v(3) iter(0) 27. 3.2367 -0.0099998 -0.01 4. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. 186.4n 0. 1.864n # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. -186.4n 186.4n 0. -14.72f 0. 14.72f # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 3.2367 -0.0099998 0. 0. 3.6037 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 28.746n 18.615u 1.5691p 0. # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 13.972f 13.998f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f -3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 13.972f 13.998f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 1.864n 1.864n 0. 186.4n 14.72f ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -0.0049999 3.2417 0.0049999 0.0049999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. -0.0099998 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) i(Rds) -10. -10. -0.01 -0.01 0. 24.72f -9. -9. -0.01 -0.01 0. 24.72f -8. -8. -0.01 -0.01 0. 24.72f -7. -7. -0.01 -0.01 0. 24.72f -6. -6. -0.01 -0.01 0. 24.72f -5. -5. -0.01 -0.01 0. 24.72f -4. -4. -0.01 -0.01 0. 24.72f -3. -3. -0.01 -0.01 0. 24.72f -2. -2. -0.01 -0.01 0. 24.72f -1. -1. -0.01 -0.01 0. 24.72f 0. 0. -0.01 -0.01 10.101n 10.1n 1. 1. -0.0099999 -0.01 103.85n 103.85n 2. 2. -0.0099999 -0.01 146.61n 146.61n 3. 3. -0.0099998 -0.01 179.47n 179.47n 4. 4. -0.0099998 -0.01 207.18n 207.18n 5. 5. -0.0099998 -0.01 231.61n 231.61n 6. 6. -0.0099997 -0.01 253.7n 253.7n 7. 7. -0.0099997 -0.01 274.01n 274.01n 8. 8. -0.0099997 -0.01 292.92n 292.92n 9. 9. -0.0099997 -0.01 310.69n 310.69n 10. 10. -0.0099997 -0.01 327.49n 327.49n tests/==out/d_mos6.lin2z.ckt.out000066400000000000000000000055031316501211100167500ustar00rootroot00000000000000nmos n gate, linear # v(1) v(2) v(3) iter(0) 27. 3.2367 0. 0. 4. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. 0. 0. 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 0. 0. 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 3.2367 0. 0. 0. 3.5982 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 0. 18.638u 1.3866p 0. # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 13.985f 13.985f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 13.985f 13.985f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 0. 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) i(Rds) -10. -10. 0. 0. 0. 0. -9. -9. 0. 0. 0. 0. -8. -8. 0. 0. 0. 0. -7. -7. 0. 0. 0. 0. -6. -6. 0. 0. 0. 0. -5. -5. 0. 0. 0. 0. -4. -4. 0. 0. 0. 0. -3. -3. 0. 0. 0. 0. -2. -2. 0. 0. 0. 0. -1. -1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 2. 2. 0. 0. 0. 0. 3. 3. 0. 0. 0. 0. 4. 4. 0. 0. 0. 0. 5. 5. 0. 0. 0. 0. 6. 6. 0. 0. 0. 0. 7. 7. 0. 0. 0. 0. 8. 8. 0. 0. 0. 0. 9. 9. 0. 0. 0. 0. 10. 10. 0. 0. 0. 0. tests/==out/d_mos6.n+1.ckt.out000066400000000000000000000001451316501211100163000ustar00rootroot00000000000000nmos same gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos6.n-1.ckt.out000066400000000000000000000001441316501211100163010ustar00rootroot00000000000000nmos opp gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos6.n0.ckt.out000066400000000000000000000001431316501211100162220ustar00rootroot00000000000000nmos al gate nnn: rsh - rs - rd conflict: using rsh nnn: is - js conflict # 27. tests/==out/d_mos6.nand1.ckt.out000066400000000000000000000160741316501211100167200ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6873 0. 265.02G 1. -2. 5. 0. 1.1111G 0. 265.02G 2. -3. 5. 0. 5.0138 0. 265.02G 3. -4. 5. 0. 5. 0. 265.02G 4. -5. 5. 0. 5. 0. 265.02G 5. -6. 5. 0. 5. 0. 265.02G 6. -7. 5. 0. 5. 0. 265.02G 7. 27. 5. 0. 5. 0. 265.02G 8. # Cgs(XI10.Mp1) Cgd(XI10.Mp1) Cgb(XI10.Mp1) 27. 0. 0. 0. # Cgs(XI10.Mp2) Cgd(XI10.Mp2) Cgb(XI10.Mp2) 27. 0. 0. 0. # Cgs(XI10.Mn1) Cgd(XI10.Mn1) Cgb(XI10.Mn1) 27. 0. 0. 0. # Cgs(XI10.Mn2) Cgd(XI10.Mn2) Cgb(XI10.Mn2) 27. 0. 0. 0. #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 0. 8. 1.p 0. 5. 0. 3. 3.6757p 0. 5. 0. 4. 100.p 0. 5. 0. 4. 200.p 0. 5. 0. 4. 300.p 0. 5. 0. 4. 400.p 0. 5. 0. 4. 500.p 0. 5. 0. 4. 600.p 0. 5. 0. 4. 700.p 0. 5. 0. 4. 800.p 0. 5. 0. 4. 900.p 0. 5. 0. 4. 1.n 1.f 5. 0. 4. 1.1n 0.25 5. 0. 4. 1.2n 0.5 5. 0. 4. 1.3n 0.75 4.9997 0.04121 6. 1.4n 1. 4.997 0.20031 6. 1.5n 1.25 4.9898 0.33158 5. 1.6n 1.5 4.9754 0.44888 5. 1.7n 1.75 4.9552 0.55689 5. 1.8n 2. 4.9296 0.658 5. 1.9n 2.25 4.8986 0.75368 5. 2.n 2.5 4.8623 0.84491 5. 2.1n 2.75 4.8202 0.93237 5. 2.2n 3. 4.7717 1.0166 5. 2.3n 3.25 4.716 1.098 5. 2.4n 3.5 4.6515 1.1769 5. 2.5n 3.75 4.5758 1.2536 5. 2.6n 4. 4.4848 1.3282 5. 2.7n 4.25 4.3692 1.401 5. 2.8n 4.5 4.2237 1.4622 5. 2.9n 4.75 4.0647 1.4979 5. 3.n 5. 3.8966 1.5105 5. 3.1n 5. 3.7264 1.4758 5. 3.2n 5. 3.5602 1.4377 5. 3.3n 5. 3.3975 1.3966 5. 3.4n 5. 3.2388 1.3531 5. 3.5n 5. 3.0842 1.3076 5. 3.6n 5. 2.934 1.2608 5. 3.7n 5. 2.7883 1.213 4. 3.8n 5. 2.6474 1.1646 4. 3.9n 5. 2.5113 1.1161 4. 4.n 5. 2.3801 1.0677 4. 4.1n 5. 2.2539 1.0197 4. 4.2n 5. 2.1326 0.97237 4. 4.3n 5. 2.0164 0.92593 4. 4.4n 5. 1.905 0.88052 4. 4.5n 5. 1.7985 0.8363 4. 4.6n 5. 1.6969 0.79338 4. 4.7n 5. 1.6 0.75185 4. 4.8n 5. 1.5077 0.71177 4. 4.9n 5. 1.4199 0.67319 4. 5.n 5. 1.3365 0.63613 4. 5.1n 5. 1.2573 0.60062 4. 5.2n 5. 1.1823 0.56666 4. 5.3n 5. 1.1112 0.53423 4. 5.4n 5. 1.044 0.50332 4. 5.5n 5. 0.98037 0.4739 4. 5.6n 5. 0.9203 0.44594 4. 5.7n 5. 0.86358 0.41939 4. 5.8n 5. 0.81009 0.39423 4. 5.9n 5. 0.75965 0.37039 4. 6.n 5. 0.71215 0.34784 4. 6.1n 5. 0.66741 0.32653 4. 6.2n 5. 0.62532 0.3064 4. 6.3n 5. 0.58574 0.28741 4. 6.4n 5. 0.54853 0.26951 4. 6.5n 5. 0.51356 0.25264 4. 6.6n 5. 0.48073 0.23675 4. 6.7n 5. 0.4499 0.2218 4. 6.8n 5. 0.42098 0.20774 4. 6.9n 5. 0.39384 0.19453 4. 7.n 5. 0.3684 0.18211 4. 7.1n 5. 0.34454 0.17045 4. 7.2n 5. 0.32218 0.15951 4. 7.3n 5. 0.30124 0.14924 4. 7.4n 5. 0.28162 0.13961 4. 7.5n 5. 0.26324 0.13057 4. 7.6n 5. 0.24604 0.12211 4. 7.7n 5. 0.22994 0.11418 4. 7.8n 5. 0.21487 0.10674 4. 7.9n 5. 0.20077 0.099783 4. 8.n 5. 0.18759 0.093266 4. 8.1n 5. 0.17525 0.087166 4. 8.2n 5. 0.16371 0.081456 4. 8.3n 5. 0.15292 0.076113 4. 8.4n 5. 0.14283 0.071114 4. 8.5n 5. 0.13341 0.066439 4. 8.6n 5. 0.12459 0.062066 4. 8.7n 5. 0.11635 0.057976 4. 8.8n 5. 0.10865 0.054153 4. 8.9n 5. 0.10146 0.050579 4. 9.n 5. 0.09474 0.047237 4. 9.1n 5. 0.08846 0.044115 4. 9.2n 5. 0.082593 0.041196 4. 9.3n 5. 0.077113 0.038469 4. 9.4n 5. 0.071994 0.035921 4. 9.5n 5. 0.067212 0.03354 4. 9.6n 5. 0.062747 0.031316 4. 9.7n 5. 0.058577 0.029238 4. 9.8n 5. 0.054682 0.027297 4. 9.9n 5. 0.051045 0.025484 4. 10.n 5. 0.047649 0.023791 4. Gnucap System status iterations: op=8, dc=0, tran=441, fourier=0, total=584 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos6.p+1.ckt.out000066400000000000000000000001451316501211100163020ustar00rootroot00000000000000pmos same gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos6.p-1.ckt.out000066400000000000000000000001441316501211100163030ustar00rootroot00000000000000pmos opp gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos6.p0.ckt.out000066400000000000000000000001431316501211100162240ustar00rootroot00000000000000pmos al gate ppp: rsh - rs - rd conflict: using rsh ppp: is - js conflict # 27. tests/==out/d_mos6.plin.ckt.out000066400000000000000000000026701316501211100166560ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. -3.2367 0.0099992 0.01 1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -848.51n 0. 0. 8.4851n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 848.51n -3.2367 0.0099992 1.2349 -1.5353 1.6559 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 441.96n 84.601u 137.36n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.423f 31.55f 0. 1.7114 1.5353 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.394f 33.521f 0. -848.51n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 8.4843n 8.4843n 0. 848.51n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049996 -3.2417 1.2299 -0.0049996 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099992 -3.2367 1.2349 0. tests/==out/d_mos6.psat1.ckt.out000066400000000000000000000036021316501211100167400ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -1.6153 -5. 0. 2. -3. -1.6151 -5. 0. 3. -4. -1.6151 -5. 0. 4. 27. -1.6151 -5. 0. 5. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 33.849u 0. 169.24u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -33.849u 33.849u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -1.6151 -1.6151 0. 1.6151 0.84435 1.7559 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 40.657u 3.1107u 22.65u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.751f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.722f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -0.80756 -0.80756 0.80756 0.80756 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -1.6151 -1.6151 0. 0. -0.84435 0.77077 tests/==out/d_mos6.psat2.ckt.out000066400000000000000000000036021316501211100167410ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -3.7894 -5. 0. 2. -3. -3.7894 -5. 0. 3. -4. -3.7894 -5. 0. 4. 27. -3.7894 -5. 0. 5. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 12.106u 0. 60.53u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -12.106u 12.106u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -3.7894 -3.7894 0. 3.7894 3.5155 1.0467 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 44.2u 0. 24.624u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.8947 -1.8947 1.8947 1.8947 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -3.7894 -3.7894 0. 0. -3.5155 0.27389 tests/==out/d_mos6.psat3.ckt.out000066400000000000000000000036021316501211100167420ustar00rootroot00000000000000pmos p gate cmosp: rsh - rs - rd conflict: using rsh cmosp: is - js conflict # v(2) v(3) v(4) iter(0) 0. 0. 0. 0. 0. -1. -5. -5. 0. 1. -2. -2.8393 -5. 0. 2. -3. -2.8393 -5. 0. 3. -4. -2.8393 -5. 0. 4. 27. -2.8393 -5. 0. 5. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 21.607u 0. 108.04u 0. # id(M1) is(M1) ig(M1) ib(M1) ibd(M1) ibs(M1) 27. -21.607u 21.607u 0. 0. 0. 0. # vgs(M1) vds(M1) vbs(M1) vbd(M1) von(M1) vdsat(M1) 27. -2.8393 -2.8393 0. 2.8393 2.3504 1.3984 # gm(M1) gds(M1) gmb(M1) gbd(M1) gbs(M1) 27. 44.2u 0. 24.624u 0. 0. # cbd(M1) cbs(M1) cgs(M1) cgd(M1) cgb(M1) 27. 0. 0. 41.982f 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # qgs(M1) qgd(M1) qgb(M1) qbd(M1) qbs(M1) 27. 0. 0. ?? 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 0. 0. 62.973f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 43.953f 0. 0. # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.4196 -1.4196 1.4196 1.4196 # vd(M1) vg(M1) vb(M1) vs(M1) vth(M1) vgst(M1) 27. -2.8393 -2.8393 0. 0. -2.3504 0.48885 tests/==out/d_mos6.sat1.ckt.out000066400000000000000000000026041316501211100165610ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 2.511 5. -1.2349 6. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -24.89u 0. 124.45u 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 24.89u -24.89u 0. 6.9065p -1.7123p -5.1941p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 2.511 2.511 -1.2349 0. 3.1692 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 8.2078u 3.4095u 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 18.095f 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 18.095f 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.499u 62.499u 0. 24.89u -5.1941p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.2555 1.2555 -2.4904 -1.2555 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.511 2.511 -1.2349 0. tests/==out/d_mos6.sat1r.ckt.out000066400000000000000000000026041316501211100167430ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 2.511 5. -1.2349 6. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -24.89u 0. 124.45u 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. -24.89u 24.89u 0. 6.9065p -5.1941p -1.7123p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. -2.511 -3.7459 0. 3.1692 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 8.2078u 3.4095u 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 0. 18.095f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f -3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 0. 18.095f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.499u 62.499u 0. 24.89u -1.7123p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.2555 1.2555 -2.4904 1.2555 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 2.511 -1.2349 2.511 tests/==out/d_mos6.sat1s.ckt.out000066400000000000000000000026041316501211100167440ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 0.65151 5. -1.2349 8. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -43.485u 0. 217.42u 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 43.485u -43.485u 0. 4.3281p -1.7123p -2.6157p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0.65151 0.65151 -1.2349 0. 1.6143 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 41.809u 49.871u 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 1.6044f 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 2.797f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 1.6044f 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 28.331u 28.331u 0. 43.485u -2.6157p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.32576 0.32576 -1.5606 -0.32576 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.65151 0.65151 -1.2349 0. tests/==out/d_mos6.sat1v.ckt.out000066400000000000000000000026041316501211100167470ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 2.8132 5. -1.2349 6. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -21.868u 0. 109.34u 0. # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 21.868u -21.868u 0. 7.3255p -1.7123p -5.6132p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 2.8132 2.8132 -1.2349 0.7 2.9074 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 10.024u 487.82n 1.3866p 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 18.629f 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 18.629f 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 61.519u 61.519u 0. 21.868u -5.6132p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.4066 1.4066 -2.6415 -1.4066 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.8132 2.8132 -1.2349 0. tests/==out/d_mos6.sat2.ckt.out000066400000000000000000000025021316501211100165570ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) iter(0) 27. 2.511 5. 6. # i(Vds) ps(Vds) 27. -24.89u 124.45u # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 24.89u -24.89u 0. 3.4818p 0. -3.4818p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 2.511 2.511 0. 0. 3.1692 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 8.2078u 3.4095u 1.3866p 0. # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 18.095f 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 18.095f 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.499u 62.499u 0. 24.89u -3.4818p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.2555 1.2555 -1.2555 -1.2555 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.511 2.511 0. 0. tests/==out/d_mos6.sat2r.ckt.out000066400000000000000000000025021316501211100167410ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) iter(0) 27. 2.511 5. 6. # i(Vds) ps(Vds) 27. -24.89u 124.45u # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. -24.89u 24.89u 0. 3.4818p -3.4818p 0. # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. -2.511 -2.511 0. 3.1692 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 8.2078u 3.4095u 0. 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 0. 18.095f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f -3. # cgst(M1) cgdt(M1) cgbt(M1) 27. 0. 18.095f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 62.499u 62.499u 0. 24.89u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.2555 1.2555 -1.2555 1.2555 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 2.511 0. 2.511 tests/==out/d_mos6.sat3.ckt.out000066400000000000000000000025021316501211100165600ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) iter(0) 27. 4.9995 5. 4. # i(Vds) ps(Vds) 27. -51.792u 258.96u # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. 51.792u -51.792u 0. 6.9325p 0. -6.9325p # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 4.9995 4.9995 0. 0. 4.4719 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 10.359u 0. 1.3866p 0. # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 18.647f 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f 7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 18.647f 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 258.93u 258.93u 0. 51.792u -6.9325p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 2.4997 2.4997 -2.4997 -2.4997 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 4.9995 4.9995 0. 0. tests/==out/d_mos6.sat3r.ckt.out000066400000000000000000000025021316501211100167420ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) iter(0) 27. 4.9995 5. 5. # i(Vds) ps(Vds) 27. -51.792u 258.96u # id(M1) is(M1) ig(M1) ib(M1) ibs(M1) ibd(M1) 27. -51.792u 51.792u 0. 6.9325p -6.9325p 0. # vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. -4.9995 -4.9995 0. 4.4719 # gmb(M1) gm(M1) gds(M1) gbd(M1) gbs(M1) 27. 0. 10.359u 0. 0. 1.3866p # cgs(M1) cgd(M1) cgb(M1) cbd(M1) cbs(M1) 27. 0. 18.647f 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 0. 0. 27.97f -7. # cgst(M1) cgdt(M1) cgbt(M1) 27. 0. 18.647f 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 258.93u 258.93u 0. 51.792u 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -2.4997 2.4997 -2.4997 2.4997 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 4.9995 0. 4.9995 tests/==out/d_mos6.sts.ckt.out000066400000000000000000000027071316501211100165260ustar00rootroot00000000000000nmos n gate, sub-threshold cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) 27. 0.23673 4.9998 5. -1.2349 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 2.0729n 0.23673 4.9998 -1.2349 1.5384 0.18427 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 9.6704n 7.4992p 3.077n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 5. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 62.973f -1.3016 1.5384 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 1.9707f 1.9707f 62.973f -2.0729n 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 10.364n 10.364n 0. 2.0729n 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 2.4999 -2.2632 -3.7348 -2.4999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 4.9998 0.23673 -1.2349 0. tests/==out/d_mos6.sts000.ckt.out000066400000000000000000000005541316501211100167440ustar00rootroot00000000000000nmos n gate, sub-threshold >>>>>.print op v(nodes) iter(0) cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict >>>>>.op cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(1) v(2) v(3) v(4) iter(0) new max = 5, new limit = 5.5 27. 0.23673 4.9998 5. -1.2349 5. tests/==out/d_mos6.zero.ckt.out000066400000000000000000000060201316501211100166640ustar00rootroot00000000000000nmos n gate, vds = 0 cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # v(2) v(3) gds(M1) vdsat(M1) von(M1) 0. 0. 0. 0. 0. 0. -1. 0. 0. 0. 0. 0.84435 -2. 0. 0. 31.254u 1.4142 0.84435 -3. 0. 0. 68.366u 3.0935 0.84435 -4. 0. 0. 68.366u 3.0935 0.84435 27. 0. 0. 68.366u 3.0935 0.84435 # v(1) v(2) v(3) v(4) v(5) iter(0) 27. 3.2367 0. 0. 0. 3.2367 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. 0. 0.84435 3.0935 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 68.366u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.9707f 1.9707f 0. 62.973f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 31.487f 31.487f 0. 2.3924 0.84435 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 33.457f 33.457f 0. 0. 0. 0. # cqgs(M1) cqgd(M1) cqgb(M1) cqbd(M1) cqbs(M1) 27. ?? ?? 0. ?? ?? # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 0. 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 0. 0. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.84945 -0.35694 10.Meg 1. 0.056249 -0.2238 100.Meg 1. 0.0037041 -0.02404 1.G 1. 0.0011537 -0.0038982 # gds(M1) cgs(M1) iter(0) 0. 77.77u 31.487f 5. 25. 68.99u 31.487f 3. 50. 61.865u 31.487f 3. 75. 55.99u 31.487f 3. 100. 51.082u 31.487f 3. #Freq v(5) vr(1) vi(1) 1.K 1. 1. -420.44u 10.K 1. 0.99998 -0.0042043 100.K 1. 0.99823 -0.041969 1.Meg 1. 0.84936 -0.35684 10.Meg 1. 0.057018 -0.22344 100.Meg 1. 0.0045507 -0.024261 1.G 1. 0.0010494 -0.0041478 tests/==out/d_mos7.alpha.ckt.out000066400000000000000000000102461316501211100170000ustar00rootroot00000000000000nmos bsim3, linear, vbs=-123.. # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099995 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -456.62n 0. 0. 4.5662n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 456.62n 3.2367 0.0099995 -1.2349 2.625 0.41991 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 726.94n 45.055u 263.37n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 186.5E-18 0. 1.8647f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 403.6E-18 1.8647f 0.61168 2.625 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 590.E-18 1.8647f -456.62n 0. 2.4997p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 4.5691n 4.5691n 0. 456.62n -1.2549p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049998 3.2317 -1.2399 -0.0049998 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099995 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.01 0.01 0. 3. 3. 0.0099997 0.01 -280.65n 4. 4. 0.009999 0.01 -974.88n 5. 5. 0.0099984 0.01 -1.5556u 6. 6. 0.009998 0.01 -2.0442u 7. 7. 0.0099975 0.01 -2.4579u 8. 8. 0.0099972 0.01 -2.8097u 9. 9. 0.0099969 0.01 -3.1101u 10. 10. 0.0099966 0.01 -3.3674u Vgs ( 1 0 ) DC 3.236734 M1 ( 2 1 0 4 ) cmosn l=.9u w=.9u nrd=1. nrs=1. Vds ( 3 0 ) DC 0.01 Rds ( 2 3 ) 1. Vbs ( 4 0 ) DC -1.234875 .model cmosn nmos7 ( level=7 cdsc=NA( 240.u) cdscb=NA( 0.) cdscd=NA( 0.) + cit=NA( 0.) nfactor=NA( 1.) xj=NA( 150.n) vsat=NA( 80.K) at=NA( 33.K) + a0=NA( 1.) ags=NA( 0.) a1=NA( 0.) a2=NA( 1.) keta=NA(-0.047) + nsub=NA( 60.E+15) ngate=NA( 0.) vbm=NA(-3.) xt=NA( 155.n) kt1=NA(-0.11) + kt1l=NA( 0.) kt2=NA( 0.022) k3=NA( 80.) k3b=NA( 0.) w0=NA( 2.5u) + nlx=NA( 174.n) dvt0=NA( 2.2) dvt1=NA( 0.53) dvt2=NA(-0.032) dvt0w=NA( 0.) + dvt1w=NA( 5.3Meg) dvt2w=NA(-0.032) drout=NA( 0.56) ua1=NA( 4.31n) + ua=NA( 2.25n) ub1=NA(-7.61E-18) ub=NA( 587.E-21) ute=NA(-1.5) voff=NA(-0.08) + delta=NA( 0.01) rdsw=NA( 0.) prwg=NA( 0.) prwb=NA( 0.) prt=NA( 0.) + eta0=NA( 0.08) etab=NA(-0.07) pclm=NA( 1.3) pdiblc1=NA( 0.39) + pdiblc2=NA( 0.0086) pdiblcb=NA( 0.) pscbe1=NA( 424.Meg) pscbe2=NA( 10.u) + pvag=NA( 0.) wr=NA( 1.) dwg=NA( 0.) dwb=NA( 0.) b0=NA( 0.) b1=NA( 0.) + alpha0=1e-6 beta0=NA( 30.) elm=NA( 5.) vfbcv=NA(-1.) cgsl=NA( 0.) + cgdl=NA( 0.) ckappa=NA( 0.6) clc=NA( 100.n) cle=NA( 0.6) capmod=NA(2) + nqsmod=NA(0) mobmod=NA(1) noimod=NA(1) paramchk=NA(0) binunit=NA(1) + version=NA( 3.1) tox=NA( 15.n) xpart=NA( 0.) jsw=NA( 0.) nj=NA( 1.) + xti=NA( 3.) lint=NA( 0.) ll=NA( 0.) lln=NA( 1.) lw=NA( 0.) lwn=NA( 1.) + lwl=NA( 0.) wint=NA( 0.) wl=NA( 0.) wln=NA( 1.) ww=NA( 0.) wwn=NA( 1.) + wwl=NA( 0.) em=NA( 41.Meg) ef=NA( 1.) tnom=NA( 27.) fc=NA( 0.5) pb= 1. + cj=NA( 500.u) mj=NA( 0.5) cjsw=NA( 0.) mjsw= 0.33 is=NA( 10.f) + cgso= 207.18798p cgdo= 207.18798p cgbo= 0. ld=NA( 0.)) tests/==out/d_mos7.inv1.ckt.out000066400000000000000000000153001316501211100165640ustar00rootroot00000000000000.title mos7 inverter # 27. # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.656 5. 4.3833 5. 0.25 5. 0.25 5. 4.6379 5. 4.345 5. 0.5 5. 0.5 5. 4.6164 5. 4.2976 5. 0.75 5. 0.75 5. 4.5903 5. 4.237 4.9999 1. 5. 1. 4.9962 4.5534 4.9962 4.1551 4.9725 1.25 5. 1.25 4.9449 4.4416 4.9449 4.0333 4.6524 1.5 5. 1.5 4.8334 4.1831 4.8334 3.8079 4.1054 1.75 5. 1.75 4.6434 3.251 4.6434 3.3929 3.4404 2. 5. 2. 4.1824 1.5689 4.1824 2.9042 2.689 2.25 5. 2.25 0.50019 0.40069 0.50019 2.403 1.8867 2.5 5. 2.5 0.23364 0.21562 0.23364 1.9146 1.1001 2.75 5. 2.75 0.13874 0.13114 0.13874 1.4539 0.6237 3. 5. 3. 0.083035 0.079361 0.083035 1.033 0.47852 3.25 5. 3.25 0.046572 0.044802 0.046572 0.6636 0.4039 3.5 5. 3.5 0.022212 0.021459 0.022212 0.3558 0.35527 3.75 5. 3.75 0.0068481 0.0066359 0.0068481 0.12194 0.32024 4. 5. 4. 378.95u 368.u 378.95u 0.0073666 0.29353 4.25 5. 4.25 1.6913u 1.645u 1.6913u 34.874u 0.27237 4.5 5. 4.5 5.0867n 4.9542n 5.0867n 110.38n 0.25514 4.75 5. 4.75 1.2862n 1.2542n 1.2862n 29.232n 0.24081 5. 5. 5. 1.2259n 1.1967n 1.2259n 29.059n 0.22868 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) 0. 5. 0. 5. 4.656 5. 4.3833 5. 100.p 5. -1.945p 5. 4.656 5. 4.3834 5. 200.p 5. 1.956p 5. 4.656 5. 4.3832 5. 300.p 5. -2.082p 5. 4.656 5. 4.3834 5. 400.p 5. 2.199p 5. 4.656 5. 4.3832 5. 500.p 5. -2.351p 5. 4.656 5. 4.3834 5. 600.p 5. 2.519p 5. 4.656 5. 4.3832 5. 700.p 5. -2.725p 5. 4.656 5. 4.3834 5. 800.p 5. 2.959p 5. 4.656 5. 4.3832 5. 900.p 5. -3.241p 5. 4.656 5. 4.3835 5. 1.n 5. 3.566p 5. 4.656 5. 4.3831 5. 1.1n 5. 0.25 5.0191 4.6704 5.0008 4.3765 5.0403 1.2n 5. 0.5 5.008 4.6323 5.0014 4.3135 5.0186 1.3n 5. 0.75 5.0042 4.6157 5.002 4.2629 5.0276 1.4n 5. 1. 5.0048 4.5762 5.0023 4.1793 4.9983 1.5n 5. 1.25 4.9659 4.4848 5. 4.0713 4.723 1.6n 5. 1.5 4.8707 4.2568 4.9938 3.8495 4.1768 1.7n 5. 1.75 4.6937 3.5948 4.9741 3.4499 3.5264 1.8n 5. 2. 4.3615 2.0221 4.9433 2.9652 2.7752 1.9n 5. 2.25 2.3304 0.50855 4.8988 2.4676 1.9739 2.n 5. 2.5 0.33473 0.22497 4.8387 1.9798 1.1737 2.1n 5. 2.75 0.12112 0.15347 4.7633 1.5164 0.65184 2.2n 5. 3. 0.11836 0.085479 4.6694 1.0924 0.49274 2.3n 5. 3.25 0.039894 0.057951 4.5537 0.71795 0.41735 2.4n 5. 3.5 0.04363 0.026537 4.4145 0.40482 0.36424 2.5n 5. 3.75 -951.9u 0.016258 4.2479 0.16425 0.32939 2.6n 5. 4. 0.016258 0.0047953 4.0576 0.036661 0.30046 2.7n 5. 4.25 -0.005571 0.0077252 3.8449 0.021634 0.27955 2.8n 5. 4.5 0.0129 0.0043461 3.6114 0.025689 0.26095 2.9n 5. 4.75 -0.0039612 0.0067649 3.3564 0.022913 0.24685 3.n 5. 5. 0.010846 0.0041978 3.0798 0.024793 0.23379 3.1n 5. 5. -0.010175 -0.003954 2.7925 -0.016797 0.22401 3.2n 5. 5. 0.0096217 0.003736 2.5072 0.011379 0.23301 3.3n 5. 5. -0.0090286 -0.0035196 2.224 -0.0077091 0.22472 3.4n 5. 5. 0.0085344 0.0033251 1.9436 0.0052228 0.23236 3.5n 5. 5. -0.008012 -0.003133 1.6669 -0.0035382 0.22532 3.6n 5. 5. 0.0075706 0.0029594 1.3961 0.0023971 0.2318 3.7n 5. 5. -0.0071101 -0.0027889 1.1362 -0.0016239 0.22583 3.8n 5. 5. 0.0067163 0.0026341 0.89959 0.0023971 0.23133 3.9n 5. 5. -0.0063101 -0.0024827 0.69158 -0.0029208 0.22626 4.n 5. 5. 0.0059589 0.0024074 0.51667 0.0019788 0.23093 4.1n 5. 5. -0.0056002 -0.0024207 0.37597 -0.0029208 0.22626 4.2n 5. 5. 0.0052872 0.0026185 0.2674 0.0035591 0.2313 4.3n 5. 5. -0.0049704 -0.002468 0.18664 -0.0024111 0.22629 4.4n 5. 5. 0.0046915 0.0023932 0.12837 0.0016335 0.2309 4.5n 5. 5. -0.0044116 -0.0024064 0.087332 -0.0024111 0.22629 4.6n 5. 5. 0.0041632 0.002603 0.05894 0.002938 0.23126 4.7n 5. 5. -0.0039156 -0.0023894 0.039555 -0.0019904 0.22632 4.8n 5. 5. 0.0036946 0.002603 0.026386 0.002938 0.23087 4.9n 5. 5. -0.0034755 -0.0023894 0.017566 -0.0035799 0.22632 5.n 5. 5. 0.0032788 0.002603 0.011678 0.0024254 0.23123 Gnucap System status iterations: op=9, dc=128, tran=406, fourier=0, total=598 transient timesteps: accepted=55, rejected=5, total=60 nodes: user=7, subckt=0, model=0, total=7 dctran density=59.2%, ac density=59.2% tests/==out/d_mos7.lin1.ckt.out000066400000000000000000000102511316501211100165520ustar00rootroot00000000000000nmos bsim3, linear, vbs=-123.. # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0.0099995 0.01 -1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -456.62n 0. 0. 4.5662n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 456.62n 3.2367 0.0099995 -1.2349 2.625 0.41991 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 726.94n 45.055u 263.37n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 186.5E-18 0. 1.8647f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 403.6E-18 1.8647f 0.61168 2.625 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 590.E-18 1.8647f -456.62n 0. 2.4997p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 4.5691n 4.5691n 0. 456.62n -1.2549p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049998 3.2317 -1.2399 -0.0049998 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099995 3.2367 -1.2349 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.01 0.01 0. 3. 3. 0.0099997 0.01 -280.65n 4. 4. 0.009999 0.01 -974.88n 5. 5. 0.0099984 0.01 -1.5556u 6. 6. 0.009998 0.01 -2.0442u 7. 7. 0.0099975 0.01 -2.4579u 8. 8. 0.0099972 0.01 -2.8097u 9. 9. 0.0099969 0.01 -3.1101u 10. 10. 0.0099966 0.01 -3.3674u Vgs ( 1 0 ) DC 3.236734 M1 ( 2 1 0 4 ) cmosn l=.9u w=.9u nrd=1. nrs=1. Vds ( 3 0 ) DC 0.01 Rds ( 2 3 ) 1. Vbs ( 4 0 ) DC -1.234875 .model cmosn nmos7 ( level=7 cdsc=NA( 240.u) cdscb=NA( 0.) cdscd=NA( 0.) + cit=NA( 0.) nfactor=NA( 1.) xj=NA( 150.n) vsat=NA( 80.K) at=NA( 33.K) + a0=NA( 1.) ags=NA( 0.) a1=NA( 0.) a2=NA( 1.) keta=NA(-0.047) + nsub=NA( 60.E+15) ngate=NA( 0.) vbm=NA(-3.) xt=NA( 155.n) kt1=NA(-0.11) + kt1l=NA( 0.) kt2=NA( 0.022) k3=NA( 80.) k3b=NA( 0.) w0=NA( 2.5u) + nlx=NA( 174.n) dvt0=NA( 2.2) dvt1=NA( 0.53) dvt2=NA(-0.032) dvt0w=NA( 0.) + dvt1w=NA( 5.3Meg) dvt2w=NA(-0.032) drout=NA( 0.56) ua1=NA( 4.31n) + ua=NA( 2.25n) ub1=NA(-7.61E-18) ub=NA( 587.E-21) ute=NA(-1.5) voff=NA(-0.08) + delta=NA( 0.01) rdsw=NA( 0.) prwg=NA( 0.) prwb=NA( 0.) prt=NA( 0.) + eta0=NA( 0.08) etab=NA(-0.07) pclm=NA( 1.3) pdiblc1=NA( 0.39) + pdiblc2=NA( 0.0086) pdiblcb=NA( 0.) pscbe1=NA( 424.Meg) pscbe2=NA( 10.u) + pvag=NA( 0.) wr=NA( 1.) dwg=NA( 0.) dwb=NA( 0.) b0=NA( 0.) b1=NA( 0.) + alpha0=NA( 0.) beta0=NA( 30.) elm=NA( 5.) vfbcv=NA(-1.) cgsl=NA( 0.) + cgdl=NA( 0.) ckappa=NA( 0.6) clc=NA( 100.n) cle=NA( 0.6) capmod=NA(2) + nqsmod=NA(0) mobmod=NA(1) noimod=NA(1) paramchk=NA(0) binunit=NA(1) + version=NA( 3.1) tox=NA( 15.n) xpart=NA( 0.) jsw=NA( 0.) nj=NA( 1.) + xti=NA( 3.) lint=NA( 0.) ll=NA( 0.) lln=NA( 1.) lw=NA( 0.) lwn=NA( 1.) + lwl=NA( 0.) wint=NA( 0.) wl=NA( 0.) wln=NA( 1.) ww=NA( 0.) wwn=NA( 1.) + wwl=NA( 0.) em=NA( 41.Meg) ef=NA( 1.) tnom=NA( 27.) fc=NA( 0.5) pb= 1. + cj=NA( 500.u) mj=NA( 0.5) cjsw=NA( 0.) mjsw= 0.33 is=NA( 10.f) + cgso= 207.18798p cgdo= 207.18798p cgbo= 0. ld=NA( 0.)) tests/==out/d_mos7.lin2.ckt.out000066400000000000000000000101101316501211100165450ustar00rootroot00000000000000nmos bsim3, linear, vbs=0 # v(1) v(2) v(3) iter(0) 27. 3.2367 0.009999 0.01 5. # i(Vgs) i(Vds) ps(Vgs) ps(Vds) 27. 0. -958.34n 0. 9.5834n # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 958.34n 3.2367 0.009999 0. 2.0459 0.57887 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 731.05n 94.884u 639.68n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 186.5E-18 0. 1.8647f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 926.9E-18 1.8647f 1.1909 2.0459 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 1.1134f 1.8647f -958.34n 0. 13.205f # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 9.5824n 9.5824n 0. 958.34n -13.205f ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049995 3.2317 -0.0049995 -0.0049995 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.009999 3.2367 0. 0. # v(1) v(2) v(3) i(Vds) -10. -10. 0.01 0.01 0. -9. -9. 0.01 0.01 0. -8. -8. 0.01 0.01 0. -7. -7. 0.01 0.01 0. -6. -6. 0.01 0.01 0. -5. -5. 0.01 0.01 0. -4. -4. 0.01 0.01 0. -3. -3. 0.01 0.01 0. -2. -2. 0.01 0.01 0. -1. -1. 0.01 0.01 0. 0. 0. 0.01 0.01 0. 1. 1. 0.01 0.01 0. 2. 2. 0.01 0.01 -9.5416n 3. 3. 0.0099992 0.01 -781.3n 4. 4. 0.0099985 0.01 -1.4777u 5. 5. 0.0099979 0.01 -2.0558u 6. 6. 0.0099975 0.01 -2.5389u 7. 7. 0.0099971 0.01 -2.945u 8. 8. 0.0099967 0.01 -3.2879u 9. 9. 0.0099964 0.01 -3.5786u 10. 10. 0.0099962 0.01 -3.8256u Vgs ( 1 0 ) DC 3.236734 M1 ( 2 1 0 0 ) cmosn l=.9u w=.9u nrd=1. nrs=1. Vds ( 3 0 ) DC 0.01 Rds ( 2 3 ) 1. .model cmosn nmos7 ( level=7 cdsc=NA( 240.u) cdscb=NA( 0.) cdscd=NA( 0.) + cit=NA( 0.) nfactor=NA( 1.) xj=NA( 150.n) vsat=NA( 80.K) at=NA( 33.K) + a0=NA( 1.) ags=NA( 0.) a1=NA( 0.) a2=NA( 1.) keta=NA(-0.047) + nsub=NA( 60.E+15) ngate=NA( 0.) vbm=NA(-3.) xt=NA( 155.n) kt1=NA(-0.11) + kt1l=NA( 0.) kt2=NA( 0.022) k3=NA( 80.) k3b=NA( 0.) w0=NA( 2.5u) + nlx=NA( 174.n) dvt0=NA( 2.2) dvt1=NA( 0.53) dvt2=NA(-0.032) dvt0w=NA( 0.) + dvt1w=NA( 5.3Meg) dvt2w=NA(-0.032) drout=NA( 0.56) ua1=NA( 4.31n) + ua=NA( 2.25n) ub1=NA(-7.61E-18) ub=NA( 587.E-21) ute=NA(-1.5) voff=NA(-0.08) + delta=NA( 0.01) rdsw=NA( 0.) prwg=NA( 0.) prwb=NA( 0.) prt=NA( 0.) + eta0=NA( 0.08) etab=NA(-0.07) pclm=NA( 1.3) pdiblc1=NA( 0.39) + pdiblc2=NA( 0.0086) pdiblcb=NA( 0.) pscbe1=NA( 424.Meg) pscbe2=NA( 10.u) + pvag=NA( 0.) wr=NA( 1.) dwg=NA( 0.) dwb=NA( 0.) b0=NA( 0.) b1=NA( 0.) + alpha0=NA( 0.) beta0=NA( 30.) elm=NA( 5.) vfbcv=NA(-1.) cgsl=NA( 0.) + cgdl=NA( 0.) ckappa=NA( 0.6) clc=NA( 100.n) cle=NA( 0.6) capmod=NA(2) + nqsmod=NA(0) mobmod=NA(1) noimod=NA(1) paramchk=NA(0) binunit=NA(1) + version=NA( 3.1) tox=NA( 15.n) xpart=NA( 0.) jsw=NA( 0.) nj=NA( 1.) + xti=NA( 3.) lint=NA( 0.) ll=NA( 0.) lln=NA( 1.) lw=NA( 0.) lwn=NA( 1.) + lwl=NA( 0.) wint=NA( 0.) wl=NA( 0.) wln=NA( 1.) ww=NA( 0.) wwn=NA( 1.) + wwl=NA( 0.) em=NA( 41.Meg) ef=NA( 1.) tnom=NA( 27.) fc=NA( 0.5) pb= 1. + cj=NA( 500.u) mj=NA( 0.5) cjsw=NA( 0.) mjsw= 0.33 is=NA( 10.f) + cgso= 207.18798p cgdo= 207.18798p cgbo= 0. ld=NA( 0.)) tests/==out/d_mos7.nand1.ckt.out000066400000000000000000000213561316501211100167200ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6869 5.8842u 996.24Meg 1. -2. 5. 0. 154.84 6.2334u 996.23Meg 2. -3. 5. 0. 4.991 244.14n 996.23Meg 3. -4. 5. 0. 5. 261.7n 996.23Meg 4. -5. 5. 0. 5. 261.7n 996.23Meg 5. -6. 5. 0. 5. 261.7n 996.23Meg 6. -7. 5. 0. 5. 261.7n 996.23Meg 7. 27. 5. 0. 5. 261.7n 996.23Meg 8. # region(XI10.Mp1.Ddb) region(XI10.Mp2.Ddb) region(XI10.Mn1.Ddb) region(XI10.Mn2.Ddb) region(XI10.Mn1.Dsb) 0. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -2. -1. -1. -1. -1. -1. -3. 1. 1. -1. -1. -1. -4. -1. -1. -1. -1. -1. -5. -1. -1. -1. -1. -1. -6. -1. -1. -1. -1. -1. -7. -1. -1. -1. -1. -1. 27. -1. -1. -1. -1. -1. # V(XI10.Mp1.Ddb) V(XI10.Mp2.Ddb) V(XI10.Mn1.Ddb) V(XI10.Mn2.Ddb) V(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -2.3131 -2.3131 -2.6869 -5.8842u -5.8842u -2. 149.84 149.84 -154.84 -6.2334u -6.2334u -3. -0.0089704 -0.0089704 -4.991 -244.14n -244.14n -4. 28.028u 28.028u -5. -261.7n -261.7n -5. -3.4216n -3.4216n -5. -261.7n -261.7n -6. -3.2751n -3.2751n -5. -261.7n -261.7n -7. -3.2751n -3.2751n -5. -261.7n -261.7n 27. -3.2751n -3.2751n -5. -261.7n -261.7n # I(XI10.Mp1.Ddb) I(XI10.Mp2.Ddb) I(XI10.Mn1.Ddb) I(XI10.Mn2.Ddb) I(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -3.2074p -3.2074p -3.7258p -8.159E-18 -8.159E-18 -2. 149.83p 149.83p -154.85p -8.643E-18 -8.643E-18 -3. -46.453u -46.453u -5.001p -339.E-21 -339.E-21 -4. -443.2E-18 -443.2E-18 -5.01p -363.E-21 -363.E-21 -5. -11.E-21 -11.E-21 -5.01p -363.E-21 -363.E-21 -6. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 -7. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 27. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 261.7n 8. 1.p 4.407p 5. 261.7n 4. 3.6757p 2.118p 5. 261.7n 4. 100.p -2.166p 5. 261.7n 4. 200.p 2.148p 5. 261.69n 4. 300.p -2.162p 5. 261.72n 4. 400.p 2.151p 5. 261.64n 4. 500.p -2.159p 5. 261.81n 4. 600.p 2.153p 5. 261.47n 4. 700.p -2.158p 5. 261.47n 4. 800.p 2.155p 5. 261.47n 4. 900.p -2.157p 5. 261.47n 4. 1.n 2.156p 5. 261.47n 4. 1.1n 0.25 5.0011 0.25 5. 1.2n 0.5 5.0019 0.49998 5. 1.3n 0.75 5.0025 0.74988 5. 1.4n 1. 5.003 0.97681 5. 1.5n 1.25 5.0035 0.71141 6. 1.6n 1.5 5.0019 0.19145 10. 1.7n 1.75 4.9989 0.18652 6. 1.8n 2. 4.9846 0.2604 5. 1.9n 2.25 4.9665 0.28392 5. 2.n 2.5 4.9401 0.34147 5. 2.1n 2.75 4.9047 0.37213 5. 2.2n 3. 4.8585 0.42277 5. 2.3n 3.25 4.7991 0.45618 5. 2.4n 3.5 4.7224 0.50287 5. 2.5n 3.75 4.6267 0.53743 4. 2.6n 4. 4.507 0.58135 5. 2.7n 4.25 4.3679 0.6162 4. 2.8n 4.5 4.2138 0.65798 4. 2.9n 4.75 4.0431 0.69262 4. 3.n 5. 3.8553 0.73224 4. 3.1n 5. 3.6573 0.71646 4. 3.2n 5. 3.4598 0.72347 4. 3.3n 5. 3.2629 0.7095 4. 3.4n 5. 3.0668 0.714 4. 3.5n 5. 2.8715 0.70111 4. 3.6n 5. 2.677 0.70292 4. 3.7n 5. 2.4835 0.68974 4. 3.8n 5. 2.2913 0.68787 5. 3.9n 5. 2.1008 0.67147 5. 4.n 5. 1.9126 0.6596 5. 4.1n 5. 1.728 0.63021 5. 4.2n 5. 1.549 0.59885 5. 4.3n 5. 1.3776 0.55399 5. 4.4n 5. 1.2159 0.50994 5. 4.5n 5. 1.065 0.45868 5. 4.6n 5. 0.92592 0.41105 5. 4.7n 5. 0.79927 0.36097 5. 4.8n 5. 0.68531 0.31645 5. 4.9n 5. 0.58391 0.27241 5. 5.n 5. 0.49464 0.2347 5. 5.1n 5. 0.41685 0.1988 5. 5.2n 5. 0.34965 0.16905 5. 5.3n 5. 0.29208 0.14137 5. 5.4n 5. 0.24312 0.1191 5. 5.5n 5. 0.20175 0.09859 5. 5.6n 5. 0.16697 0.082565 5. 5.7n 5. 0.13788 0.067782 4. 5.8n 5. 0.11364 0.056589 4. 5.9n 5. 0.093518 0.046123 4. 6.n 5. 0.076853 0.038485 4. 6.1n 5. 0.063092 0.031151 4. 6.2n 5. 0.051744 0.026041 4. 6.3n 5. 0.042409 0.020923 4. 6.4n 5. 0.034733 0.017569 4. 6.5n 5. 0.028461 0.014149 4. 6.6n 5. 0.023315 0.01187 4. 6.7n 5. 0.019091 0.0094405 4. 6.8n 5. 0.015709 0.0080646 4. 6.9n 5. 0.01292 0.0063271 4. 7.n 5. 0.010626 0.0055243 4. 7.1n 5. 0.0087354 0.0042104 4. 7.2n 5. 0.0071831 0.003808 4. 7.3n 5. 0.0059034 0.002771 4. 7.4n 5. 0.004854 0.0026522 4. 7.5n 5. 0.003988 0.0017908 4. 7.6n 5. 0.0032794 0.001877 4. 7.7n 5. 0.0026934 0.0011212 4. 7.8n 5. 0.0022152 0.00136 4. 7.9n 5. 0.0018186 661.35u 4. 8.n 5. 0.0014964 0.0010183 4. 8.1n 5. 0.0012276 342.7u 4. 8.2n 5. 0.0010109 795.84u 4. 8.3n 5. 828.43u 118.82u 5. 8.4n 5. 683.u 654.55u 4. 8.5n 5. 558.82u -41.743u 5. 8.6n 5. 462.27u 572.73u 4. 8.7n 5. 379.8u -144.7u 5. 8.8n 5. 317.46u 528.65u 4. 8.9n 5. 261.12u -232.57u 4. 9.n 5. 220.63u 510.7u 4. 9.1n 5. 181.76u -302.95u 4. 9.2n 5. 156.09u 511.54u 4. 9.3n 5. 128.89u -362.47u 4. 9.4n 5. 113.32u 526.09u 4. 9.5n 5. 93.886u -415.72u 4. 9.6n 5. 85.244u 551.02u 4. 9.7n 5. 70.938u -465.84u 4. 9.8n 5. 67.112u 584.21u 4. 9.9n 5. 56.151u -515.05u 4. 10.n 5. 55.73u 624.31u 4. Gnucap System status iterations: op=8, dc=0, tran=460, fourier=0, total=595 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos7.nand1.nobypass.ckt.out000066400000000000000000000213561316501211100205550ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6869 5.8842u 996.24Meg 1. -2. 5. 0. 154.84 6.2334u 996.23Meg 2. -3. 5. 0. 4.991 244.14n 996.23Meg 3. -4. 5. 0. 5. 261.7n 996.23Meg 4. -5. 5. 0. 5. 261.7n 996.23Meg 5. -6. 5. 0. 5. 261.7n 996.23Meg 6. -7. 5. 0. 5. 261.7n 996.23Meg 7. 27. 5. 0. 5. 261.7n 996.23Meg 8. # region(XI10.Mp1.Ddb) region(XI10.Mp2.Ddb) region(XI10.Mn1.Ddb) region(XI10.Mn2.Ddb) region(XI10.Mn1.Dsb) 0. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -2. -1. -1. -1. -1. -1. -3. 1. 1. -1. -1. -1. -4. -1. -1. -1. -1. -1. -5. -1. -1. -1. -1. -1. -6. -1. -1. -1. -1. -1. -7. -1. -1. -1. -1. -1. 27. -1. -1. -1. -1. -1. # V(XI10.Mp1.Ddb) V(XI10.Mp2.Ddb) V(XI10.Mn1.Ddb) V(XI10.Mn2.Ddb) V(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -2.3131 -2.3131 -2.6869 -5.8842u -5.8842u -2. 149.84 149.84 -154.84 -6.2334u -6.2334u -3. -0.0089704 -0.0089704 -4.991 -244.14n -244.14n -4. 28.028u 28.028u -5. -261.7n -261.7n -5. -3.4216n -3.4216n -5. -261.7n -261.7n -6. -3.2751n -3.2751n -5. -261.7n -261.7n -7. -3.2751n -3.2751n -5. -261.7n -261.7n 27. -3.2751n -3.2751n -5. -261.7n -261.7n # I(XI10.Mp1.Ddb) I(XI10.Mp2.Ddb) I(XI10.Mn1.Ddb) I(XI10.Mn2.Ddb) I(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -3.2074p -3.2074p -3.7258p -8.159E-18 -8.159E-18 -2. 149.83p 149.83p -154.85p -8.643E-18 -8.643E-18 -3. -46.453u -46.453u -5.001p -339.E-21 -339.E-21 -4. -443.2E-18 -443.2E-18 -5.01p -363.E-21 -363.E-21 -5. -11.E-21 -11.E-21 -5.01p -363.E-21 -363.E-21 -6. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 -7. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 27. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 261.7n 8. 1.p 0. 5. 261.7n 3. 3.6757p 0. 5. 261.7n 3. 100.p 0. 5. 261.7n 3. 200.p 0. 5. 261.7n 3. 300.p 0. 5. 261.7n 3. 400.p 0. 5. 261.7n 3. 500.p 0. 5. 261.7n 3. 600.p 0. 5. 261.7n 3. 700.p 0. 5. 261.7n 3. 800.p 0. 5. 261.7n 3. 900.p 0. 5. 261.7n 3. 1.n 1.f 5. 261.7n 3. 1.1n 0.25 5.0023 0.25 6. 1.2n 0.5 5.0028 0.49998 5. 1.3n 0.75 5.0032 0.74988 5. 1.4n 1. 5.0036 0.97681 5. 1.5n 1.25 5.0039 0.71141 6. 1.6n 1.5 5.0023 0.19147 9. 1.7n 1.75 4.9956 0.18645 6. 1.8n 2. 4.9836 0.26039 5. 1.9n 2.25 4.9648 0.28388 5. 2.n 2.5 4.9377 0.34143 5. 2.1n 2.75 4.9016 0.37207 5. 2.2n 3. 4.8543 0.42269 5. 2.3n 3.25 4.7934 0.45608 5. 2.4n 3.5 4.7142 0.50273 5. 2.5n 3.75 4.6138 0.53722 4. 2.6n 4. 4.4937 0.58113 5. 2.7n 4.25 4.3563 0.61601 4. 2.8n 4.5 4.2024 0.65779 4. 2.9n 4.75 4.0315 0.69242 4. 3.n 5. 3.8436 0.73202 4. 3.1n 5. 3.6455 0.71624 4. 3.2n 5. 3.448 0.72323 4. 3.3n 5. 3.2513 0.70925 4. 3.4n 5. 3.0552 0.71373 4. 3.5n 5. 2.8599 0.70081 4. 3.6n 5. 2.6656 0.70257 4. 3.7n 5. 2.4723 0.68949 4. 3.8n 5. 2.2802 0.68718 5. 3.9n 5. 2.09 0.67068 5. 4.n 5. 1.9023 0.65848 5. 4.1n 5. 1.7187 0.62862 5. 4.2n 5. 1.5411 0.59712 5. 4.3n 5. 1.3714 0.5523 5. 4.4n 5. 1.2112 0.50849 5. 4.5n 5. 1.0616 0.45751 5. 4.6n 5. 0.92376 0.41026 5. 4.7n 5. 0.79815 0.36051 5. 4.8n 5. 0.685 0.31633 5. 4.9n 5. 0.58424 0.27254 5. 5.n 5. 0.49543 0.23505 5. 5.1n 5. 0.41793 0.19928 5. 5.2n 5. 0.35089 0.16963 5. 5.3n 5. 0.29339 0.14197 5. 5.4n 5. 0.24441 0.11972 5. 5.5n 5. 0.20297 0.09917 5. 5.6n 5. 0.16809 0.083115 5. 5.7n 5. 0.13889 0.068269 4. 5.8n 5. 0.11453 0.05703 4. 5.9n 5. 0.094295 0.046499 4. 6.n 5. 0.07752 0.038818 4. 6.1n 5. 0.06366 0.031428 4. 6.2n 5. 0.052224 0.026283 4. 6.3n 5. 0.042812 0.02112 4. 6.4n 5. 0.035069 0.01774 4. 6.5n 5. 0.028715 0.014129 4. 6.6n 5. 0.023498 0.011955 4. 6.7n 5. 0.019225 0.0094159 4. 6.8n 5. 0.015721 0.0080555 4. 6.9n 5. 0.012856 0.0062519 4. 7.n 5. 0.010508 0.0054336 4. 7.1n 5. 0.0085896 0.0041343 4. 7.2n 5. 0.0070183 0.0036734 4. 7.3n 5. 0.0057361 0.0027205 4. 7.4n 5. 0.0046855 0.0024924 4. 7.5n 5. 0.0038292 0.0017786 4. 7.6n 5. 0.0031271 0.0016999 4. 7.7n 5. 0.0025556 0.0011525 4. 7.8n 5. 0.0020866 0.0011677 4. 7.9n 5. 0.0017054 737.27u 4. 8.n 5. 0.0013921 809.62u 4. 8.1n 5. 0.0011379 462.74u 4. 8.2n 5. 928.6u 568.12u 4. 8.3n 5. 759.26u 281.94u 4. 8.4n 5. 619.37u 404.66u 4. 8.5n 5. 506.61u 163.52u 4. 8.6n 5. 413.07u 293.49u 4. 8.7n 5. 338.05u 86.543u 4. 8.8n 5. 275.45u 217.37u 4. 8.9n 5. 225.59u 37.054u 4. 9.n 5. 183.66u 164.8u 4. 9.1n 5. 150.57u 5.7504u 5. 9.2n 5. 122.21u 127.19u 6. 9.3n 5. 100.28u -12.914u 6. 9.4n 5. 81.361u 101.26u 5. 9.5n 5. 66.885u -24.42u 6. 9.6n 5. 54.146u 82.62u 5. 9.7n 5. 44.631u -30.778u 5. 9.8n 5. 36.018u 68.946u 5. 9.9n 5. 29.798u -33.814u 5. 10.n 5. 23.944u 58.685u 5. Gnucap System status iterations: op=8, dc=0, tran=458, fourier=0, total=593 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos7.plin.ckt.out000066400000000000000000000025671316501211100166640ustar00rootroot00000000000000pmos p gate # v(1) v(2) v(3) v(4) iter(0) 27. -3.2367 0.0099998 0.01 1.2349 6. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. -174.58n 0. 0. 1.7458n 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 174.58n -3.2367 0.0099998 1.2349 -2.6218 0.45541 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 271.53n 17.254u 99.16n 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 186.5E-18 0. 1.8647f -3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 418.2E-18 0. 1.8647f 0.62492 2.6218 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 604.7E-18 186.5E-18 1.8647f -174.58n 0. -2.4798p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 1.7488n 1.7488n 0. 174.58n 1.2349p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0.0049999 -3.2417 1.2299 -0.0049999 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0.0099998 -3.2367 1.2349 0. tests/==out/d_mos7.psat.ckt.out000066400000000000000000000024651316501211100166660ustar00rootroot00000000000000pmos p gate # v(2) v(3) v(4) iter(0) 27. -3.3927 -5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. 16.073u -3.4027p 80.367u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. -16.073u -3.3927 -3.3927 -34.03E-18 -2.0417 0.71372 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 20.736u 356.33n 11.549u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 0. 0. 1.8647f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 1.8647f 1.351 2.0417 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 0. 1.8647f 16.073u 0. -3.4027p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 54.532u 54.532u 0. 16.073u 3.4027p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.6963 -1.6963 1.6963 1.6963 # vd(M1) vg(M1) vb(M1) vs(M1) 27. -3.3927 -3.3927 -34.03E-18 0. tests/==out/d_mos7.sat1.ckt.out000066400000000000000000000025001316501211100165550ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 2.9568 5. 0. 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -20.432u 2.9668p 102.16u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 20.432u 2.9568 2.9568 29.67E-18 2.0422 0.46358 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 37.954u 586.32n 23.039u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 0. 0. 1.8647f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 1.8647f 0.91453 2.0422 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 0. 1.8647f -20.432u 0. 2.9668p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 60.414u 60.414u 0. 20.432u -2.9668p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.4784 1.4784 -1.4784 -1.4784 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 2.9568 2.9568 29.67E-18 0. tests/==out/d_mos7.sat2.ckt.out000066400000000000000000000025001316501211100165560ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 3.3635 5. -1.2349 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -16.365u 0. 81.827u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 16.365u 3.3635 3.3635 -1.2349 2.6164 0.49631 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 37.2u 581.85n 10.952u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 0. 0. 1.8647f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 1.8647f 0.74708 2.6164 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 0. 1.8647f -16.365u 0. 5.8532p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 55.044u 55.044u 0. 16.365u -4.6083p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.6817 1.6817 -2.9166 -1.6817 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 3.3635 3.3635 -1.2349 0. tests/==out/d_mos7.sat3.ckt.out000066400000000000000000000025001316501211100165570ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 3.3635 5. -1.2349 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -16.365u 0. 81.827u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 16.365u 3.3635 3.3635 -1.2349 2.6164 0.49631 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 37.2u 581.85n 10.952u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 186.5E-18 0. 0. 1.8647f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 1.8647f 0.74708 2.6164 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 186.5E-18 0. 1.8647f -16.365u 0. 5.8532p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 55.044u 55.044u 0. 16.365u -4.6083p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.6817 1.6817 -2.9166 -1.6817 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 3.3635 3.3635 -1.2349 0. tests/==out/d_mos7.sts.ckt.out000066400000000000000000000026061316501211100165250ustar00rootroot00000000000000nmos n gate, sub-threshold # v(1) v(2) v(3) v(4) iter(0) 27. 0.23673 5. 5. -1.2349 4. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 6.2449p 0.23673 5. -1.2349 2.2895 0.033285 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 0. 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.8647f 1.8647f 0. 186.47f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 186.47f 0. 2.2895 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 1.8647f 1.8647f 186.47f 1.2449p 0. 7.4897p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 40.473p 40.473p 0. 0. -6.2449p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 2.5 -2.2633 -3.7349 -2.5 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 5. 0.23673 -1.2349 0. tests/==out/d_mos7.zero.ckt.out000066400000000000000000000026001316501211100166650ustar00rootroot00000000000000nmos n gate, vds = 0 # v(1) v(2) v(3) v(4) iter(0) 27. 3.2367 0. 0. 0. 5. # i(Vgs) i(Vds) i(Vbs) ps(Vgs) ps(Vds) ps(Vbs) 27. 0. 0. 0. 0. 0. 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 0. 3.2367 0. 0. 1.6986 0.77304 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 0. 129.84u 0. 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 1.8647f 1.8647f 0. 186.47f 3. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 93.235f 186.47f 1.5381 1.6986 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 1.8647f 95.099f 186.47f 0. 0. 0. # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 0. 0. 0. 0. 0. ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 0. 3.2367 0. 0. # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.2367 0. 0. tests/==out/d_mos8.nand1.ckt.out000066400000000000000000000213561316501211100167210ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6869 5.8842u 996.24Meg 1. -2. 5. 0. 154.84 6.2334u 996.23Meg 2. -3. 5. 0. 4.991 244.14n 996.23Meg 3. -4. 5. 0. 5. 261.7n 996.23Meg 4. -5. 5. 0. 5. 261.7n 996.23Meg 5. -6. 5. 0. 5. 261.7n 996.23Meg 6. -7. 5. 0. 5. 261.7n 996.23Meg 7. 27. 5. 0. 5. 261.7n 996.23Meg 8. # region(XI10.Mp1.Ddb) region(XI10.Mp2.Ddb) region(XI10.Mn1.Ddb) region(XI10.Mn2.Ddb) region(XI10.Mn1.Dsb) 0. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -2. -1. -1. -1. -1. -1. -3. 1. 1. -1. -1. -1. -4. -1. -1. -1. -1. -1. -5. -1. -1. -1. -1. -1. -6. -1. -1. -1. -1. -1. -7. -1. -1. -1. -1. -1. 27. -1. -1. -1. -1. -1. # V(XI10.Mp1.Ddb) V(XI10.Mp2.Ddb) V(XI10.Mn1.Ddb) V(XI10.Mn2.Ddb) V(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -2.3131 -2.3131 -2.6869 -5.8842u -5.8842u -2. 149.84 149.84 -154.84 -6.2334u -6.2334u -3. -0.0089704 -0.0089704 -4.991 -244.14n -244.14n -4. 28.028u 28.028u -5. -261.7n -261.7n -5. -3.4216n -3.4216n -5. -261.7n -261.7n -6. -3.2751n -3.2751n -5. -261.7n -261.7n -7. -3.2751n -3.2751n -5. -261.7n -261.7n 27. -3.2751n -3.2751n -5. -261.7n -261.7n # I(XI10.Mp1.Ddb) I(XI10.Mp2.Ddb) I(XI10.Mn1.Ddb) I(XI10.Mn2.Ddb) I(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -3.2074p -3.2074p -3.7258p -8.159E-18 -8.159E-18 -2. 149.83p 149.83p -154.85p -8.643E-18 -8.643E-18 -3. -46.453u -46.453u -5.001p -339.E-21 -339.E-21 -4. -443.2E-18 -443.2E-18 -5.01p -363.E-21 -363.E-21 -5. -11.E-21 -11.E-21 -5.01p -363.E-21 -363.E-21 -6. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 -7. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 27. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 261.7n 8. 1.p 4.896p 5. 261.7n 5. 3.6757p -1.848p 5. 261.69n 4. 100.p 1.745p 5. 261.71n 5. 200.p -1.78p 5. 261.68n 5. 300.p 1.752p 5. 261.73n 5. 400.p -1.773p 5. 261.64n 5. 500.p 1.758p 5. 261.81n 5. 600.p -1.769p 5. 261.47n 5. 700.p 1.761p 5. 261.47n 5. 800.p -1.767p 5. 261.47n 5. 900.p 1.762p 5. 261.47n 5. 1.n -1.765p 5. 261.47n 5. 1.1n 0.25 5.0038 0.25 5. 1.2n 0.5 5.0066 0.49999 5. 1.3n 0.75 5.0088 0.74996 5. 1.4n 1. 5.0106 1.0001 5. 1.5n 1.25 5.0122 0.98571 5. 1.6n 1.5 5.0131 0.25776 8. 1.7n 1.75 5.0091 0.19372 7. 1.8n 2. 4.998 0.26736 5. 1.9n 2.25 4.9794 0.29414 5. 2.n 2.5 4.9528 0.34525 5. 2.1n 2.75 4.9177 0.38132 5. 2.2n 3. 4.8722 0.4261 5. 2.3n 3.25 4.814 0.46433 5. 2.4n 3.5 4.7392 0.50627 5. 2.5n 3.75 4.6455 0.54481 5. 2.6n 4. 4.5291 0.58496 5. 2.7n 4.25 4.3923 0.62305 5. 2.8n 4.5 4.2409 0.66182 4. 2.9n 4.75 4.0721 0.69912 4. 3.n 5. 3.886 0.73633 4. 3.1n 5. 3.6885 0.71527 4. 3.2n 5. 3.4911 0.72503 4. 3.3n 5. 3.2946 0.71027 4. 3.4n 5. 3.0986 0.71434 4. 3.5n 5. 2.9036 0.70279 4. 3.6n 5. 2.7093 0.70306 4. 3.7n 5. 2.5161 0.6925 4. 3.8n 5. 2.324 0.68827 5. 3.9n 5. 2.1336 0.67568 5. 4.n 5. 1.9456 0.66257 5. 4.1n 5. 1.761 0.63824 5. 4.2n 5. 1.5817 0.60652 5. 4.3n 5. 1.4099 0.5654 5. 4.4n 5. 1.2473 0.52048 5. 4.5n 5. 1.0952 0.47155 5. 4.6n 5. 0.95468 0.42258 5. 4.7n 5. 0.82629 0.37371 5. 4.8n 5. 0.71038 0.32754 5. 4.9n 5. 0.60692 0.28395 5. 5.n 5. 0.51552 0.24445 5. 5.1n 5. 0.4356 0.20859 5. 5.2n 5. 0.36634 0.17708 5. 5.3n 5. 0.30682 0.14927 5. 5.4n 5. 0.25603 0.1254 5. 5.5n 5. 0.21298 0.10474 5. 5.6n 5. 0.17669 0.087316 5. 5.7n 5. 0.14624 0.072447 4. 5.8n 5. 0.12081 0.060069 4. 5.9n 5. 0.099636 0.0496 4. 6.n 5. 0.082061 0.040974 4. 6.1n 5. 0.067509 0.033716 4. 6.2n 5. 0.055485 0.027785 4. 6.3n 5. 0.045567 0.022806 5. 6.4n 5. 0.037397 0.018765 4. 6.5n 5. 0.030691 0.015467 4. 6.6n 5. 0.025178 0.012643 4. 6.7n 5. 0.020647 0.010423 4. 6.8n 5. 0.016981 0.0085257 4. 6.9n 5. 0.013961 0.0070586 4. 7.n 5. 0.011477 0.0057591 4. 7.1n 5. 0.0094325 0.0047773 4. 7.2n 5. 0.0077518 0.0038854 4. 7.3n 5. 0.0063694 0.0032326 4. 7.4n 5. 0.0052335 0.0026184 4. 7.5n 5. 0.0042995 0.0021877 4. 7.6n 5. 0.0035323 0.0017626 4. 7.7n 5. 0.0029015 0.0014814 4. 7.8n 5. 0.0023836 0.0011849 4. 7.9n 5. 0.0019578 0.0010041 4. 8.n 5. 0.0016083 795.31u 4. 8.1n 5. 0.0013208 681.53u 4. 8.2n 5. 0.001085 532.68u 4. 8.3n 5. 891.06u 463.54u 4. 8.4n 5. 731.98u 355.77u 4. 8.5n 5. 601.08u 316.16u 4. 8.6n 5. 493.79u 236.69u 4. 8.7n 5. 405.45u 216.45u 4. 8.8n 5. 333.11u 156.61u 4. 8.9n 5. 273.49u 148.94u 4. 9.n 5. 224.71u 102.84u 4. 9.1n 5. 184.47u 103.16u 4. 9.2n 5. 151.59u 66.783u 4. 9.3n 5. 124.42u 72.067u 4. 9.4n 5. 102.26u 42.667u 4. 9.5n 5. 83.914u 50.897u 4. 9.6n 5. 68.992u 26.588u 4. 9.7n 5. 56.593u 36.437u 4. 9.8n 5. 46.548u 15.916u 4. 9.9n 5. 38.166u 26.516u 4. 10.n 5. 31.408u 8.877u 4. Gnucap System status iterations: op=8, dc=0, tran=469, fourier=0, total=604 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos8.sat2.ckt.out000066400000000000000000000031201316501211100165560ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 3.3635 5. -1.2349 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -16.365u 0. 81.827u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 16.365u 3.3635 3.3635 -1.2349 2.6164 0.49631 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 37.2u 581.85n 10.952u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 252.2E-18 0. 0. 1.8647f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 0. 0.74708 2.6164 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 252.2E-18 0. 0. -16.365u 0. 5.8532p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 55.044u 55.044u 0. 16.365u -4.6083p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.6817 1.6817 -2.9166 -1.6817 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 3.3635 3.3635 -1.2349 0. # idbcpoly(M1) idb(M1) gdbds(M1) gdbgs(M1) gdbbs(M1) 27. ?? 0. 0. 0. 0. # isbcpoly(M1) isb(M1) gsbsd(M1) gsbgd(M1) gsbbd(M1) 27. ?? 0. 0. 0. 0. tests/==out/d_mos8.sat3.ckt.out000066400000000000000000000031201316501211100165570ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 3.3635 5. -1.2349 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -16.365u 0. 81.827u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. 16.365u 3.3635 3.3635 -1.2349 2.6164 0.49631 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 37.2u 581.85n 10.952u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 252.2E-18 0. 0. 1.8647f 7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 0. 0.74708 2.6164 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 252.2E-18 0. 0. -16.365u 0. 5.8532p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 55.044u 55.044u 0. 16.365u -4.6083p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. 1.6817 1.6817 -2.9166 -1.6817 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 3.3635 3.3635 -1.2349 0. # idbcpoly(M1) idb(M1) gdbds(M1) gdbgs(M1) gdbbs(M1) 27. ?? 1.4993u 6.0279u 97.223n 325.59n # isbcpoly(M1) isb(M1) gsbsd(M1) gsbgd(M1) gsbbd(M1) 27. ?? 0. 0. 0. 0. tests/==out/d_mos8.sat4.ckt.out000066400000000000000000000031201316501211100165600ustar00rootroot00000000000000nmos n gate, saturated # v(2) v(3) v(4) iter(0) 27. 3.3635 5. -1.2349 7. # i(Vds) i(Vbs) ps(Vds) ps(Vbs) 27. -16.365u 0. 81.827u 0. # id(M1) vgs(M1) vds(M1) vbs(M1) vth(M1) vdsat(M1) 27. -16.365u 0. -3.3635 -4.5983 2.6164 0.49631 # gm(M1) gds(M1) gmb(M1) cbd(M1) cbs(M1) 27. 37.2u 581.85n 10.952u 0. 0. # cgsovl(M1) cgdovl(M1) cgbovl(M1) cgate(M1) region(M1) 27. 0. 252.2E-18 0. 1.8647f -7. # cgs(M1) cgd(M1) cgb(M1) vgst(M1) von(M1) 27. 0. 0. 0. 0.74708 2.6164 # cgst(M1) cgdt(M1) cgbt(M1) is(M1) ig(M1) ib(M1) 27. 0. 252.2E-18 0. 16.365u 0. 5.8532p # p(M1) pd(M1) ps(M1) ids(M1) idstray(M1) iderror(M1) 27. 55.044u 55.044u 0. 16.365u -1.2449p ?? # vdm(M1) vgm(M1) vbm(M1) vsm(M1) 27. -1.6817 1.6817 -2.9166 1.6817 # vd(M1) vg(M1) vb(M1) vs(M1) 27. 0. 3.3635 -1.2349 3.3635 # idbcpoly(M1) idb(M1) gdbds(M1) gdbgs(M1) gdbbs(M1) 27. ?? 0. 0. 0. 0. # isbcpoly(M1) isb(M1) gsbsd(M1) gsbgd(M1) gsbbd(M1) 27. ?? 1.4993u 6.0279u 97.223n 325.59n tests/==out/d_mos8c2.nand1.ckt.out000066400000000000000000000213561316501211100171460ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6869 5.8842u 996.24Meg 1. -2. 5. 0. 154.84 6.2334u 996.23Meg 2. -3. 5. 0. 4.991 244.14n 996.23Meg 3. -4. 5. 0. 5. 261.7n 996.23Meg 4. -5. 5. 0. 5. 261.7n 996.23Meg 5. -6. 5. 0. 5. 261.7n 996.23Meg 6. -7. 5. 0. 5. 261.7n 996.23Meg 7. 27. 5. 0. 5. 261.7n 996.23Meg 8. # region(XI10.Mp1.Ddb) region(XI10.Mp2.Ddb) region(XI10.Mn1.Ddb) region(XI10.Mn2.Ddb) region(XI10.Mn1.Dsb) 0. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -2. -1. -1. -1. -1. -1. -3. 1. 1. -1. -1. -1. -4. -1. -1. -1. -1. -1. -5. -1. -1. -1. -1. -1. -6. -1. -1. -1. -1. -1. -7. -1. -1. -1. -1. -1. 27. -1. -1. -1. -1. -1. # V(XI10.Mp1.Ddb) V(XI10.Mp2.Ddb) V(XI10.Mn1.Ddb) V(XI10.Mn2.Ddb) V(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -2.3131 -2.3131 -2.6869 -5.8842u -5.8842u -2. 149.84 149.84 -154.84 -6.2334u -6.2334u -3. -0.0089704 -0.0089704 -4.991 -244.14n -244.14n -4. 28.028u 28.028u -5. -261.7n -261.7n -5. -3.4216n -3.4216n -5. -261.7n -261.7n -6. -3.2751n -3.2751n -5. -261.7n -261.7n -7. -3.2751n -3.2751n -5. -261.7n -261.7n 27. -3.2751n -3.2751n -5. -261.7n -261.7n # I(XI10.Mp1.Ddb) I(XI10.Mp2.Ddb) I(XI10.Mn1.Ddb) I(XI10.Mn2.Ddb) I(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -3.2074p -3.2074p -3.7258p -8.159E-18 -8.159E-18 -2. 149.83p 149.83p -154.85p -8.643E-18 -8.643E-18 -3. -46.453u -46.453u -5.001p -339.E-21 -339.E-21 -4. -443.2E-18 -443.2E-18 -5.01p -363.E-21 -363.E-21 -5. -11.E-21 -11.E-21 -5.01p -363.E-21 -363.E-21 -6. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 -7. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 27. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 261.7n 8. 1.p 4.976p 5. 261.7n 5. 3.6757p -1.932p 5. 261.69n 4. 100.p 1.829p 5. 261.71n 5. 200.p -1.864p 5. 261.68n 5. 300.p 1.837p 5. 261.73n 5. 400.p -1.857p 5. 261.64n 5. 500.p 1.842p 5. 261.81n 5. 600.p -1.853p 5. 261.47n 5. 700.p 1.845p 5. 261.47n 5. 800.p -1.851p 5. 261.47n 5. 900.p 1.846p 5. 261.47n 5. 1.n -1.849p 5. 261.47n 5. 1.1n 0.25 5.0038 0.25 5. 1.2n 0.5 5.0067 0.49999 5. 1.3n 0.75 5.0089 0.74997 5. 1.4n 1. 5.0107 1.0014 5. 1.5n 1.25 5.0123 0.99593 5. 1.6n 1.5 5.0133 0.26179 8. 1.7n 1.75 5.0094 0.19555 7. 1.8n 2. 4.9987 0.26724 5. 1.9n 2.25 4.9801 0.29511 5. 2.n 2.5 4.9536 0.34532 5. 2.1n 2.75 4.9185 0.3819 5. 2.2n 3. 4.873 0.42624 5. 2.3n 3.25 4.815 0.46472 5. 2.4n 3.5 4.7403 0.50643 5. 2.5n 3.75 4.6468 0.5451 5. 2.6n 4. 4.5306 0.58512 5. 2.7n 4.25 4.3938 0.62329 5. 2.8n 4.5 4.2426 0.66198 4. 2.9n 4.75 4.0738 0.69933 4. 3.n 5. 3.8878 0.7365 4. 3.1n 5. 3.6902 0.71524 4. 3.2n 5. 3.4928 0.7251 4. 3.3n 5. 3.2963 0.71031 4. 3.4n 5. 3.1003 0.71437 4. 3.5n 5. 2.9053 0.70286 4. 3.6n 5. 2.711 0.70309 4. 3.7n 5. 2.5178 0.6926 4. 3.8n 5. 2.3257 0.68834 5. 3.9n 5. 2.1353 0.67586 5. 4.n 5. 1.9473 0.66278 5. 4.1n 5. 1.7627 0.63859 5. 4.2n 5. 1.5834 0.60692 5. 4.3n 5. 1.4115 0.56589 5. 4.4n 5. 1.2489 0.521 5. 4.5n 5. 1.0967 0.47211 5. 4.6n 5. 0.9561 0.42314 5. 4.7n 5. 0.82761 0.37427 5. 4.8n 5. 0.71159 0.32806 5. 4.9n 5. 0.60801 0.28445 5. 5.n 5. 0.5165 0.2449 5. 5.1n 5. 0.43647 0.20901 5. 5.2n 5. 0.3671 0.17745 5. 5.3n 5. 0.30748 0.1496 5. 5.4n 5. 0.2566 0.12568 5. 5.5n 5. 0.21347 0.10499 5. 5.6n 5. 0.17711 0.087528 5. 5.7n 5. 0.1466 0.072632 4. 5.8n 5. 0.12112 0.060224 4. 5.9n 5. 0.099896 0.049735 4. 6.n 5. 0.08228 0.041085 4. 6.1n 5. 0.067694 0.033813 4. 6.2n 5. 0.05564 0.027863 4. 6.3n 5. 0.045697 0.022874 4. 6.4n 5. 0.037506 0.01882 4. 6.5n 5. 0.030782 0.015515 4. 6.6n 5. 0.025254 0.012682 4. 6.7n 5. 0.02071 0.010457 4. 6.8n 5. 0.017034 0.0085521 4. 6.9n 5. 0.014006 0.0070825 4. 7.n 5. 0.011514 0.0057774 4. 7.1n 5. 0.0094634 0.004794 4. 7.2n 5. 0.0077776 0.0038981 4. 7.3n 5. 0.0063909 0.0032443 4. 7.4n 5. 0.0052514 0.0026271 4. 7.5n 5. 0.0043144 0.002196 4. 7.6n 5. 0.0035447 0.0017685 4. 7.7n 5. 0.0029119 0.0014872 4. 7.8n 5. 0.0023922 0.001189 4. 7.9n 5. 0.001965 0.0010082 4. 8.n 5. 0.0016142 798.05u 4. 8.1n 5. 0.0013258 684.41u 4. 8.2n 5. 0.0010892 534.53u 4. 8.3n 5. 894.49u 465.57u 4. 8.4n 5. 734.84u 357.02u 4. 8.5n 5. 603.45u 317.58u 4. 8.6n 5. 495.77u 237.53u 4. 8.7n 5. 407.09u 217.45u 4. 8.8n 5. 334.48u 157.18u 4. 8.9n 5. 274.62u 149.63u 4. 9.n 5. 225.66u 103.23u 4. 9.1n 5. 185.25u 103.64u 4. 9.2n 5. 152.24u 67.052u 4. 9.3n 5. 124.96u 72.396u 4. 9.4n 5. 102.72u 42.859u 4. 9.5n 5. 84.284u 51.115u 4. 9.6n 5. 69.303u 26.732u 4. 9.7n 5. 56.848u 36.573u 4. 9.8n 5. 46.763u 16.03u 4. 9.9n 5. 38.341u 26.593u 4. 10.n 5. 31.556u 8.9733u 4. Gnucap System status iterations: op=8, dc=0, tran=468, fourier=0, total=603 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_mos8c2.nand1.nobypass.ckt.out000066400000000000000000000213561316501211100210030ustar00rootroot00000000000000.title na2 # v(1) v(2) v(4) v(5) z(5) iter(0) 0. 0. 0. 0. 0. 1.E+12 0. -1. 5. 0. 2.6869 5.8842u 996.24Meg 1. -2. 5. 0. 154.84 6.2334u 996.23Meg 2. -3. 5. 0. 4.991 244.14n 996.23Meg 3. -4. 5. 0. 5. 261.7n 996.23Meg 4. -5. 5. 0. 5. 261.7n 996.23Meg 5. -6. 5. 0. 5. 261.7n 996.23Meg 6. -7. 5. 0. 5. 261.7n 996.23Meg 7. 27. 5. 0. 5. 261.7n 996.23Meg 8. # region(XI10.Mp1.Ddb) region(XI10.Mp2.Ddb) region(XI10.Mn1.Ddb) region(XI10.Mn2.Ddb) region(XI10.Mn1.Dsb) 0. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -2. -1. -1. -1. -1. -1. -3. 1. 1. -1. -1. -1. -4. -1. -1. -1. -1. -1. -5. -1. -1. -1. -1. -1. -6. -1. -1. -1. -1. -1. -7. -1. -1. -1. -1. -1. 27. -1. -1. -1. -1. -1. # V(XI10.Mp1.Ddb) V(XI10.Mp2.Ddb) V(XI10.Mn1.Ddb) V(XI10.Mn2.Ddb) V(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -2.3131 -2.3131 -2.6869 -5.8842u -5.8842u -2. 149.84 149.84 -154.84 -6.2334u -6.2334u -3. -0.0089704 -0.0089704 -4.991 -244.14n -244.14n -4. 28.028u 28.028u -5. -261.7n -261.7n -5. -3.4216n -3.4216n -5. -261.7n -261.7n -6. -3.2751n -3.2751n -5. -261.7n -261.7n -7. -3.2751n -3.2751n -5. -261.7n -261.7n 27. -3.2751n -3.2751n -5. -261.7n -261.7n # I(XI10.Mp1.Ddb) I(XI10.Mp2.Ddb) I(XI10.Mn1.Ddb) I(XI10.Mn2.Ddb) I(XI10.Mn1.Dsb) 0. 0. 0. 0. 0. 0. -1. -3.2074p -3.2074p -3.7258p -8.159E-18 -8.159E-18 -2. 149.83p 149.83p -154.85p -8.643E-18 -8.643E-18 -3. -46.453u -46.453u -5.001p -339.E-21 -339.E-21 -4. -443.2E-18 -443.2E-18 -5.01p -363.E-21 -363.E-21 -5. -11.E-21 -11.E-21 -5.01p -363.E-21 -363.E-21 -6. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 -7. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 27. -5.E-21 -5.E-21 -5.01p -363.E-21 -363.E-21 #Time v(2) v(4) v(5) iter(0) 0. 0. 5. 261.7n 8. 1.p 0. 5. 261.7n 3. 3.6757p 0. 5. 261.7n 3. 100.p 0. 5. 261.7n 3. 200.p 0. 5. 261.7n 3. 300.p 0. 5. 261.7n 3. 400.p 0. 5. 261.7n 3. 500.p 0. 5. 261.7n 3. 600.p 0. 5. 261.7n 3. 700.p 0. 5. 261.7n 3. 800.p 0. 5. 261.7n 3. 900.p 0. 5. 261.7n 3. 1.n 1.f 5. 261.7n 3. 1.1n 0.25 5.0038 0.25 5. 1.2n 0.5 5.0068 0.49999 5. 1.3n 0.75 5.009 0.74997 5. 1.4n 1. 5.0109 1.0014 5. 1.5n 1.25 5.0125 0.99593 5. 1.6n 1.5 5.0135 0.2618 8. 1.7n 1.75 5.0088 0.19554 7. 1.8n 2. 4.9958 0.2672 5. 1.9n 2.25 4.9769 0.29504 5. 2.n 2.5 4.9499 0.34525 5. 2.1n 2.75 4.9143 0.38181 5. 2.2n 3. 4.8679 0.42614 5. 2.3n 3.25 4.8085 0.46461 5. 2.4n 3.5 4.7318 0.50628 5. 2.5n 3.75 4.6345 0.5449 4. 2.6n 4. 4.5175 0.58491 5. 2.7n 4.25 4.382 0.6231 5. 2.8n 4.5 4.2299 0.66177 4. 2.9n 4.75 4.0609 0.6991 4. 3.n 5. 3.8748 0.73626 4. 3.1n 5. 3.6771 0.71499 4. 3.2n 5. 3.4798 0.72484 4. 3.3n 5. 3.2834 0.71003 4. 3.4n 5. 3.0875 0.71408 4. 3.5n 5. 2.8925 0.70275 4. 3.6n 5. 2.6983 0.70255 4. 3.7n 5. 2.5053 0.69227 4. 3.8n 5. 2.3134 0.68769 5. 3.9n 5. 2.1234 0.67496 5. 4.n 5. 1.936 0.66178 5. 4.1n 5. 1.7526 0.63692 5. 4.2n 5. 1.5749 0.60518 5. 4.3n 5. 1.4047 0.56406 5. 4.4n 5. 1.2436 0.51943 5. 4.5n 5. 1.0929 0.47076 5. 4.6n 5. 0.95349 0.42219 5. 4.7n 5. 0.82608 0.37363 5. 4.8n 5. 0.71094 0.32779 5. 4.9n 5. 0.60804 0.28444 5. 5.n 5. 0.51705 0.24514 5. 5.1n 5. 0.43736 0.20939 5. 5.2n 5. 0.36821 0.17796 5. 5.3n 5. 0.30868 0.15015 5. 5.4n 5. 0.25782 0.12626 5. 5.5n 5. 0.21465 0.10555 5. 5.6n 5. 0.17821 0.088065 5. 5.7n 5. 0.1476 0.073113 4. 5.8n 5. 0.12201 0.060664 4. 5.9n 5. 0.10068 0.050114 4. 6.n 5. 0.082955 0.041422 4. 6.1n 5. 0.068272 0.034096 4. 6.2n 5. 0.056131 0.02811 4. 6.3n 5. 0.046111 0.023077 4. 6.4n 5. 0.037853 0.018996 4. 6.5n 5. 0.031057 0.015564 4. 6.6n 5. 0.025468 0.0128 4. 6.7n 5. 0.020878 0.010471 4. 6.8n 5. 0.017109 0.0086081 4. 6.9n 5. 0.014017 0.0070325 4. 7.n 5. 0.011481 0.0057819 4. 7.1n 5. 0.0094023 0.0047177 4. 7.2n 5. 0.0076987 0.0038804 4. 7.3n 5. 0.0063033 0.0031621 4. 7.4n 5. 0.0051601 0.002603 4. 7.5n 5. 0.0042241 0.0021181 4. 7.6n 5. 0.0034574 0.0017457 4. 7.7n 5. 0.00283 0.0014181 4. 7.8n 5. 0.0023161 0.0011706 4. 7.9n 5. 0.0018956 949.03u 4. 8.n 5. 0.0015513 784.99u 4. 8.1n 5. 0.0012696 634.85u 4. 8.2n 5. 0.0010389 526.5u 4. 8.3n 5. 850.28u 424.51u 4. 8.4n 5. 695.76u 353.22u 4. 8.5n 5. 569.41u 283.72u 4. 8.6n 5. 465.91u 237.06u 4. 8.7n 5. 381.31u 189.52u 4. 8.8n 5. 311.99u 159.18u 4. 8.9n 5. 255.34u 126.51u 4. 9.n 5. 208.91u 106.96u 4. 9.1n 5. 170.98u 84.38u 4. 9.2n 5. 139.89u 71.931u 4. 9.3n 5. 114.5u 56.221u 4. 9.4n 5. 93.67u 48.424u 4. 9.5n 5. 76.672u 37.411u 4. 9.6n 5. 62.722u 32.642u 4. 9.7n 5. 51.343u 24.854u 4. 9.8n 5. 41.998u 22.039u 4. 9.9n 5. 34.383u 16.477u 4. 10.n 5. 28.122u 14.91u 4. Gnucap System status iterations: op=8, dc=0, tran=444, fourier=0, total=579 transient timesteps: accepted=103, rejected=0, total=103 nodes: user=4, subckt=0, model=0, total=4 dctran density=87.5%, ac density=87.5% tests/==out/d_subckt.1.ckt.out000066400000000000000000000014361316501211100164620ustar00rootroot00000000000000' # v(1) v(2) v(3) v(4) v(5) 27. 0.38461 0.99999 0.076922 0.38461 0.076922 # v(1) v(2) v(3) v(4) v(5) v(X1.R1) v(X1.R1) v(X1.R2) v(X1.R3) v(X1.R4) v(X1.r5) v(X1.r6) v(X1.R2) + v(X2.R2) 27. 0.38461 0.99999 0.076922 0.38461 0.076922 0.61538 0.61538 0.38461 0.23077 0.15384 0.076922 0.076922 0.38461 + 0.38461 tran ac dc op v(1) v(2) v(3) v(4) v(5) v(X1.R1) v(X1.R1) v(X1.R2) v(X1.R3) v(X1.R4) v(X1.r5) v(X1.r6) v(X1.R2) v(X2.R2) fourier V1 ( 2 0 ) DC 1. X1 ( 2 1 3 ) zzz X2 ( 2 4 5 ) zzz .subckt zzz ( 1 2 4 ) R1 ( 1 2 ) 1. R2 ( 2 0 ) 1. R3 ( 2 3 ) 1. R4 ( 3 0 ) 1. r5 ( 3 4 ) 1. r6 ( 4 0 ) 1. .ends zzz tests/==out/d_subckt.2.ckt.out000066400000000000000000000006771316501211100164710ustar00rootroot00000000000000' # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 27. 0.99999 0.88888 0.77777 0.66666 0.55555 0.44444 0.33333 0.22222 0.11111 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 1.K 8.9999 7.9999 6.9999 5.9999 4.9999 4. 3. 2. 0.99999 tests/==out/d_subckt.3.ckt.out000066400000000000000000000006771316501211100164720ustar00rootroot00000000000000' # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 27. 0.99999 0.88888 0.77777 0.66666 0.55555 0.44444 0.33333 0.22222 0.11111 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 1.K 8.9999 7.9999 6.9999 5.9999 4.9999 4. 3. 2. 0.99999 tests/==out/d_subckt.4.ckt.out000066400000000000000000000004401316501211100164570ustar00rootroot00000000000000' test delete in subckts .subckt aa ( a b c ) r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. x1 ( a b ) bb .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 tests/==out/d_subckt.5.ckt.out000066400000000000000000000005741316501211100164700ustar00rootroot00000000000000' test nested subckts >>>>>.subckt aa (a b c) >>>>>.subckt bb (1 2) >>>>>.list .subckt aa ( a b c ) .subckt bb ( 1 2 ) r1 ( 1 2 ) 1.K .ends bb r1 ( a b ) 1. r2 ( b 0 ) 1. r3 ( b c ) 1. xh ( a b ) bb .ends aa x1 ( 1 2 3 ) aa v1 ( 1 0 ) DC 1. >>>>>.print op v(nodes) >>>>>.op # v(1) v(2) v(3) 27. 0.99999 0.50025 0.50025 tests/==out/d_subckt.6.ckt.out000066400000000000000000000004561316501211100164700ustar00rootroot00000000000000' # v(1) v(2) v(3) v(4) 27. 10. 5. 5. 5. .subckt xx ( 1 2 ) Rx ( 1 2 ) R .ends xx V1 ( 1 0 ) DC 10. R1 ( 1 2 ) 10.K X1 ( 2 0 ) xx r=10k R2 ( 1 3 ) 10.K m= 2. X2 ( 3 0 ) xx r=5k R3 ( 1 4 ) 10.K X3 ( 4 0 ) xx m=2 r=20k tests/==out/d_subckt.7.ckt.out000066400000000000000000000011331316501211100164620ustar00rootroot00000000000000* subckt, param, diode test parameter isat not specified, using default parameter isat not specified, using default parameter isat not specified, using default parameter isat not specified, using default parameter isat not specified, using default parameter isat not specified, using default parameter isat not specified, using default parameter isat not specified, using default # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 27. 0.83376 0.71465 0.53599 0.83376 0.71465 0.53599 0.53599 0.53599 0.71465 tests/==out/d_subckt.8.ckt.out000066400000000000000000000012671316501211100164730ustar00rootroot00000000000000* subckt, param, diode test # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 27. 0.71465 0.71465 0.53599 0.71465 0.71465 0.53599 0.53599 0.53599 0.71465 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 27. 0.71465 0.53599 0.53599 0.71465 0.53599 0.53599 0.35733 0.35733 0.71465 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) v(9) 27. 0.71465 0.53599 0.53599 0.71465 0.53599 0.53599 0.53599 0.53599 0.71465 tests/==out/d_subckt.error1.ckt.out000066400000000000000000000000261316501211100175260ustar00rootroot00000000000000 x1: can't find: foo tests/==out/d_subckt.error2.ckt.out000066400000000000000000000000321316501211100175240ustar00rootroot00000000000000 x1: foo is not a subckt tests/==out/d_subckt.error3.ckt.out000066400000000000000000000001571316501211100175350ustar00rootroot00000000000000 x1: need more nodes .subckt foo ( 1 2 3 4 ) e1 ( 1 2 3 4 ) 1. .ends foo v1 ( 1 0 ) DC 1. x1 ( 1 2 ) foo tests/==out/d_switch.c0.ckt.out000066400000000000000000000017401316501211100166300ustar00rootroot00000000000000 #Time v(1) v(2) v(3) 0. 1. 0. 1. 100.u 1. 0.58779 1. 200.u 1. 0.95106 1. 300.u 1. 0.95106 1. 400.u 1. 0.58779 1. 500.u 1. 0. 1. 600.u 999.u -0.58779 1. 700.u 999.u -0.95106 1. 800.u 999.u -0.95106 1. 900.u 999.u -0.58779 1. 0.001 999.u 0. 1. 0.0011 1. 0.58779 1. 0.0012 1. 0.95106 1. 0.0013 1. 0.95106 1. 0.0014 1. 0.58779 1. 0.0015 1. 0. 1. 0.0016 999.u -0.58779 1. 0.0017 999.u -0.95106 1. 0.0018 999.u -0.95106 1. 0.0019 999.u -0.58779 1. 0.002 999.u 0. 1. tests/==out/d_switch.c1.ckt.out000066400000000000000000000231101316501211100166240ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -2. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 -1. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 1. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. -1. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 -2. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 0. 1. 1. 1. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 6. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 7. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 8. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 9. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 10. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 11. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 12. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 13. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 14. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 15. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 16. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 17. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 18. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 19. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 20. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 21. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 22. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 23. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 24. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 25. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) Gnucap System status iterations: op=0, dc=66, tran=138, fourier=0, total=261 transient timesteps: accepted=46, rejected=9, total=55 nodes: user=8, subckt=0, model=0, total=8 dctran density=25.0%, ac density=25.0% tests/==out/d_switch.c1.inc.ckt.out000066400000000000000000000335121316501211100174030ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -2. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 -1. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 1. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. -1. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 -2. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. #Time v(W1) v(W2) v(W3) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) timef(W1) timef(W2) timef(W3) in(W1) in(W2) in(W3) control(0) 0. 1. 1. 1. 1.E+12 1.E+12 1.E+12 0. 0. 0. Inf Inf Inf 0. 0. 0. 1. 0.01 1. 1. 1. 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 2. 2. 2. 0. 0. 0. 9. 0.02 1. 1. 1. 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 2. 2. 2. 10.u 10.u -10.u 6. 1. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 2. 2. 20.u 20.u -20.u 1. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 2. 0.001 0.001 -0.001 1. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. Inf 0.002 0.002 -0.002 7. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 2. 0.002 0.002 -0.002 17. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 2.2749 0.002 0.002 -0.002 7. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. Inf 0.002 0.002 -0.002 7. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. Inf 0.002 0.002 -0.002 7. 2. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 Inf Inf Inf 0.002 0.002 -0.002 7. 3. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.003 0.003 0.003 Inf Inf Inf 0.002 0.002 -0.002 1. 4. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.004 0.004 0.004 Inf Inf Inf 0.003 0.003 -0.003 1. 5. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.005 0.005 0.005 Inf Inf Inf 0.004 0.004 -0.004 1. 6. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.004 0.004 0.004 12. 12. 12. 0.005 0.005 -0.005 1. 7. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.003 0.003 0.003 12. 12. 12. 0.004 0.004 -0.004 1. 8. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 12. 12. 12. 0.003 0.003 -0.003 1. 9. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.001 0.001 0.001 12. 12. 12. 0.002 0.002 -0.002 1. 10. 0.5 0.5 1. 1.K 1.K 1.E+12 0. 0. 0. 12. 12. 12. 0.001 0.001 -0.001 1. 11. 0.5 0.5 1. 1.K 1.K 1.E+12 0.001 -0.001 -0.001 12. 12. 12. 0. 0. 0. 1. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. 12. -0.001 -0.001 0.001 1. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. Inf -0.002 -0.002 0.002 7. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. Inf -0.002 -0.002 0.002 17. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. Inf -0.002 -0.002 0.002 17. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. 12. -0.002 -0.002 0.002 7. 12. 0.5 0.5 0.5 1.K 1.K 1.K 0.002 -0.002 -0.002 12. 12. 12.275 -0.002 -0.002 0.002 7. 12. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 Inf Inf Inf -0.002 -0.002 0.002 7. 13. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 Inf Inf Inf -0.002 -0.002 0.002 1. 14. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 Inf Inf Inf -0.003 -0.003 0.003 1. 15. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 Inf Inf Inf -0.004 -0.004 0.004 1. 16. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 22. 22. 22. -0.005 -0.005 0.005 1. 17. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 22. 22. 22. -0.004 -0.004 0.004 1. 18. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 22. 22. 22. -0.003 -0.003 0.003 1. 19. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 22. 22. 22. -0.002 -0.002 0.002 1. 20. 1. 1. 0.5 1.E+12 1.E+12 1.K 0. 0. 0. 22. 22. 22. -0.001 -0.001 0.001 1. 21. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.001 0.001 0.001 22. 22. 22. 0. 0. 0. 1. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. 22. 0.001 0.001 -0.001 1. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. Inf 0.002 0.002 -0.002 7. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. Inf 0.002 0.002 -0.002 17. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. Inf 0.002 0.002 -0.002 17. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. 22. 0.002 0.002 -0.002 7. 22. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 22. 22. 22.275 0.002 0.002 -0.002 7. 22. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 Inf Inf Inf 0.002 0.002 -0.002 7. 23. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.003 0.003 0.003 Inf Inf Inf 0.002 0.002 -0.002 1. 24. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.004 0.004 0.004 Inf Inf Inf 0.003 0.003 -0.003 1. 25. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.005 0.005 0.005 Inf Inf Inf 0.004 0.004 -0.004 1. #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) Gnucap System status iterations: op=0, dc=66, tran=138, fourier=0, total=261 transient timesteps: accepted=46, rejected=9, total=55 nodes: user=8, subckt=0, model=0, total=8 dctran density=25.0%, ac density=25.0% tests/==out/d_switch.c1.noinc.ckt.out000066400000000000000000000400321316501211100177330ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -2. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 -1. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 1. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. -1. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 -2. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. #Time v(W1) v(W2) v(W3) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) timef(W1) timef(W2) timef(W3) in(W1) in(W2) in(W3) control(0) 0. 1. 1. 1. 1.E+12 1.E+12 1.E+12 0. 0. 0. Inf Inf Inf 0. 0. 0. 1. 0.01 1. 1. 1. 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 2. 2. 2. 0. 0. 0. 9. 0.02 1. 1. 1. 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 2. 2. 2. 10.u 10.u -10.u 6. 1. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 2. 2. 20.u 20.u -20.u 1. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 2. 0.001 0.001 -0.001 1. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. Inf 0.002 0.002 -0.002 7. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 2. 0.002 0.002 -0.002 17. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 2.2749 0.002 0.002 -0.002 7. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. Inf 0.002 0.002 -0.002 7. 2. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. Inf 0.002 0.002 -0.002 7. 2. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 Inf Inf Inf 0.002 0.002 -0.002 7. 2. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 Inf Inf Inf 0.002 0.002 -0.002 6. 2.0002 0.5 0.5 1. 1.K 1.K 1.E+12 -0.0020002 0.0020002 0.0020002 Inf Inf Inf 0.002 0.002 -0.002 6. 2.0019 0.5 0.5 1. 1.K 1.K 1.E+12 -0.0020019 0.0020019 0.0020019 Inf Inf Inf 0.0020002 0.0020002 -0.0020002 6. 2.0453 0.5 0.5 1. 1.K 1.K 1.E+12 -0.0020453 0.0020453 0.0020453 Inf Inf Inf 0.0020019 0.0020019 -0.0020019 6. 3. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.003 0.003 0.003 Inf Inf Inf 0.0020453 0.0020453 -0.0020453 1. 4. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.004 0.004 0.004 Inf Inf Inf 0.003 0.003 -0.003 1. 5. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.005 0.005 0.005 Inf Inf Inf 0.004 0.004 -0.004 1. 6. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.004 0.004 0.004 12. 12. 12. 0.005 0.005 -0.005 1. 7. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.003 0.003 0.003 12. 12. 12. 0.004 0.004 -0.004 1. 8. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 12. 12. 12. 0.003 0.003 -0.003 1. 9. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.001 0.001 0.001 12. 12. 12. 0.002 0.002 -0.002 1. 10. 0.5 0.5 1. 1.K 1.K 1.E+12 0. 0. 0. 12. 12. 12. 0.001 0.001 -0.001 1. 11. 0.5 0.5 1. 1.K 1.K 1.E+12 0.001 -0.001 -0.001 12. 12. 12. 0. 0. 0. 1. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. 12. -0.001 -0.001 0.001 1. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. Inf -0.002 -0.002 0.002 7. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. Inf -0.002 -0.002 0.002 17. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. Inf -0.002 -0.002 0.002 17. 12. 0.5 0.5 1. 1.K 1.K 1.E+12 0.002 -0.002 -0.002 12. 12. 12. -0.002 -0.002 0.002 7. 12. 0.5 0.5 0.5 1.K 1.K 1.K 0.002 -0.002 -0.002 12. 12. 12.275 -0.002 -0.002 0.002 7. 12. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 Inf Inf Inf -0.002 -0.002 0.002 7. 12. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 Inf Inf Inf -0.002 -0.002 0.002 6. 12. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.0020001 -0.0020001 -0.0020001 Inf Inf Inf -0.002 -0.002 0.002 6. 12.001 1. 1. 0.5 1.E+12 1.E+12 1.K 0.0020014 -0.0020014 -0.0020014 Inf Inf Inf -0.0020001 -0.0020001 0.0020001 6. 12.057 1. 1. 0.5 1.E+12 1.E+12 1.K 0.0020569 -0.0020569 -0.0020569 Inf Inf Inf -0.0020014 -0.0020014 0.0020014 6. 13. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 Inf Inf Inf -0.0020569 -0.0020569 0.0020569 1. 14. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 Inf Inf Inf -0.003 -0.003 0.003 1. 15. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 Inf Inf Inf -0.004 -0.004 0.004 1. 16. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 22. 22. 22. -0.005 -0.005 0.005 1. 17. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 22. 22. 22. -0.004 -0.004 0.004 1. 18. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 22. 22. 22. -0.003 -0.003 0.003 1. 19. 1. 1. 0.5 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 22. 22. 22. -0.002 -0.002 0.002 1. 20. 1. 1. 0.5 1.E+12 1.E+12 1.K 0. 0. 0. 22. 22. 22. -0.001 -0.001 0.001 1. 21. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.001 0.001 0.001 22. 22. 22. 0. 0. 0. 1. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. 22. 0.001 0.001 -0.001 1. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. Inf 0.002 0.002 -0.002 7. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. Inf 0.002 0.002 -0.002 17. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. Inf 0.002 0.002 -0.002 17. 22. 1. 1. 0.5 1.E+12 1.E+12 1.K -0.002 0.002 0.002 22. 22. 22. 0.002 0.002 -0.002 7. 22. 1. 1. 1. 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 22. 22. 22.275 0.002 0.002 -0.002 7. 22. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 Inf Inf Inf 0.002 0.002 -0.002 7. 22. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.002 0.002 0.002 Inf Inf Inf 0.002 0.002 -0.002 6. 22. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.0020001 0.0020001 0.0020001 Inf Inf Inf 0.002 0.002 -0.002 6. 22.001 0.5 0.5 1. 1.K 1.K 1.E+12 -0.0020014 0.0020014 0.0020014 Inf Inf Inf 0.0020001 0.0020001 -0.0020001 6. 22.057 0.5 0.5 1. 1.K 1.K 1.E+12 -0.0020569 0.0020569 0.0020569 Inf Inf Inf 0.0020014 0.0020014 -0.0020014 6. 23. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.003 0.003 0.003 Inf Inf Inf 0.0020569 0.0020569 -0.0020569 1. 24. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.004 0.004 0.004 Inf Inf Inf 0.003 0.003 -0.003 1. 25. 0.5 0.5 1. 1.K 1.K 1.E+12 -0.005 0.005 0.005 Inf Inf Inf 0.004 0.004 -0.004 1. #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) Gnucap System status iterations: op=0, dc=84, tran=195, fourier=0, total=348 transient timesteps: accepted=58, rejected=9, total=67 nodes: user=8, subckt=0, model=0, total=8 dctran density=25.0%, ac density=25.0% tests/==out/d_switch.c1a.ckt.out000066400000000000000000000776521316501211100170110ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) iter(0) -5. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 4. -4. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 3. -3. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 3. -2. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 3. -1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 3. 0. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 3. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 3. 2. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 4. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 5. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 3. 4. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 2. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 3. 1. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 3. 0. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 3. -1. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 3. -2. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 3. -3. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 4. -4. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 3. -5. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 3. #Freq v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) iter(0) 1.K 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 0. #Time v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) iter(0) 0. 0. 0. 0. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 0. -1. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 1. -2. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 2. 0. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 3. 0. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 0. -1. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 1. -2. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 2. 0.01 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 3. 0. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 0. -1. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 1. -2. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 2. 0.02 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 3. 0. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 0. -1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 1. -2. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 3. 0. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. -2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 3. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.003858 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.0033675 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.0030064 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 2. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 2. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 1. -2. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 0. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 0. -1. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 1. -2. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 2. 4. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 0. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 0. -1. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 1. -2. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 2. 5. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 3. 0. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 0. -1. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 1. -2. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 2. 6. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 0. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 0. -1. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 1. -2. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 7. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 0. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 0. -1. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. -2. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 2. 8. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 3. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 1. -2. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 2. 9. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 3. 0. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. -1. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 1. -2. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 2. 10. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 3. 0. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 0. -1. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 1. -2. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 2. 11. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 3. 0. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. -2. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 3. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.003858 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.0033675 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.0028515 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.K 0.002 -0.002 -0.002 0. -1. 0.5 0.5 0.5 -2. -20.n 1.K 1.K 1.K 0.002 -0.002 -0.002 1. 12. 0.5 0.5 0.5 -2. -20.n 1.K 1.K 1.K 0.002 -0.002 -0.002 2. 0. 0.5 0.5 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0. -1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 1. 12. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 2. 0. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0. -1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 1. -2. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 2. 13. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 3. 0. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0. -1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 1. -2. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 2. 14. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 3. 0. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0. -1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 1. -2. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 2. 15. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 3. 0. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 0. -1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 1. -2. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 2. 16. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 3. 0. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0. -1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 1. -2. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 2. 17. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 3. 0. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0. -1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 1. -2. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 2. 18. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 3. 0. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0. -1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 1. -2. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 2. 19. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 3. 0. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. -1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 1. -2. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 2. 20. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 3. 0. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 0. -1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 1. -2. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 2. 21. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 3. 0. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. -2. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.003858 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.0033675 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.0028515 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 22. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 22. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 2. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 1. -2. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 23. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 0. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 0. -1. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 1. -2. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 2. 24. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 0. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 0. -1. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 1. -2. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 2. 25. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 3. #Freq v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) iter(0) 1.K 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) Gnucap System status iterations: op=0, dc=66, tran=138, fourier=0, total=261 transient timesteps: accepted=46, rejected=9, total=55 nodes: user=8, subckt=0, model=0, total=8 dctran density=25.0%, ac density=25.0% tests/==out/d_switch.c1r.ckt.out000066400000000000000000000245251316501211100170210ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -2. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 -1. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 1. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. -1. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 -2. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 -3. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 -4. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 -5. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 0. 1. 1. 1. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 6. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 7. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 8. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 9. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 9. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 10. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 11. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 12. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 13. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 14. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 15. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 16. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 17. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 18. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 18. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 19. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 20. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 21. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 22. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 23. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 24. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 25. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 26. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 27. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Vsig) i(Rprobe) i(Vprobe) 1.K 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Vsig ) sss Vsig ( 7 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) tests/==out/d_switch.c2.ckt.out000066400000000000000000000226031316501211100166330ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Isig ) sss Isig ( 7 0 ) pwl( 0., 0. 5.,-0.005 15., 0.005 25.,-0.005 ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 0.005 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 0.004 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0.003 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0.002 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0.001 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. -0.001 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 -0.002 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 -0.003 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 -0.004 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 -0.005 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 -0.004 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 -0.003 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 -0.002 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 -0.001 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 0.001 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 0.002 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 0.003 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0.004 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0.005 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 1.K 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 0. 1. 1. 1. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 6. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 7. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 8. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 9. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 10. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 11. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 12. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 13. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 14. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 15. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 16. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 17. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 18. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 19. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 20. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 21. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 22. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 23. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 24. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 25. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 1.K 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Isig ) sss Isig ( 7 0 ) pwl( 0., 0. 5.,-0.005 15., 0.005 25.,-0.005 ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) tests/==out/d_switch.c2a.ckt.out000066400000000000000000001047341316501211100170020ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Isig ) sss Isig ( 7 0 ) pwl( 0., 0. 5.,-0.005 15., 0.005 25.,-0.005 ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) iter(0) 0.005 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 5. 0.004 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 4. 0.003 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 4. 0.002 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 4. 0.001 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 4. 0. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 4. -0.001 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 4. -0.002 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 4. -0.003 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. -0.004 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 4. -0.005 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 5. -0.004 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 4. -0.003 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. -0.002 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 4. -0.001 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 4. 0. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 4. 0.001 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 4. 0.002 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 4. 0.003 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 4. 0.004 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 4. 0.005 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 4. #Freq v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) iter(0) 1.K 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 0. #Time v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) iter(0) 0. 0. 0. 0. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 0. -1. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 1. -2. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 2. 0. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 3. 0. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 0. -1. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 1. -2. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 2. -3. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 3. 0.01 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 4. 0. 1. 1. 1. 0.01 100.p 1.E+12 1.E+12 1.E+12 -10.u 10.u 10.u 0. -1. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 1. -2. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 2. -3. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 3. 0.02 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 4. 0. 1. 1. 1. 0.02 200.p 1.E+12 1.E+12 1.E+12 -20.u 20.u 20.u 0. -1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 1. -2. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. -3. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 3. 1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 4. 0. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. -2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. -3. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 3. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 4. 0. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.K 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 1. 1. 2. 20.n 1.K 1.E+12 1.E+12 -0.002 0.002 0.002 1. 2. 0.5 1. 1. 2. 20.n 1.K 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 2. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 2. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 2.0014 20.014n 1.K 1.K 1.E+12 -0.0020014 0.0020014 0.0020014 1. 2.0014 0.5 0.5 1. 2.0014 20.014n 1.K 1.K 1.E+12 -0.0020014 0.0020014 0.0020014 2. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.0020014 0.002 0.002 0. -1. 0.5 0.5 1. 2.0002 20.002n 1.K 1.K 1.E+12 -0.0020002 0.0020002 0.0020002 1. 2.0002 0.5 0.5 1. 2.0002 20.002n 1.K 1.K 1.E+12 -0.0020002 0.0020002 0.0020002 2. 0. 0.5 0.5 1. 2.0002 20.002n 1.K 1.K 1.E+12 -0.0020002 0.0020002 0.0020002 0. -1. 0.5 0.5 1. 2.0004 20.004n 1.K 1.K 1.E+12 -0.0020004 0.0020004 0.0020004 1. 2.0004 0.5 0.5 1. 2.0004 20.004n 1.K 1.K 1.E+12 -0.0020004 0.0020004 0.0020004 2. 0. 0.5 0.5 1. 2.0004 20.004n 1.K 1.K 1.E+12 -0.0020004 0.0020004 0.0020004 0. -1. 0.5 0.5 1. 2.0041 20.041n 1.K 1.K 1.E+12 -0.0020041 0.0020041 0.0020041 1. -2. 0.5 0.5 1. 2.0041 20.041n 1.K 1.K 1.E+12 -0.0020041 0.0020041 0.0020041 2. -3. 0.5 0.5 1. 2.0041 20.041n 1.K 1.K 1.E+12 -0.0020041 0.0020041 0.0020041 3. 2.0041 0.5 0.5 1. 2.0041 20.041n 1.K 1.K 1.E+12 -0.0020041 0.0020041 0.0020041 4. 0. 0.5 0.5 1. 2.0041 20.041n 1.K 1.K 1.E+12 -0.0020041 0.0020041 0.0020041 0. -1. 0.5 0.5 1. 2.336 23.36n 1.K 1.K 1.E+12 -0.002336 0.002336 0.002336 1. -2. 0.5 0.5 1. 2.336 23.36n 1.K 1.K 1.E+12 -0.002336 0.002336 0.002336 2. -3. 0.5 0.5 1. 2.336 23.36n 1.K 1.K 1.E+12 -0.002336 0.002336 0.002336 3. 2.336 0.5 0.5 1. 2.336 23.36n 1.K 1.K 1.E+12 -0.002336 0.002336 0.002336 4. 0. 0.5 0.5 1. 2.336 23.36n 1.K 1.K 1.E+12 -0.002336 0.002336 0.002336 0. -1. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 1. -2. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. -3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 0. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 0. -1. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 1. -2. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 2. -3. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 4. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 4. 0. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 0. -1. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 1. -2. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 2. -3. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 3. -4. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 4. 5. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 5. 0. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 0. -1. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 1. -2. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 2. -3. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 6. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 4. 0. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 0. -1. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 1. -2. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. -3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 7. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 0. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 0. -1. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. -2. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 2. -3. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 3. 8. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 4. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 1. -2. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 2. -3. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 3. 9. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 4. 0. 0.5 0.5 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. -1. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 1. -2. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 2. -3. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 3. 10. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 4. 0. 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 0. -1. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 1. -2. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 2. -3. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 3. 11. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 4. 0. 0.5 0.5 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 0. -1. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 1. -2. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 2. -3. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 3. 12. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 4. 0. 0.5 0.5 1. -2. -20.n 1.K 1.K 1.K 0.002 -0.002 -0.002 0. -1. 0.5 0.5 0.5 -2. -20.n 1.K 1.K 1.K 0.002 -0.002 -0.002 1. 12. 0.5 0.5 0.5 -2. -20.n 1.K 1.K 1.K 0.002 -0.002 -0.002 2. 0. 0.5 0.5 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0. -1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 1. 12. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 2. 0. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0. -1. 1. 1. 0.5 -2.2 -22.n 1.E+12 1.E+12 1.K 0.0022 -0.0022 -0.0022 1. -2. 1. 1. 0.5 -2.2 -22.n 1.E+12 1.E+12 1.K 0.0022 -0.0022 -0.0022 2. -3. 1. 1. 0.5 -2.2 -22.n 1.E+12 1.E+12 1.K 0.0022 -0.0022 -0.0022 3. 12.2 1. 1. 0.5 -2.2 -22.n 1.E+12 1.E+12 1.K 0.0022 -0.0022 -0.0022 4. 0. 1. 1. 0.5 -2.2 -22.n 1.E+12 1.E+12 1.K 0.0022 -0.0022 -0.0022 0. -1. 1. 1. 0.5 -2.3143 -23.143n 1.E+12 1.E+12 1.K 0.0023143 -0.0023143 -0.0023143 1. -2. 1. 1. 0.5 -2.3143 -23.143n 1.E+12 1.E+12 1.K 0.0023143 -0.0023143 -0.0023143 2. -3. 1. 1. 0.5 -2.3143 -23.143n 1.E+12 1.E+12 1.K 0.0023143 -0.0023143 -0.0023143 3. 12.314 1. 1. 0.5 -2.3143 -23.143n 1.E+12 1.E+12 1.K 0.0023143 -0.0023143 -0.0023143 4. 0. 1. 1. 0.5 -2.3143 -23.143n 1.E+12 1.E+12 1.K 0.0023143 -0.0023143 -0.0023143 0. -1. 1. 1. 0.5 -2.4286 -24.286n 1.E+12 1.E+12 1.K 0.0024286 -0.0024286 -0.0024286 1. -2. 1. 1. 0.5 -2.4286 -24.286n 1.E+12 1.E+12 1.K 0.0024286 -0.0024286 -0.0024286 2. -3. 1. 1. 0.5 -2.4286 -24.286n 1.E+12 1.E+12 1.K 0.0024286 -0.0024286 -0.0024286 3. 12.429 1. 1. 0.5 -2.4286 -24.286n 1.E+12 1.E+12 1.K 0.0024286 -0.0024286 -0.0024286 4. 0. 1. 1. 0.5 -2.4286 -24.286n 1.E+12 1.E+12 1.K 0.0024286 -0.0024286 -0.0024286 0. -1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 1. -2. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 2. -3. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 3. 13. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 4. 0. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0. -1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 1. -2. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 2. -3. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 3. 14. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 4. 0. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0. -1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 1. -2. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 2. -3. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 3. -4. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 4. 15. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 5. 0. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 0. -1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 1. -2. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 2. -3. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 3. 16. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 4. 0. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0. -1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 1. -2. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 2. -3. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 3. 17. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 4. 0. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0. -1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 1. -2. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 2. -3. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 3. 18. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 4. 0. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0. -1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 1. -2. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 2. -3. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 3. 19. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 4. 0. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. -1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 1. -2. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 2. -3. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 3. 20. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 4. 0. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 0. -1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 1. -2. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 2. -3. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 3. 21. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 4. 0. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 0. -1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 1. -2. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 2. -3. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 3. 22. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 4. 0. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 0. -1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 1. 22. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 2. 0. 1. 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 1. 22. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 2. 0. 0.5 0.5 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 0. -1. 0.5 0.5 1. 2.2 22.n 1.K 1.K 1.E+12 -0.0022 0.0022 0.0022 1. -2. 0.5 0.5 1. 2.2 22.n 1.K 1.K 1.E+12 -0.0022 0.0022 0.0022 2. -3. 0.5 0.5 1. 2.2 22.n 1.K 1.K 1.E+12 -0.0022 0.0022 0.0022 3. 22.2 0.5 0.5 1. 2.2 22.n 1.K 1.K 1.E+12 -0.0022 0.0022 0.0022 4. 0. 0.5 0.5 1. 2.2 22.n 1.K 1.K 1.E+12 -0.0022 0.0022 0.0022 0. -1. 0.5 0.5 1. 2.3143 23.143n 1.K 1.K 1.E+12 -0.0023143 0.0023143 0.0023143 1. -2. 0.5 0.5 1. 2.3143 23.143n 1.K 1.K 1.E+12 -0.0023143 0.0023143 0.0023143 2. -3. 0.5 0.5 1. 2.3143 23.143n 1.K 1.K 1.E+12 -0.0023143 0.0023143 0.0023143 3. 22.314 0.5 0.5 1. 2.3143 23.143n 1.K 1.K 1.E+12 -0.0023143 0.0023143 0.0023143 4. 0. 0.5 0.5 1. 2.3143 23.143n 1.K 1.K 1.E+12 -0.0023143 0.0023143 0.0023143 0. -1. 0.5 0.5 1. 2.4286 24.286n 1.K 1.K 1.E+12 -0.0024286 0.0024286 0.0024286 1. -2. 0.5 0.5 1. 2.4286 24.286n 1.K 1.K 1.E+12 -0.0024286 0.0024286 0.0024286 2. -3. 0.5 0.5 1. 2.4286 24.286n 1.K 1.K 1.E+12 -0.0024286 0.0024286 0.0024286 3. 22.429 0.5 0.5 1. 2.4286 24.286n 1.K 1.K 1.E+12 -0.0024286 0.0024286 0.0024286 4. 0. 0.5 0.5 1. 2.4286 24.286n 1.K 1.K 1.E+12 -0.0024286 0.0024286 0.0024286 0. -1. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 1. -2. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 2. -3. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 3. 23. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 0. 0.5 0.5 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 0. -1. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 1. -2. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 2. -3. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 3. 24. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 4. 0. 0.5 0.5 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 0. -1. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 1. -2. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 2. -3. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 3. 25. 0.5 0.5 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 4. #Freq v(2) v(4) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) iter(0) 1.K 0.5 0.5 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Isig ) sss Isig ( 7 0 ) pwl( 0., 0. 5.,-0.005 15., 0.005 25.,-0.005 ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) Gnucap System status iterations: op=0, dc=86, tran=165, fourier=0, total=299 transient timesteps: accepted=45, rejected=1, total=46 nodes: user=8, subckt=0, model=0, total=8 dctran density=25.0%, ac density=25.0% tests/==out/d_switch.c2r.ckt.out000066400000000000000000000245471316501211100170260ustar00rootroot00000000000000' V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Isig ) sss Isig ( 7 0 ) pwl( 0., 0. 5.,-0.005 15., 0.005 25.,-0.005 ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) # v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 0.005 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 0.004 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0.003 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0.002 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 0.001 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 0. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. -0.001 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 -0.002 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 -0.003 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 -0.004 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 -0.005 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 -0.004 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 -0.003 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 -0.002 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 -0.001 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 0. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 0.001 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 0.002 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 0.003 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 0.004 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 0.005 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 1.K 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 0. 1. 1. 1. 1. 1. 1. 0. 0. 1.E+12 1.E+12 1.E+12 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 10.n 1.E+12 1.E+12 1.E+12 -0.001 0.001 0.001 2. 1. 1. 1. 1. 1. 1. 2. 20.n 1.E+12 1.E+12 1.E+12 -0.002 0.002 0.002 3. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 4. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 5. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 6. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 7. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 8. 1. 0.5 1. 0.5 1. 1. 2. 20.n 1.K 1.K 1.E+12 -0.002 0.002 0.002 9. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 9. 1. 0.5 1. 0.5 1. 1. 1. 10.n 1.K 1.K 1.E+12 -0.001 0.001 0.001 10. 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. 11. 1. 0.5 1. 0.5 1. 1. -1. -10.n 1.K 1.K 1.E+12 0.001 -0.001 -0.001 12. 1. 0.5 1. 0.5 1. 1. -2. -20.n 1.K 1.K 1.E+12 0.002 -0.002 -0.002 13. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 14. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 15. 1. 1. 1. 1. 1. 0.5 -5. -50.n 1.E+12 1.E+12 1.K 0.005 -0.005 -0.005 16. 1. 1. 1. 1. 1. 0.5 -4. -40.n 1.E+12 1.E+12 1.K 0.004 -0.004 -0.004 17. 1. 1. 1. 1. 1. 0.5 -3. -30.n 1.E+12 1.E+12 1.K 0.003 -0.003 -0.003 18. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 #Time v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 18. 1. 1. 1. 1. 1. 0.5 -2. -20.n 1.E+12 1.E+12 1.K 0.002 -0.002 -0.002 19. 1. 1. 1. 1. 1. 0.5 -1. -10.n 1.E+12 1.E+12 1.K 0.001 -0.001 -0.001 20. 1. 1. 1. 1. 1. 0.5 0. 0. 1.E+12 1.E+12 1.K 0. 0. 0. 21. 1. 1. 1. 1. 1. 0.5 1. 10.n 1.E+12 1.E+12 1.K -0.001 0.001 0.001 22. 1. 1. 1. 1. 1. 0.5 2. 20.n 1.E+12 1.E+12 1.K -0.002 0.002 0.002 23. 1. 0.5 1. 0.5 1. 1. 3. 30.n 1.K 1.K 1.E+12 -0.003 0.003 0.003 24. 1. 0.5 1. 0.5 1. 1. 4. 40.n 1.K 1.K 1.E+12 -0.004 0.004 0.004 25. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 26. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 27. 1. 0.5 1. 0.5 1. 1. 5. 50.n 1.K 1.K 1.E+12 -0.005 0.005 0.005 #Freq v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) ev(W1) ev(W2) ev(W3) i(Isig) i(Rprobe) i(Vprobe) 1.K 1. 0.5 1. 0.5 1. 1. 0. 0. 1.K 1.K 1.E+12 0. 0. 0. V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K W1 ( 2 0 Rprobe ) sss V2 ( 3 0 ) DC 1. AC 1. R2 ( 3 4 ) 1.K W2 ( 4 0 Vprobe ) sss V3 ( 5 0 ) DC 1. AC 1. R3 ( 5 6 ) 1.K W3 ( 6 0 Isig ) sss Isig ( 7 0 ) pwl( 0., 0. 5.,-0.005 15., 0.005 25.,-0.005 ) Rprobe ( 7 8 ) 1.K Vprobe ( 8 0 ) DC 0. .model sss csw ( it=0. ih=.002 ion=NA( 0.002) ioff=NA(-0.002) ron=1.K roff=1.E+12 tnom=NA( 27.)) tests/==out/d_switch.c3.ckt.out000066400000000000000000000100511316501211100166260ustar00rootroot00000000000000' # v(3) v(4) v(5) v(6) v(7) v(8) -5. 1. 1. 1. 0.5 -5. -50.n -4. 1. 1. 1. 0.5 -4. -40.n -3. 1. 1. 1. 0.5 -3. -30.n -2. 1. 1. 1. 0.5 -2. -20.n -1. 1. 1. 1. 0.5 -1. -10.n 0. 1. 1. 1. 0.5 0. 0. 1. 1. 1. 1. 0.5 1. 10.n 2. 1. 1. 1. 0.5 2. 20.n 3. 1. 0.5 1. 1. 3. 30.n 4. 1. 0.5 1. 1. 4. 40.n 5. 1. 0.5 1. 1. 5. 50.n 4. 1. 0.5 1. 1. 4. 40.n 3. 1. 0.5 1. 1. 3. 30.n 2. 1. 0.5 1. 1. 2. 20.n 1. 1. 0.5 1. 1. 1. 10.n 0. 1. 0.5 1. 1. 0. 0. -1. 1. 0.5 1. 1. -1. -10.n -2. 1. 0.5 1. 1. -2. -20.n -3. 1. 1. 1. 0.5 -3. -30.n -4. 1. 1. 1. 0.5 -4. -40.n -5. 1. 1. 1. 0.5 -5. -50.n #Freq v(3) v(4) v(5) v(6) v(7) v(8) 1.K 1. 1. 1. 0.5 0. 0. #Time v(3) v(4) v(5) v(6) v(7) v(8) 0. 1. 1. 1. 1. 0. 0. 1. 1. 1. 1. 1. 1. 10.n 2. 1. 1. 1. 1. 2. 20.n 3. 1. 0.5 1. 1. 3. 30.n 4. 1. 0.5 1. 1. 4. 40.n 5. 1. 0.5 1. 1. 5. 50.n 6. 1. 0.5 1. 1. 4. 40.n 7. 1. 0.5 1. 1. 3. 30.n 8. 1. 0.5 1. 1. 2. 20.n 9. 1. 0.5 1. 1. 1. 10.n 10. 1. 0.5 1. 1. 0. 0. 11. 1. 0.5 1. 1. -1. -10.n 12. 1. 0.5 1. 1. -2. -20.n 13. 1. 1. 1. 0.5 -3. -30.n 14. 1. 1. 1. 0.5 -4. -40.n 15. 1. 1. 1. 0.5 -5. -50.n 16. 1. 1. 1. 0.5 -4. -40.n 17. 1. 1. 1. 0.5 -3. -30.n 18. 1. 1. 1. 0.5 -2. -20.n 19. 1. 1. 1. 0.5 -1. -10.n 20. 1. 1. 1. 0.5 0. 0. 21. 1. 1. 1. 0.5 1. 10.n 22. 1. 1. 1. 0.5 2. 20.n 23. 1. 0.5 1. 1. 3. 30.n 24. 1. 0.5 1. 1. 4. 40.n 25. 1. 0.5 1. 1. 5. 50.n #Freq v(3) v(4) v(5) v(6) v(7) v(8) 1.K 1. 0.5 1. 1. 0. 0. tests/==out/d_switch.error1.ckt.out000066400000000000000000000000541316501211100175350ustar00rootroot00000000000000 s3: model foo is not a switch (SW or CSW) tests/==out/d_switch.error2.ckt.out000066400000000000000000000000461316501211100175370ustar00rootroot00000000000000 s3: missing args -- need model name tests/==out/d_switch.error3.ckt.out000066400000000000000000000000411316501211100175330ustar00rootroot00000000000000 w3: d1 cannot be used as input tests/==out/d_switch.nro.1.ckt.out000066400000000000000000000264501316501211100172700ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. 8.3333n 833.33u 10.Meg 6. 0. 49.75u 16. 16.667n 0.0016667 10.Meg 2. 833.33u 49.75u 6. 10.u 0.9995 10.Meg 3. 0.0016667 49.775u 1. 20.u 1.998 10.Meg 3. 0.9995 49.815u 1. 30.u 2.9955 10.Meg 3. 1.998 49.845u 1. 40.u 3.992 10.Meg 3. 2.9955 49.864u 1. 49.864u 4.974 10.Meg 3. 3.992 49.874u 7. 49.874u 4.975 10.Meg 2. 4.974 49.874u 7. 49.874u 4.975 10.Meg 2. 4.975 49.874u 7. 49.874u 4.975 10.Meg 2. 4.975 49.874u 7. 49.874u 4.97 1. 2. 4.975 49.876u 7. 49.874u 4.9207 1. 2. 4.97 49.875u 6. 49.874u 4.8719 1. 2. 4.9207 49.875u 6. 49.874u 4.7785 1. 2. 4.8719 49.875u 6. 49.875u 3.1175 1. 2. 4.7785 49.875u 6. 49.875u 2.0339 1. 2. 3.1175 49.876u 6. 49.875u 1.327 1. 2. 2.0339 49.876u 6. 49.876u 0.86575 1. 2. 1.327 49.877u 6. 49.876u 0.56485 1. 2. 0.86575 49.877u 6. 49.877u 0.36855 1. 2. 0.56485 49.877u 6. 49.877u 0.24048 1. 2. 0.36855 49.878u 6. 49.878u 0.15692 1. 2. 0.24048 49.878u 6. 49.878u 0.10241 1. 2. 0.15692 49.879u 6. 49.878u 0.066848 1. 2. 0.10241 49.879u 6. 49.879u 0.043646 1. 2. 0.066848 49.879u 6. 49.879u 0.031052 1. 2. 0.043646 49.879u 7. 49.879u 0.026401 1. 2. 0.031052 49.879u 7. 49.879u 0.025145 1. 2. 0.026401 49.879u 7. 49.879u 0.025004 1. 2. 0.025145 49.879u 7. 49.879u 0.024954 1. 2. 0.025004 49.879u 7. 49.879u 0.024929 10.Meg 2. 0.024954 Inf 7. 49.879u 0.02493 10.Meg 2. 0.024929 99.381u 6. 49.879u 0.024931 10.Meg 2. 0.02493 99.381u 6. 49.879u 0.024933 10.Meg 2. 0.024931 99.381u 6. 49.94u 0.030962 10.Meg 3. 0.024933 99.381u 6. 50.u 0.03699 10.Meg 3. 0.030962 99.382u 1. 55.u 0.53685 10.Meg 3. 0.03699 99.394u 6. 60.u 1.0365 10.Meg 3. 0.53685 99.416u 1. 70.u 2.0349 10.Meg 3. 1.0365 99.446u 1. 80.u 3.0324 10.Meg 3. 2.0349 99.476u 1. 90.u 4.0289 10.Meg 3. 3.0324 99.495u 1. 99.495u 4.9741 10.Meg 3. 4.0289 99.504u 7. 99.504u 4.975 10.Meg 2. 4.9741 99.504u 7. 99.504u 4.975 10.Meg 2. 4.975 99.504u 7. 99.504u 4.975 10.Meg 2. 4.975 99.504u 7. 99.504u 4.97 1. 2. 4.975 99.506u 7. 99.504u 4.9215 1. 2. 4.97 99.505u 6. 99.504u 4.8735 1. 2. 4.9215 99.505u 6. 99.504u 4.781 1. 2. 4.8735 99.505u 6. 99.505u 3.1165 1. 2. 4.781 99.506u 6. 99.505u 2.0316 1. 2. 3.1165 99.506u 6. 99.506u 1.3243 1. 2. 2.0316 99.506u 6. 99.506u 0.86332 1. 2. 1.3243 99.507u 6. 99.506u 0.5628 1. 2. 0.86332 99.507u 6. 99.507u 0.3669 1. 2. 0.5628 99.508u 6. 99.507u 0.2392 1. 2. 0.3669 99.508u 6. 99.508u 0.15596 1. 2. 0.2392 99.508u 6. 99.508u 0.1017 1. 2. 0.15596 99.509u 6. 99.509u 0.066329 1. 2. 0.1017 99.509u 6. 99.509u 0.043272 1. 2. 0.066329 99.509u 6. 99.509u 0.030915 1. 2. 0.043272 99.509u 7. 99.509u 0.026353 1. 2. 0.030915 99.509u 7. 99.509u 0.025137 1. 2. 0.026353 99.509u 7. 99.509u 0.025004 1. 2. 0.025137 99.509u 7. 99.509u 0.024954 1. 2. 0.025004 99.509u 7. 99.509u 0.024929 10.Meg 2. 0.024954 Inf 7. 99.509u 0.02493 10.Meg 2. 0.024929 149.01u 6. 99.51u 0.024931 10.Meg 2. 0.02493 149.01u 6. 99.51u 0.024933 10.Meg 2. 0.024931 149.01u 6. 99.571u 0.031064 10.Meg 2. 0.024933 149.01u 6. 100.u 0.073978 10.Meg 3. 0.031064 149.01u 1. 110.u 1.0734 10.Meg 3. 0.073978 149.04u 1. 120.u 2.0718 10.Meg 3. 1.0734 149.08u 1. 130.u 3.0693 10.Meg 3. 2.0718 149.11u 1. 140.u 4.0657 10.Meg 3. 3.0693 149.13u 1. 149.13u 4.9741 10.Meg 3. 4.0657 149.13u 7. 149.13u 4.975 10.Meg 2. 4.9741 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.97 1. 2. 4.975 149.14u 7. 149.13u 4.9224 1. 2. 4.97 149.14u 6. 149.13u 4.8751 1. 2. 4.9224 149.14u 6. 149.13u 4.7834 1. 2. 4.8751 149.14u 6. 149.13u 3.1191 1. 2. 4.7834 149.14u 6. 149.14u 2.0339 1. 2. 3.1191 149.14u 6. 149.14u 1.3263 1. 2. 2.0339 149.14u 6. 149.14u 0.86483 1. 2. 1.3263 149.14u 6. 149.14u 0.56396 1. 2. 0.86483 149.14u 6. 149.14u 0.36777 1. 2. 0.56396 149.14u 6. 149.14u 0.23985 1. 2. 0.36777 149.14u 6. 149.14u 0.15643 1. 2. 0.23985 149.14u 6. 149.14u 0.10204 1. 2. 0.15643 149.14u 6. 149.14u 0.066569 1. 2. 0.10204 149.14u 6. 149.14u 0.043442 1. 2. 0.066569 149.14u 6. 149.14u 0.030977 1. 2. 0.043442 149.14u 7. 149.14u 0.026375 1. 2. 0.030977 149.14u 7. 149.14u 0.02514 1. 2. 0.026375 149.14u 7. 149.14u 0.025004 1. 2. 0.02514 149.14u 7. 149.14u 0.024954 1. 2. 0.025004 149.14u 7. 149.14u 0.024929 10.Meg 2. 0.024954 Inf 7. 149.14u 0.02493 10.Meg 2. 0.024929 198.64u 6. 149.14u 0.024931 10.Meg 2. 0.02493 198.64u 6. 149.14u 0.024933 10.Meg 2. 0.024931 198.64u 6. 149.21u 0.031551 10.Meg 2. 0.024933 198.64u 6. 150.u 0.11096 10.Meg 3. 0.031551 198.64u 1. 160.u 1.1104 10.Meg 3. 0.11096 198.67u 1. 170.u 2.1087 10.Meg 3. 1.1104 198.71u 1. 180.u 3.1061 10.Meg 3. 2.1087 198.74u 1. 190.u 4.1025 10.Meg 3. 3.1061 198.76u 1. 198.76u 4.9742 10.Meg 3. 4.1025 198.76u 7. 198.76u 4.975 10.Meg 2. 4.9742 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.97 1. 2. 4.975 198.77u 7. 198.76u 4.9231 1. 2. 4.97 198.77u 6. 198.76u 4.8767 1. 2. 4.9231 198.77u 6. 198.76u 4.7858 1. 2. 4.8767 198.77u 6. 198.76u 3.1206 1. 2. 4.7858 198.77u 6. 198.77u 2.0348 1. 2. 3.1206 198.77u 6. 198.77u 1.3268 1. 2. 2.0348 198.77u 6. 198.77u 0.86517 1. 2. 1.3268 198.77u 6. 198.77u 0.56417 1. 2. 0.86517 198.77u 6. 198.77u 0.3679 1. 2. 0.56417 198.77u 6. 198.77u 0.23992 1. 2. 0.3679 198.77u 6. 198.77u 0.15647 1. 2. 0.23992 198.77u 6. 198.77u 0.10206 1. 2. 0.15647 198.77u 6. 198.77u 0.066584 1. 2. 0.10206 198.77u 6. 198.77u 0.043451 1. 2. 0.066584 198.77u 6. 198.77u 0.030981 1. 2. 0.043451 198.77u 7. 198.77u 0.026376 1. 2. 0.030981 198.77u 7. 198.77u 0.025141 1. 2. 0.026376 198.77u 7. 198.77u 0.025004 1. 2. 0.025141 198.77u 7. 198.77u 0.024954 1. 2. 0.025004 198.77u 7. 198.77u 0.024929 10.Meg 2. 0.024954 Inf 7. 198.77u 0.02493 10.Meg 2. 0.024929 248.27u 6. 198.77u 0.024931 10.Meg 2. 0.02493 248.27u 6. 198.77u 0.024933 10.Meg 2. 0.024931 248.27u 6. 198.83u 0.030792 10.Meg 2. 0.024933 248.27u 6. 199.41u 0.089372 10.Meg 3. 0.030792 248.27u 6. 200.u 0.14795 10.Meg 3. 0.089372 248.28u 1. t2= 198.76536094782u t1= 149.135262612234u t0= 99.5051632662351u tmin0= 99.5094887267018u tmin1= 149.13958791558u tmax1= 149.134359733638u falltime= 5.22818194200738E-9 risetime= 49.6248710069362E-6 dt= 49.630098335586E-6 Gnucap System status iterations: op=0, dc=0, tran=311, fourier=0, total=453 transient timesteps: accepted=141, rejected=1, total=142 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.1e.ckt.out000066400000000000000000000201321316501211100174240ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. 100.n 0.0099999 10.Meg 3. 0. 49.75u 9. 200.n 0.02 10.Meg 3. 0.0099999 49.751u 6. 10.u 0.99902 10.Meg 3. 0.02 49.8u 1. 20.u 1.997 10.Meg 3. 0.99902 49.839u 1. 30.u 2.994 10.Meg 3. 1.997 49.869u 1. 40.u 3.99 10.Meg 3. 2.994 49.889u 1. 49.889u 4.974 10.Meg 3. 3.99 49.899u 7. 49.899u 4.975 10.Meg 2. 4.974 49.899u 7. 49.899u 4.975 10.Meg 2. 4.975 49.899u 7. 49.899u 4.9651 1. 2. 4.975 49.9u 7. 49.9u 2.4888 1. 2. 4.9651 49.901u 7. 49.901u 1.2507 1. 2. 2.4888 49.902u 7. 49.902u 0.6317 1. 2. 1.2507 49.903u 7. 49.903u 0.32225 1. 2. 0.6317 49.904u 7. 49.904u 0.16765 1. 2. 0.32225 49.905u 7. 49.905u 0.0906 1. 2. 0.16765 49.905u 7. 49.905u 0.052568 1. 2. 0.0906 49.906u 7. 49.906u 0.034496 1. 2. 0.052568 49.906u 7. 49.906u 0.027054 1. 2. 0.034496 49.906u 7. 49.906u 0.025145 1. 2. 0.027054 49.906u 7. 49.906u 0.025001 1. 2. 0.025145 49.906u 7. 49.906u 0.024951 1. 2. 0.025001 49.906u 7. 49.906u 0.024951 10.Meg 2. 0.024951 99.408u 7. 49.937u 0.028079 10.Meg 2. 0.024951 99.408u 6. 50.u 0.034335 10.Meg 3. 0.028079 99.408u 1. 51.667u 0.20097 10.Meg 3. 0.034335 99.417u 6. 60.u 1.0334 10.Meg 3. 0.20097 99.456u 1. 70.u 2.0314 10.Meg 3. 1.0334 99.496u 1. 80.u 3.0284 10.Meg 3. 2.0314 99.525u 1. 90.u 4.0244 10.Meg 3. 3.0284 99.545u 1. 99.545u 4.9741 10.Meg 3. 4.0244 99.554u 7. 99.554u 4.975 10.Meg 2. 4.9741 99.554u 7. 99.554u 4.975 10.Meg 2. 4.975 99.554u 7. 99.554u 4.9651 1. 2. 4.975 99.555u 7. 99.555u 2.4888 1. 2. 4.9651 99.556u 7. 99.556u 1.2507 1. 2. 2.4888 99.557u 7. 99.557u 0.6317 1. 2. 1.2507 99.558u 7. 99.558u 0.32225 1. 2. 0.6317 99.559u 7. 99.559u 0.16765 1. 2. 0.32225 99.56u 7. 99.56u 0.0906 1. 2. 0.16765 99.56u 7. 99.56u 0.052568 1. 2. 0.0906 99.561u 7. 99.561u 0.034496 1. 2. 0.052568 99.561u 7. 99.561u 0.027054 1. 2. 0.034496 99.561u 7. 99.561u 0.025145 1. 2. 0.027054 99.561u 7. 99.561u 0.025001 1. 2. 0.025145 99.561u 7. 99.561u 0.024951 1. 2. 0.025001 99.561u 7. 99.561u 0.024951 10.Meg 2. 0.024951 149.06u 7. 99.61u 0.029826 10.Meg 2. 0.024951 149.06u 6. 99.805u 0.049324 10.Meg 3. 0.029826 149.06u 6. 100.u 0.068821 10.Meg 3. 0.049324 149.07u 1. 110.u 1.0678 10.Meg 3. 0.068821 149.11u 1. 120.u 2.0657 10.Meg 3. 1.0678 149.15u 1. 130.u 3.0626 10.Meg 3. 2.0657 149.18u 1. 140.u 4.0586 10.Meg 3. 3.0626 149.2u 1. 149.2u 4.9742 10.Meg 3. 4.0586 149.21u 7. 149.21u 4.975 10.Meg 2. 4.9742 149.21u 7. 149.21u 4.975 10.Meg 2. 4.975 149.21u 7. 149.21u 4.9651 1. 2. 4.975 149.21u 7. 149.21u 2.4888 1. 2. 4.9651 149.21u 7. 149.21u 1.2507 1. 2. 2.4888 149.21u 7. 149.21u 0.6317 1. 2. 1.2507 149.21u 7. 149.21u 0.32225 1. 2. 0.6317 149.22u 7. 149.22u 0.16765 1. 2. 0.32225 149.22u 7. 149.22u 0.0906 1. 2. 0.16765 149.22u 7. 149.22u 0.052568 1. 2. 0.0906 149.22u 7. 149.22u 0.034496 1. 2. 0.052568 149.22u 7. 149.22u 0.027054 1. 2. 0.034496 149.22u 7. 149.22u 0.025145 1. 2. 0.027054 149.22u 7. 149.22u 0.025001 1. 2. 0.025145 149.22u 7. 149.22u 0.024951 1. 2. 0.025001 149.22u 7. 149.22u 0.024951 10.Meg 2. 0.024951 198.72u 7. 149.27u 0.030168 10.Meg 2. 0.024951 198.72u 6. 149.51u 0.054512 10.Meg 3. 0.030168 198.72u 6. 150.u 0.1032 10.Meg 3. 0.054512 198.72u 1. 160.u 1.1021 10.Meg 3. 0.1032 198.77u 1. 170.u 2.1 10.Meg 3. 1.1021 198.81u 1. 180.u 3.0969 10.Meg 3. 2.1 198.84u 1. 190.u 4.0928 10.Meg 3. 3.0969 198.86u 1. 198.86u 4.9742 10.Meg 3. 4.0928 198.87u 7. 198.87u 4.975 10.Meg 2. 4.9742 198.87u 7. 198.87u 4.975 10.Meg 2. 4.975 198.87u 7. 198.87u 4.9651 1. 2. 4.975 198.87u 7. 198.87u 2.4888 1. 2. 4.9651 198.87u 7. 198.87u 1.2507 1. 2. 2.4888 198.87u 7. 198.87u 0.6317 1. 2. 1.2507 198.87u 7. 198.87u 0.32225 1. 2. 0.6317 198.87u 7. 198.87u 0.16765 1. 2. 0.32225 198.87u 7. 198.87u 0.0906 1. 2. 0.16765 198.87u 7. 198.87u 0.052568 1. 2. 0.0906 198.87u 7. 198.87u 0.034496 1. 2. 0.052568 198.87u 7. 198.87u 0.027054 1. 2. 0.034496 198.87u 7. 198.87u 0.025145 1. 2. 0.027054 198.87u 7. 198.87u 0.025001 1. 2. 0.025145 198.87u 7. 198.87u 0.024951 1. 2. 0.025001 198.87u 7. 198.87u 0.024951 10.Meg 2. 0.024951 248.38u 7. 198.91u 0.028586 10.Meg 2. 0.024951 248.38u 6. 199.07u 0.044161 10.Meg 2. 0.028586 248.38u 6. 200.u 0.1376 10.Meg 3. 0.044161 248.38u 1. t2= 198.867427021727u t1= 149.211538215145u t0= 99.5553506385893u tmin0= 99.561274900659u tmin1= 149.217462477214u tmax1= 149.210150363274u falltime= 7.31211394000087E-9 risetime= 49.648875462615E-6 dt= 49.655888806582E-6 Gnucap System status iterations: op=0, dc=0, tran=225, fourier=0, total=324 transient timesteps: accepted=99, rejected=0, total=99 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.1g.ckt.out000066400000000000000000000373251316501211100174420ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. 4.1667n 416.67u 10.Meg 6. 0. 49.75u 16. 8.3333n 833.33u 10.Meg 2. 416.67u 49.75u 6. 5.0042u 0.50025 10.Meg 3. 833.33u 49.767u 6. 10.u 0.99944 10.Meg 3. 0.50025 49.786u 1. 20.u 1.9979 10.Meg 3. 0.99944 49.819u 1. 30.u 2.9953 10.Meg 3. 1.9979 49.847u 1. 40.u 3.9918 10.Meg 3. 2.9953 49.866u 1. 49.866u 4.974 10.Meg 3. 3.9918 49.876u 7. 49.876u 4.975 10.Meg 2. 4.974 49.876u 7. 49.876u 4.975 10.Meg 2. 4.975 49.876u 7. 49.876u 4.975 10.Meg 2. 4.975 49.876u 7. 49.876u 4.9684 1. 2. 4.975 49.878u 7. 49.876u 4.9191 1. 2. 4.9684 49.877u 6. 49.876u 4.753 1. 2. 4.9191 49.877u 6. 49.876u 4.1478 1. 2. 4.753 49.877u 6. 49.876u 3.2976 1. 2. 4.1478 49.877u 6. 49.877u 2.6075 1. 2. 3.2976 49.878u 6. 49.877u 2.0568 1. 2. 2.6075 49.878u 6. 49.877u 1.6205 1. 2. 2.0568 49.878u 6. 49.877u 1.2761 1. 2. 1.6205 49.878u 6. 49.878u 1.0046 1. 2. 1.2761 49.878u 6. 49.878u 0.7908 1. 2. 1.0046 49.879u 6. 49.878u 0.62247 1. 2. 0.7908 49.879u 6. 49.878u 0.48997 1. 2. 0.62247 49.879u 6. 49.879u 0.38567 1. 2. 0.48997 49.879u 6. 49.879u 0.30357 1. 2. 0.38567 49.88u 6. 49.879u 0.23896 1. 2. 0.30357 49.88u 6. 49.879u 0.1881 1. 2. 0.23896 49.88u 6. 49.88u 0.14807 1. 2. 0.1881 49.88u 6. 49.88u 0.11656 1. 2. 0.14807 49.88u 6. 49.88u 0.091767 1. 2. 0.11656 49.881u 6. 49.88u 0.072249 1. 2. 0.091767 49.881u 6. 49.88u 0.056887 1. 2. 0.072249 49.881u 6. 49.881u 0.044796 1. 2. 0.056887 49.881u 6. 49.881u 0.035279 1. 2. 0.044796 49.881u 6. 49.881u 0.027789 1. 2. 0.035279 49.881u 6. 49.881u 0.025391 1. 2. 0.027789 49.881u 7. 49.881u 0.025025 1. 2. 0.025391 49.881u 7. 49.881u 0.024974 1. 2. 0.025025 49.881u 7. 49.881u 0.024958 10.Meg 2. 0.024974 Inf 7. 49.881u 0.024927 10.Meg 2. 0.024958 Inf 6. 49.881u 0.024898 10.Meg 2. 0.024927 Inf 6. 49.881u 0.024874 10.Meg 2. 0.024898 Inf 6. 49.882u 0.024873 10.Meg 2. 0.024874 Inf 6. 49.883u 0.024943 10.Meg 2. 0.024873 125.67u 6. 49.886u 0.025231 10.Meg 2. 0.024943 105.86u 6. 49.896u 0.026143 10.Meg 2. 0.025231 101.37u 6. 49.922u 0.02872 10.Meg 2. 0.026143 100.03u 6. 50.u 0.036516 10.Meg 3. 0.02872 99.599u 1. 50.303u 0.066774 10.Meg 3. 0.036516 99.458u 6. 51.515u 0.18791 10.Meg 3. 0.066774 99.416u 6. 55.758u 0.61189 10.Meg 3. 0.18791 99.415u 6. 60.u 1.0358 10.Meg 3. 0.61189 99.428u 1. 70.u 2.0341 10.Meg 3. 1.0358 99.458u 1. 80.u 3.0315 10.Meg 3. 2.0341 99.485u 1. 90.u 4.028 10.Meg 3. 3.0315 99.504u 1. 99.504u 4.9741 10.Meg 3. 4.028 99.513u 7. 99.513u 4.975 10.Meg 2. 4.9741 99.513u 7. 99.513u 4.975 10.Meg 2. 4.975 99.513u 7. 99.513u 4.975 10.Meg 2. 4.975 99.513u 7. 99.513u 4.9684 1. 2. 4.975 99.514u 7. 99.513u 4.9191 1. 2. 4.9684 99.514u 6. 99.513u 4.7529 1. 2. 4.9191 99.514u 6. 99.513u 4.1473 1. 2. 4.7529 99.514u 6. 99.513u 3.297 1. 2. 4.1473 99.514u 6. 99.514u 2.607 1. 2. 3.297 99.514u 6. 99.514u 2.0563 1. 2. 2.607 99.515u 6. 99.514u 1.6201 1. 2. 2.0563 99.515u 6. 99.514u 1.2757 1. 2. 1.6201 99.515u 6. 99.515u 1.0043 1. 2. 1.2757 99.515u 6. 99.515u 0.7905 1. 2. 1.0043 99.516u 6. 99.515u 0.62222 1. 2. 0.7905 99.516u 6. 99.515u 0.48975 1. 2. 0.62222 99.516u 6. 99.515u 0.38548 1. 2. 0.48975 99.516u 6. 99.516u 0.30342 1. 2. 0.38548 99.516u 6. 99.516u 0.23883 1. 2. 0.30342 99.517u 6. 99.516u 0.18799 1. 2. 0.23883 99.517u 6. 99.516u 0.14798 1. 2. 0.18799 99.517u 6. 99.517u 0.11649 1. 2. 0.14798 99.517u 6. 99.517u 0.091703 1. 2. 0.11649 99.517u 6. 99.517u 0.072196 1. 2. 0.091703 99.518u 6. 99.517u 0.056843 1. 2. 0.072196 99.518u 6. 99.518u 0.04476 1. 2. 0.056843 99.518u 6. 99.518u 0.03525 1. 2. 0.04476 99.518u 6. 99.518u 0.027764 1. 2. 0.03525 99.518u 6. 99.518u 0.025386 1. 2. 0.027764 99.518u 7. 99.518u 0.025024 1. 2. 0.025386 99.518u 7. 99.518u 0.024974 1. 2. 0.025024 99.518u 7. 99.518u 0.024957 10.Meg 2. 0.024974 Inf 7. 99.518u 0.024927 10.Meg 2. 0.024957 Inf 6. 99.518u 0.024898 10.Meg 2. 0.024927 Inf 6. 99.518u 0.024874 10.Meg 2. 0.024898 Inf 6. 99.519u 0.024872 10.Meg 2. 0.024874 Inf 6. 99.52u 0.024943 10.Meg 2. 0.024872 175.3u 6. 99.523u 0.025234 10.Meg 2. 0.024943 155.49u 6. 99.533u 0.026189 10.Meg 2. 0.025234 151.01u 6. 99.562u 0.029071 10.Meg 2. 0.026189 149.67u 6. 99.65u 0.03779 10.Meg 2. 0.029071 149.24u 6. 99.825u 0.055278 10.Meg 3. 0.03779 149.09u 6. 100.u 0.072783 10.Meg 3. 0.055278 149.05u 1. 102.u 0.27271 10.Meg 3. 0.072783 149.04u 6. 110.u 1.072 10.Meg 3. 0.27271 149.06u 1. 120.u 2.0704 10.Meg 3. 1.072 149.09u 1. 130.u 3.0678 10.Meg 3. 2.0704 149.12u 1. 140.u 4.0642 10.Meg 3. 3.0678 149.14u 1. 149.14u 4.9741 10.Meg 3. 4.0642 149.15u 7. 149.15u 4.975 10.Meg 2. 4.9741 149.15u 7. 149.15u 4.975 10.Meg 2. 4.975 149.15u 7. 149.15u 4.975 10.Meg 2. 4.975 149.15u 7. 149.15u 4.9684 1. 2. 4.975 149.15u 7. 149.15u 4.9191 1. 2. 4.9684 149.15u 6. 149.15u 4.7529 1. 2. 4.9191 149.15u 6. 149.15u 4.1473 1. 2. 4.7529 149.15u 6. 149.15u 3.2971 1. 2. 4.1473 149.15u 6. 149.15u 2.6071 1. 2. 3.2971 149.15u 6. 149.15u 2.0564 1. 2. 2.6071 149.15u 6. 149.15u 1.6201 1. 2. 2.0564 149.15u 6. 149.15u 1.2758 1. 2. 1.6201 149.15u 6. 149.15u 1.0043 1. 2. 1.2758 149.15u 6. 149.15u 0.79057 1. 2. 1.0043 149.15u 6. 149.15u 0.62227 1. 2. 0.79057 149.15u 6. 149.15u 0.4898 1. 2. 0.62227 149.15u 6. 149.15u 0.38553 1. 2. 0.4898 149.15u 6. 149.15u 0.30345 1. 2. 0.38553 149.15u 6. 149.15u 0.23886 1. 2. 0.30345 149.15u 6. 149.15u 0.18802 1. 2. 0.23886 149.15u 6. 149.15u 0.148 1. 2. 0.18802 149.15u 6. 149.15u 0.11651 1. 2. 0.148 149.15u 6. 149.15u 0.091719 1. 2. 0.11651 149.15u 6. 149.15u 0.07221 1. 2. 0.091719 149.15u 6. 149.15u 0.056854 1. 2. 0.07221 149.15u 6. 149.15u 0.044769 1. 2. 0.056854 149.15u 6. 149.15u 0.035257 1. 2. 0.044769 149.15u 6. 149.15u 0.027771 1. 2. 0.035257 149.15u 6. 149.15u 0.025387 1. 2. 0.027771 149.15u 7. 149.15u 0.025024 1. 2. 0.025387 149.15u 7. 149.15u 0.024974 1. 2. 0.025024 149.15u 7. 149.15u 0.024957 10.Meg 2. 0.024974 Inf 7. 149.15u 0.024927 10.Meg 2. 0.024957 Inf 6. 149.15u 0.024898 10.Meg 2. 0.024927 Inf 6. 149.15u 0.024874 10.Meg 2. 0.024898 Inf 6. 149.15u 0.024872 10.Meg 2. 0.024874 Inf 6. 149.16u 0.024943 10.Meg 2. 0.024872 224.94u 6. 149.16u 0.025233 10.Meg 2. 0.024943 205.13u 6. 149.17u 0.026184 10.Meg 2. 0.025233 200.64u 6. 149.2u 0.029114 10.Meg 2. 0.026184 199.3u 6. 149.29u 0.037977 10.Meg 2. 0.029114 198.87u 6. 149.53u 0.061681 10.Meg 3. 0.037977 198.73u 6. 150.u 0.10913 10.Meg 3. 0.061681 198.69u 1. 153.33u 0.4423 10.Meg 3. 0.10913 198.68u 6. 160.u 1.1084 10.Meg 3. 0.4423 198.7u 1. 170.u 2.1067 10.Meg 3. 1.1084 198.73u 1. 180.u 3.104 10.Meg 3. 2.1067 198.76u 1. 190.u 4.1004 10.Meg 3. 3.104 198.78u 1. 198.78u 4.9742 10.Meg 3. 4.1004 198.79u 7. 198.79u 4.975 10.Meg 2. 4.9742 198.79u 7. 198.79u 4.975 10.Meg 2. 4.975 198.79u 7. 198.79u 4.975 10.Meg 2. 4.975 198.79u 7. 198.79u 4.9684 1. 2. 4.975 198.79u 7. 198.79u 4.9191 1. 2. 4.9684 198.79u 6. 198.79u 4.7529 1. 2. 4.9191 198.79u 6. 198.79u 4.1473 1. 2. 4.7529 198.79u 6. 198.79u 3.2969 1. 2. 4.1473 198.79u 6. 198.79u 2.6068 1. 2. 3.2969 198.79u 6. 198.79u 2.056 1. 2. 2.6068 198.79u 6. 198.79u 1.6198 1. 2. 2.056 198.79u 6. 198.79u 1.2754 1. 2. 1.6198 198.79u 6. 198.79u 1.004 1. 2. 1.2754 198.79u 6. 198.79u 0.79026 1. 2. 1.004 198.79u 6. 198.79u 0.622 1. 2. 0.79026 198.79u 6. 198.79u 0.48955 1. 2. 0.622 198.79u 6. 198.79u 0.38531 1. 2. 0.48955 198.79u 6. 198.79u 0.30327 1. 2. 0.38531 198.79u 6. 198.79u 0.2387 1. 2. 0.30327 198.79u 6. 198.79u 0.18788 1. 2. 0.2387 198.79u 6. 198.79u 0.14789 1. 2. 0.18788 198.79u 6. 198.79u 0.11641 1. 2. 0.14789 198.79u 6. 198.79u 0.091637 1. 2. 0.11641 198.79u 6. 198.79u 0.072141 1. 2. 0.091637 198.79u 6. 198.79u 0.056797 1. 2. 0.072141 198.79u 6. 198.79u 0.044722 1. 2. 0.056797 198.79u 6. 198.79u 0.035218 1. 2. 0.044722 198.79u 6. 198.79u 0.027738 1. 2. 0.035218 198.79u 6. 198.79u 0.025382 1. 2. 0.027738 198.79u 7. 198.79u 0.025024 1. 2. 0.025382 198.79u 7. 198.79u 0.024974 1. 2. 0.025024 198.79u 7. 198.79u 0.024957 10.Meg 2. 0.024974 Inf 7. 198.79u 0.024927 10.Meg 2. 0.024957 Inf 6. 198.79u 0.024897 10.Meg 2. 0.024927 Inf 6. 198.79u 0.024873 10.Meg 2. 0.024897 Inf 6. 198.79u 0.024872 10.Meg 2. 0.024873 Inf 6. 198.79u 0.024943 10.Meg 2. 0.024872 274.57u 6. 198.8u 0.025234 10.Meg 2. 0.024943 254.76u 6. 198.81u 0.026191 10.Meg 2. 0.025234 250.28u 6. 198.84u 0.029214 10.Meg 2. 0.026191 248.94u 6. 198.93u 0.03887 10.Meg 2. 0.029214 248.51u 6. 199.2u 0.0655 10.Meg 3. 0.03887 248.37u 6. 200.u 0.14546 10.Meg 3. 0.0655 248.32u 1. t2= 198.786473897055u t1= 149.150075234789u t0= 99.5138538098137u tmin0= 99.5186518423143u tmin1= 149.154873519743u tmax1= 149.149153422553u falltime= 5.7200971899905E-9 risetime= 49.6305015802387E-6 dt= 49.636398662266E-6 Gnucap System status iterations: op=0, dc=0, tran=433, fourier=0, total=633 transient timesteps: accepted=199, rejected=1, total=200 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.1gr.ckt.out000066400000000000000000000445021316501211100176170ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. 100.n 0.0099999 10.Meg 3. 0. 49.7505u 9. 4.166667n 416.6665u 10.Meg 3. 0. 49.75002u 16. 8.333333n 833.3329u 10.Meg 2. 416.6665u 49.75003u 6. 5.004167u 0.5002499 10.Meg 3. 833.3329u 49.76661u 6. 10.u 0.9994448 10.Meg 3. 0.5002499 49.78649u 1. 20.u 1.997854 10.Meg 3. 0.9994448 49.81891u 1. 30.u 2.995326 10.Meg 3. 1.997854 49.84689u 1. 40.u 3.991823 10.Meg 3. 2.995326 49.86634u 1. 49.86634u 4.974033 10.Meg 3. 3.991823 49.87606u 7. 49.87606u 4.975 10.Meg 2. 4.974033 49.87606u 7. 49.87606u 4.975 10.Meg 2. 4.975 49.87606u 7. 49.87606u 4.975 10.Meg 2. 4.975 49.87606u 7. 49.87606u 4.968376 1. 2. 4.975 49.87756u 7. 49.87607u 4.91914 1. 2. 4.968376 49.87719u 6. 49.87611u 4.752983 1. 2. 4.91914 49.87713u 6. 49.87625u 4.147807 1. 2. 4.752983 49.87721u 6. 49.87648u 3.297596 1. 2. 4.147807 49.87738u 6. 49.87672u 2.60755 1. 2. 3.297596 49.87759u 6. 49.87695u 2.056786 1. 2. 2.60755 49.87782u 6. 49.87719u 1.620492 1. 2. 2.056786 49.87804u 6. 49.87742u 1.276068 1. 2. 1.620492 49.87827u 6. 49.87765u 1.004604 1. 2. 1.276068 49.8785u 6. 49.87789u 0.7908029 1. 2. 1.004604 49.87873u 6. 49.87812u 0.6224742 1. 2. 0.7908029 49.87895u 6. 49.87836u 0.4899678 1. 2. 0.6224742 49.87918u 6. 49.87859u 0.3856682 1. 2. 0.4899678 49.8794u 6. 49.87882u 0.3035737 1. 2. 0.3856682 49.87962u 6. 49.87906u 0.238958 1. 2. 0.3035737 49.87983u 6. 49.87929u 0.1881001 1. 2. 0.238958 49.88004u 6. 49.87953u 0.1480709 1. 2. 0.1881001 49.88024u 6. 49.87976u 0.1165647 1. 2. 0.1480709 49.88044u 6. 49.87999u 0.0917668 1. 2. 0.1165647 49.88062u 6. 49.88023u 0.07224894 1. 2. 0.0917668 49.88079u 6. 49.88046u 0.05688685 1. 2. 0.07224894 49.88095u 6. 49.8807u 0.04479569 1. 2. 0.05688685 49.88108u 6. 49.88093u 0.035279 1. 2. 0.04479569 49.88118u 6. 49.88116u 0.02778862 1. 2. 0.035279 49.88125u 6. 49.88125u 0.02539069 1. 2. 0.02778862 49.88126u 7. 49.88126u 0.02502468 1. 2. 0.02539069 49.88127u 7. 49.88127u 0.02497432 1. 2. 0.02502468 49.88127u 7. 49.88127u 0.02495766 10.Meg 2. 0.02497432 Inf 7. 49.88128u 0.02492744 10.Meg 2. 0.02495766 Inf 6. 49.88131u 0.02489815 10.Meg 2. 0.02492744 Inf 6. 49.88143u 0.02487405 10.Meg 2. 0.02489815 Inf 6. 49.88178u 0.02487263 10.Meg 2. 0.02487405 Inf 6. 49.88285u 0.02494283 10.Meg 2. 0.02487263 125.6662u 6. 49.88611u 0.02523061 10.Meg 2. 0.02494283 105.855u 6. 49.8956u 0.02614311 10.Meg 2. 0.02523061 101.3689u 6. 49.9217u 0.02871952 10.Meg 2. 0.02614311 100.0295u 6. 50.u 0.03651576 10.Meg 3. 0.02871952 99.59886u 1. 50.30303u 0.06677385 10.Meg 3. 0.03651576 99.45818u 6. 51.51515u 0.1879109 10.Meg 3. 0.06677385 99.41572u 6. 55.75758u 0.6118926 10.Meg 3. 0.1879109 99.41547u 6. 60.u 1.035755 10.Meg 3. 0.6118926 99.42775u 1. 70.u 2.034101 10.Meg 3. 1.035755 99.45773u 1. 80.u 3.031528 10.Meg 3. 2.034101 99.48484u 1. 90.u 4.027985 10.Meg 3. 3.031528 99.50382u 1. 99.50382u 4.974093 10.Meg 3. 4.027985 99.51293u 7. 99.51293u 4.975 10.Meg 2. 4.974093 99.51293u 7. 99.51293u 4.975 10.Meg 2. 4.975 99.51293u 7. 99.51293u 4.975 10.Meg 2. 4.975 99.51293u 7. 99.51293u 4.968376 1. 2. 4.975 99.51443u 7. 99.51295u 4.91914 1. 2. 4.968376 99.51406u 6. 99.51298u 4.752946 1. 2. 4.91914 99.514u 6. 99.51312u 4.147264 1. 2. 4.752946 99.51408u 6. 99.51336u 3.297048 1. 2. 4.147264 99.51426u 6. 99.51359u 2.607025 1. 2. 3.297048 99.51447u 6. 99.51382u 2.0563 1. 2. 2.607025 99.51469u 6. 99.51406u 1.620052 1. 2. 2.0563 99.51491u 6. 99.51429u 1.275677 1. 2. 1.620052 99.51514u 6. 99.51453u 1.004261 1. 2. 1.275677 99.51537u 6. 99.51476u 0.7905046 1. 2. 1.004261 99.5156u 6. 99.51499u 0.6222173 1. 2. 0.7905046 99.51582u 6. 99.51523u 0.4897483 1. 2. 0.6222173 99.51605u 6. 99.51546u 0.3854818 1. 2. 0.4897483 99.51627u 6. 99.5157u 0.3034163 1. 2. 0.3854818 99.51649u 6. 99.51593u 0.2388257 1. 2. 0.3034163 99.5167u 6. 99.51616u 0.1879893 1. 2. 0.2388257 99.51691u 6. 99.5164u 0.1479784 1. 2. 0.1879893 99.51712u 6. 99.51663u 0.1164878 1. 2. 0.1479784 99.51731u 6. 99.51687u 0.09170305 1. 2. 0.1164878 99.51749u 6. 99.5171u 0.07219621 1. 2. 0.09170305 99.51767u 6. 99.51733u 0.05684335 1. 2. 0.07219621 99.51782u 6. 99.51757u 0.04475987 1. 2. 0.05684335 99.51795u 6. 99.5178u 0.03524957 1. 2. 0.04475987 99.51805u 6. 99.51803u 0.02776448 1. 2. 0.03524957 99.51812u 6. 99.51812u 0.02538632 1. 2. 0.02776448 99.51814u 7. 99.51814u 0.02502431 1. 2. 0.02538632 99.51814u 7. 99.51814u 0.02497395 1. 2. 0.02502431 99.51814u 7. 99.51814u 0.0249573 10.Meg 2. 0.02497395 Inf 7. 99.51815u 0.02492707 10.Meg 2. 0.0249573 Inf 6. 99.51819u 0.02489778 10.Meg 2. 0.02492707 Inf 6. 99.5183u 0.02487368 10.Meg 2. 0.02489778 Inf 6. 99.51865u 0.02487226 10.Meg 2. 0.02487368 Inf 6. 99.51973u 0.02494291 10.Meg 2. 0.02487226 175.3005u 6. 99.52302u 0.02523383 10.Meg 2. 0.02494291 155.4914u 6. 99.53296u 0.02618922 10.Meg 2. 0.02523383 151.0056u 6. 99.56215u 0.02907065 10.Meg 2. 0.02618922 149.6663u 6. 99.64972u 0.03778986 10.Meg 2. 0.02907065 149.2358u 6. 99.82486u 0.05527802 10.Meg 3. 0.03778986 149.0948u 6. 100.u 0.07278255 10.Meg 3. 0.05527802 149.0487u 1. 102.u 0.2727102 10.Meg 3. 0.07278255 149.0399u 6. 110.u 1.072042 10.Meg 3. 0.2727102 149.0622u 1. 120.u 2.070383 10.Meg 3. 1.072042 149.0944u 1. 130.u 3.067785 10.Meg 3. 2.070383 149.1218u 1. 140.u 4.06421 10.Meg 3. 3.067785 149.1406u 1. 149.1406u 4.974148 10.Meg 3. 4.06421 149.1491u 7. 149.1491u 4.975 10.Meg 2. 4.974148 149.1492u 7. 149.1492u 4.975 10.Meg 2. 4.975 149.1492u 7. 149.1492u 4.975 10.Meg 2. 4.975 149.1492u 7. 149.1492u 4.968376 1. 2. 4.975 149.1506u 7. 149.1492u 4.91914 1. 2. 4.968376 149.1503u 6. 149.1492u 4.75294 1. 2. 4.91914 149.1502u 6. 149.1493u 4.147311 1. 2. 4.75294 149.1503u 6. 149.1496u 3.297116 1. 2. 4.147311 149.1505u 6. 149.1498u 2.607105 1. 2. 3.297116 149.1507u 6. 149.15u 2.056384 1. 2. 2.607105 149.1509u 6. 149.1503u 1.620135 1. 2. 2.056384 149.1511u 6. 149.1505u 1.275755 1. 2. 1.620135 149.1514u 6. 149.1507u 1.004332 1. 2. 1.275755 149.1516u 6. 149.151u 0.7905692 1. 2. 1.004332 149.1518u 6. 149.1512u 0.6222746 1. 2. 0.7905692 149.152u 6. 149.1514u 0.4897985 1. 2. 0.6222746 149.1523u 6. 149.1517u 0.3855252 1. 2. 0.4897985 149.1525u 6. 149.1519u 0.3034536 1. 2. 0.3855252 149.1527u 6. 149.1522u 0.2388575 1. 2. 0.3034536 149.1529u 6. 149.1524u 0.1880163 1. 2. 0.2388575 149.1531u 6. 149.1526u 0.1480012 1. 2. 0.1880163 149.1533u 6. 149.1529u 0.1165069 1. 2. 0.1480012 149.1535u 6. 149.1531u 0.09171906 1. 2. 0.1165069 149.1537u 6. 149.1533u 0.07220956 1. 2. 0.09171906 149.1539u 6. 149.1536u 0.05685444 1. 2. 0.07220956 149.154u 6. 149.1538u 0.04476906 1. 2. 0.05685444 149.1542u 6. 149.154u 0.03525716 1. 2. 0.04476906 149.1543u 6. 149.1543u 0.02777074 1. 2. 0.03525716 149.1543u 6. 149.1543u 0.02538745 1. 2. 0.02777074 149.1544u 7. 149.1544u 0.0250244 1. 2. 0.02538745 149.1544u 7. 149.1544u 0.02497404 1. 2. 0.0250244 149.1544u 7. 149.1544u 0.02495739 10.Meg 2. 0.02497404 Inf 7. 149.1544u 0.02492717 10.Meg 2. 0.02495739 Inf 6. 149.1544u 0.02489787 10.Meg 2. 0.02492717 Inf 6. 149.1545u 0.02487377 10.Meg 2. 0.02489787 Inf 6. 149.1549u 0.02487235 10.Meg 2. 0.02487377 Inf 6. 149.156u 0.02494303 10.Meg 2. 0.02487235 224.9374u 6. 149.1592u 0.02523348 10.Meg 2. 0.02494303 205.1278u 6. 149.1691u 0.02618447 10.Meg 2. 0.02523348 200.6419u 6. 149.1988u 0.02911367 10.Meg 2. 0.02618447 199.3026u 6. 149.2878u 0.03797741 10.Meg 2. 0.02911367 198.872u 6. 149.5252u 0.0616814 10.Meg 3. 0.03797741 198.7312u 6. 150.u 0.1091327 10.Meg 3. 0.0616814 198.6862u 1. 153.3333u 0.4423049 10.Meg 3. 0.1091327 198.6822u 6. 160.u 1.108372 10.Meg 3. 0.4423049 198.7011u 1. 170.u 2.106667 10.Meg 3. 1.108372 198.7323u 1. 180.u 3.104029 10.Meg 3. 2.106667 198.7592u 1. 190.u 4.100417 10.Meg 3. 3.104029 198.7775u 1. 198.7775u 4.974203 10.Meg 3. 4.100417 198.7855u 7. 198.7855u 4.975 10.Meg 2. 4.974203 198.7856u 7. 198.7856u 4.975 10.Meg 2. 4.975 198.7856u 7. 198.7856u 4.975 10.Meg 2. 4.975 198.7856u 7. 198.7856u 4.968376 1. 2. 4.975 198.787u 7. 198.7856u 4.91914 1. 2. 4.968376 198.7867u 6. 198.7856u 4.752937 1. 2. 4.91914 198.7866u 6. 198.7857u 4.147282 1. 2. 4.752937 198.7867u 6. 198.786u 3.296928 1. 2. 4.147282 198.7869u 6. 198.7862u 2.606818 1. 2. 3.296928 198.7871u 6. 198.7864u 2.056046 1. 2. 2.606818 198.7873u 6. 198.7867u 1.619778 1. 2. 2.056046 198.7875u 6. 198.7869u 1.275403 1. 2. 1.619778 198.7878u 6. 198.7871u 1.003999 1. 2. 1.275403 198.788u 6. 198.7874u 0.7902625 1. 2. 1.003999 198.7882u 6. 198.7876u 0.6219983 1. 2. 0.7902625 198.7884u 6. 198.7878u 0.4895534 1. 2. 0.6219983 198.7887u 6. 198.7881u 0.3853107 1. 2. 0.4895534 198.7889u 6. 198.7883u 0.3032677 1. 2. 0.3853107 198.7891u 6. 198.7885u 0.2386978 1. 2. 0.3032677 198.7893u 6. 198.7888u 0.18788 1. 2. 0.2386978 198.7895u 6. 198.789u 0.1478856 1. 2. 0.18788 198.7897u 6. 198.7893u 0.1164094 1. 2. 0.1478856 198.7899u 6. 198.7895u 0.09163714 1. 2. 0.1164094 198.7901u 6. 198.7897u 0.07214103 1. 2. 0.09163714 198.7903u 6. 198.79u 0.05679731 1. 2. 0.07214103 198.7904u 6. 198.7902u 0.04472158 1. 2. 0.05679731 198.7906u 6. 198.7904u 0.03521782 1. 2. 0.04472158 198.7907u 6. 198.7907u 0.02773822 1. 2. 0.03521782 198.7907u 6. 198.7907u 0.0253816 1. 2. 0.02773822 198.7908u 7. 198.7908u 0.02502391 1. 2. 0.0253816 198.7908u 7. 198.7908u 0.02497355 1. 2. 0.02502391 198.7908u 7. 198.7908u 0.0249569 10.Meg 2. 0.02497355 Inf 7. 198.7908u 0.02492668 10.Meg 2. 0.0249569 Inf 6. 198.7908u 0.02489738 10.Meg 2. 0.02492668 Inf 6. 198.7909u 0.02487328 10.Meg 2. 0.02489738 Inf 6. 198.7913u 0.02487186 10.Meg 2. 0.02487328 Inf 6. 198.7924u 0.02494255 10.Meg 2. 0.02487186 274.5703u 6. 198.7956u 0.02523357 10.Meg 2. 0.02494255 254.7635u 6. 198.8056u 0.02619053 10.Meg 2. 0.02523357 250.2781u 6. 198.8362u 0.02921368 10.Meg 2. 0.02619053 248.9389u 6. 198.9332u 0.03886996 10.Meg 2. 0.02921368 248.5085u 6. 199.1999u 0.06550029 10.Meg 3. 0.03886996 248.3678u 6. 200.u 0.1454626 10.Meg 3. 0.06550029 248.3239u 1. Gnucap System status iterations: op=0, dc=0, tran=433, fourier=0, total=633 transient timesteps: accepted=199, rejected=1, total=200 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.2.auto.ckt.out000066400000000000000000000241241316501211100202340ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. 13.889n 0.0013889 10.Meg 9. 0. 49.75u 16. 22.289n 0.0022289 10.Meg 2. 0.0013889 49.75u 6. 14.306u 1.4296 10.Meg 3. 0.0022289 49.786u 6. 49.786u 4.9662 10.Meg 3. 1.4296 49.874u 7. 49.874u 4.975 10.Meg 3. 4.9662 49.874u 7. 49.874u 4.975 10.Meg 2. 4.975 49.874u 7. 49.874u 4.975 10.Meg 2. 4.975 49.874u 7. 49.874u 4.97 1. 2. 4.975 49.876u 7. 49.874u 4.8412 1. 2. 4.97 49.875u 6. 49.874u 4.7654 1. 2. 4.8412 49.875u 6. 49.874u 4.6137 1. 2. 4.7654 49.875u 6. 49.875u 3.0327 1. 2. 4.6137 49.875u 6. 49.875u 1.9935 1. 2. 3.0327 49.876u 6. 49.875u 1.3104 1. 2. 1.9935 49.876u 6. 49.876u 0.86139 1. 2. 1.3104 49.877u 6. 49.876u 0.56624 1. 2. 0.86139 49.877u 6. 49.877u 0.37224 1. 2. 0.56624 49.877u 6. 49.877u 0.24471 1. 2. 0.37224 49.878u 6. 49.878u 0.16089 1. 2. 0.24471 49.878u 6. 49.878u 0.10579 1. 2. 0.16089 49.879u 6. 49.878u 0.069572 1. 2. 0.10579 49.879u 6. 49.879u 0.045765 1. 2. 0.069572 49.879u 6. 49.879u 0.03181 1. 2. 0.045765 49.879u 7. 49.879u 0.02668 1. 2. 0.03181 49.879u 7. 49.879u 0.025191 1. 2. 0.02668 49.879u 7. 49.879u 0.025006 1. 2. 0.025191 49.879u 7. 49.879u 0.024956 1. 2. 0.025006 49.879u 7. 49.879u 0.024932 10.Meg 2. 0.024956 Inf 7. 49.879u 0.024933 10.Meg 2. 0.024932 99.381u 6. 49.879u 0.024934 10.Meg 2. 0.024933 99.381u 6. 49.879u 0.024936 10.Meg 2. 0.024934 99.381u 6. 49.96u 0.033037 10.Meg 3. 0.024936 99.381u 6. 51.243u 0.16126 10.Meg 3. 0.033037 99.385u 6. 67.771u 1.8125 10.Meg 3. 0.16126 99.428u 6. 99.428u 4.9674 10.Meg 3. 1.8125 99.504u 7. 99.504u 4.975 10.Meg 2. 4.9674 99.504u 7. 99.504u 4.975 10.Meg 2. 4.975 99.504u 7. 99.504u 4.975 10.Meg 2. 4.975 99.504u 7. 99.504u 4.97 1. 2. 4.975 99.506u 7. 99.504u 4.8515 1. 2. 4.97 99.505u 6. 99.504u 4.7771 1. 2. 4.8515 99.505u 6. 99.504u 4.6314 1. 2. 4.7771 99.505u 6. 99.505u 3.0401 1. 2. 4.6314 99.505u 6. 99.505u 1.9956 1. 2. 3.0401 99.506u 6. 99.505u 1.31 1. 2. 1.9956 99.506u 6. 99.506u 0.85989 1. 2. 1.31 99.507u 6. 99.506u 0.56447 1. 2. 0.85989 99.507u 6. 99.507u 0.37056 1. 2. 0.56447 99.507u 6. 99.507u 0.24327 1. 2. 0.37056 99.508u 6. 99.508u 0.15972 1. 2. 0.24327 99.508u 6. 99.508u 0.10487 1. 2. 0.15972 99.509u 6. 99.508u 0.068874 1. 2. 0.10487 99.509u 6. 99.509u 0.045244 1. 2. 0.068874 99.509u 6. 99.509u 0.03162 1. 2. 0.045244 99.509u 7. 99.509u 0.026609 1. 2. 0.03162 99.509u 7. 99.509u 0.025179 1. 2. 0.026609 99.509u 7. 99.509u 0.025006 1. 2. 0.025179 99.509u 7. 99.509u 0.024956 1. 2. 0.025006 99.509u 7. 99.509u 0.024931 10.Meg 2. 0.024956 Inf 7. 99.509u 0.024932 10.Meg 2. 0.024931 149.01u 6. 99.509u 0.024933 10.Meg 2. 0.024932 149.01u 6. 99.509u 0.024935 10.Meg 2. 0.024933 149.01u 6. 99.584u 0.032429 10.Meg 2. 0.024935 149.01u 6. 102.16u 0.28986 10.Meg 3. 0.032429 149.02u 6. 134.77u 3.545 10.Meg 3. 0.28986 149.1u 6. 149.1u 4.9716 10.Meg 3. 3.545 149.13u 7. 149.13u 4.975 10.Meg 2. 4.9716 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.97 1. 2. 4.975 149.14u 7. 149.13u 4.8976 1. 2. 4.97 149.14u 6. 149.13u 4.8263 1. 2. 4.8976 149.14u 6. 149.13u 4.7102 1. 2. 4.8263 149.14u 6. 149.13u 3.0587 1. 2. 4.7102 149.14u 6. 149.14u 1.9862 1. 2. 3.0587 149.14u 6. 149.14u 1.2898 1. 2. 1.9862 149.14u 6. 149.14u 0.83755 1. 2. 1.2898 149.14u 6. 149.14u 0.5439 1. 2. 0.83755 149.14u 6. 149.14u 0.35322 1. 2. 0.5439 149.14u 6. 149.14u 0.2294 1. 2. 0.35322 149.14u 6. 149.14u 0.149 1. 2. 0.2294 149.14u 6. 149.14u 0.096787 1. 2. 0.149 149.14u 6. 149.14u 0.062884 1. 2. 0.096787 149.14u 6. 149.14u 0.040869 1. 2. 0.062884 149.14u 6. 149.14u 0.030034 1. 2. 0.040869 149.14u 7. 149.14u 0.026055 1. 2. 0.030034 149.14u 7. 149.14u 0.025093 1. 2. 0.026055 149.14u 7. 149.14u 0.025002 1. 2. 0.025093 149.14u 7. 149.14u 0.024952 1. 2. 0.025002 149.14u 7. 149.14u 0.024927 10.Meg 2. 0.024952 Inf 7. 149.14u 0.024928 10.Meg 2. 0.024927 198.64u 6. 149.14u 0.024929 10.Meg 2. 0.024928 198.64u 6. 149.14u 0.024931 10.Meg 2. 0.024929 198.64u 6. 149.21u 0.031511 10.Meg 2. 0.024931 198.64u 6. 150.22u 0.13309 10.Meg 3. 0.031511 198.64u 6. 162.67u 1.3766 10.Meg 3. 0.13309 198.68u 6. 198.68u 4.9663 10.Meg 3. 1.3766 198.76u 7. 198.76u 4.975 10.Meg 2. 4.9663 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.97 1. 2. 4.975 198.77u 7. 198.76u 4.8411 1. 2. 4.97 198.77u 6. 198.76u 4.7653 1. 2. 4.8411 198.77u 6. 198.76u 4.6135 1. 2. 4.7653 198.77u 6. 198.76u 3.0331 1. 2. 4.6135 198.77u 6. 198.77u 1.994 1. 2. 3.0331 198.77u 6. 198.77u 1.311 1. 2. 1.994 198.77u 6. 198.77u 0.86188 1. 2. 1.311 198.77u 6. 198.77u 0.56666 1. 2. 0.86188 198.77u 6. 198.77u 0.37257 1. 2. 0.56666 198.77u 6. 198.77u 0.24497 1. 2. 0.37257 198.77u 6. 198.77u 0.16108 1. 2. 0.24497 198.77u 6. 198.77u 0.10593 1. 2. 0.16108 198.77u 6. 198.77u 0.069677 1. 2. 0.10593 198.77u 6. 198.77u 0.045841 1. 2. 0.069677 198.77u 6. 198.77u 0.031838 1. 2. 0.045841 198.77u 7. 198.77u 0.02669 1. 2. 0.031838 198.77u 7. 198.77u 0.025193 1. 2. 0.02669 198.77u 7. 198.77u 0.025006 1. 2. 0.025193 198.77u 7. 198.77u 0.024957 1. 2. 0.025006 198.77u 7. 198.77u 0.024932 10.Meg 2. 0.024957 Inf 7. 198.77u 0.024933 10.Meg 2. 0.024932 248.27u 6. 198.77u 0.024934 10.Meg 2. 0.024933 248.27u 6. 198.77u 0.024936 10.Meg 2. 0.024934 248.27u 6. 198.84u 0.032174 10.Meg 2. 0.024936 248.27u 6. 199.42u 0.090072 10.Meg 3. 0.032174 248.27u 6. 200.u 0.14797 10.Meg 3. 0.090072 248.28u 1. Gnucap System status iterations: op=0, dc=0, tran=276, fourier=0, total=406 transient timesteps: accepted=128, rejected=2, total=130 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.2.ckt.out000066400000000000000000000262301316501211100172650ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. 8.3333n 833.33u 10.Meg 6. 0. 49.75u 16. 16.667n 0.0016667 10.Meg 2. 833.33u 49.75u 6. 10.u 0.9995 10.Meg 3. 0.0016667 49.775u 1. 20.u 1.998 10.Meg 3. 0.9995 49.815u 1. 30.u 2.9955 10.Meg 3. 1.998 49.845u 1. 40.u 3.992 10.Meg 3. 2.9955 49.864u 1. 49.864u 4.974 10.Meg 3. 3.992 49.874u 7. 49.874u 4.975 10.Meg 2. 4.974 49.874u 7. 49.874u 4.975 10.Meg 2. 4.975 49.874u 7. 49.874u 4.975 10.Meg 2. 4.975 49.874u 7. 49.874u 4.97 1. 2. 4.975 49.876u 7. 49.874u 4.9207 1. 2. 4.97 49.875u 6. 49.874u 4.8719 1. 2. 4.9207 49.875u 6. 49.874u 4.7785 1. 2. 4.8719 49.875u 6. 49.875u 3.1175 1. 2. 4.7785 49.875u 6. 49.875u 2.0339 1. 2. 3.1175 49.876u 6. 49.875u 1.327 1. 2. 2.0339 49.876u 6. 49.876u 0.86575 1. 2. 1.327 49.877u 6. 49.876u 0.56485 1. 2. 0.86575 49.877u 6. 49.877u 0.36855 1. 2. 0.56485 49.877u 6. 49.877u 0.24048 1. 2. 0.36855 49.878u 6. 49.878u 0.15692 1. 2. 0.24048 49.878u 6. 49.878u 0.10241 1. 2. 0.15692 49.879u 6. 49.878u 0.066848 1. 2. 0.10241 49.879u 6. 49.879u 0.043646 1. 2. 0.066848 49.879u 6. 49.879u 0.031052 1. 2. 0.043646 49.879u 7. 49.879u 0.026401 1. 2. 0.031052 49.879u 7. 49.879u 0.025145 1. 2. 0.026401 49.879u 7. 49.879u 0.025004 1. 2. 0.025145 49.879u 7. 49.879u 0.024954 1. 2. 0.025004 49.879u 7. 49.879u 0.024929 10.Meg 2. 0.024954 Inf 7. 49.879u 0.02493 10.Meg 2. 0.024929 99.381u 6. 49.879u 0.024931 10.Meg 2. 0.02493 99.381u 6. 49.879u 0.024933 10.Meg 2. 0.024931 99.381u 6. 49.94u 0.030962 10.Meg 3. 0.024933 99.381u 6. 50.u 0.03699 10.Meg 3. 0.030962 99.382u 1. 55.u 0.53685 10.Meg 3. 0.03699 99.394u 6. 60.u 1.0365 10.Meg 3. 0.53685 99.416u 1. 70.u 2.0349 10.Meg 3. 1.0365 99.446u 1. 80.u 3.0324 10.Meg 3. 2.0349 99.476u 1. 90.u 4.0289 10.Meg 3. 3.0324 99.495u 1. 99.495u 4.9741 10.Meg 3. 4.0289 99.504u 7. 99.504u 4.975 10.Meg 2. 4.9741 99.504u 7. 99.504u 4.975 10.Meg 2. 4.975 99.504u 7. 99.504u 4.975 10.Meg 2. 4.975 99.504u 7. 99.504u 4.97 1. 2. 4.975 99.506u 7. 99.504u 4.9215 1. 2. 4.97 99.505u 6. 99.504u 4.8735 1. 2. 4.9215 99.505u 6. 99.504u 4.781 1. 2. 4.8735 99.505u 6. 99.505u 3.1165 1. 2. 4.781 99.506u 6. 99.505u 2.0316 1. 2. 3.1165 99.506u 6. 99.506u 1.3243 1. 2. 2.0316 99.506u 6. 99.506u 0.86332 1. 2. 1.3243 99.507u 6. 99.506u 0.5628 1. 2. 0.86332 99.507u 6. 99.507u 0.3669 1. 2. 0.5628 99.508u 6. 99.507u 0.2392 1. 2. 0.3669 99.508u 6. 99.508u 0.15596 1. 2. 0.2392 99.508u 6. 99.508u 0.1017 1. 2. 0.15596 99.509u 6. 99.509u 0.066329 1. 2. 0.1017 99.509u 6. 99.509u 0.043272 1. 2. 0.066329 99.509u 6. 99.509u 0.030915 1. 2. 0.043272 99.509u 7. 99.509u 0.026353 1. 2. 0.030915 99.509u 7. 99.509u 0.025137 1. 2. 0.026353 99.509u 7. 99.509u 0.025004 1. 2. 0.025137 99.509u 7. 99.509u 0.024954 1. 2. 0.025004 99.509u 7. 99.509u 0.024929 10.Meg 2. 0.024954 Inf 7. 99.509u 0.02493 10.Meg 2. 0.024929 149.01u 6. 99.51u 0.024931 10.Meg 2. 0.02493 149.01u 6. 99.51u 0.024933 10.Meg 2. 0.024931 149.01u 6. 99.571u 0.031064 10.Meg 2. 0.024933 149.01u 6. 100.u 0.073978 10.Meg 3. 0.031064 149.01u 1. 105.u 0.57382 10.Meg 3. 0.073978 149.03u 6. 110.u 1.0734 10.Meg 3. 0.57382 149.05u 1. 120.u 2.0718 10.Meg 3. 1.0734 149.08u 1. 130.u 3.0693 10.Meg 3. 2.0718 149.11u 1. 140.u 4.0657 10.Meg 3. 3.0693 149.13u 1. 149.13u 4.9741 10.Meg 3. 4.0657 149.13u 7. 149.13u 4.975 10.Meg 2. 4.9741 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.97 1. 2. 4.975 149.14u 7. 149.13u 4.9224 1. 2. 4.97 149.14u 6. 149.13u 4.8751 1. 2. 4.9224 149.14u 6. 149.13u 4.7834 1. 2. 4.8751 149.14u 6. 149.13u 3.1191 1. 2. 4.7834 149.14u 6. 149.14u 2.0339 1. 2. 3.1191 149.14u 6. 149.14u 1.3263 1. 2. 2.0339 149.14u 6. 149.14u 0.86483 1. 2. 1.3263 149.14u 6. 149.14u 0.56396 1. 2. 0.86483 149.14u 6. 149.14u 0.36777 1. 2. 0.56396 149.14u 6. 149.14u 0.23984 1. 2. 0.36777 149.14u 6. 149.14u 0.15643 1. 2. 0.23984 149.14u 6. 149.14u 0.10204 1. 2. 0.15643 149.14u 6. 149.14u 0.066568 1. 2. 0.10204 149.14u 6. 149.14u 0.043442 1. 2. 0.066568 149.14u 6. 149.14u 0.030977 1. 2. 0.043442 149.14u 7. 149.14u 0.026374 1. 2. 0.030977 149.14u 7. 149.14u 0.02514 1. 2. 0.026374 149.14u 7. 149.14u 0.025004 1. 2. 0.02514 149.14u 7. 149.14u 0.024954 1. 2. 0.025004 149.14u 7. 149.14u 0.024929 10.Meg 2. 0.024954 Inf 7. 149.14u 0.02493 10.Meg 2. 0.024929 198.64u 6. 149.14u 0.024931 10.Meg 2. 0.02493 198.64u 6. 149.14u 0.024933 10.Meg 2. 0.024931 198.64u 6. 149.19u 0.029994 10.Meg 2. 0.024933 198.64u 6. 150.u 0.11096 10.Meg 3. 0.029994 198.64u 1. 160.u 1.1104 10.Meg 3. 0.11096 198.67u 1. 170.u 2.1087 10.Meg 3. 1.1104 198.71u 1. 180.u 3.1061 10.Meg 3. 2.1087 198.74u 1. 190.u 4.1025 10.Meg 3. 3.1061 198.76u 1. 198.76u 4.9742 10.Meg 3. 4.1025 198.76u 7. 198.76u 4.975 10.Meg 2. 4.9742 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.97 1. 2. 4.975 198.77u 7. 198.76u 4.9231 1. 2. 4.97 198.77u 6. 198.76u 4.8767 1. 2. 4.9231 198.77u 6. 198.76u 4.7858 1. 2. 4.8767 198.77u 6. 198.76u 3.1206 1. 2. 4.7858 198.77u 6. 198.77u 2.0348 1. 2. 3.1206 198.77u 6. 198.77u 1.3268 1. 2. 2.0348 198.77u 6. 198.77u 0.86517 1. 2. 1.3268 198.77u 6. 198.77u 0.56416 1. 2. 0.86517 198.77u 6. 198.77u 0.3679 1. 2. 0.56416 198.77u 6. 198.77u 0.23992 1. 2. 0.3679 198.77u 6. 198.77u 0.15647 1. 2. 0.23992 198.77u 6. 198.77u 0.10206 1. 2. 0.15647 198.77u 6. 198.77u 0.066584 1. 2. 0.10206 198.77u 6. 198.77u 0.04345 1. 2. 0.066584 198.77u 6. 198.77u 0.030981 1. 2. 0.04345 198.77u 7. 198.77u 0.026376 1. 2. 0.030981 198.77u 7. 198.77u 0.025141 1. 2. 0.026376 198.77u 7. 198.77u 0.025004 1. 2. 0.025141 198.77u 7. 198.77u 0.024954 1. 2. 0.025004 198.77u 7. 198.77u 0.024929 10.Meg 2. 0.024954 Inf 7. 198.77u 0.02493 10.Meg 2. 0.024929 248.27u 6. 198.77u 0.024931 10.Meg 2. 0.02493 248.27u 6. 198.77u 0.024933 10.Meg 2. 0.024931 248.27u 6. 198.84u 0.03217 10.Meg 2. 0.024933 248.27u 6. 199.42u 0.090062 10.Meg 3. 0.03217 248.27u 6. 200.u 0.14795 10.Meg 3. 0.090062 248.28u 1. Gnucap System status iterations: op=0, dc=0, tran=314, fourier=0, total=457 transient timesteps: accepted=142, rejected=1, total=143 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.3.ckt.out000066400000000000000000000267411316501211100172750ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) did not converge 0. 999.99 10.Meg 101. 100.u 0. 1. 2.p 100.u 1. 2. 999.99 2.p 7. 4.p 100.1u 10.Meg 2. 100.u 99.498u 7. 187.3p 118.43u 10.Meg 2. 100.1u 49.749u 6. 316.25p 131.32u 10.Meg 2. 118.43u 49.749u 6. 862.53p 185.95u 10.Meg 2. 131.32u 49.749u 6. 5.0004u 0.50002 10.Meg 3. 185.95u 49.761u 6. 10.u 0.9996 10.Meg 3. 0.50002 49.784u 1. 20.u 1.9981 10.Meg 3. 0.9996 49.814u 1. 30.u 2.9956 10.Meg 3. 1.9981 49.844u 1. 40.u 3.9921 10.Meg 3. 2.9956 49.863u 1. 49.863u 4.974 10.Meg 3. 3.9921 49.873u 7. 49.873u 4.975 10.Meg 2. 4.974 49.873u 7. 49.873u 4.975 10.Meg 2. 4.975 49.873u 7. 49.873u 4.975 10.Meg 2. 4.975 49.873u 7. 49.873u 4.97 1. 2. 4.975 49.875u 7. 49.873u 4.9207 1. 2. 4.97 49.874u 6. 49.873u 4.8719 1. 2. 4.9207 49.874u 6. 49.873u 4.7785 1. 2. 4.8719 49.874u 6. 49.874u 3.1158 1. 2. 4.7785 49.874u 6. 49.874u 2.0317 1. 2. 3.1158 49.875u 6. 49.874u 1.3248 1. 2. 2.0317 49.875u 6. 49.875u 0.86388 1. 2. 1.3248 49.876u 6. 49.875u 0.56333 1. 2. 0.86388 49.876u 6. 49.876u 0.36736 1. 2. 0.56333 49.876u 6. 49.876u 0.23957 1. 2. 0.36736 49.877u 6. 49.877u 0.15625 1. 2. 0.23957 49.877u 6. 49.877u 0.10192 1. 2. 0.15625 49.878u 6. 49.877u 0.066489 1. 2. 0.10192 49.878u 6. 49.878u 0.043389 1. 2. 0.066489 49.878u 6. 49.878u 0.030957 1. 2. 0.043389 49.878u 7. 49.878u 0.026368 1. 2. 0.030957 49.878u 7. 49.878u 0.025139 1. 2. 0.026368 49.878u 7. 49.878u 0.025004 1. 2. 0.025139 49.878u 7. 49.878u 0.024954 1. 2. 0.025004 49.878u 7. 49.878u 0.024929 10.Meg 2. 0.024954 Inf 7. 49.878u 0.02493 10.Meg 2. 0.024929 99.38u 6. 49.878u 0.024931 10.Meg 2. 0.02493 99.38u 6. 49.878u 0.024933 10.Meg 2. 0.024931 99.38u 6. 49.939u 0.031011 10.Meg 3. 0.024933 99.38u 6. 50.u 0.037089 10.Meg 3. 0.031011 99.381u 1. 55.u 0.53695 10.Meg 3. 0.037089 99.393u 6. 60.u 1.0366 10.Meg 3. 0.53695 99.415u 1. 70.u 2.035 10.Meg 3. 1.0366 99.445u 1. 80.u 3.0325 10.Meg 3. 2.035 99.475u 1. 90.u 4.029 10.Meg 3. 3.0325 99.494u 1. 99.494u 4.9741 10.Meg 3. 4.029 99.503u 7. 99.503u 4.975 10.Meg 2. 4.9741 99.503u 7. 99.503u 4.975 10.Meg 2. 4.975 99.503u 7. 99.503u 4.975 10.Meg 2. 4.975 99.503u 7. 99.503u 4.97 1. 2. 4.975 99.505u 7. 99.503u 4.9216 1. 2. 4.97 99.504u 6. 99.503u 4.8735 1. 2. 4.9216 99.504u 6. 99.503u 4.781 1. 2. 4.8735 99.504u 6. 99.504u 3.1173 1. 2. 4.781 99.505u 6. 99.504u 2.0326 1. 2. 3.1173 99.505u 6. 99.505u 1.3253 1. 2. 2.0326 99.505u 6. 99.505u 0.86415 1. 2. 1.3253 99.506u 6. 99.505u 0.56348 1. 2. 0.86415 99.506u 6. 99.506u 0.36743 1. 2. 0.56348 99.507u 6. 99.506u 0.2396 1. 2. 0.36743 99.507u 6. 99.507u 0.15626 1. 2. 0.2396 99.507u 6. 99.507u 0.10192 1. 2. 0.15626 99.508u 6. 99.508u 0.066488 1. 2. 0.10192 99.508u 6. 99.508u 0.043386 1. 2. 0.066488 99.508u 6. 99.508u 0.030957 1. 2. 0.043386 99.508u 7. 99.508u 0.026367 1. 2. 0.030957 99.508u 7. 99.508u 0.025139 1. 2. 0.026367 99.508u 7. 99.508u 0.025004 1. 2. 0.025139 99.508u 7. 99.508u 0.024954 1. 2. 0.025004 99.508u 7. 99.508u 0.024929 10.Meg 2. 0.024954 Inf 7. 99.509u 0.02493 10.Meg 2. 0.024929 149.01u 6. 99.509u 0.024931 10.Meg 2. 0.02493 149.01u 6. 99.509u 0.024933 10.Meg 2. 0.024931 149.01u 6. 99.563u 0.030394 10.Meg 2. 0.024933 149.01u 6. 100.u 0.074077 10.Meg 3. 0.030394 149.01u 1. 105.u 0.57392 10.Meg 3. 0.074077 149.03u 6. 110.u 1.0735 10.Meg 3. 0.57392 149.05u 1. 120.u 2.0719 10.Meg 3. 1.0735 149.08u 1. 130.u 3.0694 10.Meg 3. 2.0719 149.11u 1. 140.u 4.0658 10.Meg 3. 3.0694 149.12u 1. 149.12u 4.9741 10.Meg 3. 4.0658 149.13u 7. 149.13u 4.975 10.Meg 2. 4.9741 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 149.13u 4.97 1. 2. 4.975 149.14u 7. 149.13u 4.9224 1. 2. 4.97 149.13u 6. 149.13u 4.8751 1. 2. 4.9224 149.13u 6. 149.13u 4.7834 1. 2. 4.8751 149.13u 6. 149.13u 3.1189 1. 2. 4.7834 149.13u 6. 149.13u 2.0336 1. 2. 3.1189 149.14u 6. 149.13u 1.3259 1. 2. 2.0336 149.14u 6. 149.14u 0.86457 1. 2. 1.3259 149.14u 6. 149.14u 0.56374 1. 2. 0.86457 149.14u 6. 149.14u 0.3676 1. 2. 0.56374 149.14u 6. 149.14u 0.23971 1. 2. 0.3676 149.14u 6. 149.14u 0.15633 1. 2. 0.23971 149.14u 6. 149.14u 0.10196 1. 2. 0.15633 149.14u 6. 149.14u 0.066517 1. 2. 0.10196 149.14u 6. 149.14u 0.043404 1. 2. 0.066517 149.14u 6. 149.14u 0.030964 1. 2. 0.043404 149.14u 7. 149.14u 0.02637 1. 2. 0.030964 149.14u 7. 149.14u 0.02514 1. 2. 0.02637 149.14u 7. 149.14u 0.025004 1. 2. 0.02514 149.14u 7. 149.14u 0.024954 1. 2. 0.025004 149.14u 7. 149.14u 0.024929 10.Meg 2. 0.024954 Inf 7. 149.14u 0.02493 10.Meg 2. 0.024929 198.64u 6. 149.14u 0.024931 10.Meg 2. 0.02493 198.64u 6. 149.14u 0.024933 10.Meg 2. 0.024931 198.64u 6. 149.2u 0.031559 10.Meg 2. 0.024933 198.64u 6. 150.u 0.11106 10.Meg 3. 0.031559 198.64u 1. 160.u 1.1105 10.Meg 3. 0.11106 198.67u 1. 170.u 2.1088 10.Meg 3. 1.1105 198.71u 1. 180.u 3.1062 10.Meg 3. 2.1088 198.74u 1. 190.u 4.1026 10.Meg 3. 3.1062 198.76u 1. 198.76u 4.9742 10.Meg 3. 4.1026 198.76u 7. 198.76u 4.975 10.Meg 2. 4.9742 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 198.76u 4.97 1. 2. 4.975 198.77u 7. 198.76u 4.9231 1. 2. 4.97 198.76u 6. 198.76u 4.8767 1. 2. 4.9231 198.76u 6. 198.76u 4.7858 1. 2. 4.8767 198.76u 6. 198.76u 3.1209 1. 2. 4.7858 198.76u 6. 198.76u 2.0352 1. 2. 3.1209 198.77u 6. 198.76u 1.3272 1. 2. 2.0352 198.77u 6. 198.77u 0.8655 1. 2. 1.3272 198.77u 6. 198.77u 0.56443 1. 2. 0.8655 198.77u 6. 198.77u 0.36811 1. 2. 0.56443 198.77u 6. 198.77u 0.24008 1. 2. 0.36811 198.77u 6. 198.77u 0.15659 1. 2. 0.24008 198.77u 6. 198.77u 0.10215 1. 2. 0.15659 198.77u 6. 198.77u 0.066647 1. 2. 0.10215 198.77u 6. 198.77u 0.043496 1. 2. 0.066647 198.77u 6. 198.77u 0.030997 1. 2. 0.043496 198.77u 7. 198.77u 0.026382 1. 2. 0.030997 198.77u 7. 198.77u 0.025141 1. 2. 0.026382 198.77u 7. 198.77u 0.025004 1. 2. 0.025141 198.77u 7. 198.77u 0.024954 1. 2. 0.025004 198.77u 7. 198.77u 0.024929 10.Meg 2. 0.024954 Inf 7. 198.77u 0.02493 10.Meg 2. 0.024929 248.27u 6. 198.77u 0.024931 10.Meg 2. 0.02493 248.27u 6. 198.77u 0.024933 10.Meg 2. 0.024931 248.27u 6. 198.83u 0.030796 10.Meg 2. 0.024933 248.27u 6. 199.41u 0.089425 10.Meg 3. 0.030796 248.27u 6. 200.u 0.14805 10.Meg 3. 0.089425 248.28u 1. Gnucap System status iterations: op=0, dc=0, tran=420, fourier=0, total=566 transient timesteps: accepted=146, rejected=0, total=146 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.3h.ckt.out000066400000000000000000000352031316501211100174360ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) i(I1) i(C1) did not converge 0. 999.99 10.Meg 225. 100.u 0. 1. 100.u 0. 2.p 100.u 1. 4. 999.99 2.p 7. 100.u 0. 4.p 100.1u 10.Meg 2. 100.u 99.498u 7. 100.u 100.u 187.3p 118.43u 10.Meg 4. 100.1u 49.749u 6. 100.u 100.u 316.25p 131.32u 10.Meg 4. 118.43u 49.749u 6. 100.u 100.u 862.53p 185.95u 10.Meg 4. 131.32u 49.749u 6. 100.u 100.u 5.0004u 0.50002 10.Meg 4. 185.95u 49.761u 6. 100.u 99.95u 10.u 0.9996 10.Meg 4. 0.50002 49.784u 1. 100.u 99.9u 20.u 1.9981 10.Meg 4. 0.9996 49.814u 1. 100.u 99.8u 30.u 2.9956 10.Meg 4. 1.9981 49.844u 1. 100.u 99.7u 40.u 3.9921 10.Meg 4. 2.9956 49.863u 1. 100.u 99.601u 49.863u 4.974 10.Meg 4. 3.9921 49.873u 7. 100.u 99.503u 49.873u 4.975 10.Meg 2. 4.974 49.873u 7. 100.u 99.502u 49.873u 4.975 10.Meg 2. 4.975 49.873u 7. 100.u 99.502u 49.873u 4.975 10.Meg 2. 4.975 49.873u 7. 100.u 99.502u 49.873u 4.97 1. 2. 4.975 49.875u 7. 100.u -4.9699 49.873u 4.9207 1. 4. 4.97 49.874u 6. 100.u -4.9206 49.873u 4.8719 1. 4. 4.9207 49.874u 6. 100.u -4.8718 49.873u 4.7785 1. 4. 4.8719 49.874u 6. 100.u -4.7784 49.874u 3.1158 1. 4. 4.7785 49.874u 6. 100.u -3.1157 49.874u 2.0317 1. 4. 3.1158 49.875u 6. 100.u -2.0316 49.874u 1.3248 1. 4. 2.0317 49.875u 6. 100.u -1.3247 49.875u 0.86388 1. 4. 1.3248 49.876u 6. 100.u -0.86378 49.875u 0.56333 1. 4. 0.86388 49.876u 6. 100.u -0.56323 49.876u 0.36736 1. 4. 0.56333 49.876u 6. 100.u -0.36726 49.876u 0.23957 1. 4. 0.36736 49.877u 6. 100.u -0.23947 49.877u 0.15625 1. 4. 0.23957 49.877u 6. 100.u -0.15615 49.877u 0.10192 1. 4. 0.15625 49.878u 6. 100.u -0.10182 49.877u 0.066489 1. 4. 0.10192 49.878u 6. 100.u -0.066389 49.878u 0.043389 1. 4. 0.066489 49.878u 6. 100.u -0.043289 49.878u 0.030957 1. 4. 0.043389 49.878u 7. 100.u -0.030857 49.878u 0.026368 1. 4. 0.030957 49.878u 7. 100.u -0.026268 49.878u 0.025139 1. 4. 0.026368 49.878u 7. 100.u -0.025039 49.878u 0.025004 1. 4. 0.025139 49.878u 7. 100.u -0.024904 49.878u 0.024954 1. 4. 0.025004 49.878u 7. 100.u -0.024854 49.878u 0.024929 10.Meg 2. 0.024954 Inf 7. 100.u 99.998u 49.878u 0.02493 10.Meg 2. 0.024929 99.38u 6. 100.u 99.998u 49.878u 0.024931 10.Meg 2. 0.02493 99.38u 6. 100.u 99.998u 49.878u 0.024933 10.Meg 2. 0.024931 99.38u 6. 100.u 99.998u 49.919u 0.028985 10.Meg 4. 0.024933 99.38u 6. 100.u 99.997u 50.u 0.037089 10.Meg 4. 0.028985 99.381u 1. 100.u 99.996u 55.u 0.53695 10.Meg 4. 0.037089 99.393u 6. 100.u 99.946u 60.u 1.0366 10.Meg 4. 0.53695 99.415u 1. 100.u 99.896u 70.u 2.035 10.Meg 4. 1.0366 99.445u 1. 100.u 99.796u 80.u 3.0325 10.Meg 4. 2.035 99.475u 1. 100.u 99.697u 90.u 4.029 10.Meg 4. 3.0325 99.494u 1. 100.u 99.597u 99.494u 4.9741 10.Meg 4. 4.029 99.503u 7. 100.u 99.503u 99.503u 4.975 10.Meg 2. 4.9741 99.503u 7. 100.u 99.502u 99.503u 4.975 10.Meg 2. 4.975 99.503u 7. 100.u 99.502u 99.503u 4.975 10.Meg 2. 4.975 99.503u 7. 100.u 99.502u 99.503u 4.97 1. 2. 4.975 99.505u 7. 100.u -4.9699 99.503u 4.9216 1. 4. 4.97 99.504u 6. 100.u -4.9215 99.503u 4.8735 1. 4. 4.9216 99.504u 6. 100.u -4.8734 99.503u 4.781 1. 4. 4.8735 99.504u 6. 100.u -4.7809 99.504u 3.1173 1. 4. 4.781 99.505u 6. 100.u -3.1172 99.504u 2.0326 1. 4. 3.1173 99.505u 6. 100.u -2.0325 99.505u 1.3253 1. 4. 2.0326 99.505u 6. 100.u -1.3252 99.505u 0.86415 1. 4. 1.3253 99.506u 6. 100.u -0.86405 99.505u 0.56348 1. 4. 0.86415 99.506u 6. 100.u -0.56338 99.506u 0.36743 1. 4. 0.56348 99.507u 6. 100.u -0.36733 99.506u 0.2396 1. 4. 0.36743 99.507u 6. 100.u -0.2395 99.507u 0.15626 1. 4. 0.2396 99.507u 6. 100.u -0.15616 99.507u 0.10192 1. 4. 0.15626 99.508u 6. 100.u -0.10182 99.508u 0.066488 1. 4. 0.10192 99.508u 6. 100.u -0.066388 99.508u 0.043386 1. 4. 0.066488 99.508u 6. 100.u -0.043286 99.508u 0.030957 1. 4. 0.043386 99.508u 7. 100.u -0.030857 99.508u 0.026367 1. 4. 0.030957 99.508u 7. 100.u -0.026267 99.508u 0.025139 1. 4. 0.026367 99.508u 7. 100.u -0.025039 99.508u 0.025004 1. 4. 0.025139 99.508u 7. 100.u -0.024904 99.508u 0.024954 1. 4. 0.025004 99.508u 7. 100.u -0.024854 99.508u 0.024929 10.Meg 2. 0.024954 Inf 7. 100.u 99.998u 99.509u 0.02493 10.Meg 2. 0.024929 149.01u 6. 100.u 99.998u 99.509u 0.024931 10.Meg 2. 0.02493 149.01u 6. 100.u 99.998u 99.509u 0.024933 10.Meg 2. 0.024931 149.01u 6. 100.u 99.998u 99.631u 0.037219 10.Meg 4. 0.024933 149.01u 6. 100.u 99.996u 100.u 0.074077 10.Meg 4. 0.037219 149.01u 1. 100.u 99.993u 110.u 1.0735 10.Meg 4. 0.074077 149.04u 1. 100.u 99.893u 120.u 2.0719 10.Meg 4. 1.0735 149.08u 1. 100.u 99.793u 130.u 3.0694 10.Meg 4. 2.0719 149.11u 1. 100.u 99.693u 140.u 4.0658 10.Meg 4. 3.0694 149.12u 1. 100.u 99.593u 149.12u 4.9741 10.Meg 4. 4.0658 149.13u 7. 100.u 99.503u 149.13u 4.975 10.Meg 2. 4.9741 149.13u 7. 100.u 99.502u 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 100.u 99.502u 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 100.u 99.502u 149.13u 4.97 1. 2. 4.975 149.14u 7. 100.u -4.9699 149.13u 4.9224 1. 4. 4.97 149.13u 6. 100.u -4.9223 149.13u 4.8751 1. 4. 4.9224 149.13u 6. 100.u -4.875 149.13u 4.7834 1. 4. 4.8751 149.13u 6. 100.u -4.7833 149.13u 3.1189 1. 4. 4.7834 149.13u 6. 100.u -3.1188 149.13u 2.0336 1. 4. 3.1189 149.14u 6. 100.u -2.0335 149.13u 1.3259 1. 4. 2.0336 149.14u 6. 100.u -1.3258 149.14u 0.86456 1. 4. 1.3259 149.14u 6. 100.u -0.86446 149.14u 0.56374 1. 4. 0.86456 149.14u 6. 100.u -0.56364 149.14u 0.3676 1. 4. 0.56374 149.14u 6. 100.u -0.3675 149.14u 0.23971 1. 4. 0.3676 149.14u 6. 100.u -0.23961 149.14u 0.15633 1. 4. 0.23971 149.14u 6. 100.u -0.15623 149.14u 0.10196 1. 4. 0.15633 149.14u 6. 100.u -0.10186 149.14u 0.066517 1. 4. 0.10196 149.14u 6. 100.u -0.066417 149.14u 0.043404 1. 4. 0.066517 149.14u 6. 100.u -0.043304 149.14u 0.030964 1. 4. 0.043404 149.14u 7. 100.u -0.030864 149.14u 0.02637 1. 4. 0.030964 149.14u 7. 100.u -0.02627 149.14u 0.02514 1. 4. 0.02637 149.14u 7. 100.u -0.02504 149.14u 0.025004 1. 4. 0.02514 149.14u 7. 100.u -0.024904 149.14u 0.024954 1. 4. 0.025004 149.14u 7. 100.u -0.024854 149.14u 0.024929 10.Meg 2. 0.024954 Inf 7. 100.u 99.998u 149.14u 0.02493 10.Meg 2. 0.024929 198.64u 6. 100.u 99.998u 149.14u 0.024931 10.Meg 2. 0.02493 198.64u 6. 100.u 99.998u 149.14u 0.024933 10.Meg 2. 0.024931 198.64u 6. 100.u 99.998u 149.19u 0.030317 10.Meg 4. 0.024933 198.64u 6. 100.u 99.997u 149.6u 0.070691 10.Meg 4. 0.030317 198.64u 6. 100.u 99.993u 150.u 0.11106 10.Meg 4. 0.070691 198.64u 1. 100.u 99.989u 160.u 1.1105 10.Meg 4. 0.11106 198.67u 1. 100.u 99.889u 170.u 2.1088 10.Meg 4. 1.1105 198.71u 1. 100.u 99.789u 180.u 3.1062 10.Meg 4. 2.1088 198.74u 1. 100.u 99.689u 190.u 4.1026 10.Meg 4. 3.1062 198.76u 1. 100.u 99.59u 198.76u 4.9742 10.Meg 4. 4.1026 198.76u 7. 100.u 99.503u 198.76u 4.975 10.Meg 2. 4.9742 198.76u 7. 100.u 99.502u 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 100.u 99.502u 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 100.u 99.502u 198.76u 4.97 1. 2. 4.975 198.77u 7. 100.u -4.9699 198.76u 4.9231 1. 4. 4.97 198.76u 6. 100.u -4.923 198.76u 4.8767 1. 4. 4.9231 198.76u 6. 100.u -4.8766 198.76u 4.7858 1. 4. 4.8767 198.76u 6. 100.u -4.7857 198.76u 3.1209 1. 4. 4.7858 198.76u 6. 100.u -3.1208 198.76u 2.0352 1. 4. 3.1209 198.77u 6. 100.u -2.0351 198.76u 1.3272 1. 4. 2.0352 198.77u 6. 100.u -1.3271 198.77u 0.8655 1. 4. 1.3272 198.77u 6. 100.u -0.8654 198.77u 0.56443 1. 4. 0.8655 198.77u 6. 100.u -0.56433 198.77u 0.36811 1. 4. 0.56443 198.77u 6. 100.u -0.36801 198.77u 0.24008 1. 4. 0.36811 198.77u 6. 100.u -0.23998 198.77u 0.15659 1. 4. 0.24008 198.77u 6. 100.u -0.15649 198.77u 0.10215 1. 4. 0.15659 198.77u 6. 100.u -0.10205 198.77u 0.066647 1. 4. 0.10215 198.77u 6. 100.u -0.066547 198.77u 0.043496 1. 4. 0.066647 198.77u 6. 100.u -0.043396 198.77u 0.030997 1. 4. 0.043496 198.77u 7. 100.u -0.030897 198.77u 0.026382 1. 4. 0.030997 198.77u 7. 100.u -0.026282 198.77u 0.025141 1. 4. 0.026382 198.77u 7. 100.u -0.025041 198.77u 0.025004 1. 4. 0.025141 198.77u 7. 100.u -0.024904 198.77u 0.024954 1. 4. 0.025004 198.77u 7. 100.u -0.024854 198.77u 0.024929 10.Meg 2. 0.024954 Inf 7. 100.u 99.998u 198.77u 0.02493 10.Meg 2. 0.024929 248.27u 6. 100.u 99.998u 198.77u 0.024931 10.Meg 2. 0.02493 248.27u 6. 100.u 99.998u 198.77u 0.024933 10.Meg 2. 0.024931 248.27u 6. 100.u 99.998u 198.82u 0.03053 10.Meg 4. 0.024933 248.27u 6. 100.u 99.997u 199.41u 0.089292 10.Meg 4. 0.03053 248.27u 6. 100.u 99.991u 200.u 0.14805 10.Meg 4. 0.089292 248.28u 1. 100.u 99.985u Gnucap System status iterations: op=0, dc=0, tran=739, fourier=0, total=885 transient timesteps: accepted=146, rejected=0, total=146 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.nro.4.ckt.out000066400000000000000000001267311316501211100172760ustar00rootroot00000000000000* switch as negative resistance oscillator #Time V(1) r(SW1) iter(0) input(SW1) timef(SW1) control(0) 0. 0. 10.Meg 0. 0. Inf 1. -1. 999.99 10.Meg 1. 0. Inf 1. -2. 100.u 1. 2. 999.99 Inf 1. -3. 999.99 10.Meg 3. 100.u Inf 1. -4. 100.u 1. 4. 999.99 Inf 1. -5. 999.99 10.Meg 5. 100.u Inf 1. -6. 100.u 1. 6. 999.99 Inf 1. -7. 999.99 10.Meg 7. 100.u Inf 1. -8. 100.u 1. 8. 999.99 Inf 1. -9. 999.99 10.Meg 9. 100.u Inf 1. -10. 100.u 1. 10. 999.99 Inf 1. -11. 999.99 10.Meg 11. 100.u Inf 1. -12. 100.u 1. 12. 999.99 Inf 1. -13. 999.99 10.Meg 13. 100.u Inf 1. -14. 100.u 1. 14. 999.99 Inf 1. -15. 999.99 10.Meg 15. 100.u Inf 1. -16. 100.u 1. 16. 999.99 Inf 1. -17. 999.99 10.Meg 17. 100.u Inf 1. -18. 100.u 1. 18. 999.99 Inf 1. -19. 999.99 10.Meg 19. 100.u Inf 1. -20. 100.u 1. 20. 999.99 Inf 1. -21. 999.99 10.Meg 21. 100.u Inf 1. -22. 100.u 1. 22. 999.99 Inf 1. -23. 999.99 10.Meg 23. 100.u Inf 1. -24. 100.u 1. 24. 999.99 Inf 1. -25. 999.99 10.Meg 25. 100.u Inf 1. -26. 100.u 1. 26. 999.99 Inf 1. -27. 999.99 10.Meg 27. 100.u Inf 1. -28. 100.u 1. 28. 999.99 Inf 1. -29. 999.99 10.Meg 29. 100.u Inf 1. -30. 100.u 1. 30. 999.99 Inf 1. -31. 999.99 10.Meg 31. 100.u Inf 1. -32. 100.u 1. 32. 999.99 Inf 1. -33. 999.99 10.Meg 33. 100.u Inf 1. -34. 100.u 1. 34. 999.99 Inf 1. -35. 999.99 10.Meg 35. 100.u Inf 1. -36. 100.u 1. 36. 999.99 Inf 1. -37. 999.99 10.Meg 37. 100.u Inf 1. -38. 100.u 1. 38. 999.99 Inf 1. -39. 999.99 10.Meg 39. 100.u Inf 1. -40. 100.u 1. 40. 999.99 Inf 1. -41. 999.99 10.Meg 41. 100.u Inf 1. -42. 100.u 1. 42. 999.99 Inf 1. -43. 999.99 10.Meg 43. 100.u Inf 1. -44. 100.u 1. 44. 999.99 Inf 1. -45. 999.99 10.Meg 45. 100.u Inf 1. -46. 100.u 1. 46. 999.99 Inf 1. -47. 999.99 10.Meg 47. 100.u Inf 1. -48. 100.u 1. 48. 999.99 Inf 1. -49. 999.99 10.Meg 49. 100.u Inf 1. -50. 100.u 1. 50. 999.99 Inf 1. -51. 999.99 10.Meg 51. 100.u Inf 1. -52. 100.u 1. 52. 999.99 Inf 1. -53. 999.99 10.Meg 53. 100.u Inf 1. -54. 100.u 1. 54. 999.99 Inf 1. -55. 999.99 10.Meg 55. 100.u Inf 1. -56. 100.u 1. 56. 999.99 Inf 1. -57. 999.99 10.Meg 57. 100.u Inf 1. -58. 100.u 1. 58. 999.99 Inf 1. -59. 999.99 10.Meg 59. 100.u Inf 1. -60. 100.u 1. 60. 999.99 Inf 1. -61. 999.99 10.Meg 61. 100.u Inf 1. -62. 100.u 1. 62. 999.99 Inf 1. -63. 999.99 10.Meg 63. 100.u Inf 1. -64. 100.u 1. 64. 999.99 Inf 1. -65. 999.99 10.Meg 65. 100.u Inf 1. -66. 100.u 1. 66. 999.99 Inf 1. -67. 999.99 10.Meg 67. 100.u Inf 1. -68. 100.u 1. 68. 999.99 Inf 1. -69. 999.99 10.Meg 69. 100.u Inf 1. -70. 100.u 1. 70. 999.99 Inf 1. -71. 999.99 10.Meg 71. 100.u Inf 1. -72. 100.u 1. 72. 999.99 Inf 1. -73. 999.99 10.Meg 73. 100.u Inf 1. -74. 100.u 1. 74. 999.99 Inf 1. -75. 999.99 10.Meg 75. 100.u Inf 1. -76. 100.u 1. 76. 999.99 Inf 1. -77. 999.99 10.Meg 77. 100.u Inf 1. -78. 100.u 1. 78. 999.99 Inf 1. -79. 999.99 10.Meg 79. 100.u Inf 1. -80. 100.u 1. 80. 999.99 Inf 1. -81. 999.99 10.Meg 81. 100.u Inf 1. -82. 100.u 1. 82. 999.99 Inf 1. -83. 999.99 10.Meg 83. 100.u Inf 1. -84. 100.u 1. 84. 999.99 Inf 1. -85. 999.99 10.Meg 85. 100.u Inf 1. -86. 100.u 1. 86. 999.99 Inf 1. -87. 999.99 10.Meg 87. 100.u Inf 1. -88. 100.u 1. 88. 999.99 Inf 1. -89. 999.99 10.Meg 89. 100.u Inf 1. -90. 100.u 1. 90. 999.99 Inf 1. -91. 999.99 10.Meg 91. 100.u Inf 1. -92. 100.u 1. 92. 999.99 Inf 1. -93. 999.99 10.Meg 93. 100.u Inf 1. -94. 100.u 1. 94. 999.99 Inf 1. -95. 999.99 10.Meg 95. 100.u Inf 1. -96. 100.u 1. 96. 999.99 Inf 1. -97. 999.99 10.Meg 97. 100.u Inf 1. -98. 100.u 1. 98. 999.99 Inf 1. -99. 999.99 10.Meg 99. 100.u Inf 1. -100. 100.u 1. 100. 999.99 Inf 1. did not converge 0. 999.99 10.Meg 101. 100.u 0. 1. 0. 999.99 1. 0. 999.99 0. 7. -1. 100.u 1. 1. 999.99 0. 7. 2.p 100.u 1. 2. 999.99 2.p 7. 0. 100.u 10.Meg 0. 100.u 2.p 7. -1. 100.1u 10.Meg 1. 100.u 2.p 7. 4.p 100.1u 10.Meg 2. 100.u 99.498u 7. 0. 100.1u 10.Meg 0. 100.1u 99.498u 6. -1. 118.43u 10.Meg 1. 100.1u 99.498u 6. 187.3p 118.43u 10.Meg 2. 100.1u 49.749u 6. 0. 118.43u 10.Meg 0. 118.43u 49.749u 6. -1. 131.32u 10.Meg 1. 118.43u 49.749u 6. 316.25p 131.32u 10.Meg 2. 118.43u 49.749u 6. 0. 131.32u 10.Meg 0. 131.32u 49.749u 6. -1. 185.95u 10.Meg 1. 131.32u 49.749u 6. 862.53p 185.95u 10.Meg 2. 131.32u 49.749u 6. 0. 185.95u 10.Meg 0. 185.95u 49.749u 6. -1. 0.50002 10.Meg 1. 185.95u 49.749u 6. -2. 0.50002 10.Meg 2. 185.95u 49.749u 6. 5.0004u 0.50002 10.Meg 3. 185.95u 49.761u 6. 0. 0.50002 10.Meg 0. 0.50002 49.761u 1. -1. 0.9996 10.Meg 1. 0.50002 49.761u 1. -2. 0.9996 10.Meg 2. 0.50002 49.761u 1. 10.u 0.9996 10.Meg 3. 0.50002 49.784u 1. 0. 0.9996 10.Meg 0. 0.9996 49.784u 1. -1. 1.9981 10.Meg 1. 0.9996 49.784u 1. -2. 1.9981 10.Meg 2. 0.9996 49.784u 1. 20.u 1.9981 10.Meg 3. 0.9996 49.814u 1. 0. 1.9981 10.Meg 0. 1.9981 49.814u 1. -1. 2.9956 10.Meg 1. 1.9981 49.814u 1. -2. 2.9956 10.Meg 2. 1.9981 49.814u 1. 30.u 2.9956 10.Meg 3. 1.9981 49.844u 1. 0. 2.9956 10.Meg 0. 2.9956 49.844u 1. -1. 3.9921 10.Meg 1. 2.9956 49.844u 1. -2. 3.9921 10.Meg 2. 2.9956 49.844u 1. 40.u 3.9921 10.Meg 3. 2.9956 49.863u 1. 0. 3.9921 10.Meg 0. 3.9921 49.863u 7. -1. 4.974 10.Meg 1. 3.9921 49.863u 7. -2. 4.974 10.Meg 2. 3.9921 49.863u 7. 49.863u 4.974 10.Meg 3. 3.9921 49.873u 7. 0. 4.974 10.Meg 0. 4.974 49.873u 7. -1. 4.975 10.Meg 1. 4.974 49.873u 7. 49.873u 4.975 10.Meg 2. 4.974 49.873u 7. 0. 4.975 10.Meg 0. 4.975 49.873u 7. -1. 4.975 10.Meg 1. 4.975 49.873u 7. 49.873u 4.975 10.Meg 2. 4.975 49.873u 7. 0. 4.975 10.Meg 0. 4.975 49.873u 7. -1. 4.975 10.Meg 1. 4.975 49.873u 7. 49.873u 4.975 10.Meg 2. 4.975 49.873u 7. 0. 4.975 1. 0. 4.975 49.873u 7. -1. 4.97 1. 1. 4.975 49.873u 7. 49.873u 4.97 1. 2. 4.975 49.875u 7. 0. 4.97 1. 0. 4.97 49.875u 6. -1. 4.9207 1. 1. 4.97 49.875u 6. 49.873u 4.9207 1. 2. 4.97 49.874u 6. 0. 4.9207 1. 0. 4.9207 49.874u 6. -1. 4.8719 1. 1. 4.9207 49.874u 6. 49.873u 4.8719 1. 2. 4.9207 49.874u 6. 0. 4.8719 1. 0. 4.8719 49.874u 6. -1. 4.7785 1. 1. 4.8719 49.874u 6. 49.873u 4.7785 1. 2. 4.8719 49.874u 6. 0. 4.7785 1. 0. 4.7785 49.874u 6. -1. 3.1158 1. 1. 4.7785 49.874u 6. 49.874u 3.1158 1. 2. 4.7785 49.874u 6. 0. 3.1158 1. 0. 3.1158 49.874u 6. -1. 2.0317 1. 1. 3.1158 49.874u 6. 49.874u 2.0317 1. 2. 3.1158 49.875u 6. 0. 2.0317 1. 0. 2.0317 49.875u 6. -1. 1.3248 1. 1. 2.0317 49.875u 6. 49.874u 1.3248 1. 2. 2.0317 49.875u 6. 0. 1.3248 1. 0. 1.3248 49.875u 6. -1. 0.86388 1. 1. 1.3248 49.875u 6. 49.875u 0.86388 1. 2. 1.3248 49.876u 6. 0. 0.86388 1. 0. 0.86388 49.876u 6. -1. 0.56333 1. 1. 0.86388 49.876u 6. 49.875u 0.56333 1. 2. 0.86388 49.876u 6. 0. 0.56333 1. 0. 0.56333 49.876u 6. -1. 0.36736 1. 1. 0.56333 49.876u 6. 49.876u 0.36736 1. 2. 0.56333 49.876u 6. 0. 0.36736 1. 0. 0.36736 49.876u 6. -1. 0.23957 1. 1. 0.36736 49.876u 6. 49.876u 0.23957 1. 2. 0.36736 49.877u 6. 0. 0.23957 1. 0. 0.23957 49.877u 6. -1. 0.15625 1. 1. 0.23957 49.877u 6. 49.877u 0.15625 1. 2. 0.23957 49.877u 6. 0. 0.15625 1. 0. 0.15625 49.877u 6. -1. 0.10192 1. 1. 0.15625 49.877u 6. 49.877u 0.10192 1. 2. 0.15625 49.878u 6. 0. 0.10192 1. 0. 0.10192 49.878u 6. -1. 0.066489 1. 1. 0.10192 49.878u 6. 49.877u 0.066489 1. 2. 0.10192 49.878u 6. 0. 0.066489 1. 0. 0.066489 49.878u 6. -1. 0.043389 1. 1. 0.066489 49.878u 6. 49.878u 0.043389 1. 2. 0.066489 49.878u 6. 0. 0.043389 1. 0. 0.043389 49.878u 7. -1. 0.030957 1. 1. 0.043389 49.878u 7. 49.878u 0.030957 1. 2. 0.043389 49.878u 7. 0. 0.030957 1. 0. 0.030957 49.878u 7. -1. 0.026368 1. 1. 0.030957 49.878u 7. 49.878u 0.026368 1. 2. 0.030957 49.878u 7. 0. 0.026368 1. 0. 0.026368 49.878u 7. -1. 0.025139 1. 1. 0.026368 49.878u 7. 49.878u 0.025139 1. 2. 0.026368 49.878u 7. 0. 0.025139 1. 0. 0.025139 49.878u 7. -1. 0.025004 1. 1. 0.025139 49.878u 7. 49.878u 0.025004 1. 2. 0.025139 49.878u 7. 0. 0.025004 1. 0. 0.025004 49.878u 7. -1. 0.024954 1. 1. 0.025004 49.878u 7. 49.878u 0.024954 1. 2. 0.025004 49.878u 7. 0. 0.024954 10.Meg 0. 0.024954 49.878u 7. -1. 0.024929 10.Meg 1. 0.024954 49.878u 7. 49.878u 0.024929 10.Meg 2. 0.024954 Inf 7. 0. 0.024929 10.Meg 0. 0.024929 Inf 6. -1. 0.02493 10.Meg 1. 0.024929 Inf 6. 49.878u 0.02493 10.Meg 2. 0.024929 99.38u 6. 0. 0.02493 10.Meg 0. 0.02493 99.38u 6. -1. 0.024931 10.Meg 1. 0.02493 99.38u 6. 49.878u 0.024931 10.Meg 2. 0.02493 99.38u 6. 0. 0.024931 10.Meg 0. 0.024931 99.38u 6. -1. 0.024933 10.Meg 1. 0.024931 99.38u 6. 49.878u 0.024933 10.Meg 2. 0.024931 99.38u 6. 0. 0.024933 10.Meg 0. 0.024933 99.38u 6. -1. 0.031011 10.Meg 1. 0.024933 99.38u 6. -2. 0.031011 10.Meg 2. 0.024933 99.38u 6. 49.939u 0.031011 10.Meg 3. 0.024933 99.38u 6. 0. 0.031011 10.Meg 0. 0.031011 99.38u 1. -1. 0.037089 10.Meg 1. 0.031011 99.38u 1. -2. 0.037089 10.Meg 2. 0.031011 99.38u 1. 50.u 0.037089 10.Meg 3. 0.031011 99.381u 1. 0. 0.037089 10.Meg 0. 0.037089 99.381u 6. -1. 0.53695 10.Meg 1. 0.037089 99.381u 6. -2. 0.53695 10.Meg 2. 0.037089 99.381u 6. 55.u 0.53695 10.Meg 3. 0.037089 99.393u 6. 0. 0.53695 10.Meg 0. 0.53695 99.393u 1. -1. 1.0366 10.Meg 1. 0.53695 99.393u 1. -2. 1.0366 10.Meg 2. 0.53695 99.393u 1. 60.u 1.0366 10.Meg 3. 0.53695 99.415u 1. 0. 1.0366 10.Meg 0. 1.0366 99.415u 1. -1. 2.035 10.Meg 1. 1.0366 99.415u 1. -2. 2.035 10.Meg 2. 1.0366 99.415u 1. 70.u 2.035 10.Meg 3. 1.0366 99.445u 1. 0. 2.035 10.Meg 0. 2.035 99.445u 1. -1. 3.0325 10.Meg 1. 2.035 99.445u 1. -2. 3.0325 10.Meg 2. 2.035 99.445u 1. 80.u 3.0325 10.Meg 3. 2.035 99.475u 1. 0. 3.0325 10.Meg 0. 3.0325 99.475u 1. -1. 4.029 10.Meg 1. 3.0325 99.475u 1. -2. 4.029 10.Meg 2. 3.0325 99.475u 1. 90.u 4.029 10.Meg 3. 3.0325 99.494u 1. 0. 4.029 10.Meg 0. 4.029 99.494u 7. -1. 4.9741 10.Meg 1. 4.029 99.494u 7. -2. 4.9741 10.Meg 2. 4.029 99.494u 7. 99.494u 4.9741 10.Meg 3. 4.029 99.503u 7. 0. 4.9741 10.Meg 0. 4.9741 99.503u 7. -1. 4.975 10.Meg 1. 4.9741 99.503u 7. 99.503u 4.975 10.Meg 2. 4.9741 99.503u 7. 0. 4.975 10.Meg 0. 4.975 99.503u 7. -1. 4.975 10.Meg 1. 4.975 99.503u 7. 99.503u 4.975 10.Meg 2. 4.975 99.503u 7. 0. 4.975 10.Meg 0. 4.975 99.503u 7. -1. 4.975 10.Meg 1. 4.975 99.503u 7. 99.503u 4.975 10.Meg 2. 4.975 99.503u 7. 0. 4.975 1. 0. 4.975 99.503u 7. -1. 4.97 1. 1. 4.975 99.503u 7. 99.503u 4.97 1. 2. 4.975 99.505u 7. 0. 4.97 1. 0. 4.97 99.505u 6. -1. 4.9216 1. 1. 4.97 99.505u 6. 99.503u 4.9216 1. 2. 4.97 99.504u 6. 0. 4.9216 1. 0. 4.9216 99.504u 6. -1. 4.8735 1. 1. 4.9216 99.504u 6. 99.503u 4.8735 1. 2. 4.9216 99.504u 6. 0. 4.8735 1. 0. 4.8735 99.504u 6. -1. 4.781 1. 1. 4.8735 99.504u 6. 99.503u 4.781 1. 2. 4.8735 99.504u 6. 0. 4.781 1. 0. 4.781 99.504u 6. -1. 3.1173 1. 1. 4.781 99.504u 6. 99.504u 3.1173 1. 2. 4.781 99.505u 6. 0. 3.1173 1. 0. 3.1173 99.505u 6. -1. 2.0326 1. 1. 3.1173 99.505u 6. 99.504u 2.0326 1. 2. 3.1173 99.505u 6. 0. 2.0326 1. 0. 2.0326 99.505u 6. -1. 1.3253 1. 1. 2.0326 99.505u 6. 99.505u 1.3253 1. 2. 2.0326 99.505u 6. 0. 1.3253 1. 0. 1.3253 99.505u 6. -1. 0.86415 1. 1. 1.3253 99.505u 6. 99.505u 0.86415 1. 2. 1.3253 99.506u 6. 0. 0.86415 1. 0. 0.86415 99.506u 6. -1. 0.56348 1. 1. 0.86415 99.506u 6. 99.505u 0.56348 1. 2. 0.86415 99.506u 6. 0. 0.56348 1. 0. 0.56348 99.506u 6. -1. 0.36743 1. 1. 0.56348 99.506u 6. 99.506u 0.36743 1. 2. 0.56348 99.507u 6. 0. 0.36743 1. 0. 0.36743 99.507u 6. -1. 0.2396 1. 1. 0.36743 99.507u 6. 99.506u 0.2396 1. 2. 0.36743 99.507u 6. 0. 0.2396 1. 0. 0.2396 99.507u 6. -1. 0.15626 1. 1. 0.2396 99.507u 6. 99.507u 0.15626 1. 2. 0.2396 99.507u 6. 0. 0.15626 1. 0. 0.15626 99.507u 6. -1. 0.10192 1. 1. 0.15626 99.507u 6. 99.507u 0.10192 1. 2. 0.15626 99.508u 6. 0. 0.10192 1. 0. 0.10192 99.508u 6. -1. 0.066488 1. 1. 0.10192 99.508u 6. 99.508u 0.066488 1. 2. 0.10192 99.508u 6. 0. 0.066488 1. 0. 0.066488 99.508u 6. -1. 0.043386 1. 1. 0.066488 99.508u 6. 99.508u 0.043386 1. 2. 0.066488 99.508u 6. 0. 0.043386 1. 0. 0.043386 99.508u 7. -1. 0.030957 1. 1. 0.043386 99.508u 7. 99.508u 0.030957 1. 2. 0.043386 99.508u 7. 0. 0.030957 1. 0. 0.030957 99.508u 7. -1. 0.026367 1. 1. 0.030957 99.508u 7. 99.508u 0.026367 1. 2. 0.030957 99.508u 7. 0. 0.026367 1. 0. 0.026367 99.508u 7. -1. 0.025139 1. 1. 0.026367 99.508u 7. 99.508u 0.025139 1. 2. 0.026367 99.508u 7. 0. 0.025139 1. 0. 0.025139 99.508u 7. -1. 0.025004 1. 1. 0.025139 99.508u 7. 99.508u 0.025004 1. 2. 0.025139 99.508u 7. 0. 0.025004 1. 0. 0.025004 99.508u 7. -1. 0.024954 1. 1. 0.025004 99.508u 7. 99.508u 0.024954 1. 2. 0.025004 99.508u 7. 0. 0.024954 10.Meg 0. 0.024954 99.508u 7. -1. 0.024929 10.Meg 1. 0.024954 99.508u 7. 99.508u 0.024929 10.Meg 2. 0.024954 Inf 7. 0. 0.024929 10.Meg 0. 0.024929 Inf 6. -1. 0.02493 10.Meg 1. 0.024929 Inf 6. 99.509u 0.02493 10.Meg 2. 0.024929 149.01u 6. 0. 0.02493 10.Meg 0. 0.02493 149.01u 6. -1. 0.024931 10.Meg 1. 0.02493 149.01u 6. 99.509u 0.024931 10.Meg 2. 0.02493 149.01u 6. 0. 0.024931 10.Meg 0. 0.024931 149.01u 6. -1. 0.024933 10.Meg 1. 0.024931 149.01u 6. 99.509u 0.024933 10.Meg 2. 0.024931 149.01u 6. 0. 0.024933 10.Meg 0. 0.024933 149.01u 6. -1. 0.030394 10.Meg 1. 0.024933 149.01u 6. 99.563u 0.030394 10.Meg 2. 0.024933 149.01u 6. 0. 0.030394 10.Meg 0. 0.030394 149.01u 1. -1. 0.074077 10.Meg 1. 0.030394 149.01u 1. -2. 0.074077 10.Meg 2. 0.030394 149.01u 1. 100.u 0.074077 10.Meg 3. 0.030394 149.01u 1. 0. 0.074077 10.Meg 0. 0.074077 149.01u 6. -1. 0.57392 10.Meg 1. 0.074077 149.01u 6. -2. 0.57392 10.Meg 2. 0.074077 149.01u 6. 105.u 0.57392 10.Meg 3. 0.074077 149.03u 6. 0. 0.57392 10.Meg 0. 0.57392 149.03u 1. -1. 1.0735 10.Meg 1. 0.57392 149.03u 1. -2. 1.0735 10.Meg 2. 0.57392 149.03u 1. 110.u 1.0735 10.Meg 3. 0.57392 149.05u 1. 0. 1.0735 10.Meg 0. 1.0735 149.05u 1. -1. 2.0719 10.Meg 1. 1.0735 149.05u 1. -2. 2.0719 10.Meg 2. 1.0735 149.05u 1. 120.u 2.0719 10.Meg 3. 1.0735 149.08u 1. 0. 2.0719 10.Meg 0. 2.0719 149.08u 1. -1. 3.0694 10.Meg 1. 2.0719 149.08u 1. -2. 3.0694 10.Meg 2. 2.0719 149.08u 1. 130.u 3.0694 10.Meg 3. 2.0719 149.11u 1. 0. 3.0694 10.Meg 0. 3.0694 149.11u 1. -1. 4.0658 10.Meg 1. 3.0694 149.11u 1. -2. 4.0658 10.Meg 2. 3.0694 149.11u 1. 140.u 4.0658 10.Meg 3. 3.0694 149.12u 1. 0. 4.0658 10.Meg 0. 4.0658 149.12u 7. -1. 4.9741 10.Meg 1. 4.0658 149.12u 7. -2. 4.9741 10.Meg 2. 4.0658 149.12u 7. 149.12u 4.9741 10.Meg 3. 4.0658 149.13u 7. 0. 4.9741 10.Meg 0. 4.9741 149.13u 7. -1. 4.975 10.Meg 1. 4.9741 149.13u 7. 149.13u 4.975 10.Meg 2. 4.9741 149.13u 7. 0. 4.975 10.Meg 0. 4.975 149.13u 7. -1. 4.975 10.Meg 1. 4.975 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 0. 4.975 10.Meg 0. 4.975 149.13u 7. -1. 4.975 10.Meg 1. 4.975 149.13u 7. 149.13u 4.975 10.Meg 2. 4.975 149.13u 7. 0. 4.975 1. 0. 4.975 149.13u 7. -1. 4.97 1. 1. 4.975 149.13u 7. 149.13u 4.97 1. 2. 4.975 149.14u 7. 0. 4.97 1. 0. 4.97 149.14u 6. -1. 4.9224 1. 1. 4.97 149.14u 6. 149.13u 4.9224 1. 2. 4.97 149.13u 6. 0. 4.9224 1. 0. 4.9224 149.13u 6. -1. 4.8751 1. 1. 4.9224 149.13u 6. 149.13u 4.8751 1. 2. 4.9224 149.13u 6. 0. 4.8751 1. 0. 4.8751 149.13u 6. -1. 4.7834 1. 1. 4.8751 149.13u 6. 149.13u 4.7834 1. 2. 4.8751 149.13u 6. 0. 4.7834 1. 0. 4.7834 149.13u 6. -1. 3.1189 1. 1. 4.7834 149.13u 6. 149.13u 3.1189 1. 2. 4.7834 149.13u 6. 0. 3.1189 1. 0. 3.1189 149.13u 6. -1. 2.0336 1. 1. 3.1189 149.13u 6. 149.13u 2.0336 1. 2. 3.1189 149.14u 6. 0. 2.0336 1. 0. 2.0336 149.14u 6. -1. 1.3259 1. 1. 2.0336 149.14u 6. 149.13u 1.3259 1. 2. 2.0336 149.14u 6. 0. 1.3259 1. 0. 1.3259 149.14u 6. -1. 0.86457 1. 1. 1.3259 149.14u 6. 149.14u 0.86457 1. 2. 1.3259 149.14u 6. 0. 0.86457 1. 0. 0.86457 149.14u 6. -1. 0.56374 1. 1. 0.86457 149.14u 6. 149.14u 0.56374 1. 2. 0.86457 149.14u 6. 0. 0.56374 1. 0. 0.56374 149.14u 6. -1. 0.3676 1. 1. 0.56374 149.14u 6. 149.14u 0.3676 1. 2. 0.56374 149.14u 6. 0. 0.3676 1. 0. 0.3676 149.14u 6. -1. 0.23971 1. 1. 0.3676 149.14u 6. 149.14u 0.23971 1. 2. 0.3676 149.14u 6. 0. 0.23971 1. 0. 0.23971 149.14u 6. -1. 0.15633 1. 1. 0.23971 149.14u 6. 149.14u 0.15633 1. 2. 0.23971 149.14u 6. 0. 0.15633 1. 0. 0.15633 149.14u 6. -1. 0.10196 1. 1. 0.15633 149.14u 6. 149.14u 0.10196 1. 2. 0.15633 149.14u 6. 0. 0.10196 1. 0. 0.10196 149.14u 6. -1. 0.066517 1. 1. 0.10196 149.14u 6. 149.14u 0.066517 1. 2. 0.10196 149.14u 6. 0. 0.066517 1. 0. 0.066517 149.14u 6. -1. 0.043404 1. 1. 0.066517 149.14u 6. 149.14u 0.043404 1. 2. 0.066517 149.14u 6. 0. 0.043404 1. 0. 0.043404 149.14u 7. -1. 0.030964 1. 1. 0.043404 149.14u 7. 149.14u 0.030964 1. 2. 0.043404 149.14u 7. 0. 0.030964 1. 0. 0.030964 149.14u 7. -1. 0.02637 1. 1. 0.030964 149.14u 7. 149.14u 0.02637 1. 2. 0.030964 149.14u 7. 0. 0.02637 1. 0. 0.02637 149.14u 7. -1. 0.02514 1. 1. 0.02637 149.14u 7. 149.14u 0.02514 1. 2. 0.02637 149.14u 7. 0. 0.02514 1. 0. 0.02514 149.14u 7. -1. 0.025004 1. 1. 0.02514 149.14u 7. 149.14u 0.025004 1. 2. 0.02514 149.14u 7. 0. 0.025004 1. 0. 0.025004 149.14u 7. -1. 0.024954 1. 1. 0.025004 149.14u 7. 149.14u 0.024954 1. 2. 0.025004 149.14u 7. 0. 0.024954 10.Meg 0. 0.024954 149.14u 7. -1. 0.024929 10.Meg 1. 0.024954 149.14u 7. 149.14u 0.024929 10.Meg 2. 0.024954 Inf 7. 0. 0.024929 10.Meg 0. 0.024929 Inf 6. -1. 0.02493 10.Meg 1. 0.024929 Inf 6. 149.14u 0.02493 10.Meg 2. 0.024929 198.64u 6. 0. 0.02493 10.Meg 0. 0.02493 198.64u 6. -1. 0.024931 10.Meg 1. 0.02493 198.64u 6. 149.14u 0.024931 10.Meg 2. 0.02493 198.64u 6. 0. 0.024931 10.Meg 0. 0.024931 198.64u 6. -1. 0.024933 10.Meg 1. 0.024931 198.64u 6. 149.14u 0.024933 10.Meg 2. 0.024931 198.64u 6. 0. 0.024933 10.Meg 0. 0.024933 198.64u 6. -1. 0.031559 10.Meg 1. 0.024933 198.64u 6. 149.2u 0.031559 10.Meg 2. 0.024933 198.64u 6. 0. 0.031559 10.Meg 0. 0.031559 198.64u 1. -1. 0.11106 10.Meg 1. 0.031559 198.64u 1. -2. 0.11106 10.Meg 2. 0.031559 198.64u 1. 150.u 0.11106 10.Meg 3. 0.031559 198.64u 1. 0. 0.11106 10.Meg 0. 0.11106 198.64u 1. -1. 1.1105 10.Meg 1. 0.11106 198.64u 1. -2. 1.1105 10.Meg 2. 0.11106 198.64u 1. 160.u 1.1105 10.Meg 3. 0.11106 198.67u 1. 0. 1.1105 10.Meg 0. 1.1105 198.67u 1. -1. 2.1088 10.Meg 1. 1.1105 198.67u 1. -2. 2.1088 10.Meg 2. 1.1105 198.67u 1. 170.u 2.1088 10.Meg 3. 1.1105 198.71u 1. 0. 2.1088 10.Meg 0. 2.1088 198.71u 1. -1. 3.1062 10.Meg 1. 2.1088 198.71u 1. -2. 3.1062 10.Meg 2. 2.1088 198.71u 1. 180.u 3.1062 10.Meg 3. 2.1088 198.74u 1. 0. 3.1062 10.Meg 0. 3.1062 198.74u 1. -1. 4.1026 10.Meg 1. 3.1062 198.74u 1. -2. 4.1026 10.Meg 2. 3.1062 198.74u 1. 190.u 4.1026 10.Meg 3. 3.1062 198.76u 1. 0. 4.1026 10.Meg 0. 4.1026 198.76u 7. -1. 4.9742 10.Meg 1. 4.1026 198.76u 7. -2. 4.9742 10.Meg 2. 4.1026 198.76u 7. 198.76u 4.9742 10.Meg 3. 4.1026 198.76u 7. 0. 4.9742 10.Meg 0. 4.9742 198.76u 7. -1. 4.975 10.Meg 1. 4.9742 198.76u 7. 198.76u 4.975 10.Meg 2. 4.9742 198.76u 7. 0. 4.975 10.Meg 0. 4.975 198.76u 7. -1. 4.975 10.Meg 1. 4.975 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 0. 4.975 10.Meg 0. 4.975 198.76u 7. -1. 4.975 10.Meg 1. 4.975 198.76u 7. 198.76u 4.975 10.Meg 2. 4.975 198.76u 7. 0. 4.975 1. 0. 4.975 198.76u 7. -1. 4.97 1. 1. 4.975 198.76u 7. 198.76u 4.97 1. 2. 4.975 198.77u 7. 0. 4.97 1. 0. 4.97 198.77u 6. -1. 4.9231 1. 1. 4.97 198.77u 6. 198.76u 4.9231 1. 2. 4.97 198.76u 6. 0. 4.9231 1. 0. 4.9231 198.76u 6. -1. 4.8767 1. 1. 4.9231 198.76u 6. 198.76u 4.8767 1. 2. 4.9231 198.76u 6. 0. 4.8767 1. 0. 4.8767 198.76u 6. -1. 4.7858 1. 1. 4.8767 198.76u 6. 198.76u 4.7858 1. 2. 4.8767 198.76u 6. 0. 4.7858 1. 0. 4.7858 198.76u 6. -1. 3.1209 1. 1. 4.7858 198.76u 6. 198.76u 3.1209 1. 2. 4.7858 198.76u 6. 0. 3.1209 1. 0. 3.1209 198.76u 6. -1. 2.0352 1. 1. 3.1209 198.76u 6. 198.76u 2.0352 1. 2. 3.1209 198.77u 6. 0. 2.0352 1. 0. 2.0352 198.77u 6. -1. 1.3272 1. 1. 2.0352 198.77u 6. 198.76u 1.3272 1. 2. 2.0352 198.77u 6. 0. 1.3272 1. 0. 1.3272 198.77u 6. -1. 0.8655 1. 1. 1.3272 198.77u 6. 198.77u 0.8655 1. 2. 1.3272 198.77u 6. 0. 0.8655 1. 0. 0.8655 198.77u 6. -1. 0.56443 1. 1. 0.8655 198.77u 6. 198.77u 0.56443 1. 2. 0.8655 198.77u 6. 0. 0.56443 1. 0. 0.56443 198.77u 6. -1. 0.36811 1. 1. 0.56443 198.77u 6. 198.77u 0.36811 1. 2. 0.56443 198.77u 6. 0. 0.36811 1. 0. 0.36811 198.77u 6. -1. 0.24008 1. 1. 0.36811 198.77u 6. 198.77u 0.24008 1. 2. 0.36811 198.77u 6. 0. 0.24008 1. 0. 0.24008 198.77u 6. -1. 0.15659 1. 1. 0.24008 198.77u 6. 198.77u 0.15659 1. 2. 0.24008 198.77u 6. 0. 0.15659 1. 0. 0.15659 198.77u 6. -1. 0.10215 1. 1. 0.15659 198.77u 6. 198.77u 0.10215 1. 2. 0.15659 198.77u 6. 0. 0.10215 1. 0. 0.10215 198.77u 6. -1. 0.066647 1. 1. 0.10215 198.77u 6. 198.77u 0.066647 1. 2. 0.10215 198.77u 6. 0. 0.066647 1. 0. 0.066647 198.77u 6. -1. 0.043496 1. 1. 0.066647 198.77u 6. 198.77u 0.043496 1. 2. 0.066647 198.77u 6. 0. 0.043496 1. 0. 0.043496 198.77u 7. -1. 0.030997 1. 1. 0.043496 198.77u 7. 198.77u 0.030997 1. 2. 0.043496 198.77u 7. 0. 0.030997 1. 0. 0.030997 198.77u 7. -1. 0.026382 1. 1. 0.030997 198.77u 7. 198.77u 0.026382 1. 2. 0.030997 198.77u 7. 0. 0.026382 1. 0. 0.026382 198.77u 7. -1. 0.025141 1. 1. 0.026382 198.77u 7. 198.77u 0.025141 1. 2. 0.026382 198.77u 7. 0. 0.025141 1. 0. 0.025141 198.77u 7. -1. 0.025004 1. 1. 0.025141 198.77u 7. 198.77u 0.025004 1. 2. 0.025141 198.77u 7. 0. 0.025004 1. 0. 0.025004 198.77u 7. -1. 0.024954 1. 1. 0.025004 198.77u 7. 198.77u 0.024954 1. 2. 0.025004 198.77u 7. 0. 0.024954 10.Meg 0. 0.024954 198.77u 7. -1. 0.024929 10.Meg 1. 0.024954 198.77u 7. 198.77u 0.024929 10.Meg 2. 0.024954 Inf 7. 0. 0.024929 10.Meg 0. 0.024929 Inf 6. -1. 0.02493 10.Meg 1. 0.024929 Inf 6. 198.77u 0.02493 10.Meg 2. 0.024929 248.27u 6. 0. 0.02493 10.Meg 0. 0.02493 248.27u 6. -1. 0.024931 10.Meg 1. 0.02493 248.27u 6. 198.77u 0.024931 10.Meg 2. 0.02493 248.27u 6. 0. 0.024931 10.Meg 0. 0.024931 248.27u 6. -1. 0.024933 10.Meg 1. 0.024931 248.27u 6. 198.77u 0.024933 10.Meg 2. 0.024931 248.27u 6. 0. 0.024933 10.Meg 0. 0.024933 248.27u 6. -1. 0.030796 10.Meg 1. 0.024933 248.27u 6. 198.83u 0.030796 10.Meg 2. 0.024933 248.27u 6. 0. 0.030796 10.Meg 0. 0.030796 248.27u 6. -1. 0.089425 10.Meg 1. 0.030796 248.27u 6. -2. 0.089425 10.Meg 2. 0.030796 248.27u 6. 199.41u 0.089425 10.Meg 3. 0.030796 248.27u 6. 0. 0.089425 10.Meg 0. 0.089425 248.27u 1. -1. 0.14805 10.Meg 1. 0.089425 248.27u 1. -2. 0.14805 10.Meg 2. 0.089425 248.27u 1. 200.u 0.14805 10.Meg 3. 0.089425 248.28u 1. Gnucap System status iterations: op=0, dc=0, tran=420, fourier=0, total=566 transient timesteps: accepted=146, rejected=0, total=146 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/d_switch.v.ckt.out000066400000000000000000000061461316501211100166000ustar00rootroot00000000000000' # v(1) v(2) v(3) ev(S1) -5. 1. 1. -5. 1.E+12 -4. 1. 1. -4. 1.E+12 -3. 1. 1. -3. 1.E+12 -2. 1. 1. -2. 1.E+12 -1. 1. 1. -1. 1.E+12 0. 1. 1. 0. 1.E+12 1. 1. 1. 1. 1.E+12 2. 1. 1. 2. 1.E+12 3. 1. 0.5 3. 1.K 4. 1. 0.5 4. 1.K 5. 1. 0.5 5. 1.K 4. 1. 0.5 4. 1.K 3. 1. 0.5 3. 1.K 2. 1. 0.5 2. 1.K 1. 1. 0.5 1. 1.K 0. 1. 0.5 0. 1.K -1. 1. 0.5 -1. 1.K -2. 1. 0.5 -2. 1.K -3. 1. 1. -3. 1.E+12 -4. 1. 1. -4. 1.E+12 -5. 1. 1. -5. 1.E+12 #Freq v(1) v(2) v(3) ev(S1) 1.K 1. 1. 0. 1.E+12 #Time v(1) v(2) v(3) ev(S1) 0. 1. 1. 0. 1.E+12 1. 1. 1. 1. 1.E+12 2. 1. 1. 2. 1.E+12 3. 1. 0.5 3. 1.K 4. 1. 0.5 4. 1.K 5. 1. 0.5 5. 1.K 6. 1. 0.5 4. 1.K 7. 1. 0.5 3. 1.K 8. 1. 0.5 2. 1.K 9. 1. 0.5 1. 1.K 10. 1. 0.5 0. 1.K 11. 1. 0.5 -1. 1.K 12. 1. 0.5 -2. 1.K 13. 1. 1. -3. 1.E+12 14. 1. 1. -4. 1.E+12 15. 1. 1. -5. 1.E+12 16. 1. 1. -4. 1.E+12 17. 1. 1. -3. 1.E+12 18. 1. 1. -2. 1.E+12 19. 1. 1. -1. 1.E+12 20. 1. 1. 0. 1.E+12 21. 1. 1. 1. 1.E+12 22. 1. 1. 2. 1.E+12 23. 1. 0.5 3. 1.K 24. 1. 0.5 4. 1.K 25. 1. 0.5 5. 1.K #Freq v(1) v(2) v(3) ev(S1) 1.K 1. 0.5 0. 1.K V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K S1 ( 2 0 3 0 ) sss V2 ( 3 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) .model sss sw ( vt=0. vh=2. von=NA( 2.) voff=NA(-2.) ron=1.K roff=1.E+12 tnom=NA( 27.)) tests/==out/d_switch.vr.ckt.out000066400000000000000000000066661316501211100167710ustar00rootroot00000000000000' # v(1) v(2) v(3) ev(S1) -5. 1. 1. -5. 1.E+12 -4. 1. 1. -4. 1.E+12 -3. 1. 1. -3. 1.E+12 -2. 1. 1. -2. 1.E+12 -1. 1. 1. -1. 1.E+12 0. 1. 1. 0. 1.E+12 1. 1. 1. 1. 1.E+12 2. 1. 1. 2. 1.E+12 3. 1. 0.5 3. 1.K 4. 1. 0.5 4. 1.K 5. 1. 0.5 5. 1.K 4. 1. 0.5 4. 1.K 3. 1. 0.5 3. 1.K 2. 1. 0.5 2. 1.K 1. 1. 0.5 1. 1.K 0. 1. 0.5 0. 1.K -1. 1. 0.5 -1. 1.K -2. 1. 0.5 -2. 1.K -3. 1. 1. -3. 1.E+12 -4. 1. 1. -4. 1.E+12 -5. 1. 1. -5. 1.E+12 #Freq v(1) v(2) v(3) ev(S1) 1.K 1. 1. 0. 1.E+12 #Time v(1) v(2) v(3) ev(S1) 0. 1. 1. 0. 1.E+12 1. 1. 1. 1. 1.E+12 2. 1. 1. 2. 1.E+12 3. 1. 0.5 3. 1.K 4. 1. 0.5 4. 1.K 5. 1. 0.5 5. 1.K 6. 1. 0.5 4. 1.K 7. 1. 0.5 3. 1.K 8. 1. 0.5 2. 1.K 9. 1. 0.5 1. 1.K #Time v(1) v(2) v(3) ev(S1) 9. 1. 0.5 1. 1.K 10. 1. 0.5 0. 1.K 11. 1. 0.5 -1. 1.K 12. 1. 0.5 -2. 1.K 13. 1. 1. -3. 1.E+12 14. 1. 1. -4. 1.E+12 15. 1. 1. -5. 1.E+12 16. 1. 1. -4. 1.E+12 17. 1. 1. -3. 1.E+12 18. 1. 1. -2. 1.E+12 #Time v(1) v(2) v(3) ev(S1) 18. 1. 1. -2. 1.E+12 19. 1. 1. -1. 1.E+12 20. 1. 1. 0. 1.E+12 21. 1. 1. 1. 1.E+12 22. 1. 1. 2. 1.E+12 23. 1. 0.5 3. 1.K 24. 1. 0.5 4. 1.K 25. 1. 0.5 5. 1.K 26. 1. 0.5 5. 1.K 27. 1. 0.5 5. 1.K #Freq v(1) v(2) v(3) ev(S1) 1.K 1. 0.5 0. 1.K V1 ( 1 0 ) DC 1. AC 1. R1 ( 1 2 ) 1.K S1 ( 2 0 3 0 ) sss V2 ( 3 0 ) pwl( 0., 0. 5., 5. 15.,-5. 25., 5. ) .model sss sw ( vt=0. vh=2. von=NA( 2.) voff=NA(-2.) ron=1.K roff=1.E+12 tnom=NA( 27.)) tests/==out/d_tcap.1.ckt.out000066400000000000000000000024241316501211100161140ustar00rootroot00000000000000' #Time v(1) v(2) v(3) 0. 0. 0. 0. 0.1 0.58773 -5.1122 -5.1122 0.2 0.95104 -1.9447 -1.9447 0.3 0.95108 1.9708 1.9708 0.4 0.58784 5.294 5.294 0.5 64.615u 6.4615 6.4615 0.6 -0.58774 5.0055 5.0055 0.7 -0.95104 1.8382 1.8382 0.8 -0.95108 -2.0771 -2.0771 0.9 -0.58784 -5.1877 -5.1877 1. -65.678u -6.5678 -6.5678 #Time v(1) v(2) v(3) 0. 0. 0. 0. 0.1 0.58773 -5.0834 -5.0834 0.2 0.95104 -1.943 -1.943 0.3 0.95108 1.9427 1.9427 0.4 0.58784 5.0836 5.0836 0.5 62.835u 6.2835 6.2835 0.6 -0.58773 5.0833 5.0833 0.7 -0.95104 1.9431 1.9431 0.8 -0.95108 -1.9426 -1.9426 0.9 -0.58784 -5.0835 -5.0835 1. -62.833u -6.2833 -6.2833 Gnucap System status iterations: op=0, dc=0, tran=884, fourier=0, total=1390 transient timesteps: accepted=339, rejected=9, total=348 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/d_tcap.2.ckt.out000066400000000000000000001502121316501211100161140ustar00rootroot00000000000000' #Time v(1) v(2) v(3) q(C1) q(C2) dq(C1) dq(C2) dqdt(C1) dqdt(C2) i(C1) i(C2) timef(C1) timef(C2) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. Inf Inf 334.9p 70.f -210.42u -210.42u 70.468f 70.468f 70.468f 70.468f 210.42u 210.42u 210.42u 210.42u 4.327n 4.327n 1.3329n 593.f -837.44u -837.44u 593.36f 593.36f 522.89f 522.89f 523.93u 523.93u 837.44u 837.44u 2.6692n 2.6692n 2.3309n 1.742p -0.0014644 -0.0014644 1.742p 1.742p 1.1486p 1.1486p 0.0011509 0.0011509 0.0014644 0.0014644 3.9361n 3.9361n 3.9361n 4.902p -0.0024726 -0.0024726 4.9017p 4.9017p 3.1597p 3.1597p 0.0019685 0.0019685 0.0024726 0.0024726 27.04n 27.04n 27.04n 229.46p -0.016967 -0.016967 229.46p 229.46p 224.56p 224.56p 0.0097196 0.0097196 0.016967 0.016967 87.265n 87.265n 87.265n 2.3843n -0.054592 -0.054592 2.3843n 2.3843n 2.1548n 2.1548n 0.035779 0.035779 0.054592 0.054592 230.39n 230.39n 230.39n 16.533n -0.14311 -0.14311 16.533n 16.533n 14.148n 14.148n 0.09885 0.09885 0.14311 0.14311 503.23n 503.23n 503.23n 78.122n -0.30838 -0.30838 78.122n 78.122n 61.59n 61.59n 0.22574 0.22574 0.30838 0.30838 970.78n 970.78n 970.78n 286.12n -0.58135 -0.58135 286.12n 286.12n 208.n 208.n 0.44486 0.44486 0.58135 0.58135 1.7007u 1.7007u 1.7007u 856.97n -0.98286 -0.98286 856.97n 856.97n 570.85n 570.85n 0.78211 0.78211 0.98286 0.98286 2.7727u 2.7727u 2.4305u 1.7106u -1.3561 -1.3561 1.7106u 1.7106u 853.59n 853.59n 1.1695 1.1695 1.3561 1.3561 3.8462u 3.8462u 3.8462u 4.0914u -2.0075 -2.0075 4.0914u 4.0914u 2.3808u 2.3808u 1.6818 1.6818 2.0075 2.0075 5.6828u 5.6828u 5.2618u 7.3333u -2.5728 -2.5728 7.3333u 7.3333u 3.242u 3.242u 2.2901 2.2901 2.5728 2.5728 7.7435u 7.7435u 7.7434u 14.734u -3.3919 -3.3919 14.734u 14.734u 7.4011u 7.4011u 2.9823 2.9823 3.3919 3.3919 10.831u 10.831u 10.225u 23.944u -4.0302 -4.0302 23.944u 23.944u 9.2095u 9.2095u 3.7111 3.7111 4.0302 4.0302 14.335u 14.335u 14.335u 42.088u -4.7984 -4.7984 42.088u 42.088u 18.145u 18.145u 4.4143 4.4143 4.7984 4.7984 19.442u 19.442u 18.446u 62.852u -5.3047 -5.3047 62.852u 62.852u 20.764u 20.764u 5.0515 5.0515 5.3047 5.3047 25.306u 25.306u 25.306u 100.96u -5.8045 -5.8045 100.96u 100.96u 38.106u 38.106u 5.5546 5.5546 5.8045 5.8045 34.071u 34.071u 32.166u 141.62u -6.049 -6.049 141.62u 141.62u 40.659u 40.659u 5.9268 5.9268 6.049 6.049 44.525u 44.525u 44.525u 217.48u -6.2279 -6.2279 217.48u 217.48u 75.862u 75.862u 6.1385 6.1385 6.2279 6.2279 61.543u 61.543u 56.883u 294.71u -6.2701 -6.2701 294.71u 294.71u 77.228u 77.228u 6.249 6.249 6.2701 6.2701 83.989u 83.989u 83.983u 464.83u -6.2852 -6.2852 464.83u 464.83u 170.12u 170.12u 6.2776 6.2776 6.2852 6.2852 128.8u 128.8u 128.79u 746.38u -6.2824 -6.2824 746.38u 746.38u 281.55u 281.55u 6.2838 6.2838 6.2824 6.2824 240.u 240.u 239.88u 0.0014444 -6.2837 -6.2837 0.0014444 0.0014444 697.99u 697.99u 6.2831 6.2831 6.2837 6.2837 584.76u 584.76u 583.88u 0.0036058 -6.2827 -6.2827 0.0036058 0.0036058 0.0021614 0.0021614 6.2832 6.2832 6.2827 6.2827 0.0023074 0.0023074 0.002298 0.014375 -6.2831 -6.2831 0.014375 0.014375 0.010769 0.010769 6.2829 6.2829 6.2831 6.2831 0.01241 0.01241 0.012068 0.075691 -6.2685 -6.2685 0.075691 0.075691 0.061316 0.061316 6.2758 6.2758 6.2685 6.2685 0.041909 0.041909 0.041379 0.25701 -6.1037 -6.1037 0.25701 0.25701 0.18132 0.18132 6.1861 6.1861 6.1037 6.1037 0.085765 0.085765 0.070689 0.42964 -5.6755 -5.6755 0.42964 0.42964 0.17263 0.17263 5.8896 5.8896 5.6755 5.6755 0.12369 0.12369 0.1 0.58773 -5.1122 -5.1122 0.58773 0.58773 0.1581 0.1581 5.3938 5.3938 5.1122 5.1122 0.15971 0.15971 0.15 0.80898 -3.7376 -3.7376 0.80898 0.80898 0.22125 0.22125 4.4249 4.4249 3.7376 3.7376 0.21891 0.21891 0.2 0.95104 -1.9447 -1.9447 0.95104 0.95104 0.14206 0.14206 2.8411 2.8411 1.9447 1.9447 0.27805 0.27805 0.25 1. -0.013837 -0.013837 1. 1. 0.048963 0.048963 0.97926 0.97926 0.013836 0.013836 0.34106 0.34106 0.3 0.95108 1.9708 1.9708 0.95108 0.95108 -0.048924 -0.048924 -0.97847 -0.97847 -1.9708 -1.9708 0.42989 0.42989 0.4 0.58784 5.294 5.294 0.58784 0.58784 -0.36324 -0.36324 -3.6324 -3.6324 -5.294 -5.294 0.51222 0.51222 0.5 64.615u 6.4615 6.4615 64.615u 64.615u -0.58777 -0.58777 -5.8777 -5.8777 -6.4615 -6.4615 0.56827 0.56827 0.55 -0.30896 5.8994 5.8994 -0.30896 -0.30896 -0.30902 -0.30902 -6.1805 -6.1805 -5.8994 -5.8994 0.59897 0.59897 0.575 -0.45393 5.6986 5.6986 -0.45393 -0.45393 -0.14498 -0.14498 -5.799 -5.799 -5.6986 -5.6986 0.6289 0.6289 0.6 -0.58774 5.0055 5.0055 -0.58774 -0.58774 -0.1338 -0.1338 -5.3521 -5.3521 -5.0055 -5.0055 0.65977 0.65977 0.65 -0.80898 3.8442 3.8442 -0.80898 -0.80898 -0.22124 -0.22124 -4.4249 -4.4249 -3.8442 -3.8442 0.71916 0.71916 0.7 -0.95104 1.8382 1.8382 -0.95104 -0.95104 -0.14206 -0.14206 -2.8412 -2.8412 -1.8382 -1.8382 0.77825 0.77825 0.75 -1. 0.12027 0.12027 -1. -1. -0.048961 -0.048961 -0.97921 -0.97921 -0.12027 -0.12027 0.84104 0.84104 0.8 -0.95108 -2.0771 -2.0771 -0.95108 -0.95108 0.048922 0.048922 0.97843 0.97843 2.0771 2.0771 0.92996 0.92996 0.9 -0.58784 -5.1877 -5.1877 -0.58784 -0.58784 0.36324 0.36324 3.6324 3.6324 5.1877 5.1877 1.0122 1.0122 1. -65.678u -6.5678 -6.5678 -65.678u -65.678u 0.58777 0.58777 5.8777 5.8777 6.5678 6.5678 1.0683 1.0683 #Time v(1) v(2) v(3) q(C1) q(C2) dq(C1) dq(C2) dqdt(C1) dqdt(C2) i(C1) i(C2) timef(C1) timef(C2) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. Inf Inf 0.001 0.0062209 -6.2209 -6.2209 0.0062209 0.0062209 0.0062209 0.0062209 6.2209 6.2209 6.2209 6.2209 120.n 120.n 119.99n 8.9391n -0.074498 -0.074498 8.9391n 8.9391n 8.9391n 8.9391n 0.074498 0.074498 0.074498 0.074498 100.p 100.p 199.98p 25.f -125.65u -125.65u 25.128f 25.128f 25.128f 25.128f 125.65u 125.65u 125.65u 125.65u 1.155n 1.155n 1.155n 432.f -725.67u -725.67u 431.65f 431.65f 406.52f 406.52f 425.66u 425.66u 725.67u 725.67u 1.6356n 1.6356n 1.6356n 853.f -0.0010276 -0.0010276 852.97f 852.97f 421.33f 421.33f 876.64u 876.64u 0.0010276 0.0010276 2.4798n 2.4798n 2.4798n 1.944p -0.0015579 -0.0015579 1.9442p 1.9442p 1.0913p 1.0913p 0.0012928 0.0012928 0.0015579 0.0015579 14.209n 14.209n 14.209n 63.4p -0.0089213 -0.0089213 63.4p 63.4p 61.456p 61.456p 0.0052396 0.0052396 0.0089213 0.0089213 25.294n 25.294n 25.938n 211.17p -0.016276 -0.016276 211.17p 211.17p 147.77p 147.77p 0.012599 0.012599 0.016276 0.016276 39.445n 39.445n 37.667n 445.16p -0.023622 -0.023622 445.16p 445.16p 233.99p 233.99p 0.019949 0.019949 0.023622 0.023622 50.082n 50.082n 49.396n 765.26p -0.03096 -0.03096 765.26p 765.26p 320.1p 320.1p 0.027291 0.027291 0.03096 0.03096 61.816n 61.816n 61.125n 1.1714n -0.038289 -0.038289 1.1714n 1.1714n 406.11p 406.11p 0.034624 0.034624 0.038289 0.038289 74.223n 74.223n 72.854n 1.6634n -0.045609 -0.045609 1.6634n 1.6634n 492.02p 492.02p 0.041949 0.041949 0.045609 0.045609 87.582n 87.582n 84.583n 2.2412n -0.052921 -0.052921 2.2412n 2.2412n 577.84p 577.84p 0.049265 0.049265 0.052921 0.052921 100.86n 100.86n 96.312n 2.9048n -0.060224 -0.060224 2.9048n 2.9048n 663.55p 663.55p 0.056573 0.056573 0.060224 0.060224 114.06n 114.06n 114.06n 4.0716n -0.07126 -0.07126 4.0716n 4.0716n 1.1669n 1.1669n 0.065742 0.065742 0.07126 0.07126 133.47n 133.47n 131.81n 5.4342n -0.082276 -0.082276 5.4342n 5.4342n 1.3626n 1.3626n 0.076768 0.076768 0.082276 0.082276 154.19n 154.19n 149.56n 6.9921n -0.093272 -0.093272 6.9921n 6.9921n 1.5579n 1.5579n 0.087774 0.087774 0.093272 0.093272 173.38n 173.38n 167.31n 8.745n -0.10425 -0.10425 8.745n 8.745n 1.7529n 1.7529n 0.09876 0.09876 0.10425 0.10425 192.99n 192.99n 185.06n 10.693n -0.11521 -0.11521 10.693n 10.693n 1.9476n 1.9476n 0.10973 0.10973 0.11521 0.11521 212.54n 212.54n 212.54n 14.091n -0.13213 -0.13213 14.091n 14.091n 3.3982n 3.3982n 0.12367 0.12367 0.13213 0.13213 241.95n 241.95n 240.01n 17.953n -0.14901 -0.14901 17.953n 17.953n 3.8626n 3.8626n 0.14057 0.14057 0.14901 0.14901 273.49n 273.49n 267.49n 22.279n -0.16584 -0.16584 22.279n 22.279n 4.3258n 4.3258n 0.15743 0.15743 0.16584 0.16584 302.67n 302.67n 294.97n 27.067n -0.18263 -0.18263 27.067n 27.067n 4.7877n 4.7877n 0.17424 0.17424 0.18263 0.18263 332.54n 332.54n 322.45n 32.315n -0.19937 -0.19937 32.315n 32.315n 5.2483n 5.2483n 0.191 0.191 0.19937 0.19937 362.34n 362.34n 349.93n 38.023n -0.21606 -0.21606 38.023n 38.023n 5.7077n 5.7077n 0.20772 0.20772 0.21606 0.21606 392.08n 392.08n 392.08n 47.668n -0.24158 -0.24158 47.668n 47.668n 9.6454n 9.6454n 0.22882 0.22882 0.24158 0.24158 436.49n 436.49n 434.23n 58.387n -0.267 -0.267 58.387n 58.387n 10.719n 10.719n 0.25429 0.25429 0.267 0.267 484.09n 484.09n 476.38n 70.175n -0.2923 -0.2923 70.175n 70.175n 11.788n 11.788n 0.27965 0.27965 0.2923 0.2923 528.27n 528.27n 518.53n 83.027n -0.3175 -0.3175 83.027n 83.027n 12.852n 12.852n 0.3049 0.3049 0.3175 0.3175 573.49n 573.49n 560.69n 96.939n -0.3426 -0.3426 96.939n 96.939n 13.912n 13.912n 0.33005 0.33005 0.3426 0.3426 618.63n 618.63n 602.84n 111.91n -0.36758 -0.36758 111.91n 111.91n 14.968n 14.968n 0.35509 0.35509 0.36758 0.36758 663.71n 663.71n 644.99n 127.93n -0.39247 -0.39247 127.93n 127.93n 16.019n 16.019n 0.38003 0.38003 0.39247 0.39247 708.73n 708.73n 708.73n 154.13n -0.42989 -0.42989 154.13n 154.13n 26.208n 26.208n 0.41118 0.41118 0.42989 0.42989 775.1n 775.1n 772.47n 182.72n -0.46708 -0.46708 182.72n 182.72n 28.586n 28.586n 0.44849 0.44849 0.46708 0.46708 846.1n 846.1n 836.21n 213.67n -0.50404 -0.50404 213.67n 213.67n 30.949n 30.949n 0.48556 0.48556 0.50404 0.50404 912.24n 912.24n 899.95n 246.97n -0.54076 -0.54076 246.97n 246.97n 33.297n 33.297n 0.5224 0.5224 0.54076 0.54076 979.9n 979.9n 963.69n 282.6n -0.57724 -0.57724 282.6n 282.6n 35.63n 35.63n 0.559 0.559 0.57724 0.57724 1.0475u 1.0475u 1.0274u 320.55n -0.6135 -0.6135 320.55n 320.55n 37.948n 37.948n 0.59537 0.59537 0.6135 0.6135 1.115u 1.115u 1.0912u 360.8n -0.64952 -0.64952 360.8n 360.8n 40.252n 40.252n 0.63151 0.63151 0.64952 0.64952 1.1825u 1.1825u 1.1549u 403.34n -0.68531 -0.68531 403.34n 403.34n 42.541n 42.541n 0.66742 0.66742 0.68531 0.68531 1.2499u 1.2499u 1.2186u 448.15n -0.72088 -0.72088 448.15n 448.15n 44.815n 44.815n 0.7031 0.7031 0.72088 0.72088 1.3172u 1.3172u 1.3172u 521.9n -0.77544 -0.77544 521.9n 521.9n 73.744n 73.744n 0.74816 0.74816 0.77544 0.77544 1.4187u 1.4187u 1.4158u 600.99n -0.82946 -0.82946 600.99n 600.99n 79.095n 79.095n 0.80245 0.80245 0.82946 0.82946 1.5276u 1.5276u 1.5143u 685.39n -0.88295 -0.88295 685.39n 685.39n 84.394n 84.394n 0.85621 0.85621 0.88295 0.88295 1.6288u 1.6288u 1.6129u 775.03n -0.93592 -0.93592 775.03n 775.03n 89.64n 89.64n 0.90944 0.90944 0.93592 0.93592 1.7326u 1.7326u 1.7115u 869.86n -0.98837 -0.98837 869.86n 869.86n 94.836n 94.836n 0.96214 0.96214 0.98837 0.98837 1.8362u 1.8362u 1.81u 969.84n -1.0403 -1.0403 969.84n 969.84n 99.98n 99.98n 1.0143 1.0143 1.0403 1.0403 1.9399u 1.9399u 1.9086u 1.0749u -1.0917 -1.0917 1.0749u 1.0749u 105.07n 105.07n 1.066 1.066 1.0917 1.0917 2.0434u 2.0434u 2.0072u 1.185u -1.1426 -1.1426 1.185u 1.185u 110.12n 110.12n 1.1172 1.1172 1.1426 1.1426 2.1469u 2.1469u 2.1057u 1.3001u -1.1931 -1.1931 1.3001u 1.3001u 115.11n 115.11n 1.1679 1.1679 1.1931 1.1931 2.2503u 2.2503u 2.2043u 1.4202u -1.243 -1.243 1.4202u 1.4202u 120.06n 120.06n 1.218 1.218 1.243 1.243 2.3537u 2.3537u 2.3537u 1.6114u -1.3177 -1.3177 1.6114u 1.6114u 191.22n 191.22n 1.2804 1.2804 1.3177 1.3177 2.5064u 2.5064u 2.503u 1.8137u -1.3913 -1.3913 1.8137u 1.8137u 202.3n 202.3n 1.3545 1.3545 1.3913 1.3913 2.67u 2.67u 2.6524u 2.0269u -1.4638 -1.4638 2.0269u 2.0269u 213.21n 213.21n 1.4276 1.4276 1.4638 1.4638 2.8226u 2.8226u 2.8017u 2.2509u -1.5353 -1.5353 2.2509u 2.2509u 223.96n 223.96n 1.4996 1.4996 1.5353 1.5353 2.9789u 2.9789u 2.9511u 2.4855u -1.6057 -1.6057 2.4855u 2.4855u 234.56n 234.56n 1.5705 1.5705 1.6057 1.6057 3.1351u 3.1351u 3.1004u 2.7305u -1.675 -1.675 2.7305u 2.7305u 244.99n 244.99n 1.6403 1.6403 1.675 1.675 3.2913u 3.2913u 3.2498u 2.9857u -1.7433 -1.7433 2.9857u 2.9857u 255.27n 255.27n 1.7092 1.7092 1.7433 1.7433 3.4474u 3.4474u 3.3991u 3.2511u -1.8106 -1.8106 3.2511u 3.2511u 265.4n 265.4n 1.777 1.777 1.8106 1.8106 3.6035u 3.6035u 3.5485u 3.5265u -1.8769 -1.8769 3.5265u 3.5265u 275.38n 275.38n 1.8438 1.8438 1.8769 1.8769 3.7595u 3.7595u 3.6978u 3.8117u -1.9423 -1.9423 3.8117u 3.8117u 285.2n 285.2n 1.9096 1.9096 1.9423 1.9423 3.9154u 3.9154u 3.8472u 4.1066u -2.0066 -2.0066 4.1066u 4.1066u 294.89n 294.89n 1.9744 1.9744 2.0066 2.0066 4.0714u 4.0714u 4.0714u 4.5671u -2.1014 -2.1014 4.5671u 4.5671u 460.47n 460.47n 2.054 2.054 2.1014 2.1014 4.2998u 4.2998u 4.2956u 5.0486u -2.1941 -2.1941 5.0486u 5.0486u 481.49n 481.49n 2.1478 2.1478 2.1941 2.1941 4.544u 4.544u 4.5197u 5.5506u -2.2848 -2.2848 5.5506u 5.5506u 502.04n 502.04n 2.2395 2.2395 2.2848 2.2848 4.7723u 4.7723u 4.7439u 6.0727u -2.3734 -2.3734 6.0727u 6.0727u 522.14n 522.14n 2.3291 2.3291 2.3734 2.3734 5.0061u 5.0061u 4.9681u 6.6145u -2.4601 -2.4601 6.6145u 6.6145u 541.79n 541.79n 2.4168 2.4168 2.4601 2.4601 5.2399u 5.2399u 5.1923u 7.1755u -2.5449 -2.5449 7.1755u 7.1755u 561.01n 561.01n 2.5025 2.5025 2.5449 2.5449 5.4736u 5.4736u 5.4165u 7.7553u -2.6277 -2.6277 7.7553u 7.7553u 579.8n 579.8n 2.5863 2.5863 2.6277 2.6277 5.7074u 5.7074u 5.6407u 8.3535u -2.7088 -2.7088 8.3535u 8.3535u 598.17n 598.17n 2.6683 2.6683 2.7088 2.7088 5.9411u 5.9411u 5.8648u 8.9697u -2.788 -2.788 8.9697u 8.9697u 616.14n 616.14n 2.7484 2.7484 2.788 2.788 6.1748u 6.1748u 6.089u 9.6034u -2.8655 -2.8655 9.6034u 9.6034u 633.71n 633.71n 2.8268 2.8268 2.8655 2.8655 6.4085u 6.4085u 6.3132u 10.254u -2.9413 -2.9413 10.254u 10.254u 650.89n 650.89n 2.9034 2.9034 2.9413 2.9413 6.6422u 6.6422u 6.5374u 10.922u -3.0154 -3.0154 10.922u 10.922u 667.68n 667.68n 2.9783 2.9783 3.0154 3.0154 6.8758u 6.8758u 6.8758u 11.961u -3.1241 -3.1241 11.961u 11.961u 1.039u 1.039u 3.0697 3.0697 3.1241 3.1241 7.2199u 7.2199u 7.2143u 13.036u -3.2293 -3.2293 13.036u 13.036u 1.0752u 1.0752u 3.1767 3.1767 3.2293 3.2293 7.5882u 7.5882u 7.5528u 14.146u -3.3309 -3.3309 14.146u 14.146u 1.1102u 1.1102u 3.2801 3.2801 3.3309 3.3309 7.9322u 7.9322u 7.8912u 15.29u -3.4292 -3.4292 15.29u 15.29u 1.144u 1.144u 3.38 3.38 3.4292 3.4292 8.2851u 8.2851u 8.2297u 16.467u -3.5242 -3.5242 16.467u 16.467u 1.1767u 1.1767u 3.4767 3.4767 3.5242 3.5242 8.638u 8.638u 8.5682u 17.675u -3.616 -3.616 17.675u 17.675u 1.2083u 1.2083u 3.5701 3.5701 3.616 3.616 8.9909u 8.9909u 8.9066u 18.914u -3.7048 -3.7048 18.914u 18.914u 1.2389u 1.2389u 3.6604 3.6604 3.7048 3.7048 9.3439u 9.3439u 9.2451u 20.183u -3.7906 -3.7906 20.183u 20.183u 1.2684u 1.2684u 3.7477 3.7477 3.7906 3.7906 9.697u 9.697u 9.5835u 21.48u -3.8735 -3.8735 21.48u 21.48u 1.297u 1.297u 3.8321 3.8321 3.8735 3.8735 10.05u 10.05u 9.922u 22.804u -3.9537 -3.9537 22.804u 22.804u 1.3246u 1.3246u 3.9136 3.9136 3.9537 3.9537 10.403u 10.403u 10.26u 24.156u -4.0313 -4.0313 24.156u 24.156u 1.3513u 1.3513u 3.9925 3.9925 4.0313 4.0313 10.757u 10.757u 10.599u 25.533u -4.1062 -4.1062 25.533u 25.533u 1.3771u 1.3771u 4.0687 4.0687 4.1062 4.1062 11.11u 11.11u 11.11u 27.66u -4.2148 -4.2148 27.66u 27.66u 2.1275u 2.1275u 4.1605 4.1605 4.2148 4.2148 11.631u 11.631u 11.622u 29.842u -4.3179 -4.3179 29.842u 29.842u 2.1816u 2.1816u 4.2663 4.2663 4.3179 4.3179 12.188u 12.188u 12.133u 32.075u -4.4159 -4.4159 32.075u 32.075u 2.2331u 2.2331u 4.3669 4.3669 4.4159 4.4159 12.709u 12.709u 12.644u 34.357u -4.509 -4.509 34.357u 34.357u 2.2819u 2.2819u 4.4625 4.4625 4.509 4.509 13.243u 13.243u 13.156u 36.685u -4.5975 -4.5975 36.685u 36.685u 2.3284u 2.3284u 4.5532 4.5532 4.5975 4.5975 13.779u 13.779u 13.667u 39.058u -4.6815 -4.6815 39.058u 39.058u 2.3725u 2.3725u 4.6395 4.6395 4.6815 4.6815 14.314u 14.314u 14.178u 41.472u -4.7614 -4.7614 41.472u 41.472u 2.4144u 2.4144u 4.7214 4.7214 4.7614 4.7614 14.85u 14.85u 14.69u 43.926u -4.8373 -4.8373 43.926u 43.926u 2.4542u 2.4542u 4.7993 4.7993 4.8373 4.8373 15.386u 15.386u 15.201u 46.418u -4.9094 -4.9094 46.418u 46.418u 2.492u 2.492u 4.8733 4.8733 4.9094 4.9094 15.922u 15.922u 15.713u 48.946u -4.9779 -4.9779 48.946u 48.946u 2.528u 2.528u 4.9436 4.9436 4.9779 4.9779 16.459u 16.459u 16.224u 51.509u -5.0429 -5.0429 51.509u 51.509u 2.5621u 2.5621u 5.0104 5.0104 5.0429 5.0429 16.996u 16.996u 16.996u 55.44u -5.1352 -5.1352 55.44u 55.44u 3.9316u 3.9316u 5.0891 5.0891 5.1352 5.1352 17.787u 17.787u 17.769u 59.44u -5.2206 -5.2206 59.44u 59.44u 4.0003u 4.0003u 5.1779 5.1779 5.2206 5.2206 18.633u 18.633u 18.542u 63.504u -5.2996 -5.2996 63.504u 63.504u 4.0638u 4.0638u 5.2601 5.2601 5.2996 5.2996 19.425u 19.425u 19.314u 67.627u -5.3728 -5.3728 67.627u 67.627u 4.1226u 4.1226u 5.3362 5.3362 5.3728 5.3728 20.239u 20.239u 20.087u 71.804u -5.4405 -5.4405 71.804u 71.804u 4.177u 4.177u 5.4066 5.4066 5.4405 5.4405 21.055u 21.055u 20.859u 76.031u -5.5032 -5.5032 76.031u 76.031u 4.2274u 4.2274u 5.4718 5.4718 5.5032 5.5032 21.872u 21.872u 21.632u 80.305u -5.5612 -5.5612 80.305u 80.305u 4.274u 4.274u 5.5322 5.5322 5.5612 5.5612 22.69u 22.69u 22.404u 84.622u -5.6149 -5.6149 84.622u 84.622u 4.3171u 4.3171u 5.5881 5.5881 5.6149 5.6149 23.51u 23.51u 23.177u 88.979u -5.6646 -5.6646 88.979u 88.979u 4.3571u 4.3571u 5.6398 5.6398 5.6646 5.6646 24.33u 24.33u 23.95u 93.373u -5.7106 -5.7106 93.373u 93.373u 4.3941u 4.3941u 5.6876 5.6876 5.7106 5.7106 25.152u 25.152u 25.152u 100.28u -5.7756 -5.7756 100.28u 100.28u 6.9061u 6.9061u 5.7431 5.7431 5.7756 5.7756 26.393u 26.393u 26.355u 107.26u -5.8332 -5.8332 107.26u 107.26u 6.9798u 6.9798u 5.8044 5.8044 5.8332 5.8332 27.731u 27.731u 27.557u 114.3u -5.8842 -5.8842 114.3u 114.3u 7.0451u 7.0451u 5.8587 5.8587 5.8842 5.8842 28.976u 28.976u 28.76u 121.41u -5.9295 -5.9295 121.41u 121.41u 7.103u 7.103u 5.9068 5.9068 5.9295 5.9295 30.266u 30.266u 29.962u 128.56u -5.9696 -5.9696 128.56u 128.56u 7.1543u 7.1543u 5.9495 5.9495 5.9696 5.9696 31.561u 31.561u 31.165u 135.76u -6.0052 -6.0052 135.76u 135.76u 7.1998u 7.1998u 5.9874 5.9874 6.0052 6.0052 32.859u 32.859u 32.367u 143.u -6.0367 -6.0367 143.u 143.u 7.2402u 7.2402u 6.0209 6.0209 6.0367 6.0367 34.162u 34.162u 33.57u 150.28u -6.0646 -6.0646 150.28u 150.28u 7.2759u 7.2759u 6.0507 6.0507 6.0646 6.0646 35.469u 35.469u 35.469u 161.83u -6.1026 -6.1026 161.83u 161.83u 11.554u 11.554u 6.0836 6.0836 6.1026 6.1026 37.465u 37.465u 37.368u 173.45u -6.1339 -6.1339 173.45u 173.45u 11.62u 11.62u 6.1182 6.1182 6.1339 6.1339 39.628u 39.628u 39.267u 185.13u -6.1598 -6.1598 185.13u 185.13u 11.674u 11.674u 6.1468 6.1468 6.1598 6.1598 41.639u 41.639u 41.167u 196.85u -6.1812 -6.1812 196.85u 196.85u 11.719u 11.719u 6.1705 6.1705 6.1812 6.1812 43.746u 43.746u 43.066u 208.6u -6.1989 -6.1989 208.6u 208.6u 11.756u 11.756u 6.19 6.19 6.1989 6.1989 45.868u 45.868u 44.965u 220.39u -6.2135 -6.2135 220.39u 220.39u 11.787u 11.787u 6.2062 6.2062 6.2135 6.2135 48.006u 48.006u 48.006u 239.31u -6.2319 -6.2319 239.31u 239.31u 18.926u 18.926u 6.2227 6.2227 6.2319 6.2319 51.305u 51.305u 51.048u 258.29u -6.2454 -6.2454 258.29u 258.29u 18.974u 18.974u 6.2387 6.2387 6.2454 6.2454 54.909u 54.909u 54.089u 277.3u -6.2554 -6.2554 277.3u 277.3u 19.01u 19.01u 6.2504 6.2504 6.2554 6.2554 58.269u 58.269u 57.131u 296.33u -6.2627 -6.2627 296.33u 296.33u 19.036u 19.036u 6.2591 6.2591 6.2627 6.2627 61.863u 61.863u 61.863u 325.99u -6.2706 -6.2706 325.99u 325.99u 29.659u 29.659u 6.2666 6.2666 6.2706 6.2706 67.267u 67.267u 66.596u 355.68u -6.2754 -6.2754 355.68u 355.68u 29.689u 29.689u 6.273 6.273 6.2754 6.2754 73.218u 73.218u 71.329u 385.39u -6.2784 -6.2784 385.39u 385.39u 29.707u 29.707u 6.2769 6.2769 6.2784 6.2784 78.863u 78.863u 78.863u 432.7u -6.281 -6.281 432.7u 432.7u 47.314u 47.314u 6.2797 6.2797 6.281 6.281 88.147u 88.147u 86.398u 480.03u -6.2822 -6.2822 480.03u 480.03u 47.328u 47.328u 6.2816 6.2816 6.2822 6.2822 98.706u 98.706u 98.705u 557.36u -6.2829 -6.2829 557.36u 557.36u 77.324u 77.324u 6.2826 6.2826 6.2829 6.2829 114.47u 114.47u 111.01u 634.68u -6.2831 -6.2831 634.68u 634.68u 77.33u 77.33u 6.283 6.283 6.2831 6.2831 134.87u 134.87u 134.86u 784.55u -6.2832 -6.2832 784.55u 784.55u 149.86u 149.86u 6.2832 6.2832 6.2832 6.2832 171.41u 171.41u 171.4u 0.0010141 -6.2832 -6.2832 0.0010141 0.0010141 229.59u 229.59u 6.2832 6.2832 6.2832 6.2832 251.54u 251.54u 251.52u 0.0015175 -6.2832 -6.2832 0.0015175 0.0015175 503.4u 503.4u 6.2832 6.2832 6.2832 6.2832 459.5u 459.5u 459.33u 0.0028232 -6.2832 -6.2832 0.0028232 0.0028232 0.0013057 0.0013057 6.2832 6.2832 6.2832 6.2832 0.001984 0.001984 0.0017193 0.01074 -6.2829 -6.2829 0.01074 0.01074 0.0079167 0.0079167 6.283 6.283 6.2829 6.2829 0.0034383 0.0034383 0.0029794 0.018656 -6.2821 -6.2821 0.018656 0.018656 0.007916 0.007916 6.2825 6.2825 6.2821 6.2821 0.005066 0.005066 0.0050436 0.031622 -6.2802 -6.2802 0.031622 0.031622 0.012966 0.012966 6.2812 6.2812 6.2802 6.2802 0.0075227 0.0075227 0.0071079 0.044583 -6.2769 -6.2769 0.044583 0.044583 0.012961 0.012961 6.2786 6.2786 6.2769 6.2769 0.0098951 0.0098951 0.0091722 0.057536 -6.2729 -6.2729 0.057536 0.057536 0.012953 0.012953 6.2749 6.2749 6.2729 6.2729 0.0122 0.0122 0.011236 0.070479 -6.2676 -6.2676 0.070479 0.070479 0.012943 0.012943 6.2703 6.2703 6.2676 6.2676 0.014484 0.014484 0.014407 0.090333 -6.2579 -6.2579 0.090333 0.090333 0.019854 0.019854 6.2627 6.2627 6.2579 6.2579 0.017928 0.017928 0.017577 0.11015 -6.245 -6.245 0.11015 0.11015 0.019818 0.019818 6.2514 6.2514 6.245 6.245 0.021347 0.021347 0.020747 0.12992 -6.2303 -6.2303 0.12992 0.12992 0.019774 0.019774 6.2376 6.2376 6.2303 6.2303 0.024727 0.024727 0.023917 0.14965 -6.2124 -6.2124 0.14965 0.14965 0.019723 0.019723 6.2214 6.2214 6.2124 6.2124 0.028098 0.028098 0.027087 0.16931 -6.1929 -6.1929 0.16931 0.16931 0.019663 0.019663 6.2027 6.2027 6.1929 6.1929 0.031441 0.031441 0.030257 0.18891 -6.1701 -6.1701 0.18891 0.18891 0.019596 0.019596 6.1815 6.1815 6.1701 6.1701 0.034784 0.034784 0.033427 0.20843 -6.1456 -6.1456 0.20843 0.20843 0.019521 0.019521 6.1578 6.1578 6.1456 6.1456 0.038104 0.038104 0.036597 0.22787 -6.1179 -6.1179 0.22787 0.22787 0.019438 0.019438 6.1317 6.1317 6.1179 6.1179 0.041428 0.041428 0.041126 0.25548 -6.0755 -6.0755 0.25548 0.25548 0.02761 0.02761 6.0967 6.0967 6.0755 6.0755 0.046146 0.046146 0.045655 0.28288 -6.0266 -6.0266 0.28288 0.28288 0.027404 0.027404 6.051 6.051 6.0266 6.0266 0.050864 0.050864 0.050184 0.31005 -5.9743 -5.9743 0.31005 0.31005 0.027175 0.027175 6.0004 6.0004 5.9743 5.9743 0.055562 0.055562 0.054712 0.33698 -5.9157 -5.9157 0.33698 0.33698 0.026924 0.026924 5.945 5.945 5.9157 5.9157 0.060262 0.060262 0.059241 0.36363 -5.8538 -5.8538 0.36363 0.36363 0.026651 0.026651 5.8848 5.8848 5.8538 5.8538 0.064946 0.064946 0.06377 0.38999 -5.7857 -5.7857 0.38999 0.38999 0.026356 0.026356 5.8198 5.8198 5.7857 5.7857 0.069635 0.069635 0.068299 0.41603 -5.7144 -5.7144 0.41603 0.41603 0.026041 0.026041 5.75 5.75 5.7144 5.7144 0.074308 0.074308 0.072827 0.44173 -5.637 -5.637 0.44173 0.44173 0.025704 0.025704 5.6757 5.6757 5.637 5.637 0.078988 0.078988 0.077356 0.46708 -5.5564 -5.5564 0.46708 0.46708 0.025346 0.025346 5.5967 5.5967 5.5564 5.5564 0.083654 0.083654 0.081885 0.49204 -5.47 -5.47 0.49204 0.49204 0.024968 0.024968 5.5132 5.5132 5.47 5.47 0.088329 0.088329 0.086414 0.51661 -5.3805 -5.3805 0.51661 0.51661 0.02457 0.02457 5.4252 5.4252 5.3805 5.3805 0.09299 0.09299 0.090942 0.54076 -5.2853 -5.2853 0.54076 0.54076 0.024151 0.024151 5.3329 5.3329 5.2853 5.2853 0.097662 0.097662 0.095471 0.56448 -5.1871 -5.1871 0.56448 0.56448 0.023713 0.023713 5.2362 5.2362 5.1871 5.1871 0.10232 0.10232 0.1 0.58773 -5.0834 -5.0834 0.58773 0.58773 0.023256 0.023256 5.1353 5.1353 5.0834 5.0834 0.10699 0.10699 0.10667 0.6211 -4.9258 -4.9258 0.6211 0.6211 0.033364 0.033364 5.0046 5.0046 4.9258 4.9258 0.11383 0.11383 0.11333 0.65337 -4.7566 -4.7566 0.65337 0.65337 0.032275 0.032275 4.8412 4.8412 4.7566 4.7566 0.12069 0.12069 0.12 0.6845 -4.5819 -4.5819 0.6845 0.6845 0.031128 0.031128 4.6692 4.6692 4.5819 4.5819 0.12754 0.12754 0.12667 0.71443 -4.3963 -4.3963 0.71443 0.71443 0.029927 0.029927 4.4891 4.4891 4.3963 4.3963 0.13442 0.13442 0.13333 0.7431 -4.2059 -4.2059 0.7431 0.7431 0.028674 0.028674 4.3011 4.3011 4.2059 4.2059 0.14128 0.14128 0.14 0.77047 -4.0052 -4.0052 0.77047 0.77047 0.02737 0.02737 4.1056 4.1056 4.0052 4.0052 0.14817 0.14817 0.14667 0.79649 -3.8004 -3.8004 0.79649 0.79649 0.026019 0.026019 3.9028 3.9028 3.8004 3.8004 0.15505 0.15505 0.15333 0.82111 -3.586 -3.586 0.82111 0.82111 0.024621 0.024621 3.6932 3.6932 3.586 3.586 0.16195 0.16195 0.16 0.84429 -3.3682 -3.3682 0.84429 0.84429 0.023181 0.023181 3.4771 3.4771 3.3682 3.3682 0.16885 0.16885 0.16667 0.86599 -3.1417 -3.1417 0.86599 0.86599 0.0217 0.0217 3.255 3.255 3.1417 3.1417 0.17579 0.17579 0.17333 0.88617 -2.9124 -2.9124 0.88617 0.88617 0.02018 0.02018 3.0271 3.0271 2.9124 2.9124 0.18272 0.18272 0.18 0.9048 -2.6753 -2.6753 0.9048 0.9048 0.018626 0.018626 2.7939 2.7939 2.6753 2.6753 0.18969 0.18969 0.18667 0.92184 -2.4362 -2.4362 0.92184 0.92184 0.017038 0.017038 2.5558 2.5558 2.4362 2.4362 0.19667 0.19667 0.19333 0.93726 -2.1901 -2.1901 0.93726 0.93726 0.015421 0.015421 2.3132 2.3132 2.1901 2.1901 0.20371 0.20371 0.2 0.95104 -1.943 -1.943 0.95104 0.95104 0.013777 0.013777 2.0665 2.0665 1.943 1.943 0.21076 0.21076 0.21 0.96857 -1.5631 -1.5631 0.96857 0.96857 0.01753 0.01753 1.753 1.753 1.5631 1.5631 0.22132 0.22132 0.22 0.98228 -1.1784 -1.1784 0.98228 0.98228 0.013708 0.013708 1.3708 1.3708 1.1785 1.1785 0.23201 0.23201 0.23 0.99211 -0.78782 -0.78782 0.99211 0.99211 0.0098314 0.0098314 0.98314 0.98314 0.78782 0.78782 0.24301 0.24301 0.24 0.99802 -0.39537 -0.39537 0.99802 0.99802 0.005916 0.005916 0.5916 0.5916 0.39537 0.39537 0.25456 0.25456 0.25 1. -75.77u -75.77u 1. 1. 0.0019772 0.0019772 0.19772 0.19772 75.904u 75.904u 0.26726 0.26726 0.26667 0.99453 0.65666 0.65666 0.99453 0.99453 -0.0054715 -0.0054715 -0.32829 -0.32829 -0.65666 -0.65666 0.2951 0.2951 0.28333 0.97816 1.3075 1.3075 0.97816 0.97816 -0.016368 -0.016368 -0.98207 -0.98207 -1.3075 -1.3075 0.30306 0.30306 0.3 0.95108 1.9427 1.9427 0.95108 0.95108 -0.027085 -0.027085 -1.6251 -1.6251 -1.9427 -1.9427 0.31447 0.31447 0.31667 0.91357 2.5579 2.5579 0.91357 0.91357 -0.037505 -0.037505 -2.2503 -2.2503 -2.5579 -2.5579 0.32879 0.32879 0.32857 0.88063 2.977 2.977 0.88063 0.88063 -0.032946 -0.032946 -2.7674 -2.7674 -2.977 -2.977 0.33937 0.33937 0.34048 0.84275 3.3853 3.3853 0.84275 0.84275 -0.03787 -0.03787 -3.1811 -3.1811 -3.3853 -3.3853 0.35042 0.35042 0.35238 0.80017 3.7688 3.7688 0.80017 0.80017 -0.042584 -0.042584 -3.577 -3.577 -3.7688 -3.7688 0.36169 0.36169 0.36032 0.76928 4.0157 4.0157 0.76928 0.76928 -0.030891 -0.030891 -3.8922 -3.8922 -4.0157 -4.0157 0.36914 0.36914 0.36825 0.73648 4.2508 4.2508 0.73648 0.73648 -0.032803 -0.032803 -4.1332 -4.1332 -4.2508 -4.2508 0.37672 0.37672 0.37619 0.70184 4.4771 4.4771 0.70184 0.70184 -0.034634 -0.034634 -4.3639 -4.3639 -4.4771 -4.4771 0.38434 0.38434 0.38413 0.66546 4.6905 4.6905 0.66546 0.66546 -0.036379 -0.036379 -4.5838 -4.5838 -4.6905 -4.6905 0.39201 0.39201 0.39206 0.62743 4.894 4.894 0.62743 0.62743 -0.038034 -0.038034 -4.7922 -4.7922 -4.894 -4.894 0.39968 0.39968 0.4 0.58784 5.0836 5.0836 0.58784 0.58784 -0.039594 -0.039594 -4.9888 -4.9888 -5.0836 -5.0836 0.40736 0.40736 0.40794 0.54678 5.2623 5.2623 0.54678 0.54678 -0.041055 -0.041055 -5.1729 -5.1729 -5.2623 -5.2623 0.41504 0.41504 0.41587 0.50437 5.4261 5.4261 0.50437 0.50437 -0.042414 -0.042414 -5.3442 -5.3442 -5.4261 -5.4261 0.42272 0.42272 0.42381 0.4607 5.5783 5.5783 0.4607 0.4607 -0.043668 -0.043668 -5.5022 -5.5022 -5.5783 -5.5783 0.4304 0.4304 0.43175 0.41588 5.7148 5.7148 0.41588 0.41588 -0.044814 -0.044814 -5.6465 -5.6465 -5.7148 -5.7148 0.43808 0.43808 0.43795 0.38012 5.8123 5.8123 0.38012 0.38012 -0.035762 -0.035762 -5.7635 -5.7635 -5.8123 -5.8123 0.44403 0.44403 0.44416 0.34378 5.901 5.901 0.34378 0.34378 -0.03634 -0.03634 -5.8566 -5.8566 -5.901 -5.901 0.45001 0.45001 0.45036 0.30692 5.9807 5.9807 0.30692 0.30692 -0.036862 -0.036862 -5.9408 -5.9408 -5.9807 -5.9807 0.45599 0.45599 0.45657 0.26959 6.0513 6.0513 0.26959 0.26959 -0.037329 -0.037329 -6.016 -6.016 -6.0513 -6.0513 0.46196 0.46196 0.46277 0.23185 6.1127 6.1127 0.23185 0.23185 -0.037738 -0.037738 -6.082 -6.082 -6.1127 -6.1127 0.46792 0.46792 0.46898 0.19376 6.1649 6.1649 0.19376 0.19376 -0.038091 -0.038091 -6.1388 -6.1388 -6.1649 -6.1649 0.47385 0.47385 0.47341 0.16637 6.1956 6.1956 0.16637 0.16637 -0.027391 -0.027391 -6.1803 -6.1803 -6.1956 -6.1956 0.47799 0.47799 0.47784 0.13885 6.2231 6.2231 0.13885 0.13885 -0.02752 -0.02752 -6.2094 -6.2094 -6.2231 -6.2231 0.48218 0.48218 0.48227 0.11122 6.2442 6.2442 0.11122 0.11122 -0.027628 -0.027628 -6.2337 -6.2337 -6.2442 -6.2442 0.48635 0.48635 0.4867 0.083508 6.262 6.262 0.083508 0.083508 -0.027714 -0.027714 -6.2531 -6.2531 -6.262 -6.262 0.49049 0.49049 0.49114 0.055729 6.2734 6.2734 0.055729 0.055729 -0.027779 -0.027779 -6.2677 -6.2677 -6.2734 -6.2734 0.49457 0.49457 0.49409 0.037184 6.2792 6.2792 0.037184 0.037184 -0.018545 -0.018545 -6.2763 -6.2763 -6.2792 -6.2792 0.49709 0.49709 0.49705 0.018627 6.2821 6.2821 0.018627 0.018627 -0.018558 -0.018558 -6.2806 -6.2806 -6.2821 -6.2821 0.49967 0.49967 0.5 62.835u 6.2835 6.2835 62.835u 62.835u -0.018564 -0.018564 -6.2828 -6.2828 -6.2835 -6.2835 0.50208 0.50208 0.50204 -0.01276 6.2825 6.2825 -0.01276 -0.01276 -0.012822 -0.012822 -6.283 -6.283 -6.2825 -6.2825 0.50388 0.50388 0.50408 -0.02558 6.2814 6.2814 -0.02558 -0.02558 -0.01282 -0.01282 -6.282 -6.282 -6.2814 -6.2814 0.50639 0.50639 0.50612 -0.038396 6.2784 6.2784 -0.038396 -0.038396 -0.012816 -0.012816 -6.2799 -6.2799 -6.2784 -6.2784 0.50878 0.50878 0.50816 -0.051206 6.2753 6.2753 -0.051206 -0.051206 -0.01281 -0.01281 -6.2768 -6.2768 -6.2753 -6.2753 0.51107 0.51107 0.5102 -0.064008 6.2702 6.2702 -0.064008 -0.064008 -0.012801 -0.012801 -6.2727 -6.2727 -6.2702 -6.2702 0.51335 0.51335 0.5133 -0.08341 6.2618 6.2618 -0.08341 -0.08341 -0.019402 -0.019402 -6.266 -6.266 -6.2618 -6.2618 0.51673 0.51673 0.5164 -0.10278 6.2498 6.2498 -0.10278 -0.10278 -0.019371 -0.019371 -6.2558 -6.2558 -6.2498 -6.2498 0.52008 0.52008 0.51949 -0.12211 6.2367 6.2367 -0.12211 -0.12211 -0.019332 -0.019332 -6.2432 -6.2432 -6.2367 -6.2367 0.52339 0.52339 0.52259 -0.1414 6.2199 6.2199 -0.1414 -0.1414 -0.019285 -0.019285 -6.2283 -6.2283 -6.2199 -6.2199 0.52669 0.52669 0.52569 -0.16063 6.2021 6.2021 -0.16063 -0.16063 -0.019232 -0.019232 -6.211 -6.211 -6.2021 -6.2021 0.52996 0.52996 0.52878 -0.1798 6.1807 6.1807 -0.1798 -0.1798 -0.019171 -0.019171 -6.1914 -6.1914 -6.1807 -6.1807 0.53324 0.53324 0.53188 -0.1989 6.1581 6.1581 -0.1989 -0.1989 -0.019103 -0.019103 -6.1694 -6.1694 -6.1581 -6.1581 0.53648 0.53648 0.53498 -0.21793 6.1321 6.1321 -0.21793 -0.21793 -0.019028 -0.019028 -6.1451 -6.1451 -6.1321 -6.1321 0.53973 0.53973 0.53962 -0.24632 6.0906 6.0906 -0.24632 -0.24632 -0.028385 -0.028385 -6.1113 -6.1113 -6.0906 -6.0906 0.54457 0.54457 0.54426 -0.27449 6.0417 6.0417 -0.27449 -0.27449 -0.028175 -0.028175 -6.0662 -6.0662 -6.0417 -6.0417 0.54942 0.54942 0.54891 -0.30243 5.9899 5.9899 -0.30243 -0.30243 -0.027941 -0.027941 -6.0158 -6.0158 -5.9899 -5.9899 0.55424 0.55424 0.55355 -0.33012 5.9309 5.9309 -0.33012 -0.33012 -0.027684 -0.027684 -5.9604 -5.9604 -5.9309 -5.9309 0.55906 0.55906 0.5582 -0.35752 5.8688 5.8688 -0.35752 -0.35752 -0.027403 -0.027403 -5.8998 -5.8998 -5.8688 -5.8688 0.56387 0.56387 0.56284 -0.38462 5.7998 5.7998 -0.38462 -0.38462 -0.027098 -0.027098 -5.8343 -5.8343 -5.7998 -5.7998 0.56868 0.56868 0.56749 -0.41139 5.7278 5.7278 -0.41139 -0.41139 -0.026771 -0.026771 -5.7638 -5.7638 -5.7278 -5.7278 0.57347 0.57347 0.57213 -0.43781 5.6489 5.6489 -0.43781 -0.43781 -0.02642 -0.02642 -5.6884 -5.6884 -5.6489 -5.6489 0.57827 0.57827 0.57678 -0.46385 5.5672 5.5672 -0.46385 -0.46385 -0.026047 -0.026047 -5.6081 -5.6081 -5.5672 -5.5672 0.58305 0.58305 0.58142 -0.48951 5.4788 5.4788 -0.48951 -0.48951 -0.025652 -0.025652 -5.523 -5.523 -5.4788 -5.4788 0.58785 0.58785 0.58607 -0.51474 5.3877 5.3877 -0.51474 -0.51474 -0.025236 -0.025236 -5.4333 -5.4333 -5.3877 -5.3877 0.59263 0.59263 0.59071 -0.53954 5.2901 5.2901 -0.53954 -0.53954 -0.024797 -0.024797 -5.3389 -5.3389 -5.2901 -5.2901 0.59742 0.59742 0.59536 -0.56388 5.1899 5.1899 -0.56388 -0.56388 -0.024338 -0.024338 -5.24 -5.24 -5.1899 -5.1899 0.6022 0.6022 0.6 -0.58773 5.0833 5.0833 -0.58773 -0.58773 -0.023858 -0.023858 -5.1366 -5.1366 -5.0833 -5.0833 0.60699 0.60699 0.60667 -0.6211 4.9259 4.9259 -0.6211 -0.6211 -0.033364 -0.033364 -5.0046 -5.0046 -4.9259 -4.9259 0.61383 0.61383 0.61333 -0.65337 4.7564 4.7564 -0.65337 -0.65337 -0.032275 -0.032275 -4.8412 -4.8412 -4.7564 -4.7564 0.62069 0.62069 0.62 -0.6845 4.582 4.582 -0.6845 -0.6845 -0.031128 -0.031128 -4.6692 -4.6692 -4.582 -4.582 0.62754 0.62754 0.62667 -0.71443 4.3962 4.3962 -0.71443 -0.71443 -0.029927 -0.029927 -4.4891 -4.4891 -4.3962 -4.3962 0.63442 0.63442 0.63333 -0.7431 4.206 4.206 -0.7431 -0.7431 -0.028674 -0.028674 -4.3011 -4.3011 -4.206 -4.206 0.64128 0.64128 0.64 -0.77047 4.0051 4.0051 -0.77047 -0.77047 -0.02737 -0.02737 -4.1056 -4.1056 -4.0051 -4.0051 0.64817 0.64817 0.64667 -0.79649 3.8005 3.8005 -0.79649 -0.79649 -0.026019 -0.026019 -3.9028 -3.9028 -3.8005 -3.8005 0.65505 0.65505 0.65333 -0.82111 3.5859 3.5859 -0.82111 -0.82111 -0.024621 -0.024621 -3.6932 -3.6932 -3.5859 -3.5859 0.66195 0.66195 0.66 -0.84429 3.3683 3.3683 -0.84429 -0.84429 -0.023181 -0.023181 -3.4771 -3.4771 -3.3683 -3.3683 0.66885 0.66885 0.66667 -0.86599 3.1416 3.1416 -0.86599 -0.86599 -0.0217 -0.0217 -3.255 -3.255 -3.1416 -3.1416 0.67579 0.67579 0.67333 -0.88617 2.9126 2.9126 -0.88617 -0.88617 -0.02018 -0.02018 -3.0271 -3.0271 -2.9126 -2.9126 0.68272 0.68272 0.68 -0.9048 2.6752 2.6752 -0.9048 -0.9048 -0.018626 -0.018626 -2.7939 -2.7939 -2.6752 -2.6752 0.68969 0.68969 0.68667 -0.92184 2.4363 2.4363 -0.92184 -0.92184 -0.017038 -0.017038 -2.5558 -2.5558 -2.4363 -2.4363 0.69667 0.69667 0.69333 -0.93726 2.19 2.19 -0.93726 -0.93726 -0.015421 -0.015421 -2.3132 -2.3132 -2.19 -2.19 0.70371 0.70371 0.7 -0.95104 1.9431 1.9431 -0.95104 -0.95104 -0.013777 -0.013777 -2.0665 -2.0665 -1.9431 -1.9431 0.71076 0.71076 0.71 -0.96857 1.563 1.563 -0.96857 -0.96857 -0.01753 -0.01753 -1.753 -1.753 -1.563 -1.563 0.72132 0.72132 0.72 -0.98228 1.1786 1.1786 -0.98228 -0.98228 -0.013708 -0.013708 -1.3708 -1.3708 -1.1786 -1.1786 0.73201 0.73201 0.73 -0.99211 0.78772 0.78772 -0.99211 -0.99211 -0.0098314 -0.0098314 -0.98314 -0.98314 -0.78772 -0.78772 0.74301 0.74301 0.74 -0.99802 0.39547 0.39547 -0.99802 -0.99802 -0.0059159 -0.0059159 -0.59159 -0.59159 -0.39547 -0.39547 0.75456 0.75456 0.75 -1. -28.117u -28.117u -1. -1. -0.0019772 -0.0019772 -0.19772 -0.19772 27.983u 27.983u 0.76727 0.76727 0.76667 -0.99453 -0.65656 -0.65656 -0.99453 -0.99453 0.0054715 0.0054715 0.32829 0.32829 0.65656 0.65656 0.79509 0.79509 0.78333 -0.97816 -1.3076 -1.3076 -0.97816 -0.97816 0.016368 0.016368 0.98207 0.98207 1.3076 1.3076 0.80306 0.80306 0.8 -0.95108 -1.9426 -1.9426 -0.95108 -0.95108 0.027085 0.027085 1.6251 1.6251 1.9426 1.9426 0.81447 0.81447 0.81667 -0.91357 -2.558 -2.558 -0.91357 -0.91357 0.037505 0.037505 2.2503 2.2503 2.558 2.558 0.82879 0.82879 0.82857 -0.88063 -2.9769 -2.9769 -0.88063 -0.88063 0.032946 0.032946 2.7674 2.7674 2.9769 2.9769 0.83937 0.83937 0.84048 -0.84275 -3.3854 -3.3854 -0.84275 -0.84275 0.03787 0.03787 3.1811 3.1811 3.3854 3.3854 0.85042 0.85042 0.85238 -0.80017 -3.7687 -3.7687 -0.80017 -0.80017 0.042584 0.042584 3.577 3.577 3.7687 3.7687 0.86169 0.86169 0.86032 -0.76928 -4.0158 -4.0158 -0.76928 -0.76928 0.030891 0.030891 3.8922 3.8922 4.0158 4.0158 0.86914 0.86914 0.86825 -0.73648 -4.2507 -4.2507 -0.73648 -0.73648 0.032803 0.032803 4.1332 4.1332 4.2507 4.2507 0.87672 0.87672 0.87619 -0.70184 -4.4772 -4.4772 -0.70184 -0.70184 0.034634 0.034634 4.3639 4.3639 4.4772 4.4772 0.88434 0.88434 0.88413 -0.66546 -4.6904 -4.6904 -0.66546 -0.66546 0.036379 0.036379 4.5838 4.5838 4.6904 4.6904 0.89201 0.89201 0.89206 -0.62743 -4.8941 -4.8941 -0.62743 -0.62743 0.038034 0.038034 4.7922 4.7922 4.8941 4.8941 0.89968 0.89968 0.9 -0.58784 -5.0835 -5.0835 -0.58784 -0.58784 0.039594 0.039594 4.9888 4.9888 5.0835 5.0835 0.90736 0.90736 0.90794 -0.54678 -5.2624 -5.2624 -0.54678 -0.54678 0.041055 0.041055 5.1729 5.1729 5.2624 5.2624 0.91504 0.91504 0.91587 -0.50437 -5.426 -5.426 -0.50437 -0.50437 0.042414 0.042414 5.3442 5.3442 5.426 5.426 0.92272 0.92272 0.92381 -0.4607 -5.5784 -5.5784 -0.4607 -0.4607 0.043668 0.043668 5.5022 5.5022 5.5784 5.5784 0.9304 0.9304 0.93175 -0.41588 -5.7147 -5.7147 -0.41588 -0.41588 0.044814 0.044814 5.6465 5.6465 5.7147 5.7147 0.93808 0.93808 0.93795 -0.38012 -5.8124 -5.8124 -0.38012 -0.38012 0.035762 0.035762 5.7635 5.7635 5.8124 5.8124 0.94403 0.94403 0.94416 -0.34378 -5.9009 -5.9009 -0.34378 -0.34378 0.03634 0.03634 5.8566 5.8566 5.9009 5.9009 0.95001 0.95001 0.95036 -0.30692 -5.9808 -5.9808 -0.30692 -0.30692 0.036862 0.036862 5.9408 5.9408 5.9808 5.9808 0.95599 0.95599 0.95657 -0.26959 -6.0512 -6.0512 -0.26959 -0.26959 0.037329 0.037329 6.016 6.016 6.0512 6.0512 0.96196 0.96196 0.96277 -0.23185 -6.1128 -6.1128 -0.23185 -0.23185 0.037738 0.037738 6.082 6.082 6.1128 6.1128 0.96792 0.96792 0.96898 -0.19376 -6.1648 -6.1648 -0.19376 -0.19376 0.038091 0.038091 6.1388 6.1388 6.1648 6.1648 0.97385 0.97385 0.97341 -0.16637 -6.1957 -6.1957 -0.16637 -0.16637 0.027391 0.027391 6.1803 6.1803 6.1957 6.1957 0.97799 0.97799 0.97784 -0.13885 -6.223 -6.223 -0.13885 -0.13885 0.02752 0.02752 6.2094 6.2094 6.223 6.223 0.98218 0.98218 0.98227 -0.11122 -6.2443 -6.2443 -0.11122 -0.11122 0.027628 0.027628 6.2337 6.2337 6.2443 6.2443 0.98635 0.98635 0.9867 -0.083508 -6.2619 -6.2619 -0.083508 -0.083508 0.027714 0.027714 6.2531 6.2531 6.2619 6.2619 0.99049 0.99049 0.99114 -0.055729 -6.2735 -6.2735 -0.055729 -0.055729 0.027779 0.027779 6.2677 6.2677 6.2735 6.2735 0.99457 0.99457 0.99409 -0.037184 -6.2791 -6.2791 -0.037184 -0.037184 0.018545 0.018545 6.2763 6.2763 6.2791 6.2791 0.99709 0.99709 0.99705 -0.018627 -6.2822 -6.2822 -0.018627 -0.018627 0.018558 0.018558 6.2806 6.2806 6.2822 6.2822 0.99967 0.99967 0.99852 -0.0093452 -6.2829 -6.2829 -0.0093452 -0.0093452 0.0092816 0.0092816 6.2825 6.2825 6.2829 6.2829 1.0006 1.0006 1. -62.833u -6.2833 -6.2833 -62.833u -62.833u 0.0092824 0.0092824 6.2831 6.2831 6.2833 6.2833 1.0017 1.0017 Gnucap System status iterations: op=0, dc=0, tran=1176, fourier=0, total=1733 transient timesteps: accepted=339, rejected=9, total=348 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/d_tcap.3.ckt.out000066400000000000000000000363151316501211100161240ustar00rootroot00000000000000' #Time v(1) v(2) v(3) 0. 0. 0. 0. 334.9p 70.f -210.42u -210.42u 1.3329n 593.f -837.44u -837.44u 2.3309n 1.742p -0.0014644 -0.0014644 3.9361n 4.902p -0.0024726 -0.0024726 27.04n 229.46p -0.016967 -0.016967 87.265n 2.3843n -0.054592 -0.054592 230.39n 16.533n -0.14311 -0.14311 503.23n 78.122n -0.30838 -0.30838 970.78n 286.12n -0.58135 -0.58135 1.7007u 856.97n -0.98286 -0.98286 2.4305u 1.7106u -1.3561 -1.3561 3.8462u 4.0914u -2.0075 -2.0075 5.2618u 7.3333u -2.5728 -2.5728 7.7434u 14.734u -3.3919 -3.3919 10.225u 23.944u -4.0302 -4.0302 14.335u 42.088u -4.7984 -4.7984 18.446u 62.852u -5.3047 -5.3047 25.306u 100.96u -5.8045 -5.8045 32.166u 141.62u -6.049 -6.049 44.525u 217.48u -6.2279 -6.2279 56.883u 294.71u -6.2701 -6.2701 83.983u 464.83u -6.2852 -6.2852 128.79u 746.38u -6.2824 -6.2824 239.88u 0.0014444 -6.2837 -6.2837 583.88u 0.0036058 -6.2827 -6.2827 0.002298 0.014375 -6.2831 -6.2831 0.012068 0.075691 -6.2685 -6.2685 0.041379 0.25701 -6.1037 -6.1037 0.070689 0.42964 -5.6755 -5.6755 0.1 0.58773 -5.1122 -5.1122 0.15 0.80898 -3.7376 -3.7376 0.2 0.95104 -1.9447 -1.9447 0.25 1. -0.013837 -0.013837 0.3 0.95108 1.9708 1.9708 0.4 0.58784 5.294 5.294 0.5 64.615u 6.4615 6.4615 0.55 -0.30896 5.8994 5.8994 0.575 -0.45393 5.6986 5.6986 0.6 -0.58774 5.0055 5.0055 0.65 -0.80898 3.8442 3.8442 0.7 -0.95104 1.8382 1.8382 0.75 -1. 0.12027 0.12027 0.8 -0.95108 -2.0771 -2.0771 0.9 -0.58784 -5.1877 -5.1877 1. -65.678u -6.5678 -6.5678 #Time v(1) v(2) v(3) 0. 0. 0. 0. 199.98p 25.f -125.65u -125.65u 1.155n 432.f -725.67u -725.67u 1.6356n 853.f -0.0010276 -0.0010276 2.4798n 1.944p -0.0015579 -0.0015579 14.209n 63.4p -0.0089213 -0.0089213 25.938n 211.17p -0.016276 -0.016276 37.667n 445.16p -0.023622 -0.023622 49.396n 765.26p -0.03096 -0.03096 61.125n 1.1714n -0.038289 -0.038289 72.854n 1.6634n -0.045609 -0.045609 84.583n 2.2412n -0.052921 -0.052921 96.312n 2.9048n -0.060224 -0.060224 114.06n 4.0716n -0.07126 -0.07126 131.81n 5.4342n -0.082276 -0.082276 149.56n 6.9921n -0.093272 -0.093272 167.31n 8.745n -0.10425 -0.10425 185.06n 10.693n -0.11521 -0.11521 212.54n 14.091n -0.13213 -0.13213 240.01n 17.953n -0.14901 -0.14901 267.49n 22.279n -0.16584 -0.16584 294.97n 27.067n -0.18263 -0.18263 322.45n 32.315n -0.19937 -0.19937 349.93n 38.023n -0.21606 -0.21606 392.08n 47.668n -0.24158 -0.24158 434.23n 58.387n -0.267 -0.267 476.38n 70.175n -0.2923 -0.2923 518.53n 83.027n -0.3175 -0.3175 560.69n 96.939n -0.3426 -0.3426 602.84n 111.91n -0.36758 -0.36758 644.99n 127.93n -0.39247 -0.39247 708.73n 154.13n -0.42989 -0.42989 772.47n 182.72n -0.46708 -0.46708 836.21n 213.67n -0.50404 -0.50404 899.95n 246.97n -0.54076 -0.54076 963.69n 282.6n -0.57724 -0.57724 1.0274u 320.55n -0.6135 -0.6135 1.0912u 360.8n -0.64952 -0.64952 1.1549u 403.34n -0.68531 -0.68531 1.2186u 448.15n -0.72088 -0.72088 1.3172u 521.9n -0.77544 -0.77544 1.4158u 600.99n -0.82946 -0.82946 1.5143u 685.39n -0.88295 -0.88295 1.6129u 775.03n -0.93592 -0.93592 1.7115u 869.86n -0.98837 -0.98837 1.81u 969.84n -1.0403 -1.0403 1.9086u 1.0749u -1.0917 -1.0917 2.0072u 1.185u -1.1426 -1.1426 2.1057u 1.3001u -1.1931 -1.1931 2.2043u 1.4202u -1.243 -1.243 2.3537u 1.6114u -1.3177 -1.3177 2.503u 1.8137u -1.3913 -1.3913 2.6524u 2.0269u -1.4638 -1.4638 2.8017u 2.2509u -1.5353 -1.5353 2.9511u 2.4855u -1.6057 -1.6057 3.1004u 2.7305u -1.675 -1.675 3.2498u 2.9857u -1.7433 -1.7433 3.3991u 3.2511u -1.8106 -1.8106 3.5485u 3.5265u -1.8769 -1.8769 3.6978u 3.8117u -1.9423 -1.9423 3.8472u 4.1066u -2.0066 -2.0066 4.0714u 4.5671u -2.1014 -2.1014 4.2956u 5.0486u -2.1941 -2.1941 4.5197u 5.5506u -2.2848 -2.2848 4.7439u 6.0727u -2.3734 -2.3734 4.9681u 6.6145u -2.4601 -2.4601 5.1923u 7.1755u -2.5449 -2.5449 5.4165u 7.7553u -2.6277 -2.6277 5.6407u 8.3535u -2.7088 -2.7088 5.8648u 8.9697u -2.788 -2.788 6.089u 9.6034u -2.8655 -2.8655 6.3132u 10.254u -2.9413 -2.9413 6.5374u 10.922u -3.0154 -3.0154 6.8758u 11.961u -3.1241 -3.1241 7.2143u 13.036u -3.2293 -3.2293 7.5528u 14.146u -3.3309 -3.3309 7.8912u 15.29u -3.4292 -3.4292 8.2297u 16.467u -3.5242 -3.5242 8.5682u 17.675u -3.616 -3.616 8.9066u 18.914u -3.7048 -3.7048 9.2451u 20.183u -3.7906 -3.7906 9.5835u 21.48u -3.8735 -3.8735 9.922u 22.804u -3.9537 -3.9537 10.26u 24.156u -4.0313 -4.0313 10.599u 25.533u -4.1062 -4.1062 11.11u 27.66u -4.2148 -4.2148 11.622u 29.842u -4.3179 -4.3179 12.133u 32.075u -4.4159 -4.4159 12.644u 34.357u -4.509 -4.509 13.156u 36.685u -4.5975 -4.5975 13.667u 39.058u -4.6815 -4.6815 14.178u 41.472u -4.7614 -4.7614 14.69u 43.926u -4.8373 -4.8373 15.201u 46.418u -4.9094 -4.9094 15.713u 48.946u -4.9779 -4.9779 16.224u 51.509u -5.0429 -5.0429 16.996u 55.44u -5.1352 -5.1352 17.769u 59.44u -5.2206 -5.2206 18.542u 63.504u -5.2996 -5.2996 19.314u 67.627u -5.3728 -5.3728 20.087u 71.804u -5.4405 -5.4405 20.859u 76.031u -5.5032 -5.5032 21.632u 80.305u -5.5612 -5.5612 22.404u 84.622u -5.6149 -5.6149 23.177u 88.979u -5.6646 -5.6646 23.95u 93.373u -5.7106 -5.7106 25.152u 100.28u -5.7756 -5.7756 26.355u 107.26u -5.8332 -5.8332 27.557u 114.3u -5.8842 -5.8842 28.76u 121.41u -5.9295 -5.9295 29.962u 128.56u -5.9696 -5.9696 31.165u 135.76u -6.0052 -6.0052 32.367u 143.u -6.0367 -6.0367 33.57u 150.28u -6.0646 -6.0646 35.469u 161.83u -6.1026 -6.1026 37.368u 173.45u -6.1339 -6.1339 39.267u 185.13u -6.1598 -6.1598 41.167u 196.85u -6.1812 -6.1812 43.066u 208.6u -6.1989 -6.1989 44.965u 220.39u -6.2135 -6.2135 48.006u 239.31u -6.2319 -6.2319 51.048u 258.29u -6.2454 -6.2454 54.089u 277.3u -6.2554 -6.2554 57.131u 296.33u -6.2627 -6.2627 61.863u 325.99u -6.2706 -6.2706 66.596u 355.68u -6.2754 -6.2754 71.329u 385.39u -6.2784 -6.2784 78.863u 432.7u -6.281 -6.281 86.398u 480.03u -6.2822 -6.2822 98.705u 557.36u -6.2829 -6.2829 111.01u 634.68u -6.2831 -6.2831 134.86u 784.55u -6.2832 -6.2832 171.4u 0.0010141 -6.2832 -6.2832 251.52u 0.0015175 -6.2832 -6.2832 459.33u 0.0028232 -6.2832 -6.2832 0.0017193 0.01074 -6.2829 -6.2829 0.0029794 0.018656 -6.2821 -6.2821 0.0050436 0.031622 -6.2802 -6.2802 0.0071079 0.044583 -6.2769 -6.2769 0.0091722 0.057536 -6.2729 -6.2729 0.011236 0.070479 -6.2676 -6.2676 0.014407 0.090333 -6.2579 -6.2579 0.017577 0.11015 -6.245 -6.245 0.020747 0.12992 -6.2303 -6.2303 0.023917 0.14965 -6.2124 -6.2124 0.027087 0.16931 -6.1929 -6.1929 0.030257 0.18891 -6.1701 -6.1701 0.033427 0.20843 -6.1456 -6.1456 0.036597 0.22787 -6.1179 -6.1179 0.041126 0.25548 -6.0755 -6.0755 0.045655 0.28288 -6.0266 -6.0266 0.050184 0.31005 -5.9743 -5.9743 0.054712 0.33698 -5.9157 -5.9157 0.059241 0.36363 -5.8538 -5.8538 0.06377 0.38999 -5.7857 -5.7857 0.068299 0.41603 -5.7144 -5.7144 0.072827 0.44173 -5.637 -5.637 0.077356 0.46708 -5.5564 -5.5564 0.081885 0.49204 -5.47 -5.47 0.086414 0.51661 -5.3805 -5.3805 0.090942 0.54076 -5.2853 -5.2853 0.095471 0.56448 -5.1871 -5.1871 0.1 0.58773 -5.0834 -5.0834 0.10667 0.6211 -4.9258 -4.9258 0.11333 0.65337 -4.7566 -4.7566 0.12 0.6845 -4.5819 -4.5819 0.12667 0.71443 -4.3963 -4.3963 0.13333 0.7431 -4.2059 -4.2059 0.14 0.77047 -4.0052 -4.0052 0.14667 0.79649 -3.8004 -3.8004 0.15333 0.82111 -3.586 -3.586 0.16 0.84429 -3.3682 -3.3682 0.16667 0.86599 -3.1417 -3.1417 0.17333 0.88617 -2.9124 -2.9124 0.18 0.9048 -2.6753 -2.6753 0.18667 0.92184 -2.4362 -2.4362 0.19333 0.93726 -2.1901 -2.1901 0.2 0.95104 -1.943 -1.943 0.21 0.96857 -1.5631 -1.5631 0.22 0.98228 -1.1784 -1.1784 0.23 0.99211 -0.78782 -0.78782 0.24 0.99802 -0.39537 -0.39537 0.25 1. -75.77u -75.77u 0.26667 0.99453 0.65666 0.65666 0.28333 0.97816 1.3075 1.3075 0.3 0.95108 1.9427 1.9427 0.31667 0.91357 2.5579 2.5579 0.32857 0.88063 2.977 2.977 0.34048 0.84275 3.3853 3.3853 0.35238 0.80017 3.7688 3.7688 0.36032 0.76928 4.0157 4.0157 0.36825 0.73648 4.2508 4.2508 0.37619 0.70184 4.4771 4.4771 0.38413 0.66546 4.6905 4.6905 0.39206 0.62743 4.894 4.894 0.4 0.58784 5.0836 5.0836 0.40794 0.54678 5.2623 5.2623 0.41587 0.50437 5.4261 5.4261 0.42381 0.4607 5.5783 5.5783 0.43175 0.41588 5.7148 5.7148 0.43795 0.38012 5.8123 5.8123 0.44416 0.34378 5.901 5.901 0.45036 0.30692 5.9807 5.9807 0.45657 0.26959 6.0513 6.0513 0.46277 0.23185 6.1127 6.1127 0.46898 0.19376 6.1649 6.1649 0.47341 0.16637 6.1956 6.1956 0.47784 0.13885 6.2231 6.2231 0.48227 0.11122 6.2442 6.2442 0.4867 0.083508 6.262 6.262 0.49114 0.055729 6.2734 6.2734 0.49409 0.037184 6.2792 6.2792 0.49705 0.018627 6.2821 6.2821 0.5 62.835u 6.2835 6.2835 0.50204 -0.01276 6.2825 6.2825 0.50408 -0.02558 6.2814 6.2814 0.50612 -0.038396 6.2784 6.2784 0.50816 -0.051206 6.2753 6.2753 0.5102 -0.064008 6.2702 6.2702 0.5133 -0.08341 6.2618 6.2618 0.5164 -0.10278 6.2498 6.2498 0.51949 -0.12211 6.2367 6.2367 0.52259 -0.1414 6.2199 6.2199 0.52569 -0.16063 6.2021 6.2021 0.52878 -0.1798 6.1807 6.1807 0.53188 -0.1989 6.1581 6.1581 0.53498 -0.21793 6.1321 6.1321 0.53962 -0.24632 6.0906 6.0906 0.54426 -0.27449 6.0417 6.0417 0.54891 -0.30243 5.9899 5.9899 0.55355 -0.33012 5.9309 5.9309 0.5582 -0.35752 5.8688 5.8688 0.56284 -0.38462 5.7998 5.7998 0.56749 -0.41139 5.7278 5.7278 0.57213 -0.43781 5.6489 5.6489 0.57678 -0.46385 5.5672 5.5672 0.58142 -0.48951 5.4788 5.4788 0.58607 -0.51474 5.3877 5.3877 0.59071 -0.53954 5.2901 5.2901 0.59536 -0.56388 5.1899 5.1899 0.6 -0.58773 5.0833 5.0833 0.60667 -0.6211 4.9259 4.9259 0.61333 -0.65337 4.7564 4.7564 0.62 -0.6845 4.582 4.582 0.62667 -0.71443 4.3962 4.3962 0.63333 -0.7431 4.206 4.206 0.64 -0.77047 4.0051 4.0051 0.64667 -0.79649 3.8005 3.8005 0.65333 -0.82111 3.5859 3.5859 0.66 -0.84429 3.3683 3.3683 0.66667 -0.86599 3.1416 3.1416 0.67333 -0.88617 2.9126 2.9126 0.68 -0.9048 2.6752 2.6752 0.68667 -0.92184 2.4363 2.4363 0.69333 -0.93726 2.19 2.19 0.7 -0.95104 1.9431 1.9431 0.71 -0.96857 1.563 1.563 0.72 -0.98228 1.1786 1.1786 0.73 -0.99211 0.78772 0.78772 0.74 -0.99802 0.39547 0.39547 0.75 -1. -28.117u -28.117u 0.76667 -0.99453 -0.65656 -0.65656 0.78333 -0.97816 -1.3076 -1.3076 0.8 -0.95108 -1.9426 -1.9426 0.81667 -0.91357 -2.558 -2.558 0.82857 -0.88063 -2.9769 -2.9769 0.84048 -0.84275 -3.3854 -3.3854 0.85238 -0.80017 -3.7687 -3.7687 0.86032 -0.76928 -4.0158 -4.0158 0.86825 -0.73648 -4.2507 -4.2507 0.87619 -0.70184 -4.4772 -4.4772 0.88413 -0.66546 -4.6904 -4.6904 0.89206 -0.62743 -4.8941 -4.8941 0.9 -0.58784 -5.0835 -5.0835 0.90794 -0.54678 -5.2624 -5.2624 0.91587 -0.50437 -5.426 -5.426 0.92381 -0.4607 -5.5784 -5.5784 0.93175 -0.41588 -5.7147 -5.7147 0.93795 -0.38012 -5.8124 -5.8124 0.94416 -0.34378 -5.9009 -5.9009 0.95036 -0.30692 -5.9808 -5.9808 0.95657 -0.26959 -6.0512 -6.0512 0.96277 -0.23185 -6.1128 -6.1128 0.96898 -0.19376 -6.1648 -6.1648 0.97341 -0.16637 -6.1957 -6.1957 0.97784 -0.13885 -6.223 -6.223 0.98227 -0.11122 -6.2443 -6.2443 0.9867 -0.083508 -6.2619 -6.2619 0.99114 -0.055729 -6.2735 -6.2735 0.99409 -0.037184 -6.2791 -6.2791 0.99705 -0.018627 -6.2822 -6.2822 0.99852 -0.0093452 -6.2829 -6.2829 1. -62.833u -6.2833 -6.2833 Gnucap System status iterations: op=0, dc=0, tran=884, fourier=0, total=1390 transient timesteps: accepted=339, rejected=9, total=348 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/d_tcap.4.ckt.out000066400000000000000000000371421316501211100161240ustar00rootroot00000000000000' #Time v(1) v(2) v(3) 0. 0. 0. 0. 0.001 0.0062209 -6.2209 -6.2209 83.333u 467.5u -5.61 -5.61 6.9444u 17.882u -2.5751 -2.5751 578.7n 198.91n -0.34372 -0.34372 48.225n 1.4543n -0.030155 -0.030155 4.0188n 10.144p -0.0025241 -0.0025241 334.9p 70.f -210.42u -210.42u 4.327n 5.916p -0.0027181 -0.0027181 1.3329n 593.f -837.44u -837.44u 2.3309n 1.742p -0.0014644 -0.0014644 3.9361n 4.902p -0.0024726 -0.0024726 27.04n 229.46p -0.016967 -0.016967 87.265n 2.3843n -0.054592 -0.054592 230.39n 16.533n -0.14311 -0.14311 503.23n 78.122n -0.30838 -0.30838 970.78n 286.12n -0.58135 -0.58135 1.7007u 856.97n -0.98286 -0.98286 2.4305u 1.7106u -1.3561 -1.3561 3.8462u 4.0914u -2.0075 -2.0075 5.2618u 7.3333u -2.5728 -2.5728 7.7434u 14.734u -3.3919 -3.3919 10.225u 23.944u -4.0302 -4.0302 14.335u 42.088u -4.7984 -4.7984 18.446u 62.852u -5.3047 -5.3047 25.306u 100.96u -5.8045 -5.8045 32.166u 141.62u -6.049 -6.049 44.525u 217.48u -6.2279 -6.2279 56.883u 294.71u -6.2701 -6.2701 83.983u 464.83u -6.2852 -6.2852 128.79u 746.38u -6.2824 -6.2824 239.88u 0.0014444 -6.2837 -6.2837 583.88u 0.0036058 -6.2827 -6.2827 0.002298 0.014375 -6.2831 -6.2831 0.012068 0.075691 -6.2685 -6.2685 0.041379 0.25701 -6.1037 -6.1037 0.070689 0.42964 -5.6755 -5.6755 0.1 0.58773 -5.1122 -5.1122 0.15 0.80898 -3.7376 -3.7376 0.2 0.95104 -1.9447 -1.9447 0.25 1. -0.013837 -0.013837 0.3 0.95108 1.9708 1.9708 0.4 0.58784 5.294 5.294 0.5 64.615u 6.4615 6.4615 0.55 -0.30896 5.8994 5.8994 0.575 -0.45393 5.6986 5.6986 0.6 -0.58774 5.0055 5.0055 0.65 -0.80898 3.8442 3.8442 0.7 -0.95104 1.8382 1.8382 0.75 -1. 0.12027 0.12027 0.8 -0.95108 -2.0771 -2.0771 0.9 -0.58784 -5.1877 -5.1877 1. -65.678u -6.5678 -6.5678 #Time v(1) v(2) v(3) 0. 0. 0. 0. 0.001 0.0062209 -6.2209 -6.2209 119.99n 8.9391n -0.074498 -0.074498 199.98p 25.f -125.65u -125.65u 1.155n 432.f -725.67u -725.67u 1.6356n 853.f -0.0010276 -0.0010276 2.4798n 1.944p -0.0015579 -0.0015579 14.209n 63.4p -0.0089213 -0.0089213 25.938n 211.17p -0.016276 -0.016276 37.667n 445.16p -0.023622 -0.023622 49.396n 765.26p -0.03096 -0.03096 61.125n 1.1714n -0.038289 -0.038289 72.854n 1.6634n -0.045609 -0.045609 84.583n 2.2412n -0.052921 -0.052921 96.312n 2.9048n -0.060224 -0.060224 114.06n 4.0716n -0.07126 -0.07126 131.81n 5.4342n -0.082276 -0.082276 149.56n 6.9921n -0.093272 -0.093272 167.31n 8.745n -0.10425 -0.10425 185.06n 10.693n -0.11521 -0.11521 212.54n 14.091n -0.13213 -0.13213 240.01n 17.953n -0.14901 -0.14901 267.49n 22.279n -0.16584 -0.16584 294.97n 27.067n -0.18263 -0.18263 322.45n 32.315n -0.19937 -0.19937 349.93n 38.023n -0.21606 -0.21606 392.08n 47.668n -0.24158 -0.24158 434.23n 58.387n -0.267 -0.267 476.38n 70.175n -0.2923 -0.2923 518.53n 83.027n -0.3175 -0.3175 560.69n 96.939n -0.3426 -0.3426 602.84n 111.91n -0.36758 -0.36758 644.99n 127.93n -0.39247 -0.39247 708.73n 154.13n -0.42989 -0.42989 772.47n 182.72n -0.46708 -0.46708 836.21n 213.67n -0.50404 -0.50404 899.95n 246.97n -0.54076 -0.54076 963.69n 282.6n -0.57724 -0.57724 1.0274u 320.55n -0.6135 -0.6135 1.0912u 360.8n -0.64952 -0.64952 1.1549u 403.34n -0.68531 -0.68531 1.2186u 448.15n -0.72088 -0.72088 1.3172u 521.9n -0.77544 -0.77544 1.4158u 600.99n -0.82946 -0.82946 1.5143u 685.39n -0.88295 -0.88295 1.6129u 775.03n -0.93592 -0.93592 1.7115u 869.86n -0.98837 -0.98837 1.81u 969.84n -1.0403 -1.0403 1.9086u 1.0749u -1.0917 -1.0917 2.0072u 1.185u -1.1426 -1.1426 2.1057u 1.3001u -1.1931 -1.1931 2.2043u 1.4202u -1.243 -1.243 2.3537u 1.6114u -1.3177 -1.3177 2.503u 1.8137u -1.3913 -1.3913 2.6524u 2.0269u -1.4638 -1.4638 2.8017u 2.2509u -1.5353 -1.5353 2.9511u 2.4855u -1.6057 -1.6057 3.1004u 2.7305u -1.675 -1.675 3.2498u 2.9857u -1.7433 -1.7433 3.3991u 3.2511u -1.8106 -1.8106 3.5485u 3.5265u -1.8769 -1.8769 3.6978u 3.8117u -1.9423 -1.9423 3.8472u 4.1066u -2.0066 -2.0066 4.0714u 4.5671u -2.1014 -2.1014 4.2956u 5.0486u -2.1941 -2.1941 4.5197u 5.5506u -2.2848 -2.2848 4.7439u 6.0727u -2.3734 -2.3734 4.9681u 6.6145u -2.4601 -2.4601 5.1923u 7.1755u -2.5449 -2.5449 5.4165u 7.7553u -2.6277 -2.6277 5.6407u 8.3535u -2.7088 -2.7088 5.8648u 8.9697u -2.788 -2.788 6.089u 9.6034u -2.8655 -2.8655 6.3132u 10.254u -2.9413 -2.9413 6.5374u 10.922u -3.0154 -3.0154 6.8758u 11.961u -3.1241 -3.1241 7.2143u 13.036u -3.2293 -3.2293 7.5528u 14.146u -3.3309 -3.3309 7.8912u 15.29u -3.4292 -3.4292 8.2297u 16.467u -3.5242 -3.5242 8.5682u 17.675u -3.616 -3.616 8.9066u 18.914u -3.7048 -3.7048 9.2451u 20.183u -3.7906 -3.7906 9.5835u 21.48u -3.8735 -3.8735 9.922u 22.804u -3.9537 -3.9537 10.26u 24.156u -4.0313 -4.0313 10.599u 25.533u -4.1062 -4.1062 11.11u 27.66u -4.2148 -4.2148 11.622u 29.842u -4.3179 -4.3179 12.133u 32.075u -4.4159 -4.4159 12.644u 34.357u -4.509 -4.509 13.156u 36.685u -4.5975 -4.5975 13.667u 39.058u -4.6815 -4.6815 14.178u 41.472u -4.7614 -4.7614 14.69u 43.926u -4.8373 -4.8373 15.201u 46.418u -4.9094 -4.9094 15.713u 48.946u -4.9779 -4.9779 16.224u 51.509u -5.0429 -5.0429 16.996u 55.44u -5.1352 -5.1352 17.769u 59.44u -5.2206 -5.2206 18.542u 63.504u -5.2996 -5.2996 19.314u 67.627u -5.3728 -5.3728 20.087u 71.804u -5.4405 -5.4405 20.859u 76.031u -5.5032 -5.5032 21.632u 80.305u -5.5612 -5.5612 22.404u 84.622u -5.6149 -5.6149 23.177u 88.979u -5.6646 -5.6646 23.95u 93.373u -5.7106 -5.7106 25.152u 100.28u -5.7756 -5.7756 26.355u 107.26u -5.8332 -5.8332 27.557u 114.3u -5.8842 -5.8842 28.76u 121.41u -5.9295 -5.9295 29.962u 128.56u -5.9696 -5.9696 31.165u 135.76u -6.0052 -6.0052 32.367u 143.u -6.0367 -6.0367 33.57u 150.28u -6.0646 -6.0646 35.469u 161.83u -6.1026 -6.1026 37.368u 173.45u -6.1339 -6.1339 39.267u 185.13u -6.1598 -6.1598 41.167u 196.85u -6.1812 -6.1812 43.066u 208.6u -6.1989 -6.1989 44.965u 220.39u -6.2135 -6.2135 48.006u 239.31u -6.2319 -6.2319 51.048u 258.29u -6.2454 -6.2454 54.089u 277.3u -6.2554 -6.2554 57.131u 296.33u -6.2627 -6.2627 61.863u 325.99u -6.2706 -6.2706 66.596u 355.68u -6.2754 -6.2754 71.329u 385.39u -6.2784 -6.2784 78.863u 432.7u -6.281 -6.281 86.398u 480.03u -6.2822 -6.2822 98.705u 557.36u -6.2829 -6.2829 111.01u 634.68u -6.2831 -6.2831 134.86u 784.55u -6.2832 -6.2832 171.4u 0.0010141 -6.2832 -6.2832 251.52u 0.0015175 -6.2832 -6.2832 459.33u 0.0028232 -6.2832 -6.2832 0.0017193 0.01074 -6.2829 -6.2829 0.0029794 0.018656 -6.2821 -6.2821 0.0050436 0.031622 -6.2802 -6.2802 0.0071079 0.044583 -6.2769 -6.2769 0.0091722 0.057536 -6.2729 -6.2729 0.011236 0.070479 -6.2676 -6.2676 0.014407 0.090333 -6.2579 -6.2579 0.017577 0.11015 -6.245 -6.245 0.020747 0.12992 -6.2303 -6.2303 0.023917 0.14965 -6.2124 -6.2124 0.027087 0.16931 -6.1929 -6.1929 0.030257 0.18891 -6.1701 -6.1701 0.033427 0.20843 -6.1456 -6.1456 0.036597 0.22787 -6.1179 -6.1179 0.041126 0.25548 -6.0755 -6.0755 0.045655 0.28288 -6.0266 -6.0266 0.050184 0.31005 -5.9743 -5.9743 0.054712 0.33698 -5.9157 -5.9157 0.059241 0.36363 -5.8538 -5.8538 0.06377 0.38999 -5.7857 -5.7857 0.068299 0.41603 -5.7144 -5.7144 0.072827 0.44173 -5.637 -5.637 0.077356 0.46708 -5.5564 -5.5564 0.081885 0.49204 -5.47 -5.47 0.086414 0.51661 -5.3805 -5.3805 0.090942 0.54076 -5.2853 -5.2853 0.095471 0.56448 -5.1871 -5.1871 0.1 0.58773 -5.0834 -5.0834 0.10667 0.6211 -4.9258 -4.9258 0.11333 0.65337 -4.7566 -4.7566 0.12 0.6845 -4.5819 -4.5819 0.12667 0.71443 -4.3963 -4.3963 0.13333 0.7431 -4.2059 -4.2059 0.14 0.77047 -4.0052 -4.0052 0.14667 0.79649 -3.8004 -3.8004 0.15333 0.82111 -3.586 -3.586 0.16 0.84429 -3.3682 -3.3682 0.16667 0.86599 -3.1417 -3.1417 0.17333 0.88617 -2.9124 -2.9124 0.18 0.9048 -2.6753 -2.6753 0.18667 0.92184 -2.4362 -2.4362 0.19333 0.93726 -2.1901 -2.1901 0.2 0.95104 -1.943 -1.943 0.21 0.96857 -1.5631 -1.5631 0.22 0.98228 -1.1784 -1.1784 0.23 0.99211 -0.78782 -0.78782 0.24 0.99802 -0.39537 -0.39537 0.25 1. -75.77u -75.77u 0.26667 0.99453 0.65666 0.65666 0.28333 0.97816 1.3075 1.3075 0.3 0.95108 1.9427 1.9427 0.31667 0.91357 2.5579 2.5579 0.32857 0.88063 2.977 2.977 0.34048 0.84275 3.3853 3.3853 0.35238 0.80017 3.7688 3.7688 0.36032 0.76928 4.0157 4.0157 0.36825 0.73648 4.2508 4.2508 0.37619 0.70184 4.4771 4.4771 0.38413 0.66546 4.6905 4.6905 0.39206 0.62743 4.894 4.894 0.4 0.58784 5.0836 5.0836 0.40794 0.54678 5.2623 5.2623 0.41587 0.50437 5.4261 5.4261 0.42381 0.4607 5.5783 5.5783 0.43175 0.41588 5.7148 5.7148 0.43795 0.38012 5.8123 5.8123 0.44416 0.34378 5.901 5.901 0.45036 0.30692 5.9807 5.9807 0.45657 0.26959 6.0513 6.0513 0.46277 0.23185 6.1127 6.1127 0.46898 0.19376 6.1649 6.1649 0.47341 0.16637 6.1956 6.1956 0.47784 0.13885 6.2231 6.2231 0.48227 0.11122 6.2442 6.2442 0.4867 0.083508 6.262 6.262 0.49114 0.055729 6.2734 6.2734 0.49409 0.037184 6.2792 6.2792 0.49705 0.018627 6.2821 6.2821 0.5 62.835u 6.2835 6.2835 0.50204 -0.01276 6.2825 6.2825 0.50408 -0.02558 6.2814 6.2814 0.50612 -0.038396 6.2784 6.2784 0.50816 -0.051206 6.2753 6.2753 0.5102 -0.064008 6.2702 6.2702 0.5133 -0.08341 6.2618 6.2618 0.5164 -0.10278 6.2498 6.2498 0.51949 -0.12211 6.2367 6.2367 0.52259 -0.1414 6.2199 6.2199 0.52569 -0.16063 6.2021 6.2021 0.52878 -0.1798 6.1807 6.1807 0.53188 -0.1989 6.1581 6.1581 0.53498 -0.21793 6.1321 6.1321 0.53962 -0.24632 6.0906 6.0906 0.54426 -0.27449 6.0417 6.0417 0.54891 -0.30243 5.9899 5.9899 0.55355 -0.33012 5.9309 5.9309 0.5582 -0.35752 5.8688 5.8688 0.56284 -0.38462 5.7998 5.7998 0.56749 -0.41139 5.7278 5.7278 0.57213 -0.43781 5.6489 5.6489 0.57678 -0.46385 5.5672 5.5672 0.58142 -0.48951 5.4788 5.4788 0.58607 -0.51474 5.3877 5.3877 0.59071 -0.53954 5.2901 5.2901 0.59536 -0.56388 5.1899 5.1899 0.6 -0.58773 5.0833 5.0833 0.60667 -0.6211 4.9259 4.9259 0.61333 -0.65337 4.7564 4.7564 0.62 -0.6845 4.582 4.582 0.62667 -0.71443 4.3962 4.3962 0.63333 -0.7431 4.206 4.206 0.64 -0.77047 4.0051 4.0051 0.64667 -0.79649 3.8005 3.8005 0.65333 -0.82111 3.5859 3.5859 0.66 -0.84429 3.3683 3.3683 0.66667 -0.86599 3.1416 3.1416 0.67333 -0.88617 2.9126 2.9126 0.68 -0.9048 2.6752 2.6752 0.68667 -0.92184 2.4363 2.4363 0.69333 -0.93726 2.19 2.19 0.7 -0.95104 1.9431 1.9431 0.71 -0.96857 1.563 1.563 0.72 -0.98228 1.1786 1.1786 0.73 -0.99211 0.78772 0.78772 0.74 -0.99802 0.39547 0.39547 0.75 -1. -28.117u -28.117u 0.76667 -0.99453 -0.65656 -0.65656 0.78333 -0.97816 -1.3076 -1.3076 0.8 -0.95108 -1.9426 -1.9426 0.81667 -0.91357 -2.558 -2.558 0.82857 -0.88063 -2.9769 -2.9769 0.84048 -0.84275 -3.3854 -3.3854 0.85238 -0.80017 -3.7687 -3.7687 0.86032 -0.76928 -4.0158 -4.0158 0.86825 -0.73648 -4.2507 -4.2507 0.87619 -0.70184 -4.4772 -4.4772 0.88413 -0.66546 -4.6904 -4.6904 0.89206 -0.62743 -4.8941 -4.8941 0.9 -0.58784 -5.0835 -5.0835 0.90794 -0.54678 -5.2624 -5.2624 0.91587 -0.50437 -5.426 -5.426 0.92381 -0.4607 -5.5784 -5.5784 0.93175 -0.41588 -5.7147 -5.7147 0.93795 -0.38012 -5.8124 -5.8124 0.94416 -0.34378 -5.9009 -5.9009 0.95036 -0.30692 -5.9808 -5.9808 0.95657 -0.26959 -6.0512 -6.0512 0.96277 -0.23185 -6.1128 -6.1128 0.96898 -0.19376 -6.1648 -6.1648 0.97341 -0.16637 -6.1957 -6.1957 0.97784 -0.13885 -6.223 -6.223 0.98227 -0.11122 -6.2443 -6.2443 0.9867 -0.083508 -6.2619 -6.2619 0.99114 -0.055729 -6.2735 -6.2735 0.99409 -0.037184 -6.2791 -6.2791 0.99705 -0.018627 -6.2822 -6.2822 0.99852 -0.0093452 -6.2829 -6.2829 1. -62.833u -6.2833 -6.2833 Gnucap System status iterations: op=0, dc=0, tran=884, fourier=0, total=1390 transient timesteps: accepted=339, rejected=9, total=348 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/d_tcap.5.ckt.out000066400000000000000000000356231316501211100161270ustar00rootroot00000000000000' #Time v(1) v(2) v(3) 0. 0. 0. 0. 1.6745n 1.761p -0.0010519 -0.0010519 2.7745n 3.299p -0.0017429 -0.0017429 4.611n 7.559p -0.0028964 -0.0028964 6.4475n 13.937p -0.0040497 -0.0040497 33.681n 356.76p -0.021127 -0.021127 103.39n 3.3454n -0.064625 -0.064625 263.94n 21.673n -0.16367 -0.16367 563.37n 97.709n -0.3442 -0.3442 1.0683u 345.35n -0.63669 -0.63669 1.8474u 1.0064u -1.0601 -1.0601 2.6266u 1.985u -1.4518 -1.4518 4.1196u 4.6537u -2.1231 -2.1231 5.6127u 8.255u -2.701 -2.701 8.2138u 16.353u -3.5256 -3.5256 10.815u 26.349u -4.1603 -4.1603 15.116u 45.861u -4.9118 -4.9118 19.418u 68.035u -5.3973 -5.3973 26.624u 108.62u -5.8666 -5.8666 33.83u 151.69u -6.0873 -6.0873 46.962u 232.65u -6.2426 -6.2426 60.094u 314.84u -6.2748 -6.2748 89.719u 500.87u -6.2848 -6.2848 140.04u 817.06u -6.2825 -6.2825 273.71u 0.0016569 -6.2837 -6.2837 732.51u 0.0045397 -6.2827 -6.2827 0.0030727 0.019242 -6.2827 -6.2827 0.016545 0.1037 -6.2561 -6.2561 0.049327 0.30493 -6.0206 -6.0206 0.082108 0.49327 -5.4697 -5.4697 0.1361 0.75463 -4.2117 -4.2117 0.1901 0.92997 -2.2834 -2.2834 0.24409 0.99931 -0.28483 -0.28483 0.32808 0.88209 3.0761 3.0761 0.44007 0.3678 6.1087 6.1087 0.4774 0.14161 6.0098 6.0098 0.52966 -0.18519 6.4969 6.4969 0.56885 -0.41918 5.4428 5.4428 0.60805 -0.62787 5.2056 5.2056 0.66404 -0.85762 3.001 3.001 0.72003 -0.98231 1.4526 1.4526 0.77603 -0.98667 -1.2968 -1.2968 0.85068 -0.80652 -3.5293 -3.5293 1. -72.726u -7.2726 -7.2726 #Time v(1) v(2) v(3) 0. 0. 0. 0. 1.9998n 2.512p -0.0012563 -0.0012563 3.0998n 4.274p -0.0019473 -0.0019473 4.1998n 6.796p -0.0026382 -0.0026382 5.2998n 10.078p -0.003329 -0.003329 17.708n 99.702p -0.011117 -0.011117 30.117n 285.9p -0.018894 -0.018894 42.525n 568.55p -0.026663 -0.026663 54.934n 947.53p -0.034421 -0.034421 67.342n 1.4227n -0.04217 -0.04217 79.751n 1.994n -0.04991 -0.04991 92.159n 2.6613n -0.057639 -0.057639 104.57n 3.4244n -0.06536 -0.06536 123.32n 4.7594n -0.07701 -0.07701 142.08n 6.3127n -0.088638 -0.088638 160.83n 8.084n -0.10025 -0.10025 179.59n 10.073n -0.11183 -0.11183 198.34n 12.278n -0.12339 -0.12339 227.13n 16.085n -0.1411 -0.1411 255.91n 20.401n -0.15875 -0.15875 284.7n 25.224n -0.17636 -0.17636 313.48n 30.553n -0.19391 -0.19391 342.27n 36.387n -0.21142 -0.21142 371.06n 42.724n -0.22887 -0.22887 414.91n 53.341n -0.25536 -0.25536 458.76n 65.117n -0.28173 -0.28173 502.61n 78.047n -0.30799 -0.30799 546.46n 92.125n -0.33414 -0.33414 590.31n 107.35n -0.36017 -0.36017 634.16n 123.71n -0.38608 -0.38608 678.01n 141.2n -0.41188 -0.41188 743.95n 169.64n -0.45047 -0.45047 809.89n 200.6n -0.48881 -0.48881 875.82n 234.09n -0.52689 -0.52689 941.76n 270.08n -0.56472 -0.56472 1.0077u 308.56n -0.6023 -0.6023 1.0736u 349.5n -0.63964 -0.63964 1.1396u 392.9n -0.67673 -0.67673 1.2055u 438.74n -0.71358 -0.71358 1.2715u 487.n -0.75018 -0.75018 1.373u 565.98n -0.80606 -0.80606 1.4745u 650.61n -0.86138 -0.86138 1.576u 740.82n -0.91613 -0.91613 1.6775u 836.56n -0.97033 -0.97033 1.779u 937.78n -1.024 -1.024 1.8805u 1.0444u -1.0771 -1.0771 1.982u 1.1564u -1.1297 -1.1297 2.0835u 1.2737u -1.1817 -1.1817 2.185u 1.3963u -1.2332 -1.2332 2.2865u 1.5241u -1.2842 -1.2842 2.4398u 1.7268u -1.3603 -1.3603 2.5931u 1.941u -1.4352 -1.4352 2.7464u 2.1667u -1.509 -1.509 2.8997u 2.4036u -1.5816 -1.5816 3.053u 2.6516u -1.6531 -1.6531 3.2063u 2.9104u -1.7236 -1.7236 3.3596u 3.18u -1.7929 -1.7929 3.5129u 3.4601u -1.8612 -1.8612 3.6663u 3.7506u -1.9285 -1.9285 3.8196u 4.0513u -1.9948 -1.9948 3.9729u 4.3621u -2.06 -2.06 4.1262u 4.6828u -2.1243 -2.1243 4.3625u 5.1964u -2.2214 -2.2214 4.5989u 5.7326u -2.3163 -2.3163 4.8352u 6.2911u -2.409 -2.409 5.0716u 6.8711u -2.4995 -2.4995 5.3079u 7.4723u -2.5878 -2.5878 5.5443u 8.0942u -2.6742 -2.6742 5.7806u 8.7362u -2.7585 -2.7585 6.017u 9.3979u -2.8408 -2.8408 6.2533u 10.079u -2.9212 -2.9212 6.4897u 10.779u -2.9997 -2.9997 6.7261u 11.497u -3.0764 -3.0764 6.9624u 12.233u -3.1514 -3.1514 7.3187u 13.375u -3.261 -3.261 7.675u 14.556u -3.3668 -3.3668 8.0313u 15.773u -3.4689 -3.4689 8.3876u 17.027u -3.5674 -3.5674 8.7439u 18.315u -3.6625 -3.6625 9.1001u 19.636u -3.7542 -3.7542 9.4564u 20.989u -3.8427 -3.8427 9.8127u 22.374u -3.9281 -3.9281 10.169u 23.788u -4.0106 -4.0106 10.525u 25.231u -4.0901 -4.0901 10.882u 26.702u -4.1669 -4.1669 11.238u 28.2u -4.241 -4.241 11.777u 30.517u -4.3483 -4.3483 12.317u 32.89u -4.4499 -4.4499 12.856u 35.316u -4.5462 -4.5462 13.396u 37.794u -4.6375 -4.6375 13.935u 40.319u -4.7239 -4.7239 14.475u 42.889u -4.8058 -4.8058 15.014u 45.503u -4.8834 -4.8834 15.554u 48.157u -4.957 -4.957 16.093u 50.85u -5.0266 -5.0266 16.633u 53.58u -5.0926 -5.0926 17.172u 56.344u -5.1552 -5.1552 17.992u 60.61u -5.2441 -5.2441 18.813u 64.945u -5.326 -5.326 19.633u 69.346u -5.4014 -5.4014 20.454u 73.806u -5.4709 -5.4709 21.274u 78.32u -5.5349 -5.5349 22.095u 82.885u -5.5939 -5.5939 22.915u 87.497u -5.6482 -5.6482 23.735u 92.151u -5.6982 -5.6982 24.556u 96.845u -5.7443 -5.7443 25.795u 104.u -5.8072 -5.8072 27.034u 111.23u -5.8627 -5.8627 28.273u 118.53u -5.9118 -5.9118 29.512u 125.88u -5.9551 -5.9551 30.751u 133.28u -5.9934 -5.9934 31.99u 140.73u -6.0272 -6.0272 33.229u 148.21u -6.0571 -6.0571 35.094u 159.55u -6.0957 -6.0957 36.96u 170.95u -6.1277 -6.1277 38.825u 182.41u -6.1542 -6.1542 40.691u 193.91u -6.1762 -6.1762 42.557u 205.45u -6.1945 -6.1945 44.422u 217.02u -6.2096 -6.2096 47.399u 235.53u -6.2287 -6.2287 50.376u 254.09u -6.2428 -6.2428 53.353u 272.69u -6.2533 -6.2533 56.33u 291.32u -6.261 -6.261 60.928u 320.13u -6.2693 -6.2693 65.527u 348.97u -6.2745 -6.2745 70.125u 377.83u -6.2777 -6.2777 77.371u 423.33u -6.2806 -6.2806 84.617u 468.85u -6.282 -6.282 96.283u 542.14u -6.2829 -6.2829 107.95u 615.43u -6.2831 -6.2831 129.97u 753.76u -6.2832 -6.2832 151.98u 892.1u -6.2832 -6.2832 216.02u 0.0012945 -6.2832 -6.2832 358.7u 0.002191 -6.2832 -6.2832 0.0012666 0.0078956 -6.283 -6.283 0.0028223 0.017669 -6.2823 -6.2823 0.004378 0.027441 -6.2809 -6.2809 0.0067429 0.042291 -6.2778 -6.2778 0.0091078 0.057132 -6.273 -6.273 0.011473 0.07196 -6.2671 -6.2671 0.013838 0.086772 -6.2595 -6.2595 0.016202 0.10156 -6.2509 -6.2509 0.01986 0.1244 -6.2347 -6.2347 0.023517 0.14716 -6.215 -6.215 0.027174 0.16985 -6.1922 -6.1922 0.030831 0.19245 -6.1659 -6.1659 0.034489 0.21495 -6.1367 -6.1367 0.038146 0.23733 -6.1039 -6.1039 0.041803 0.25959 -6.0681 -6.0681 0.04546 0.28171 -6.0289 -6.0289 0.049118 0.30368 -5.9868 -5.9868 0.052775 0.32549 -5.9412 -5.9412 0.056432 0.34713 -5.8928 -5.8928 0.062015 0.37981 -5.8132 -5.8132 0.067599 0.41202 -5.7254 -5.7254 0.073182 0.44373 -5.6316 -5.6316 0.078765 0.47488 -5.5298 -5.5298 0.084348 0.50546 -5.4223 -5.4223 0.089932 0.53541 -5.307 -5.307 0.095515 0.5647 -5.1863 -5.1863 0.1011 0.5933 -5.0581 -5.0581 0.10668 0.62117 -4.9247 -4.9247 0.11226 0.64827 -4.7843 -4.7843 0.11785 0.67458 -4.639 -4.639 0.12343 0.70006 -4.487 -4.487 0.12901 0.72467 -4.3304 -4.3304 0.1346 0.74839 -4.1675 -4.1675 0.14018 0.7712 -4.0005 -4.0005 0.14576 0.79305 -3.8276 -3.8276 0.15414 0.82399 -3.5616 -3.5616 0.16251 0.85265 -3.2829 -3.2829 0.17089 0.87895 -2.9979 -2.9979 0.17926 0.90282 -2.7018 -2.7018 0.18764 0.92419 -2.4011 -2.4011 0.19601 0.943 -2.0908 -2.0908 0.20439 0.9592 -1.7776 -1.7776 0.21276 0.97274 -1.4567 -1.4567 0.22114 0.98359 -1.1346 -1.1346 0.22951 0.99172 -0.80646 -0.80646 0.24257 0.99891 -0.29467 -0.29467 0.25563 0.99938 0.22294 0.22294 0.26869 0.99312 0.73522 0.73522 0.2803 0.98195 1.1899 1.1899 0.29875 0.95347 1.8964 1.8964 0.31306 0.92254 2.4255 2.4255 0.32737 0.88416 2.9381 2.9381 0.33822 0.85029 3.3066 3.3066 0.34907 0.81247 3.6662 3.6662 0.35992 0.77087 4.0023 4.0023 0.37077 0.72569 4.3262 4.3262 0.37916 0.68843 4.556 4.556 0.38755 0.64926 4.7821 4.7821 0.39594 0.60829 4.986 4.986 0.40433 0.56562 5.185 5.185 0.41272 0.52138 5.3606 5.3606 0.42111 0.4757 5.5302 5.5302 0.42776 0.43852 5.645 5.645 0.43442 0.40057 5.7606 5.7606 0.44107 0.36193 5.8554 5.8554 0.44772 0.32265 5.9506 5.9506 0.45438 0.2828 6.025 6.025 0.46103 0.24247 6.0992 6.0992 0.46621 0.21075 6.1397 6.1397 0.4714 0.17882 6.1854 6.1854 0.47658 0.14669 6.2129 6.2129 0.48176 0.11441 6.2453 6.2453 0.48694 0.082007 6.2597 6.2597 0.49077 0.05801 6.2755 6.2755 0.4946 0.033979 6.2773 6.2773 0.49765 0.014855 6.2851 6.2851 0.50069 -0.0042737 6.281 6.281 0.50263 -0.01648 6.2846 6.2846 0.50458 -0.028684 6.2785 6.2785 0.50652 -0.040884 6.2801 6.2801 0.50846 -0.053078 6.2723 6.2723 0.5115 -0.072104 6.2692 6.2692 0.51453 -0.091105 6.2551 6.2551 0.51756 -0.11007 6.2473 6.2473 0.5206 -0.129 6.2288 6.2288 0.52363 -0.14788 6.2163 6.2163 0.52667 -0.16671 6.1934 6.1934 0.5297 -0.18547 6.1763 6.1763 0.53274 -0.20417 6.1491 6.1491 0.53741 -0.23282 6.1132 6.1132 0.54208 -0.26127 6.0632 6.0632 0.54675 -0.28949 6.0167 6.0167 0.55143 -0.31746 5.9565 5.9565 0.5561 -0.34516 5.8996 5.8996 0.56077 -0.37257 5.8292 5.8292 0.56544 -0.39965 5.7621 5.7621 0.57012 -0.42638 5.6818 5.6818 0.57479 -0.45275 5.6048 5.6048 0.57946 -0.47873 5.5148 5.5148 0.58413 -0.5043 5.4281 5.4281 0.58881 -0.52943 5.3288 5.3288 0.59348 -0.5541 5.2328 5.2328 0.59815 -0.5783 5.1244 5.1244 0.60282 -0.602 5.0194 5.0194 0.60979 -0.63637 4.846 4.846 0.61676 -0.66952 4.6693 4.6693 0.62373 -0.70139 4.4777 4.4777 0.6307 -0.73192 4.2835 4.2835 0.63766 -0.76104 4.0751 4.0751 0.64463 -0.7887 3.8648 3.8648 0.6516 -0.81485 3.6413 3.6413 0.65857 -0.83944 3.4166 3.4166 0.66554 -0.86242 3.1796 3.1796 0.6725 -0.88375 2.9422 2.9422 0.67947 -0.90338 2.6935 2.6935 0.68644 -0.92129 2.4452 2.4452 0.69341 -0.93742 2.1867 2.1867 0.70038 -0.95177 1.9295 1.9295 0.71108 -0.97023 1.5213 1.5213 0.72178 -0.98431 1.1101 1.1101 0.73248 -0.99394 0.69 0.69 0.74318 -0.99908 0.27061 0.27061 0.75388 -0.9997 -0.1538 -0.1538 0.77146 -0.99093 -0.84429 -0.84429 0.78234 -0.97943 -1.2685 -1.2685 0.80048 -0.95014 -1.962 -1.962 0.81378 -0.92079 -2.4507 -2.4507 0.82708 -0.88501 -2.9285 -2.9285 0.84039 -0.84306 -3.3796 -3.3796 0.85036 -0.80772 -3.7062 -3.7062 0.86034 -0.7692 -4.0156 -4.0156 0.87031 -0.72766 -4.3119 -4.3119 0.88029 -0.68327 -4.5886 -4.5886 0.89026 -0.63619 -4.8499 -4.8499 0.89758 -0.60007 -5.0257 -5.0257 0.9049 -0.56267 -5.1965 -5.1965 0.91221 -0.52409 -5.3507 -5.3507 0.91953 -0.48441 -5.4991 -5.4991 0.92684 -0.4437 -5.6305 -5.6305 0.93416 -0.40205 -5.7554 -5.7554 0.94147 -0.35955 -5.8627 -5.8627 0.94879 -0.3163 -5.963 -5.963 0.95448 -0.28219 -6.0267 -6.0267 0.96017 -0.24771 -6.0897 -6.0897 0.96586 -0.21293 -6.138 -6.138 0.97155 -0.17787 -6.1853 -6.1853 0.97724 -0.14258 -6.218 -6.218 0.98103 -0.11895 -6.2402 -6.2402 0.98483 -0.095255 -6.2536 -6.2536 0.98862 -0.071504 -6.2687 -6.2687 0.99241 -0.047713 -6.2751 -6.2751 0.99621 -0.023895 -6.2829 -6.2829 0.9981 -0.01198 -6.2814 -6.2814 1. -62.847u -6.2847 -6.2847 Gnucap System status iterations: op=0, dc=0, tran=875, fourier=0, total=1374 transient timesteps: accepted=332, rejected=12, total=344 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/d_trln.ac.ckt.out000066400000000000000000000302031316501211100163630ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Freq v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 1. 0.5 0.5 1. 1. 20.061u 20.u 0.33333 0.33333 0.66667 0.66667 2.Meg 1. 0.5 0.5 0.95106 1. 0.30901 20.u 0.37808 0.33333 0.64235 0.66667 4.Meg 1. 0.5 0.5 0.80902 1. 0.58777 20.u 0.47568 0.33333 0.57383 0.66667 6.Meg 1. 0.5 0.5 0.58778 1. 0.809 20.u 0.57383 0.33333 0.47568 0.66667 8.Meg 1. 0.5 0.5 0.30902 1. 0.95104 20.u 0.64235 0.33333 0.37808 0.66667 10.Meg 1. 0.5 0.5 1.5708u 1. 0.99998 20.u 0.66667 0.33333 0.33333 0.66667 12.Meg 1. 0.5 0.5 0.30902 1. 0.95104 20.u 0.64235 0.33333 0.37808 0.66667 14.Meg 1. 0.5 0.5 0.58778 1. 0.809 20.u 0.57383 0.33333 0.47568 0.66667 16.Meg 1. 0.5 0.5 0.80902 1. 0.58777 20.u 0.47568 0.33333 0.57383 0.66667 18.Meg 1. 0.5 0.5 0.95106 1. 0.30901 20.u 0.37808 0.33333 0.64235 0.66667 20.Meg 1. 0.5 0.5 1. 1. 20.061u 20.u 0.33333 0.33333 0.66667 0.66667 22.Meg 1. 0.5 0.5 0.95106 1. 0.30901 20.u 0.37808 0.33333 0.64235 0.66667 24.Meg 1. 0.5 0.5 0.80902 1. 0.58777 20.u 0.47568 0.33333 0.57383 0.66667 26.Meg 1. 0.5 0.5 0.58778 1. 0.809 20.u 0.57383 0.33333 0.47568 0.66667 28.Meg 1. 0.5 0.5 0.30902 1. 0.95104 20.u 0.64235 0.33333 0.37808 0.66667 30.Meg 1. 0.5 0.5 1.5708u 1. 0.99998 20.u 0.66667 0.33333 0.33333 0.66667 32.Meg 1. 0.5 0.5 0.30902 1. 0.95104 20.u 0.64235 0.33333 0.37808 0.66667 34.Meg 1. 0.5 0.5 0.58778 1. 0.809 20.u 0.57383 0.33333 0.47568 0.66667 36.Meg 1. 0.5 0.5 0.80902 1. 0.58777 20.u 0.47568 0.33333 0.57383 0.66667 38.Meg 1. 0.5 0.5 0.95106 1. 0.30901 20.u 0.37808 0.33333 0.64235 0.66667 40.Meg 1. 0.5 0.5 1. 1. 20.061u 20.u 0.33333 0.33333 0.66667 0.66667 #Freq v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0.9999 0.9979 0.9979 0.9999 0.9999 0.0099305 0.0099 0.99592 0.99592 0.9989 0.9989 2.Meg 1. 0.998 0.998 1. 1.0515 0.99998 64.72u 0.9969 0.87892 0.99892 1.0367 4.Meg 1. 0.998 0.998 1. 1.2361 1. 34.026u 0.99804 0.69937 0.99865 1.1602 6.Meg 1. 0.998 0.998 1. 1.7013 1. 24.721u 0.99865 0.58011 0.99804 1.3987 8.Meg 1. 0.998 0.998 0.99998 3.236 1. 21.029u 0.99892 0.51837 0.9969 1.7578 10.Meg 0.9999 0.9979 0.9979 785.32u 499.95 0.9999 19.998u 0.9989 0.49945 0.99592 1.9918 12.Meg 1. 0.998 0.998 0.99998 3.236 1. 21.029u 0.99892 0.51837 0.9969 1.7578 14.Meg 1. 0.998 0.998 1. 1.7013 1. 24.721u 0.99865 0.58011 0.99804 1.3987 16.Meg 1. 0.998 0.998 1. 1.2361 1. 34.026u 0.99804 0.69937 0.99865 1.1602 18.Meg 1. 0.998 0.998 1. 1.0515 0.99998 64.72u 0.9969 0.87892 0.99892 1.0367 20.Meg 0.9999 0.9979 0.9979 0.9999 0.9999 0.0099305 0.0099 0.99592 0.99592 0.9989 0.9989 22.Meg 1. 0.998 0.998 1. 1.0515 0.99998 64.72u 0.9969 0.87892 0.99892 1.0367 24.Meg 1. 0.998 0.998 1. 1.2361 1. 34.026u 0.99804 0.69937 0.99865 1.1602 26.Meg 1. 0.998 0.998 1. 1.7013 1. 24.721u 0.99865 0.58011 0.99804 1.3987 28.Meg 1. 0.998 0.998 0.99998 3.236 1. 21.029u 0.99892 0.51837 0.9969 1.7578 30.Meg 0.9999 0.9979 0.9979 785.32u 499.95 0.9999 19.998u 0.9989 0.49945 0.99592 1.9918 32.Meg 1. 0.998 0.998 0.99998 3.236 1. 21.029u 0.99892 0.51837 0.9969 1.7578 34.Meg 1. 0.998 0.998 1. 1.7013 1. 24.721u 0.99865 0.58011 0.99804 1.3987 36.Meg 1. 0.998 0.998 1. 1.2361 1. 34.026u 0.99804 0.69937 0.99865 1.1602 38.Meg 1. 0.998 0.998 1. 1.0515 0.99998 64.72u 0.9969 0.87892 0.99892 1.0367 40.Meg 0.9999 0.9979 0.9979 0.9999 0.9999 0.0099305 0.0099 0.99592 0.99592 0.9989 0.9989 #Freq v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 1. 0.66667 0.66667 1. 1. 40.122u 39.998u 0.5 0.5 0.8 0.8 2.Meg 1. 0.66667 0.66667 0.98706 1.0379 0.54488 35.265u 0.55247 0.48709 0.78442 0.81412 4.Meg 1. 0.66667 0.66667 0.9399 1.1618 0.82376 28.029u 0.6529 0.45752 0.73588 0.85493 6.Meg 1. 0.66667 0.66667 0.82378 1.4015 0.93989 23.235u 0.73588 0.42747 0.6529 0.91503 8.Meg 1. 0.66667 0.66667 0.54489 1.7633 0.98705 20.757u 0.78442 0.40706 0.55247 0.97418 10.Meg 1. 0.66667 0.66667 3.1416u 2. 0.99999 20.u 0.8 0.4 0.5 1. 12.Meg 1. 0.66667 0.66667 0.54489 1.7633 0.98705 20.757u 0.78442 0.40706 0.55247 0.97418 14.Meg 1. 0.66667 0.66667 0.82378 1.4015 0.93989 23.235u 0.73588 0.42747 0.6529 0.91503 16.Meg 1. 0.66667 0.66667 0.9399 1.1618 0.82376 28.029u 0.6529 0.45752 0.73588 0.85493 18.Meg 1. 0.66667 0.66667 0.98706 1.0379 0.54488 35.265u 0.55247 0.48709 0.78442 0.81412 20.Meg 1. 0.66667 0.66667 1. 1. 40.122u 39.998u 0.5 0.5 0.8 0.8 22.Meg 1. 0.66667 0.66667 0.98706 1.0379 0.54488 35.265u 0.55247 0.48709 0.78442 0.81412 24.Meg 1. 0.66667 0.66667 0.9399 1.1618 0.82376 28.029u 0.6529 0.45752 0.73588 0.85493 26.Meg 1. 0.66667 0.66667 0.82378 1.4015 0.93989 23.235u 0.73588 0.42747 0.6529 0.91503 28.Meg 1. 0.66667 0.66667 0.54489 1.7633 0.98705 20.757u 0.78442 0.40706 0.55247 0.97418 30.Meg 1. 0.66667 0.66667 3.1416u 2. 0.99999 20.u 0.8 0.4 0.5 1. 32.Meg 1. 0.66667 0.66667 0.54489 1.7633 0.98705 20.757u 0.78442 0.40706 0.55247 0.97418 34.Meg 1. 0.66667 0.66667 0.82378 1.4015 0.93989 23.235u 0.73588 0.42747 0.6529 0.91503 36.Meg 1. 0.66667 0.66667 0.9399 1.1618 0.82376 28.029u 0.6529 0.45752 0.73588 0.85493 38.Meg 1. 0.66667 0.66667 0.98706 1.0379 0.54488 35.265u 0.55247 0.48709 0.78442 0.81412 40.Meg 1. 0.66667 0.66667 1. 1. 40.122u 39.998u 0.5 0.5 0.8 0.8 #Freq v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 1. 0.33333 0.33333 1. 1. 10.031u 9.9999u 0.2 0.2 0.5 0.5 2.Meg 1. 0.33333 0.33333 0.8385 0.88166 0.16036 10.378u 0.23085 0.20353 0.46932 0.48709 4.Meg 1. 0.33333 0.33333 0.56692 0.70075 0.34144 11.618u 0.30501 0.21373 0.3938 0.45752 6.Meg 1. 0.33333 0.33333 0.34144 0.58089 0.5669 14.015u 0.3938 0.22876 0.30501 0.42747 8.Meg 1. 0.33333 0.33333 0.16036 0.51893 0.83848 17.633u 0.46932 0.24354 0.23085 0.40706 10.Meg 1. 0.33333 0.33333 785.4n 0.5 0.99996 19.999u 0.5 0.25 0.2 0.4 12.Meg 1. 0.33333 0.33333 0.16036 0.51893 0.83848 17.633u 0.46932 0.24354 0.23085 0.40706 14.Meg 1. 0.33333 0.33333 0.34144 0.58089 0.5669 14.015u 0.3938 0.22876 0.30501 0.42747 16.Meg 1. 0.33333 0.33333 0.56692 0.70075 0.34144 11.618u 0.30501 0.21373 0.3938 0.45752 18.Meg 1. 0.33333 0.33333 0.8385 0.88166 0.16036 10.378u 0.23085 0.20353 0.46932 0.48709 20.Meg 1. 0.33333 0.33333 1. 1. 10.031u 9.9999u 0.2 0.2 0.5 0.5 22.Meg 1. 0.33333 0.33333 0.8385 0.88166 0.16036 10.378u 0.23085 0.20353 0.46932 0.48709 24.Meg 1. 0.33333 0.33333 0.56692 0.70075 0.34144 11.618u 0.30501 0.21373 0.3938 0.45752 26.Meg 1. 0.33333 0.33333 0.34144 0.58089 0.5669 14.015u 0.3938 0.22876 0.30501 0.42747 28.Meg 1. 0.33333 0.33333 0.16036 0.51893 0.83848 17.633u 0.46932 0.24354 0.23085 0.40706 30.Meg 1. 0.33333 0.33333 785.4n 0.5 0.99996 19.999u 0.5 0.25 0.2 0.4 32.Meg 1. 0.33333 0.33333 0.16036 0.51893 0.83848 17.633u 0.46932 0.24354 0.23085 0.40706 34.Meg 1. 0.33333 0.33333 0.34144 0.58089 0.5669 14.015u 0.3938 0.22876 0.30501 0.42747 36.Meg 1. 0.33333 0.33333 0.56692 0.70075 0.34144 11.618u 0.30501 0.21373 0.3938 0.45752 38.Meg 1. 0.33333 0.33333 0.8385 0.88166 0.16036 10.378u 0.23085 0.20353 0.46932 0.48709 40.Meg 1. 0.33333 0.33333 1. 1. 10.031u 9.9999u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=0, fourier=0, total=84 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_trln.tr.100.im.ckt.out000066400000000000000000001106621316501211100173400ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 55.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 60.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 65.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 70.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 75.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 80.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 85.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 90.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 95.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 100.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 35.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 40.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 45.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 50.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 55.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 60.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 65.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 70.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 75.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 80.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 85.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 90.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 95.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 100.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 105.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 110.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 115.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 120.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 125.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 130.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 135.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 140.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 145.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 150.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 155.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 160.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 165.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 170.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 175.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 180.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 185.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 190.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 195.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 200.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 205.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 210.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 215.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 220.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 225.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 230.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 235.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 240.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 245.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 250.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 255.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 260.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 265.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 270.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 275.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 280.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 285.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 290.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 295.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 300.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 35.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 40.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 45.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 50.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 55.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 60.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 65.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 70.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 75.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 80.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 85.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 90.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 95.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 100.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 105.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 110.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 115.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 120.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 125.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 130.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 135.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 140.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 145.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 150.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 155.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 160.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 165.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 170.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 175.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 180.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 185.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 190.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 195.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 200.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 205.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 210.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 215.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 220.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 225.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 230.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 235.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 240.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 245.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 250.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 255.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 260.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 265.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 270.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 275.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 280.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 285.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 290.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 295.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 300.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 35.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 40.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 45.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 50.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 55.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 60.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 65.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 70.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 75.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 80.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 85.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 90.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 95.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.05n 1. 0.33333 0.33333 0.77778 0.66889 -0.11109 13.289u 0.18519 0.22198 0.48148 0.44494 105.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 110.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 115.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 120.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 125.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 130.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 135.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 140.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 145.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 150.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 155.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 160.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 165.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 170.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 175.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 180.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 185.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 190.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 195.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 200.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 205.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 210.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 215.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 220.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 225.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 230.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 235.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 240.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 245.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 250.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 255.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 260.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 265.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 270.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 275.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 280.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 285.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 290.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 295.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 305.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 310.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 315.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 320.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 325.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 330.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 335.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 340.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 345.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 350.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 355.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 360.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 365.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 370.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 375.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 380.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 385.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 390.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 395.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 400.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 405.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 410.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 415.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 420.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 425.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 430.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 435.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 440.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 445.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 450.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 455.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 460.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 465.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 470.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 475.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 480.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 485.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 490.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 495.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 500.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 505.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 510.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 515.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 520.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 525.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 530.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 535.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 540.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 545.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 550.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 555.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 560.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 565.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 570.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 575.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 580.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 585.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 590.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 595.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 600.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=304, fourier=0, total=1050 transient timesteps: accepted=270, rejected=0, total=270 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_trln.tr.100.nim.ckt.out000066400000000000000000001106621316501211100175160ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 55.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 60.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 65.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 70.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 75.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 80.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 85.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 90.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 95.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 100.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 35.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 40.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 45.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 50.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 55.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 60.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 65.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 70.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 75.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 80.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 85.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 90.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 95.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 100.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 105.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 110.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 115.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 120.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 125.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 130.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 135.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 140.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 145.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 150.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 155.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 160.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 165.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 170.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 175.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 180.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 185.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 190.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 195.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 200.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 205.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 210.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 215.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 220.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 225.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 230.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 235.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 240.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 245.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 250.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 255.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 260.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 265.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 270.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 275.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 280.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 285.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 290.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 295.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 300.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 35.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 40.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 45.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 50.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 55.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 60.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 65.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 70.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 75.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 80.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 85.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 90.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 95.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 100.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 105.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 110.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 115.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 120.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 125.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 130.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 135.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 140.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 145.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 150.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 155.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 160.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 165.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 170.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 175.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 180.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 185.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 190.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 195.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 200.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 205.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 210.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 215.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 220.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 225.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 230.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 235.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 240.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 245.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 250.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 255.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 260.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 265.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 270.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 275.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 280.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 285.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 290.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 295.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 300.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 35.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 40.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 45.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 50.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 55.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 60.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 65.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 70.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 75.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 80.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 85.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 90.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 95.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.05n 1. 0.33333 0.33333 0.77778 0.66889 -0.11109 13.289u 0.18519 0.22198 0.48148 0.44494 105.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 110.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 115.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 120.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 125.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 130.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 135.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 140.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 145.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 150.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 155.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 160.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 165.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 170.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 175.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 180.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 185.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 190.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 195.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 200.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 205.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 210.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 215.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 220.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 225.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 230.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 235.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 240.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 245.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 250.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 255.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 260.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 265.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 270.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 275.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 280.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 285.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 290.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 295.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 305.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 310.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 315.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 320.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 325.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 330.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 335.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 340.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 345.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 350.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 355.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 360.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 365.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 370.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 375.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 380.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 385.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 390.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 395.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 400.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 405.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 410.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 415.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 420.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 425.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 430.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 435.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 440.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 445.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 450.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 455.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 460.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 465.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 470.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 475.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 480.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 485.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 490.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 495.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 500.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 505.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 510.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 515.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 520.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 525.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 530.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 535.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 540.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 545.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 550.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 555.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 560.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 565.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 570.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 575.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 580.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 585.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 590.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 595.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 600.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=304, fourier=0, total=1050 transient timesteps: accepted=270, rejected=0, total=270 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_trln.tr.300.im.ckt.out000066400000000000000000001106621316501211100173420ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 55.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 60.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 65.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 70.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 75.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 80.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 85.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 90.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 95.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 100.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 35.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 40.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 45.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 50.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 55.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 60.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 65.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 70.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 75.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 80.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 85.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 90.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 95.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 100.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 105.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 110.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 115.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 120.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 125.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 130.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 135.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 140.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 145.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 150.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 155.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 160.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 165.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 170.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 175.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 180.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 185.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 190.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 195.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 200.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 205.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 210.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 215.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 220.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 225.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 230.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 235.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 240.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 245.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 250.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 255.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 260.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 265.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 270.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 275.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 280.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 285.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 290.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 295.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 300.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 35.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 40.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 45.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 50.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 55.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 60.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 65.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 70.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 75.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 80.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 85.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 90.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 95.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 100.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 105.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 110.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 115.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 120.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 125.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 130.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 135.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 140.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 145.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 150.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 155.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 160.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 165.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 170.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 175.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 180.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 185.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 190.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 195.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 200.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 205.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 210.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 215.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 220.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 225.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 230.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 235.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 240.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 245.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 250.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 255.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 260.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 265.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 270.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 275.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 280.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 285.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 290.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 295.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 300.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 35.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 40.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 45.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 50.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 55.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 60.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 65.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 70.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 75.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 80.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 85.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 90.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 95.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 105.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 110.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 115.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 120.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 125.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 130.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 135.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 140.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 145.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 150.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 155.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 160.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 165.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 170.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 175.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 180.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 185.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 190.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 195.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 200.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 205.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 210.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 215.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 220.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 225.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 230.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 235.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 240.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 245.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 250.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 255.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 260.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 265.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 270.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 275.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 280.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 285.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 290.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 295.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.05n 1. 0.33333 0.33333 0.99726 0.99591 -0.0013614 10.04u 0.2 0.2 0.5 0.49999 305.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 310.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 315.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 320.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 325.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 330.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 335.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 340.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 345.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 350.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 355.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 360.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 365.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 370.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 375.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 380.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 385.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 390.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 395.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 400.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 405.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 410.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 415.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 420.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 425.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 430.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 435.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 440.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 445.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 450.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 455.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 460.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 465.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 470.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 475.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 480.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 485.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 490.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 495.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 500.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 505.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 510.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 515.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 520.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 525.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 530.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 535.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 540.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 545.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 550.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 555.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 560.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 565.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 570.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 575.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 580.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 585.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 590.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 595.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 600.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=184, fourier=0, total=1050 transient timesteps: accepted=270, rejected=0, total=270 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_trln.tr.300.nim.ckt.out000066400000000000000000001106621316501211100175200ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 55.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 60.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 65.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 70.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 75.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 80.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 85.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 90.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 95.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 100.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 35.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 40.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 45.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 50.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 55.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 60.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 65.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 70.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 75.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 80.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 85.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 90.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 95.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 100.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 105.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 110.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 115.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 120.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 125.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 130.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 135.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 140.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 145.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 150.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 155.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 160.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 165.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 170.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 175.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 180.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 185.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 190.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 195.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 200.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 205.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 210.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 215.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 220.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 225.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 230.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 235.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 240.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 245.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 250.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 255.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 260.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 265.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 270.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 275.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 280.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 285.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 290.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 295.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 300.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 35.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 40.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 45.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 50.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 55.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 60.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 65.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 70.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 75.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 80.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 85.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 90.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 95.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 100.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 105.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 110.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 115.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 120.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 125.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 130.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 135.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 140.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 145.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 150.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 155.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 160.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 165.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 170.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 175.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 180.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 185.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 190.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 195.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 200.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 205.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 210.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 215.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 220.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 225.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 230.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 235.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 240.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 245.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 250.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 255.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 260.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 265.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 270.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 275.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 280.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 285.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 290.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 295.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 300.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 35.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 40.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 45.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 50.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 55.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 60.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 65.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 70.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 75.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 80.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 85.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 90.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 95.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 105.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 110.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 115.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 120.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 125.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 130.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 135.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 140.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 145.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 150.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 155.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 160.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 165.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 170.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 175.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 180.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 185.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 190.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 195.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 200.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 205.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 210.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 215.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 220.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 225.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 230.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 235.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 240.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 245.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 250.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 255.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 260.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 265.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 270.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 275.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 280.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 285.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 290.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 295.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.05n 1. 0.33333 0.33333 0.99726 0.99591 -0.0013614 10.04u 0.2 0.2 0.5 0.49999 305.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 310.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 315.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 320.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 325.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 330.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 335.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 340.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 345.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 350.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 355.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 360.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 365.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 370.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 375.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 380.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 385.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 390.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 395.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 400.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 405.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 410.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 415.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 420.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 425.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 430.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 435.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 440.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 445.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 450.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 455.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 460.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 465.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 470.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 475.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 480.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 485.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 490.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 495.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 500.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 505.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 510.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 515.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 520.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 525.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 530.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 535.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 540.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 545.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 550.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 555.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 560.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 565.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 570.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 575.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 580.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 585.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 590.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 595.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 600.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=184, fourier=0, total=1050 transient timesteps: accepted=270, rejected=0, total=270 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_trln.tr.im.ckt.out000066400000000000000000001100431316501211100170320ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 55.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 60.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 65.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 70.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 75.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 80.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 85.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 90.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 95.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 100.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 35.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 40.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 45.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 50.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 55.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 60.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 65.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 70.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 75.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 80.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 85.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 90.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 95.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 100.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 105.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 110.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 115.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 120.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 125.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 130.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 135.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 140.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 145.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 150.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 155.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 160.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 165.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 170.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 175.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 180.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 185.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 190.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 195.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 200.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 205.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 210.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 215.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 220.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 225.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 230.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 235.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 240.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 245.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 250.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 255.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 260.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 265.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 270.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 275.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 280.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 285.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 290.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 295.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 300.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 35.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 40.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 45.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 50.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 55.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 60.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 65.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 70.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 75.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 80.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 85.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 90.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 95.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 100.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 105.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 110.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 115.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 120.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 125.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 130.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 135.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 140.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 145.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 150.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 155.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 160.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 165.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 170.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 175.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 180.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 185.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 190.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 195.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 200.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 205.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 210.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 215.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 220.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 225.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 230.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 235.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 240.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 245.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 250.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 255.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 260.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 265.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 270.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 275.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 280.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 285.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 290.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 295.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 300.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 35.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 40.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 45.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 50.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 55.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 60.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 65.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 70.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 75.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 80.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 85.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 90.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 95.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 105.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 110.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 115.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 120.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 125.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 130.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 135.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 140.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 145.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 150.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 155.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 160.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 165.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 170.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 175.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 180.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 185.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 190.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 195.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 200.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 205.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 210.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 215.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 220.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 225.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 230.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 235.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 240.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 245.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 250.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 255.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 260.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 265.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 270.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 275.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 280.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 285.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 290.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 295.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 305.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 310.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 315.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 320.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 325.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 330.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 335.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 340.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 345.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 350.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 355.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 360.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 365.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 370.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 375.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 380.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 385.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 390.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 395.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 400.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 405.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 410.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 415.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 420.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 425.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 430.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 435.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 440.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 445.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 450.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 455.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 460.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 465.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 470.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 475.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 480.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 485.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 490.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 495.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 500.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 505.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 510.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 515.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 520.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 525.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 530.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 535.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 540.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 545.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 550.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 555.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 560.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 565.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 570.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 575.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 580.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 585.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 590.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 595.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 600.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=359, fourier=0, total=1044 transient timesteps: accepted=268, rejected=0, total=268 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_trln.tr.m.ckt.out000066400000000000000000000062231316501211100166650ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# really 2 in parallel R2s ( 1 21 ) 50. T2a ( 21 0 22 0 ) z0=100 f=10meg nl=.25 T2b ( 21 0 22 0 ) z0=100 f=10meg nl=.25 R2l ( 22 0 ) 50. *# n=2 R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=100 f=10meg nl=.25 m=2 R3l ( 32 0 ) 50. *# not R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=100 f=10meg nl=.25 R4l ( 42 0 ) 50. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.66667 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.66667 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.66667 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.66667 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.66667 0. 55.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.66667 0.44444 60.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.66667 0.44444 65.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.66667 0.44444 70.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.66667 0.44444 75.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.66667 0.44444 80.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.51852 0.44444 85.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.51852 0.44444 90.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.51852 0.44444 95.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.51852 0.44444 100.n 1. 0.5 0.5 0.5 0.5 0.5 0.5 0.51852 0.44444 Gnucap System status iterations: op=0, dc=0, tran=59, fourier=0, total=81 transient timesteps: accepted=22, rejected=0, total=22 nodes: user=9, subckt=0, model=0, total=9 dctran density=28.4%, ac density=38.3% tests/==out/d_trln.tr.nim.ckt.out000066400000000000000000001100431316501211100172100ustar00rootroot00000000000000#Transmission lines V1 ( 1 0 ) generator scale= 1. *# matched R1s ( 1 11 ) 50. T1 ( 11 0 12 0 ) z0=50 f=10meg nl=.25 R1l ( 12 0 ) 50. *# open stub R2s ( 1 21 ) 50. T2 ( 21 0 22 0 ) z0=50 f=10meg nl=.25 R2l ( 22 0 ) 1.E+99 *# shorted stub R3s ( 1 31 ) 50. T3 ( 31 0 32 0 ) z0=50 f=10meg nl=.25 R3l ( 32 0 ) 0.001 *# lo-z load R4s ( 1 41 ) 50. T4 ( 41 0 42 0 ) z0=50 f=10meg nl=.25 R4l ( 42 0 ) 25. *# hi-z load R5s ( 1 51 ) 50. T5 ( 51 0 52 0 ) z0=50 f=10meg nl=.25 R5l ( 52 0 ) 100. #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 35.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 40.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 45.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 50.n 1. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 0.5 0. 55.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 60.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 65.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 70.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 75.n 1. 0.5 0.5 0.5 1. 0.5 20.u 0.5 0.33333 0.5 0.66667 80.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 85.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 90.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 95.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 100.n 1. 0.5 0.5 1. 1. 20.u 20.u 0.33333 0.33333 0.66667 0.66667 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 35.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 40.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 45.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 50.n 1. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 0.998 0. 55.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 60.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 65.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 70.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 75.n 1. 0.998 0.998 0.998 1.996 0.998 39.919u 0.998 0.66534 0.998 1.3307 80.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 85.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 90.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 95.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 100.n 1. 0.998 0.998 1.002 1.996 0.99402 39.919u 0.99667 0.66534 0.99933 1.3307 105.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 110.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 115.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 120.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 125.n 1. 0.998 0.998 1.002 0.0079681 0.99402 79.678u 0.99667 0.88623 0.99933 0.88888 130.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 135.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 140.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 145.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 150.n 1. 0.998 0.998 0.99802 0.0079681 0.99005 79.678u 0.99623 0.88623 0.99889 0.88888 155.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 160.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 165.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 170.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 175.n 1. 0.998 0.998 0.99802 1.9881 0.99005 119.28u 0.99623 0.95956 0.99889 1.0356 180.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 185.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 190.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 195.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 200.n 1. 0.998 0.998 1.002 1.9881 0.9861 119.28u 0.99609 0.95956 0.99904 1.0356 205.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 210.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 215.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 220.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 225.n 1. 0.998 0.998 1.002 0.015873 0.9861 158.71u 0.99609 0.98391 0.99904 0.98686 230.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 235.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 240.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 245.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 250.n 1. 0.998 0.998 0.99803 0.015873 0.98216 158.71u 0.99604 0.98391 0.99899 0.98686 255.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 260.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 265.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 270.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 275.n 1. 0.998 0.998 0.99803 1.9802 0.98216 197.99u 0.99604 0.992 0.99899 1.003 280.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 285.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 290.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 295.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 300.n 1. 0.998 0.998 1.002 1.9802 0.97824 197.99u 0.99602 0.992 0.999 1.003 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 35.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 40.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 45.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 50.n 1. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 0.66667 0. 55.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 60.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 65.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 70.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 75.n 1. 0.66667 0.66667 0.66667 1.3333 0.66667 26.666u 0.66667 0.44444 0.66667 0.88889 80.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 85.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 90.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 95.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 100.n 1. 0.66667 0.66667 1.1111 1.3333 0.22224 26.666u 0.51852 0.44444 0.81481 0.88889 105.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 110.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 115.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 120.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 125.n 1. 0.66667 0.66667 1.1111 0.88889 0.22224 35.554u 0.51852 0.49383 0.81481 0.79012 130.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 135.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 140.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 145.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 150.n 1. 0.66667 0.66667 0.96296 0.88889 0.074104 35.554u 0.50206 0.49383 0.79835 0.79012 155.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 160.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 165.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 170.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 175.n 1. 0.66667 0.66667 0.96296 1.037 0.074104 38.517u 0.50206 0.49931 0.79835 0.8011 180.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 185.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 190.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 195.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 200.n 1. 0.66667 0.66667 1.0123 1.037 0.024727 38.517u 0.50023 0.49931 0.80018 0.8011 205.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 210.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 215.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 220.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 225.n 1. 0.66667 0.66667 1.0123 0.98765 0.024727 39.505u 0.50023 0.49992 0.80018 0.79988 230.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 235.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 240.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 245.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 250.n 1. 0.66667 0.66667 0.99588 0.98765 0.0082686 39.505u 0.50002 0.49992 0.79998 0.79988 255.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 260.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 265.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 270.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 275.n 1. 0.66667 0.66667 0.99588 1.0041 0.0082686 39.834u 0.50002 0.49999 0.79998 0.80001 280.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 285.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 290.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 295.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 300.n 1. 0.66667 0.66667 1.0014 1.0041 0.0027828 39.834u 0.5 0.49999 0.8 0.80001 #Time v(1) v(11) v(12) v(21) v(22) v(31) v(32) v(41) v(42) v(51) v(52) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 50.p 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 5.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 15.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 20.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 25.n 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 30.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 35.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 40.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 45.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 50.n 1. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 0.33333 0. 55.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 60.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 65.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 70.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 75.n 1. 0.33333 0.33333 0.33333 0.66667 0.33333 13.333u 0.33333 0.22222 0.33333 0.44444 80.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 85.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 90.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 95.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 100.n 1. 0.33333 0.33333 0.77778 0.66667 -0.11109 13.333u 0.18519 0.22222 0.48148 0.44444 105.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 110.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 115.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 120.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 125.n 1. 0.33333 0.33333 0.77778 0.88889 -0.11109 8.8889u 0.18519 0.19753 0.48148 0.49383 130.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 135.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 140.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 145.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 150.n 1. 0.33333 0.33333 0.92593 0.88889 0.037043 8.8889u 0.20165 0.19753 0.49794 0.49383 155.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 160.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 165.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 170.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 175.n 1. 0.33333 0.33333 0.92593 0.96296 0.037043 10.37u 0.20165 0.20027 0.49794 0.49931 180.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 185.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 190.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 195.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 200.n 1. 0.33333 0.33333 0.97531 0.96296 -0.012334 10.37u 0.19982 0.20027 0.49977 0.49931 205.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 210.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 215.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 220.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 225.n 1. 0.33333 0.33333 0.97531 0.98765 -0.012334 9.8765u 0.19982 0.19997 0.49977 0.49992 230.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 235.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 240.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 245.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 250.n 1. 0.33333 0.33333 0.99177 0.98765 0.0041244 9.8765u 0.20002 0.19997 0.49997 0.49992 255.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 260.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 265.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 270.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 275.n 1. 0.33333 0.33333 0.99177 0.99588 0.0041244 10.041u 0.20002 0.2 0.49997 0.49999 280.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 285.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 290.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 295.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 300.n 1. 0.33333 0.33333 0.99726 0.99588 -0.0013614 10.041u 0.2 0.2 0.5 0.49999 305.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 310.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 315.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 320.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 325.n 1. 0.33333 0.33333 0.99726 0.99863 -0.0013614 9.9862u 0.2 0.2 0.5 0.5 330.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 335.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 340.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 345.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 350.n 1. 0.33333 0.33333 0.99909 0.99863 467.12u 9.9862u 0.2 0.2 0.5 0.5 355.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 360.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 365.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 370.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 375.n 1. 0.33333 0.33333 0.99909 0.99954 467.12u 10.004u 0.2 0.2 0.5 0.5 380.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 385.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 390.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 395.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 400.n 1. 0.33333 0.33333 0.99969 0.99954 -142.37u 10.004u 0.2 0.2 0.5 0.5 405.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 410.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 415.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 420.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 425.n 1. 0.33333 0.33333 0.99969 0.99985 -142.37u 9.9984u 0.2 0.2 0.5 0.5 430.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 435.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 440.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 445.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 450.n 1. 0.33333 0.33333 0.9999 0.99985 60.787u 9.9984u 0.2 0.2 0.5 0.5 455.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 460.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 465.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 470.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 475.n 1. 0.33333 0.33333 0.9999 0.99995 60.787u 10.u 0.2 0.2 0.5 0.5 480.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 485.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 490.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 495.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 500.n 1. 0.33333 0.33333 0.99997 0.99995 -6.9286u 10.u 0.2 0.2 0.5 0.5 505.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 510.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 515.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 520.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 525.n 1. 0.33333 0.33333 0.99997 0.99998 -6.9286u 9.9997u 0.2 0.2 0.5 0.5 530.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 535.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 540.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 545.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 550.n 1. 0.33333 0.33333 0.99999 0.99998 15.643u 9.9997u 0.2 0.2 0.5 0.5 555.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 560.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 565.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 570.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 575.n 1. 0.33333 0.33333 0.99999 0.99999 15.643u 10.u 0.2 0.2 0.5 0.5 580.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 585.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 590.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 595.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 600.n 1. 0.33333 0.33333 1. 0.99999 8.1191u 10.u 0.2 0.2 0.5 0.5 Gnucap System status iterations: op=0, dc=0, tran=359, fourier=0, total=1044 transient timesteps: accepted=268, rejected=0, total=268 nodes: user=11, subckt=0, model=0, total=11 dctran density=24.0%, ac density=32.2% tests/==out/d_vccap.1.ckt.out000066400000000000000000000021771316501211100162660ustar00rootroot00000000000000' #Time v(1) v(2) v(3) v(4) v(5) v(6) 0. 0. 0. 1. 0. 2. 0. 0.1 1. 0.095179 1. 0.095179 2. 0.095179 0.2 1. 0.18135 1. 0.18135 2. 0.18135 0.3 1. 0.25932 1. 0.25932 2. 0.25932 0.4 1. 0.32986 1. 0.32986 2. 0.32986 0.5 1. 0.39368 1. 0.39368 2. 0.39368 0.6 1. 0.45143 1. 0.45143 2. 0.45143 0.7 1. 0.50367 1. 0.50367 2. 0.50367 0.8 1. 0.55094 1. 0.55094 2. 0.55094 0.9 1. 0.59371 1. 0.59371 2. 0.59371 1. 1. 0.6324 1. 0.6324 2. 0.6324 Gnucap System status iterations: op=0, dc=0, tran=58, fourier=0, total=77 transient timesteps: accepted=16, rejected=3, total=19 nodes: user=6, subckt=0, model=0, total=6 dctran density=55.6%, ac density=55.6% tests/==out/d_vccap.2.ckt.out000066400000000000000000000061231316501211100162620ustar00rootroot00000000000000' #Time v(1) v(2) v(3) v(4) v(5) v(6) q(C1) q(C2) q(C3) dq(C1) dq(C2) dq(C3) dqdt(C1) dqdt(C2) + dqdt(C3) i(C1) i(C2) i(C3) timef(C1) timef(C2) timef(C3) 0. 0. 0. 1. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. Inf Inf Inf 0.1 1. 0.095179 1. 0.095179 2. 0.095179 95.179n 95.179n 190.36n 44.249n 44.249n 88.498n 926.95n 926.95n + 1.8539u 904.82n 38.814u 161.42u 0.32117 0.32117 0.32117 0.2 1. 0.18135 1. 0.18135 2. 0.18135 181.35n 181.35n 362.7n 86.173n 86.173n 172.35n 861.73n 861.73n + 1.7235u 818.65n 17.192u 74.383u 0.44584 0.44584 0.44584 0.3 1. 0.25932 1. 0.25932 2. 0.25932 259.32n 259.32n 518.64n 77.966n 77.966n 155.93n 779.66n 779.66n + 1.5593u 740.68n 15.554u 71.109u 0.6071 0.6071 0.6071 0.4 1. 0.32986 1. 0.32986 2. 0.32986 329.86n 329.86n 659.72n 70.541n 70.541n 141.08n 705.41n 705.41n + 1.4108u 670.14n 14.073u 68.146u 0.7285 0.7285 0.7285 0.5 1. 0.39368 1. 0.39368 2. 0.39368 393.68n 393.68n 787.37n 63.823n 63.823n 127.65n 638.23n 638.23n + 1.2765u 606.32n 12.733u 65.465u 0.86027 0.86027 0.86027 0.6 1. 0.45143 1. 0.45143 2. 0.45143 451.43n 451.43n 902.85n 57.744n 57.744n 115.49n 577.44n 577.44n + 1.1549u 548.57n 11.52u 63.04u 0.98988 0.98988 0.98988 0.7 1. 0.50367 1. 0.50367 2. 0.50367 503.67n 503.67n 1.0073u 52.245n 52.245n 104.49n 522.45n 522.45n + 1.0449u 496.33n 10.423u 60.846u 1.1181 1.1181 1.1181 0.8 1. 0.55094 1. 0.55094 2. 0.55094 550.94n 550.94n 1.1019u 47.269n 47.269n 94.539n 472.69n 472.69n + 945.39n 449.06n 9.4302u 58.86u 1.2454 1.2454 1.2454 0.9 1. 0.59371 1. 0.59371 2. 0.59371 593.71n 593.71n 1.1874u 42.767n 42.767n 85.535n 427.67n 427.67n + 855.35n 406.29n 8.5321u 57.064u 1.3721 1.3721 1.3721 1. 1. 0.6324 1. 0.6324 2. 0.6324 632.4n 632.4n 1.2648u 38.694n 38.694n 77.389n 386.94n 386.94n + 773.89n 367.6n 7.7195u 55.439u 1.4985 1.4985 1.4985 Gnucap System status iterations: op=0, dc=0, tran=74, fourier=0, total=93 transient timesteps: accepted=16, rejected=3, total=19 nodes: user=6, subckt=0, model=0, total=6 dctran density=55.6%, ac density=55.6% tests/==out/d_vcg.1.ckt.out000066400000000000000000000133351316501211100157470ustar00rootroot00000000000000' # v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0. 0. 0. 0. 0. 0. -1. 0.5 1. 1. 2. 1. 1. -2. 0.5 1. 0.5 2. 0.5 2. -3. 0.5 1. 0.5 2. 0.5 3. 27. 0.5 1. 0.5 2. 0.5 4. #Time v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0. 0. 0. 0. 0. 0. -1. 0.5 1. 1. 1. 1. 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 0. 0.5 1. 0.5 1. 0.5 4. 0. 0.5 1. 0.5 1. 0.5 0. -1. 0.5 1. 0.5 1.0063 0.49843 1. -2. 0.5 1. 0.5 1.0063 0.49843 2. -3. 0.5 1. 0.5 1.0063 0.49843 3. 1.u 0.5 1. 0.5 1.0063 0.49843 4. 0. 0.5 1. 0.5 1.0063 0.49843 0. -1. 0.5 1. 0.5 1.0126 0.49687 1. -2. 0.5 1. 0.5 1.0126 0.49688 2. -3. 0.5 1. 0.5 1.0126 0.49688 3. 2.u 0.5 1. 0.5 1.0126 0.49688 4. 0. 0.5 1. 0.5 1.0126 0.49688 0. -1. 0.5 1. 0.5 1.1004 0.4752 1. -2. 0.5 1. 0.5 1.1004 0.47611 2. -3. 0.5 1. 0.5 1.1004 0.47611 3. 16.u 0.5 1. 0.5 1.1004 0.47611 4. 0. 0.5 1. 0.5 1.1004 0.47611 0. -1. 0.5 1. 0.5 1.5878 0.36562 1. -2. 0.5 1. 0.5 1.5878 0.38643 2. -3. 0.5 1. 0.5 1.5878 0.38643 3. 100.u 0.5 1. 0.5 1.5878 0.38643 4. 0. 0.5 1. 0.5 1.5878 0.38643 0. -1. 0.5 1. 0.5 1.9511 0.33218 1. -2. 0.5 1. 0.5 1.9511 0.33886 2. -3. 0.5 1. 0.5 1.9511 0.33886 3. 200.u 0.5 1. 0.5 1.9511 0.33886 4. 0. 0.5 1. 0.5 1.9511 0.33886 0. -1. 0.5 1. 0.5 1.9511 0.33886 1. -2. 0.5 1. 0.5 1.9511 0.33886 2. 300.u 0.5 1. 0.5 1.9511 0.33886 3. 0. 0.5 1. 0.5 1.9511 0.33886 0. -1. 0.5 1. 0.5 1.5878 0.38058 1. -2. 0.5 1. 0.5 1.5878 0.38643 2. -3. 0.5 1. 0.5 1.5878 0.38643 3. 400.u 0.5 1. 0.5 1.5878 0.38643 4. 0. 0.5 1. 0.5 1.5878 0.38643 0. -1. 0.5 1. 0.5 1. 0.4742 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 500.u 0.5 1. 0.5 1. 0.5 4. 0. 0.5 1. 0.5 1. 0.5 0. -1. 0.5 1. 0.5 0.41221 0.64695 1. -2. 0.5 1. 0.5 0.41221 0.70811 2. -3. 0.5 1. 0.5 0.41221 0.70811 3. 600.u 0.5 1. 0.5 0.41221 0.70811 4. 0. 0.5 1. 0.5 0.41221 0.70811 0. -1. 0.5 1. 0.5 0.048943 0.89026 1. -2. 0.5 1. 0.5 0.048943 0.95334 2. -3. 0.5 1. 0.5 0.048943 0.95334 3. 700.u 0.5 1. 0.5 0.048943 0.95334 4. 0. 0.5 1. 0.5 0.048943 0.95334 0. -1. 0.5 1. 0.5 0.048943 0.95334 1. -2. 0.5 1. 0.5 0.048943 0.95334 2. 800.u 0.5 1. 0.5 0.048943 0.95334 3. 0. 0.5 1. 0.5 0.048943 0.95334 0. -1. 0.5 1. 0.5 0.41221 0.62318 1. -2. 0.5 1. 0.5 0.41221 0.70811 2. -3. 0.5 1. 0.5 0.41221 0.70811 3. 900.u 0.5 1. 0.5 0.41221 0.70811 4. 0. 0.5 1. 0.5 0.41221 0.70811 0. -1. 0.5 1. 0.5 1. 0.41338 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 0.001 0.5 1. 0.5 1. 0.5 4. tests/==out/d_vcg.2.ckt.out000066400000000000000000000034531316501211100157500ustar00rootroot00000000000000' # v(Vcc) v(Vin) i(Vcc) i(Vin) iter(0) 27. 10. 1. -0.01 0. 4. #Time v(Vcc) v(Vin) i(Vcc) i(Vin) iter(0) 0. 10. 1. -0.01 0. 4. 50.u 10. 1.0309 -0.010309 0. 14. 100.u 10. 1.0588 -0.010588 0. 4. 150.u 10. 1.0809 -0.010809 0. 4. 200.u 10. 1.0951 -0.010951 0. 4. 250.u 10. 1.1 -0.011 0. 4. 300.u 10. 1.0951 -0.010951 0. 4. 350.u 10. 1.0809 -0.010809 0. 4. 400.u 10. 1.0588 -0.010588 0. 4. 450.u 10. 1.0309 -0.010309 0. 4. 500.u 10. 1. -0.01 0. 4. 550.u 10. 0.9691 -0.009691 0. 4. 600.u 10. 0.94122 -0.0094122 0. 4. 650.u 10. 0.9191 -0.009191 0. 4. 700.u 10. 0.90489 -0.0090489 0. 4. 750.u 10. 0.9 -0.009 0. 4. 800.u 10. 0.90489 -0.0090489 0. 4. 850.u 10. 0.9191 -0.009191 0. 4. 900.u 10. 0.94122 -0.0094122 0. 4. 950.u 10. 0.9691 -0.009691 0. 4. 0.001 10. 1. -0.01 0. 4. #Freq v(Vcc) v(Vin) i(Vcc) i(Vin) 1.K 20.n 0.2 0.002 0. #Freq vp(Vcc) vp(Vin) ip(Vcc) ip(Vin) 1.K 180. 0. 180. 0. tests/==out/d_vcg.3.ckt.out000066400000000000000000000041371316501211100157510ustar00rootroot00000000000000' # v(Vcc) v(Vin) i(Vcc) i(Vin) i(Mamp) iter(0) 27. 10. 1. -0.01 0. 0.01 4. #Time v(Vcc) v(Vin) i(Vcc) i(Vin) i(Mamp) iter(0) 0. 10. 1. -0.01 0. 0.01 4. 50.u 10. 1.0309 -0.010309 0. 0.010309 14. 100.u 10. 1.0588 -0.010588 0. 0.010588 4. 150.u 10. 1.0809 -0.010809 0. 0.010809 4. 200.u 10. 1.0951 -0.010951 0. 0.010951 4. 250.u 10. 1.1 -0.011 0. 0.011 4. 300.u 10. 1.0951 -0.010951 0. 0.010951 4. 350.u 10. 1.0809 -0.010809 0. 0.010809 4. 400.u 10. 1.0588 -0.010588 0. 0.010588 4. 450.u 10. 1.0309 -0.010309 0. 0.010309 4. 500.u 10. 1. -0.01 0. 0.01 4. 550.u 10. 0.9691 -0.009691 0. 0.009691 4. 600.u 10. 0.94122 -0.0094122 0. 0.0094122 4. 650.u 10. 0.9191 -0.009191 0. 0.009191 4. 700.u 10. 0.90489 -0.0090489 0. 0.0090489 4. 750.u 10. 0.9 -0.009 0. 0.009 4. 800.u 10. 0.90489 -0.0090489 0. 0.0090489 4. 850.u 10. 0.9191 -0.009191 0. 0.009191 4. 900.u 10. 0.94122 -0.0094122 0. 0.0094122 4. 950.u 10. 0.9691 -0.009691 0. 0.009691 4. 0.001 10. 1. -0.01 0. 0.01 4. #Freq v(Vcc) v(Vin) i(Vcc) i(Vin) i(Mamp) 1.K 20.n 0.2 0.002 0. 0.002 #Freq vp(Vcc) vp(Vin) ip(Vcc) ip(Vin) ip(Mamp) 1.K 180. 0. 180. 0. 0. tests/==out/d_vcg.4.ckt.out000066400000000000000000000025771316501211100157600ustar00rootroot00000000000000' # v(2) v(3) v(4) v(5) v(6) iter(0) 27. 0.5 1. 0.5 2. 0.5 4. #Freq v(1) v(2) v(3) v(4) v(5) v(6) 1.K 1. 0.5 0. 0.5 0. 0.5 #Freq vp(1) vp(2) vp(3) vp(4) vp(5) vp(6) 1.K 0. 0. 0. 0. 0. 0. #Time v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0.5 1. 0.5 1. 0.5 4. 100.u 0.5 1. 0.5 1.5878 0.38643 16. 200.u 0.5 1. 0.5 1.9511 0.33886 4. 300.u 0.5 1. 0.5 1.9511 0.33886 3. 400.u 0.5 1. 0.5 1.5878 0.38643 4. 500.u 0.5 1. 0.5 1. 0.5 4. 600.u 0.5 1. 0.5 0.41221 0.70811 4. 700.u 0.5 1. 0.5 0.048943 0.95334 4. 800.u 0.5 1. 0.5 0.048943 0.95334 3. 900.u 0.5 1. 0.5 0.41221 0.70811 4. 0.001 0.5 1. 0.5 1. 0.5 4. tests/==out/d_vcg.5.ckt.out000066400000000000000000000041371316501211100157530ustar00rootroot00000000000000' # v(Vcc) v(Vin) i(Vcc) i(Vin) i(Mamp) iter(0) 27. 10. 1. -0.01 0. 0.01 4. #Time v(Vcc) v(Vin) i(Vcc) i(Vin) i(Mamp) iter(0) 0. 10. 1. -0.01 0. 0.01 4. 50.u 10. 1.0309 -0.010309 0. 0.010309 14. 100.u 10. 1.0588 -0.010588 0. 0.010588 4. 150.u 10. 1.0809 -0.010809 0. 0.010809 4. 200.u 10. 1.0951 -0.010951 0. 0.010951 4. 250.u 10. 1.1 -0.011 0. 0.011 4. 300.u 10. 1.0951 -0.010951 0. 0.010951 4. 350.u 10. 1.0809 -0.010809 0. 0.010809 4. 400.u 10. 1.0588 -0.010588 0. 0.010588 4. 450.u 10. 1.0309 -0.010309 0. 0.010309 4. 500.u 10. 1. -0.01 0. 0.01 4. 550.u 10. 0.9691 -0.009691 0. 0.009691 4. 600.u 10. 0.94122 -0.0094122 0. 0.0094122 4. 650.u 10. 0.9191 -0.009191 0. 0.009191 4. 700.u 10. 0.90489 -0.0090489 0. 0.0090489 4. 750.u 10. 0.9 -0.009 0. 0.009 4. 800.u 10. 0.90489 -0.0090489 0. 0.0090489 4. 850.u 10. 0.9191 -0.009191 0. 0.009191 4. 900.u 10. 0.94122 -0.0094122 0. 0.0094122 4. 950.u 10. 0.9691 -0.009691 0. 0.009691 4. 0.001 10. 1. -0.01 0. 0.01 4. #Freq v(Vcc) v(Vin) i(Vcc) i(Vin) i(Mamp) 1.K 28.284n 0.2 0.0028284 0. 0.0028284 #Freq vp(Vcc) vp(Vin) ip(Vcc) ip(Vin) ip(Mamp) 1.K -135. 0. -135. 0. 45. tests/==out/d_vcr.1.ckt.out000066400000000000000000000133351316501211100157620ustar00rootroot00000000000000' # v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0. 0. 0. 0. 0. 0. -1. 0.5 1. 1.n 2. 500.p 1. -2. 0.5 1. 0.5 2. 0.5 2. -3. 0.5 1. 0.5 2. 0.5 3. 27. 0.5 1. 0.5 2. 0.5 4. #Time v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0. 0. 0. 0. 0. 0. -1. 0.5 1. 1.n 1. 1.n 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 0. 0.5 1. 0.5 1. 0.5 4. 0. 0.5 1. 0.5 1. 0.5 0. -1. 0.5 1. 0.5 1.0063 0.50157 1. -2. 0.5 1. 0.5 1.0063 0.50157 2. -3. 0.5 1. 0.5 1.0063 0.50157 3. 1.u 0.5 1. 0.5 1.0063 0.50157 4. 0. 0.5 1. 0.5 1.0063 0.50157 0. -1. 0.5 1. 0.5 1.0126 0.50313 1. -2. 0.5 1. 0.5 1.0126 0.50312 2. -3. 0.5 1. 0.5 1.0126 0.50312 3. 2.u 0.5 1. 0.5 1.0126 0.50312 4. 0. 0.5 1. 0.5 1.0126 0.50312 0. -1. 0.5 1. 0.5 1.1004 0.5248 1. -2. 0.5 1. 0.5 1.1004 0.52389 2. -3. 0.5 1. 0.5 1.1004 0.52389 3. 16.u 0.5 1. 0.5 1.1004 0.52389 4. 0. 0.5 1. 0.5 1.1004 0.52389 0. -1. 0.5 1. 0.5 1.5878 0.63438 1. -2. 0.5 1. 0.5 1.5878 0.61357 2. -3. 0.5 1. 0.5 1.5878 0.61357 3. 100.u 0.5 1. 0.5 1.5878 0.61357 4. 0. 0.5 1. 0.5 1.5878 0.61357 0. -1. 0.5 1. 0.5 1.9511 0.66782 1. -2. 0.5 1. 0.5 1.9511 0.66114 2. -3. 0.5 1. 0.5 1.9511 0.66114 3. 200.u 0.5 1. 0.5 1.9511 0.66114 4. 0. 0.5 1. 0.5 1.9511 0.66114 0. -1. 0.5 1. 0.5 1.9511 0.66114 1. -2. 0.5 1. 0.5 1.9511 0.66114 2. 300.u 0.5 1. 0.5 1.9511 0.66114 3. 0. 0.5 1. 0.5 1.9511 0.66114 0. -1. 0.5 1. 0.5 1.5878 0.61942 1. -2. 0.5 1. 0.5 1.5878 0.61357 2. -3. 0.5 1. 0.5 1.5878 0.61357 3. 400.u 0.5 1. 0.5 1.5878 0.61357 4. 0. 0.5 1. 0.5 1.5878 0.61357 0. -1. 0.5 1. 0.5 1. 0.5258 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 500.u 0.5 1. 0.5 1. 0.5 4. 0. 0.5 1. 0.5 1. 0.5 0. -1. 0.5 1. 0.5 0.41221 0.35305 1. -2. 0.5 1. 0.5 0.41221 0.29189 2. -3. 0.5 1. 0.5 0.41221 0.29189 3. 600.u 0.5 1. 0.5 0.41221 0.29189 4. 0. 0.5 1. 0.5 0.41221 0.29189 0. -1. 0.5 1. 0.5 0.048943 0.10974 1. -2. 0.5 1. 0.5 0.048943 0.04666 2. -3. 0.5 1. 0.5 0.048943 0.04666 3. 700.u 0.5 1. 0.5 0.048943 0.04666 4. 0. 0.5 1. 0.5 0.048943 0.04666 0. -1. 0.5 1. 0.5 0.048943 0.04666 1. -2. 0.5 1. 0.5 0.048943 0.04666 2. 800.u 0.5 1. 0.5 0.048943 0.04666 3. 0. 0.5 1. 0.5 0.048943 0.04666 0. -1. 0.5 1. 0.5 0.41221 0.37682 1. -2. 0.5 1. 0.5 0.41221 0.29189 2. -3. 0.5 1. 0.5 0.41221 0.29189 3. 900.u 0.5 1. 0.5 0.41221 0.29189 4. 0. 0.5 1. 0.5 0.41221 0.29189 0. -1. 0.5 1. 0.5 1. 0.58662 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 0.001 0.5 1. 0.5 1. 0.5 4. tests/==out/d_vcr.2.ckt.out000066400000000000000000000133351316501211100157630ustar00rootroot00000000000000' # v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0. 0. 0. 0. 0. 0. -1. 0.5 1. 1.n 2. 500.p 1. -2. 0.5 1. 0.5 2. 0.5 2. -3. 0.5 1. 0.5 2. 0.5 3. 27. 0.5 1. 0.5 2. 0.5 4. #Time v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0. 0. 0. 0. 0. 0. -1. 0.5 1. 1.n 1. 1.n 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 0. 0.5 1. 0.5 1. 0.5 4. 0. 0.5 1. 0.5 1. 0.5 0. -1. 0.5 1. 0.5 1.0063 0.50157 1. -2. 0.5 1. 0.5 1.0063 0.50157 2. -3. 0.5 1. 0.5 1.0063 0.50157 3. 1.u 0.5 1. 0.5 1.0063 0.50157 4. 0. 0.5 1. 0.5 1.0063 0.50157 0. -1. 0.5 1. 0.5 1.0126 0.50313 1. -2. 0.5 1. 0.5 1.0126 0.50312 2. -3. 0.5 1. 0.5 1.0126 0.50312 3. 2.u 0.5 1. 0.5 1.0126 0.50312 4. 0. 0.5 1. 0.5 1.0126 0.50312 0. -1. 0.5 1. 0.5 1.1004 0.5248 1. -2. 0.5 1. 0.5 1.1004 0.52389 2. -3. 0.5 1. 0.5 1.1004 0.52389 3. 16.u 0.5 1. 0.5 1.1004 0.52389 4. 0. 0.5 1. 0.5 1.1004 0.52389 0. -1. 0.5 1. 0.5 1.5878 0.63438 1. -2. 0.5 1. 0.5 1.5878 0.61357 2. -3. 0.5 1. 0.5 1.5878 0.61357 3. 100.u 0.5 1. 0.5 1.5878 0.61357 4. 0. 0.5 1. 0.5 1.5878 0.61357 0. -1. 0.5 1. 0.5 1.9511 0.66782 1. -2. 0.5 1. 0.5 1.9511 0.66114 2. -3. 0.5 1. 0.5 1.9511 0.66114 3. 200.u 0.5 1. 0.5 1.9511 0.66114 4. 0. 0.5 1. 0.5 1.9511 0.66114 0. -1. 0.5 1. 0.5 1.9511 0.66114 1. -2. 0.5 1. 0.5 1.9511 0.66114 2. 300.u 0.5 1. 0.5 1.9511 0.66114 3. 0. 0.5 1. 0.5 1.9511 0.66114 0. -1. 0.5 1. 0.5 1.5878 0.61942 1. -2. 0.5 1. 0.5 1.5878 0.61357 2. -3. 0.5 1. 0.5 1.5878 0.61357 3. 400.u 0.5 1. 0.5 1.5878 0.61357 4. 0. 0.5 1. 0.5 1.5878 0.61357 0. -1. 0.5 1. 0.5 1. 0.5258 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 500.u 0.5 1. 0.5 1. 0.5 4. 0. 0.5 1. 0.5 1. 0.5 0. -1. 0.5 1. 0.5 0.41221 0.35305 1. -2. 0.5 1. 0.5 0.41221 0.29189 2. -3. 0.5 1. 0.5 0.41221 0.29189 3. 600.u 0.5 1. 0.5 0.41221 0.29189 4. 0. 0.5 1. 0.5 0.41221 0.29189 0. -1. 0.5 1. 0.5 0.048943 0.10974 1. -2. 0.5 1. 0.5 0.048943 0.04666 2. -3. 0.5 1. 0.5 0.048943 0.04666 3. 700.u 0.5 1. 0.5 0.048943 0.04666 4. 0. 0.5 1. 0.5 0.048943 0.04666 0. -1. 0.5 1. 0.5 0.048943 0.04666 1. -2. 0.5 1. 0.5 0.048943 0.04666 2. 800.u 0.5 1. 0.5 0.048943 0.04666 3. 0. 0.5 1. 0.5 0.048943 0.04666 0. -1. 0.5 1. 0.5 0.41221 0.37682 1. -2. 0.5 1. 0.5 0.41221 0.29189 2. -3. 0.5 1. 0.5 0.41221 0.29189 3. 900.u 0.5 1. 0.5 0.41221 0.29189 4. 0. 0.5 1. 0.5 0.41221 0.29189 0. -1. 0.5 1. 0.5 1. 0.58662 1. -2. 0.5 1. 0.5 1. 0.5 2. -3. 0.5 1. 0.5 1. 0.5 3. 0.001 0.5 1. 0.5 1. 0.5 4. tests/==out/d_vcr.3.ckt.out000066400000000000000000000027671316501211100157730ustar00rootroot00000000000000' # v(1) v(2) v(3) iter(0) 27. 20. 10. 1. 4. #Time v(1) v(2) v(3) iter(0) 0. 20. 10. 1. 4. 50.u 20. 10.309 1.0309 14. 100.u 20. 10.588 1.0588 4. 150.u 20. 10.809 1.0809 4. 200.u 20. 10.951 1.0951 4. 250.u 20. 11. 1.1 4. 300.u 20. 10.951 1.0951 4. 350.u 20. 10.809 1.0809 4. 400.u 20. 10.588 1.0588 4. 450.u 20. 10.309 1.0309 4. 500.u 20. 10. 1. 4. 550.u 20. 9.691 0.9691 4. 600.u 20. 9.4122 0.94122 4. 650.u 20. 9.191 0.9191 4. 700.u 20. 9.0489 0.90489 4. 750.u 20. 9. 0.9 4. 800.u 20. 9.0489 0.90489 4. 850.u 20. 9.191 0.9191 4. 900.u 20. 9.4122 0.94122 4. 950.u 20. 9.691 0.9691 4. 0.001 20. 10. 1. 4. #Freq v(1) v(2) v(3) 1.K 0. 2. 0.2 #Freq vp(1) vp(2) vp(3) 1.K 0. 0. 0. tests/==out/d_vcr.4.ckt.out000066400000000000000000000025771316501211100157730ustar00rootroot00000000000000' # v(2) v(3) v(4) v(5) v(6) iter(0) 27. 0.5 1. 0.5 2. 0.5 4. #Freq v(1) v(2) v(3) v(4) v(5) v(6) 1.K 1. 0.5 0. 0.5 0. 0.5 #Freq vp(1) vp(2) vp(3) vp(4) vp(5) vp(6) 1.K 0. 0. 0. 0. 0. 0. #Time v(2) v(3) v(4) v(5) v(6) iter(0) 0. 0.5 1. 0.5 1. 0.5 4. 100.u 0.5 1. 0.5 1.5878 0.61357 16. 200.u 0.5 1. 0.5 1.9511 0.66114 4. 300.u 0.5 1. 0.5 1.9511 0.66114 3. 400.u 0.5 1. 0.5 1.5878 0.61357 4. 500.u 0.5 1. 0.5 1. 0.5 4. 600.u 0.5 1. 0.5 0.41221 0.29189 4. 700.u 0.5 1. 0.5 0.048943 0.04666 4. 800.u 0.5 1. 0.5 0.048943 0.04666 3. 900.u 0.5 1. 0.5 0.41221 0.29189 4. 0.001 0.5 1. 0.5 1. 0.5 4. tests/==out/d_vcr.5.ckt.out000066400000000000000000000027671316501211100157750ustar00rootroot00000000000000' # v(1) v(2) v(3) iter(0) 27. 20. 7.071 1. 4. #Time v(1) v(2) v(3) iter(0) 0. 20. 7.071 1. 4. 50.u 20. 7.2895 1.0309 14. 100.u 20. 7.4866 1.0588 4. 150.u 20. 7.6431 1.0809 4. 200.u 20. 7.7435 1.0951 4. 250.u 20. 7.7781 1.1 4. 300.u 20. 7.7435 1.0951 4. 350.u 20. 7.6431 1.0809 4. 400.u 20. 7.4866 1.0588 4. 450.u 20. 7.2895 1.0309 4. 500.u 20. 7.071 1. 4. 550.u 20. 6.8525 0.9691 4. 600.u 20. 6.6554 0.94122 4. 650.u 20. 6.4989 0.9191 4. 700.u 20. 6.3985 0.90489 4. 750.u 20. 6.3639 0.9 4. 800.u 20. 6.3985 0.90489 4. 850.u 20. 6.4989 0.9191 4. 900.u 20. 6.6554 0.94122 4. 950.u 20. 6.8525 0.9691 4. 0.001 20. 7.071 1. 4. #Freq v(1) v(2) v(3) 1.K 0. 2. 0.2 #Freq vp(1) vp(2) vp(3) 1.K 0. 45. 0. tests/==out/d_vcvs.1.ckt.out000066400000000000000000000017501316501211100161470ustar00rootroot00000000000000# voltage source test v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 2 0 ) 1.K e1 ( 3 0 2 0 ) 4. r3 ( 3 0 ) 1.K g1 ( 4 0 2 0 ) 4. r3 ( 4 0 ) 1.K # v(1) v(2) v(3) v(4) 27. 1. 0.5 2. -2.K # vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) 27. 2. 0.5 -0.002 -0.004 0. 0.004 # vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) 27. 1. 0. -500.u -500.u 0. 500.u #Freq v(1) v(2) v(3) v(4) 1.K 1. 0.5 2. 2.K #Freq vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) 1.K 2. 0.5 0.002 -0.004 ?? ?? #Freq vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) 1.K 1. 0. 500.u -500.u ?? ?? tests/==out/d_vcvs.2.ckt.out000066400000000000000000000017501316501211100161500ustar00rootroot00000000000000# voltage source test v1 ( 0 1 ) DC 1. AC 1. r1 ( 1 2 ) 1.K r2 ( 0 2 ) 1.K e1 ( 0 3 0 2 ) 4. r3 ( 0 3 ) 1.K g1 ( 0 4 0 2 ) 4. r3 ( 0 4 ) 1.K # v(1) v(2) v(3) v(4) 27. -1. -0.5 -2. 2.K # vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) 27. 2. 0.5 -0.002 -0.004 0. 0.004 # vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) 27. 1. 0. -500.u -500.u 0. 500.u #Freq v(1) v(2) v(3) v(4) 1.K 1. 0.5 2. 2.K #Freq vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) 1.K 2. 0.5 0.002 -0.004 ?? ?? #Freq vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) 1.K 1. 0. 500.u -500.u ?? ?? tests/==out/d_vs.1.gc.out000066400000000000000000000003141316501211100154210ustar00rootroot00000000000000v1 (1 0) vsource dc=2 v2 (0 2) vsource dc=5 v3 (3 4) vsource dc=3 v4 (4 0) vsource dc=9 # v(1) v(2) v(3) v(4) 27. 2. -5. 12. 9. tests/==out/dc_temp.gc.out000066400000000000000000000023021316501211100157410ustar00rootroot00000000000000rtemp1 ( 2 0 ) t1(w=1 l=1) .model t1 r ( rsh=1 narrow=NA( 0.) defw=NA( 1.u) tc1=1 tc2=0 tnom=0) * skipping L= .model t2 r ( rsh=NA( NA) narrow=NA( 0.) defw=NA( 1.u) tc1=10 tc2=NA( 0.) tnom=0) rtemp2 ( 2 0 ) t1(l=2 w=1) rtemp3 ( 2 0 ) t2(.5) rtemp1 ( 2 0 ) t1 l= 1. w= 1. .model t1 r ( rsh=1 narrow=NA( 0.) defw=NA( 1.u) tc1=1 tc2=0 tnom=0) * skipping L= .model t2 r ( rsh=NA( NA) narrow=NA( 0.) defw=NA( 1.u) tc1=10 tc2=NA( 0.) tnom=0) rtemp2 ( 2 0 ) t1 l= 2. w= 1. rtemp3 ( 2 0 ) t2 0.5 # r(rtemp1) r(rtemp2) r(rtemp3) temp(0) 0. 3. 6. 10.5 2. # r(rtemp1) r(rtemp2) r(rtemp3) temp(0) 0. 2. 4. 5.5 1. # r(rtemp1) r(rtemp2) r(rtemp3) temp(0) 0. 4. 8. 15.5 3. rt1= 4. rt2= 8. rt3= 15.5 # r(rtemp1) r(rtemp2) r(rtemp3) temp(0) 0. 2. 4. 5.5 1. # r(rtemp1) r(rtemp2) r(rtemp3) temp(0) 0. 12. 24. 55.5 11. # r(rtemp1) r(rtemp2) r(rtemp3) temp(0) 0. 21. 42. 100.5 20. rt1= 21. rt2= 42. rt3= 100.5 tests/==out/dcsweep.ckt.out000066400000000000000000000014731316501211100161600ustar00rootroot00000000000000' dc sweep test # v(1) v(2) v(3) -2. -2. 1. 0. -1. -1. 1. 0. 0. 0. 1. 0. 1. 1. 1. 0. 2. 2. 1. 0. # v(1) v(2) v(3) -2. 1. -2. 0. -1. 1. -1. 0. 0. 1. 0. 0. 1. 1. 1. 0. 2. 1. 2. 0. # v(1) v(2) v(3) -2. 1. 1. -2. -1. 1. 1. -1. 0. 1. 1. 0. 1. 1. 1. 1. 2. 1. 1. 2. tests/==out/e_ccsrc.1.ckt.out000066400000000000000000000063441316501211100162700ustar00rootroot00000000000000# HSPICE style PWL v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.3 r2 ( 2 0 ) 0.7 h1 ( 3 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r3 ( 3 0 ) 10.K f1 ( 4 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r4 ( 4 0 ) 10.K # v(1) v(2) v(3) v(4) i(r2) 27. 1. 0.35 0.5 -5.K 0.5 # v(1) v(2) v(3) v(4) i(r2) -10. -10. -3.5 -5. 50.K -5. -9. -9. -3.15 -4.5 45.K -4.5 -8. -8. -2.8 -4. 40.K -4. -7. -7. -2.45 -3.5 35.K -3.5 -6. -6. -2.1 -3. 30.K -3. -5. -5. -1.75 -2.5 25.K -2.5 -4. -4. -1.4 -2. 20.K -2. -3. -3. -1.05 -1.5 15.K -1.5 -2. -2. -0.7 -0.99999 9.9999K -1. -1. -1. -0.35 -0.5 5.K -0.5 0. 0. 0. 0. 0. 0. 1. 1. 0.35 0.5 -5.K 0.5 2. 2. 0.7 0.99999 -9.9999K 1. 3. 3. 1.05 1.1667 -11.667K 1.5 4. 4. 1.4 1.3333 -13.333K 2. 5. 5. 1.75 1.5 -15.K 2.5 6. 6. 2.1 1.6667 -16.667K 3. 7. 7. 2.45 1.8333 -18.333K 3.5 8. 8. 2.8 2. -20.K 4. 9. 9. 3.15 2.1 -21.K 4.5 10. 10. 3.5 2.2 -22.K 5. # v(1) v(2) v(3) v(4) i(r2) 1. 1. 0.35 0.5 -5.K 0.5 1.5849 1.5849 0.55471 0.79244 -7.9244K 0.79244 2.5119 2.5119 0.87916 1.0853 -10.853K 1.2559 3.9811 3.9811 1.3934 1.3302 -13.302K 1.9905 6.3096 6.3095 2.2083 1.7183 -17.183K 3.1548 10. 10. 3.5 2.2 -22.K 5. 15.849 15.849 5.5471 2.7849 -27.849K 7.9244 25.119 25.119 8.7916 3.5085 -35.085K 12.559 39.811 39.811 13.934 4.4339 -44.339K 19.905 63.096 63.095 22.083 5.7275 -57.275K 31.548 100. 100. 35. 7.7777 -77.777K 50. # v(1) v(2) v(3) v(4) i(r2) 32. 32. 11.2 4. -40.K 16. 41. 41. 14.35 4.5 -45.K 20.5 50. 50. 17.5 5. -50.K 25. 59. 59. 20.65 5.5 -55.K 29.5 68. 68. 23.8 6. -60.K 34. v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.3 r2 ( 2 0 ) 0.7 h1 ( 3 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r3 ( 3 0 ) 10.K f1 ( 4 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r4 ( 4 0 ) 10.K tests/==out/e_ccsrc.2.ckt.out000066400000000000000000000063441316501211100162710ustar00rootroot00000000000000# HSPICE style PWL v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.3 r2 ( 2 0 ) 0.7 h1 ( 3 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r3 ( 3 0 ) 10.K f1 ( 4 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r4 ( 4 0 ) 10.K # i(r2) v(1) v(2) v(3) v(4) 27. 0.5 1. 0.35 0.5 -5.K # i(r2) v(1) v(2) v(3) v(4) -10. -5. -10. -3.5 -5. 50.K -9. -4.5 -9. -3.15 -4.5 45.K -8. -4. -8. -2.8 -4. 40.K -7. -3.5 -7. -2.45 -3.5 35.K -6. -3. -6. -2.1 -3. 30.K -5. -2.5 -5. -1.75 -2.5 25.K -4. -2. -4. -1.4 -2. 20.K -3. -1.5 -3. -1.05 -1.5 15.K -2. -1. -2. -0.7 -0.99999 9.9999K -1. -0.5 -1. -0.35 -0.5 5.K 0. 0. 0. 0. 0. 0. 1. 0.5 1. 0.35 0.5 -5.K 2. 1. 2. 0.7 0.99999 -9.9999K 3. 1.5 3. 1.05 1.1667 -11.667K 4. 2. 4. 1.4 1.3333 -13.333K 5. 2.5 5. 1.75 1.5 -15.K 6. 3. 6. 2.1 1.6667 -16.667K 7. 3.5 7. 2.45 1.8333 -18.333K 8. 4. 8. 2.8 2. -20.K 9. 4.5 9. 3.15 2.1 -21.K 10. 5. 10. 3.5 2.2 -22.K # i(r2) v(1) v(2) v(3) v(4) 1. 0.5 1. 0.35 0.5 -5.K 1.5849 0.79244 1.5849 0.55471 0.79244 -7.9244K 2.5119 1.2559 2.5119 0.87916 1.0853 -10.853K 3.9811 1.9905 3.9811 1.3934 1.3302 -13.302K 6.3096 3.1548 6.3095 2.2083 1.7183 -17.183K 10. 5. 10. 3.5 2.2 -22.K 15.849 7.9244 15.849 5.5471 2.7849 -27.849K 25.119 12.559 25.119 8.7916 3.5085 -35.085K 39.811 19.905 39.811 13.934 4.4339 -44.339K 63.096 31.548 63.095 22.083 5.7275 -57.275K 100. 50. 100. 35. 7.7777 -77.777K # i(r2) v(1) v(2) v(3) v(4) 32. 16. 32. 11.2 4. -40.K 41. 20.5 41. 14.35 4.5 -45.K 50. 25. 50. 17.5 5. -50.K 59. 29.5 59. 20.65 5.5 -55.K 68. 34. 68. 23.8 6. -60.K v1 ( 1 0 ) DC 1. AC 1. r1 ( 1 2 ) 1.3 r2 ( 2 0 ) 0.7 h1 ( 3 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r3 ( 3 0 ) 10.K f1 ( 4 0 R2 ) pwl( 0., 0. 1., 1. 4., 2. 9., 3. 16., 4. 25., 5. ) r4 ( 4 0 ) 10.K tests/==out/e_node_probes.ckt.out000066400000000000000000000007601316501211100173270ustar00rootroot00000000000000'matrix probe test # v(1) v(2) 27. 1. 0.5 # mdy(1) mdy(2) 27. 100.K 2. # mdz(1) mdz(2) 27. 9.9999u 0.5 # zero(1) zero(2) 27. 0. 0. # ndz(1) ndz(2) 27. -Inf -Inf # pdz(1) pdz(2) 27. Inf Inf # nan(1) nan(2) 27. NaN NaN tests/==out/e_storag.1.ckt.out000066400000000000000000000036741316501211100164750ustar00rootroot00000000000000' truncation error test test #Time v(1) i(c1) 0. 0. 0. 669.8p 282.f 420.82u 2.6659n 2.373p 0.0016748 4.0022n 5.172p 0.0025142 5.3386n 9.093p 0.0033534 28.541n 255.74p 0.017907 90.747n 2.5781n 0.05676 237.36n 17.544n 0.14739 515.96n 82.089n 0.31598 991.46n 298.23n 0.59313 1.732u 887.88n 0.99944 2.4725u 1.7677u 1.3767 3.9048u 4.2093u 2.0325 5.3372u 7.5275u 2.6007 7.8446u 15.077u 3.4212 10.352u 24.455u 4.0588 14.503u 42.891u 4.8235 18.654u 63.956u 5.3253 25.588u 102.59u 5.8185 32.521u 143.76u 6.0577 45.041u 220.69u 6.2313 57.561u 298.95u 6.2713 85.184u 472.38u 6.2851 131.1u 760.92u 6.2824 246.54u 0.0014862 6.2837 612.38u 0.0037848 6.2827 0.0024415 0.015277 6.283 0.011953 0.074971 6.2686 0.030977 0.19334 6.1763 0.05 0.30896 5.9786 0.075 0.45393 5.6196 0.1 0.58773 5.0844 0.15 0.80898 3.7654 0.2 0.95104 1.917 0.25 1. 0.041532 0.3 0.95108 -1.9985 0.35 0.80905 -3.6825 0.4 0.58784 -5.1662 0.45 0.30908 -5.9842 0.5 63.763u -6.3763 0.55 -0.30896 -5.9845 0.6 -0.58773 -5.1666 0.65 -0.80898 -3.6833 0.7 -0.95104 -1.999 0.75 -1. 0.040401 0.8 -0.95108 1.9166 0.85 -0.80905 3.7643 0.9 -0.58784 5.0845 0.95 -0.30908 6.0659 1. -62.947u 6.2947 Gnucap System status iterations: op=0, dc=0, tran=222, fourier=0, total=278 transient timesteps: accepted=50, rejected=6, total=56 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/eq3-1153.ckt.out000066400000000000000000000014011316501211100155740ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 tests/==out/eq3-1153.fg.ckt.out000066400000000000000000000014011316501211100161670ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 tests/==out/eq3-1153.fg2.ckt.out000066400000000000000000000014011316501211100162510ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 tests/==out/eq3-1153.forward.ckt.out000066400000000000000000000014011316501211100172370ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 tests/==out/eq3-1153.reverse.ckt.out000066400000000000000000000014011316501211100172460ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 tests/==out/eq3-1153.tr-b.ckt.out000066400000000000000000000023731316501211100164500ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 #Time v(2) 0. 0. 50.u 0.30531 100.u 0.58068 150.u 0.79922 200.u 0.93952 250.u 0.98785 300.u 0.93949 350.u 0.79916 400.u 0.5806 450.u 0.30522 500.u -49.802u 550.u -0.30531 600.u -0.58069 650.u -0.79922 700.u -0.93952 750.u -0.98785 800.u -0.93949 850.u -0.79916 900.u -0.5806 950.u -0.30522 0.001 49.442u tests/==out/eq3-1153.tr-nb.ckt.out000066400000000000000000000023731316501211100166260ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 #Time v(2) 0. 0. 50.u 0.30531 100.u 0.58068 150.u 0.79922 200.u 0.93952 250.u 0.98785 300.u 0.93949 350.u 0.79916 400.u 0.5806 450.u 0.30522 500.u -49.802u 550.u -0.30531 600.u -0.58069 650.u -0.79922 700.u -0.93952 750.u -0.98785 800.u -0.93949 850.u -0.79916 900.u -0.5806 950.u -0.30522 0.001 49.442u tests/==out/eq3-1153.tr-ni.ckt.out000066400000000000000000000023731316501211100166350ustar00rootroot00000000000000A 1153 node circuit # v(2) 1. 0.98785 2. 1.9757 3. 2.9636 4. 3.9514 5. 4.9393 6. 5.9271 7. 6.915 8. 7.9028 9. 8.8907 10. 9.8785 #Freq vm(2) vdb(2) vp(2) 31.25 0.98785 -0.10617 89.411u 62.5 0.98785 -0.10617 178.83u 125. 0.98785 -0.10617 357.67u 250. 0.98785 -0.10617 715.34u 500. 0.98785 -0.10617 0.0014307 1.K 0.98785 -0.10616 0.0028612 2.K 0.98785 -0.10615 0.0057211 4.K 0.98786 -0.10611 0.011432 8.K 0.98788 -0.10593 0.022784 16.K 0.98796 -0.10523 0.044936 #Time v(2) 0. 0. 50.u 0.30531 100.u 0.58068 150.u 0.79922 200.u 0.93952 250.u 0.98785 300.u 0.93949 350.u 0.79916 400.u 0.5806 450.u 0.30522 500.u -49.802u 550.u -0.30531 600.u -0.58069 650.u -0.79922 700.u -0.93952 750.u -0.98785 800.u -0.93949 850.u -0.79916 900.u -0.5806 950.u -0.30522 0.001 49.442u tests/==out/eqb1.ckt.out000066400000000000000000000017751316501211100153630ustar00rootroot00000000000000Graphic equalizer -- boost 1k #Freq vdb(37) vdb(31) vdb(34) 31.25 0.095167 -2.0118n 0.096826 44.194 0.13781 -2.1809n 0.13947 62.5 0.20922 -2.2952n 0.21088 88.388 0.34021 -2.3642n 0.34187 125. 0.58911 -2.4035n 0.59077 176.78 1.059 -2.4266n 1.0607 250. 1.9169 -2.4421n 1.9186 353.55 3.4014 -2.4552n 3.403 500. 5.8076 -2.4678n 5.8093 707.11 9.3356 -2.4804n 9.3373 1.K 12.091 -2.4928n 12.092 1.4142K 9.4491 -2.5039n 9.4508 2.K 5.8651 -2.5129n 5.8667 2.8284K 3.4187 -2.5174n 3.4204 4.K 1.9198 -2.5164n 1.9214 5.6569K 1.0593 -2.5093n 1.061 8.K 0.58993 -2.4938n 0.59159 11.314K 0.34124 -2.4642n 0.34289 16.K 0.20907 -2.4112n 0.21072 22.627K 0.13481 -2.3241n 0.13644 32.K 0.087701 -2.1976n 0.089304 tests/==out/eqboost.ckt.out000066400000000000000000000110151316501211100161730ustar00rootroot00000000000000Graphic equalizer -- boost 1k #Freq vdb(37) vdb(31) vdb(34) 31.25 0.095167 -2.0118n 0.096826 33.493 0.10227 -2.0499n 0.10392 35.897 0.10998 -2.086n 0.11164 38.473 0.1184 -2.1199n 0.12005 41.235 0.12763 -2.1515n 0.12929 44.194 0.13781 -2.1809n 0.13947 47.366 0.1491 -2.208n 0.15076 50.766 0.16166 -2.2329n 0.16332 54.409 0.1757 -2.2557n 0.17736 58.315 0.19147 -2.2764n 0.19313 62.5 0.20922 -2.2952n 0.21088 66.986 0.22927 -2.3121n 0.23093 71.794 0.25198 -2.3274n 0.25363 76.947 0.27772 -2.341n 0.27938 82.469 0.30697 -2.3532n 0.30863 88.388 0.34021 -2.3642n 0.34187 94.732 0.37803 -2.3739n 0.37969 101.53 0.42107 -2.3826n 0.42273 108.82 0.47004 -2.3904n 0.4717 116.63 0.52576 -2.3973n 0.52742 125. 0.58911 -2.4035n 0.59077 133.97 0.66109 -2.4091n 0.66275 143.59 0.74281 -2.4141n 0.74446 153.89 0.83546 -2.4187n 0.83712 164.94 0.94039 -2.4228n 0.94205 176.78 1.059 -2.4266n 1.0607 189.46 1.1929 -2.4301n 1.1946 203.06 1.3438 -2.4333n 1.3455 217.64 1.5135 -2.4364n 1.5152 233.26 1.7039 -2.4393n 1.7055 250. 1.9169 -2.4421n 1.9186 267.94 2.1549 -2.4449n 2.1566 287.17 2.42 -2.4475n 2.4216 307.79 2.7144 -2.4501n 2.7161 329.88 3.0407 -2.4527n 3.0424 353.55 3.4014 -2.4552n 3.403 378.93 3.7988 -2.4578n 3.8005 406.13 4.2357 -2.4603n 4.2373 435.28 4.7145 -2.4628n 4.7162 466.52 5.2378 -2.4653n 5.2394 500. 5.8076 -2.4678n 5.8093 535.89 6.4255 -2.4703n 6.4272 574.35 7.0918 -2.4728n 7.0935 615.57 7.8044 -2.4754n 7.8061 659.75 8.5569 -2.4779n 8.5586 707.11 9.3356 -2.4804n 9.3373 757.86 10.115 -2.4829n 10.116 812.25 10.851 -2.4854n 10.852 870.55 11.478 -2.4879n 11.48 933.03 11.917 -2.4904n 11.918 1.K 12.091 -2.4928n 12.092 1.0718K 11.965 -2.4952n 11.966 1.1487K 11.564 -2.4974n 11.566 1.2311K 10.958 -2.4996n 10.96 1.3195K 10.23 -2.5018n 10.232 1.4142K 9.4491 -2.5039n 9.4508 1.5157K 8.6622 -2.5059n 8.6638 1.6245K 7.8983 -2.5079n 7.9 1.7411K 7.1733 -2.5097n 7.175 1.8661K 6.4946 -2.5114n 6.4963 2.K 5.8651 -2.5129n 5.8667 2.1435K 5.2847 -2.5142n 5.2864 2.2974K 4.7522 -2.5153n 4.7539 2.4623K 4.2654 -2.5162n 4.2671 2.639K 3.8218 -2.5169n 3.8234 2.8284K 3.4187 -2.5174n 3.4204 3.0314K 3.0536 -2.5176n 3.0553 3.249K 2.7237 -2.5177n 2.7253 3.4822K 2.4264 -2.5174n 2.4281 3.7321K 2.1593 -2.517n 2.1609 4.K 1.9198 -2.5164n 1.9214 4.2871K 1.7056 -2.5155n 1.7072 4.5948K 1.5145 -2.5143n 1.5162 4.9246K 1.3444 -2.5129n 1.3461 5.278K 1.1933 -2.5112n 1.1949 5.6569K 1.0593 -2.5093n 1.061 6.0629K 0.94069 -2.507n 0.94235 6.498K 0.83586 -2.5043n 0.83752 6.9644K 0.74334 -2.5013n 0.745 7.4643K 0.66178 -2.4978n 0.66343 8.K 0.58993 -2.4938n 0.59159 8.5742K 0.5267 -2.4892n 0.52836 9.1896K 0.47108 -2.4841n 0.47273 9.8492K 0.42215 -2.4783n 0.4238 10.556K 0.37911 -2.4717n 0.38077 11.314K 0.34124 -2.4642n 0.34289 12.126K 0.30788 -2.4558n 0.30953 12.996K 0.27847 -2.4464n 0.28012 13.929K 0.25249 -2.4359n 0.25414 14.929K 0.22949 -2.4242n 0.23114 16.K 0.20907 -2.4112n 0.21072 17.148K 0.19089 -2.3968n 0.19253 18.379K 0.17462 -2.3809n 0.17626 19.698K 0.16001 -2.3636n 0.16164 21.112K 0.1468 -2.3446n 0.14844 22.627K 0.13481 -2.3241n 0.13644 24.251K 0.12386 -2.3019n 0.12548 25.992K 0.11378 -2.2781n 0.1154 27.858K 0.10447 -2.2528n 0.10608 29.857K 0.095802 -2.2259n 0.097412 32.K 0.087701 -2.1976n 0.089304 tests/==out/eqflat.ckt.out000066400000000000000000000143211316501211100157760ustar00rootroot00000000000000Graphic equalizer -- all bands flat, modify test #Freq vdb(37) vdb(31) vdb(34) 31.25 -0.0033177 -2.1364n -0.0016588 33.493 -0.0033177 -2.1846n -0.0016588 35.897 -0.0033177 -2.2316n -0.0016588 38.473 -0.0033177 -2.2772n -0.0016588 41.235 -0.0033177 -2.3216n -0.0016588 44.194 -0.0033177 -2.3648n -0.0016588 47.366 -0.0033177 -2.4069n -0.0016588 50.766 -0.0033177 -2.4479n -0.0016588 54.409 -0.0033177 -2.488n -0.0016588 58.315 -0.0033177 -2.5272n -0.0016588 62.5 -0.0033177 -2.5656n -0.0016588 66.986 -0.0033177 -2.6034n -0.0016588 71.794 -0.0033177 -2.6406n -0.0016588 76.947 -0.0033177 -2.6771n -0.0016588 82.469 -0.0033177 -2.7131n -0.0016588 88.388 -0.0033177 -2.7484n -0.0016588 94.732 -0.0033177 -2.783n -0.0016588 101.53 -0.0033177 -2.8168n -0.0016588 108.82 -0.0033177 -2.8497n -0.0016588 116.63 -0.0033177 -2.8815n -0.0016588 125. -0.0033177 -2.9121n -0.0016588 133.97 -0.0033177 -2.9415n -0.0016588 143.59 -0.0033177 -2.9694n -0.0016588 153.89 -0.0033177 -2.9958n -0.0016588 164.94 -0.0033177 -3.0207n -0.0016588 176.78 -0.0033177 -3.044n -0.0016588 189.46 -0.0033177 -3.0657n -0.0016588 203.06 -0.0033177 -3.0858n -0.0016588 217.64 -0.0033177 -3.1043n -0.0016588 233.26 -0.0033177 -3.1213n -0.0016588 250. -0.0033177 -3.1368n -0.0016588 267.94 -0.0033177 -3.151n -0.0016588 287.17 -0.0033177 -3.164n -0.0016588 307.79 -0.0033177 -3.1757n -0.0016588 329.88 -0.0033177 -3.1864n -0.0016588 353.55 -0.0033177 -3.1961n -0.0016588 378.93 -0.0033177 -3.2049n -0.0016588 406.13 -0.0033177 -3.2128n -0.0016588 435.28 -0.0033177 -3.22n -0.0016588 466.52 -0.0033177 -3.2265n -0.0016588 500. -0.0033177 -3.2324n -0.0016588 535.89 -0.0033177 -3.2377n -0.0016588 574.35 -0.0033177 -3.2426n -0.0016588 615.57 -0.0033177 -3.2469n -0.0016588 659.75 -0.0033176 -3.2509n -0.0016588 707.11 -0.0033176 -3.2544n -0.0016588 757.86 -0.0033176 -3.2576n -0.0016588 812.25 -0.0033176 -3.2605n -0.0016588 870.55 -0.0033176 -3.2631n -0.0016588 933.03 -0.0033176 -3.2653n -0.0016588 1.K -0.0033176 -3.2673n -0.0016588 1.0718K -0.0033176 -3.269n -0.0016588 1.1487K -0.0033175 -3.2704n -0.0016588 1.2311K -0.0033175 -3.2714n -0.0016588 1.3195K -0.0033175 -3.2721n -0.0016587 1.4142K -0.0033175 -3.2725n -0.0016587 1.5157K -0.0033174 -3.2725n -0.0016587 1.6245K -0.0033174 -3.272n -0.0016587 1.7411K -0.0033173 -3.271n -0.0016587 1.8661K -0.0033173 -3.2695n -0.0016586 2.K -0.0033172 -3.2674n -0.0016586 2.1435K -0.0033172 -3.2647n -0.0016586 2.2974K -0.0033171 -3.2612n -0.0016585 2.4623K -0.003317 -3.2569n -0.0016585 2.639K -0.0033169 -3.2518n -0.0016584 2.8284K -0.0033168 -3.2458n -0.0016584 3.0314K -0.0033166 -3.2388n -0.0016583 3.249K -0.0033165 -3.2307n -0.0016582 3.4822K -0.0033163 -3.2215n -0.0016581 3.7321K -0.0033161 -3.2111n -0.001658 4.K -0.0033158 -3.1994n -0.0016579 4.2871K -0.0033156 -3.1864n -0.0016578 4.5948K -0.0033152 -3.1721n -0.0016576 4.9246K -0.0033149 -3.1563n -0.0016574 5.278K -0.0033145 -3.1391n -0.0016572 5.6569K -0.003314 -3.1205n -0.001657 6.0629K -0.0033134 -3.1004n -0.0016567 6.498K -0.0033128 -3.079n -0.0016564 6.9644K -0.0033121 -3.0562n -0.001656 7.4643K -0.0033112 -3.0323n -0.0016556 8.K -0.0033103 -3.0072n -0.0016551 8.5742K -0.0033092 -2.9811n -0.0016546 9.1896K -0.0033079 -2.9541n -0.001654 9.8492K -0.0033065 -2.9264n -0.0016533 10.556K -0.0033048 -2.8981n -0.0016524 11.314K -0.003303 -2.8693n -0.0016515 12.126K -0.0033008 -2.8401n -0.0016504 12.996K -0.0032983 -2.8106n -0.0016492 13.929K -0.0032955 -2.7807n -0.0016477 14.929K -0.0032922 -2.7506n -0.0016461 16.K -0.0032885 -2.7202n -0.0016442 17.148K -0.0032842 -2.6894n -0.0016421 18.379K -0.0032794 -2.6583n -0.0016397 19.698K -0.0032738 -2.6267n -0.0016369 21.112K -0.0032675 -2.5946n -0.0016338 22.627K -0.0032603 -2.5619n -0.0016302 24.251K -0.0032522 -2.5285n -0.0016261 25.992K -0.0032429 -2.4945n -0.0016214 27.858K -0.0032323 -2.4597n -0.0016162 29.857K -0.0032204 -2.4242n -0.0016102 32.K -0.003207 -2.388n -0.0016035 R101a ( 35 1 ) 50.K R101b ( 36 1 ) 50.K R102a ( 32 4 ) 50.K R102b ( 33 4 ) 50.K R103a ( 35 7 ) 50.K R103b ( 36 7 ) 50.K R104a ( 32 10 ) 50.K R104b ( 33 10 ) 50.K R105a ( 35 13 ) 50.K R105b ( 36 13 ) 50.K R106a ( 32 16 ) 50.K R106b ( 33 16 ) 50.K R107a ( 35 19 ) 50.K R107b ( 36 19 ) 50.K R108a ( 32 22 ) 50.K R108b ( 33 22 ) 50.K R109a ( 35 25 ) 50.K R109b ( 36 25 ) 50.K R110a ( 32 28 ) 50.K R110b ( 33 28 ) 50.K C1 ( 1 2 ) 1.5u C2 ( 4 5 ) 748.n C3 ( 7 8 ) 408.n C4 ( 10 11 ) 206.n C5 ( 13 14 ) 100.n C6 ( 16 17 ) 50.9n C7 ( 19 20 ) 25.3n C8 ( 22 23 ) 12.7n C9 ( 25 26 ) 5.9n C10 ( 28 29 ) 2.95n C11 ( 2 3 ) 15.n C12 ( 5 6 ) 6.8n C13 ( 8 9 ) 3.3n C14 ( 11 12 ) 1.8n C15 ( 14 15 ) 1.n C16 ( 17 18 ) 470.p C17 ( 20 21 ) 220.p C18 ( 23 24 ) 120.p C19 ( 26 27 ) 68.p C20 ( 29 30 ) 33.p R1 ( 3 0 ) 475.K R2 ( 6 0 ) 536.K R3 ( 9 0 ) 549.K R4 ( 12 0 ) 499.K R5 ( 15 0 ) 464.K R6 ( 18 0 ) 475.K R7 ( 21 0 ) 523.K R8 ( 24 0 ) 475.K R9 ( 27 0 ) 412.K R10 ( 30 0 ) 422.K G5a ( 2 0 3 0 ) -416.666u R11 ( 2 0 ) 2.4K G5b ( 5 0 6 0 ) -416.666u R12 ( 5 0 ) 2.4K G6a ( 8 0 9 0 ) -454.545u R13 ( 8 0 ) 2.2K G6b ( 11 0 12 0 ) -454.545u R14 ( 11 0 ) 2.2K G7a ( 14 0 15 0 ) -454.545u R15 ( 14 0 ) 2.2K G7b ( 17 0 18 0 ) -454.545u R16 ( 17 0 ) 2.2K G8a ( 20 0 21 0 ) -454.545u R17 ( 20 0 ) 2.2K G8b ( 23 0 24 0 ) -454.545u R18 ( 23 0 ) 2.2K G9a ( 26 0 27 0 ) -416.666u R19 ( 26 0 ) 2.4K G9b ( 29 0 30 0 ) -416.666u R20 ( 29 0 ) 2.4K R29 ( 31 32 ) 9.1K R30 ( 33 34 ) 9.1K R31 ( 34 35 ) 9.1K R32 ( 36 37 ) 9.1K C25 ( 31 32 ) 150.p C26 ( 33 34 ) 150.p C27 ( 34 35 ) 150.p C28 ( 36 37 ) 150.p Vin ( 31 0 ) DC 1. AC 1. E2 ( 34 0 32 33 ) 10.K E3 ( 37 0 35 36 ) 10.K tests/==out/eqmodify.ckt.out000066400000000000000000000220161316501211100163370ustar00rootroot00000000000000Graphic equalizer -- all bands flat, modify test #Freq vdb(37) vdb(31) vdb(34) 31.25 -0.0033177 -2.1364n -0.0016588 33.493 -0.0033177 -2.1846n -0.0016588 35.897 -0.0033177 -2.2316n -0.0016588 38.473 -0.0033177 -2.2772n -0.0016588 41.235 -0.0033177 -2.3216n -0.0016588 44.194 -0.0033177 -2.3648n -0.0016588 47.366 -0.0033177 -2.4069n -0.0016588 50.766 -0.0033177 -2.4479n -0.0016588 54.409 -0.0033177 -2.488n -0.0016588 58.315 -0.0033177 -2.5272n -0.0016588 62.5 -0.0033177 -2.5656n -0.0016588 66.986 -0.0033177 -2.6034n -0.0016588 71.794 -0.0033177 -2.6406n -0.0016588 76.947 -0.0033177 -2.6771n -0.0016588 82.469 -0.0033177 -2.7131n -0.0016588 88.388 -0.0033177 -2.7484n -0.0016588 94.732 -0.0033177 -2.783n -0.0016588 101.53 -0.0033177 -2.8168n -0.0016588 108.82 -0.0033177 -2.8497n -0.0016588 116.63 -0.0033177 -2.8815n -0.0016588 125. -0.0033177 -2.9121n -0.0016588 133.97 -0.0033177 -2.9415n -0.0016588 143.59 -0.0033177 -2.9694n -0.0016588 153.89 -0.0033177 -2.9958n -0.0016588 164.94 -0.0033177 -3.0207n -0.0016588 176.78 -0.0033177 -3.044n -0.0016588 189.46 -0.0033177 -3.0657n -0.0016588 203.06 -0.0033177 -3.0858n -0.0016588 217.64 -0.0033177 -3.1043n -0.0016588 233.26 -0.0033177 -3.1213n -0.0016588 250. -0.0033177 -3.1368n -0.0016588 267.94 -0.0033177 -3.151n -0.0016588 287.17 -0.0033177 -3.164n -0.0016588 307.79 -0.0033177 -3.1757n -0.0016588 329.88 -0.0033177 -3.1864n -0.0016588 353.55 -0.0033177 -3.1961n -0.0016588 378.93 -0.0033177 -3.2049n -0.0016588 406.13 -0.0033177 -3.2128n -0.0016588 435.28 -0.0033177 -3.22n -0.0016588 466.52 -0.0033177 -3.2265n -0.0016588 500. -0.0033177 -3.2324n -0.0016588 535.89 -0.0033177 -3.2377n -0.0016588 574.35 -0.0033177 -3.2426n -0.0016588 615.57 -0.0033177 -3.2469n -0.0016588 659.75 -0.0033176 -3.2509n -0.0016588 707.11 -0.0033176 -3.2544n -0.0016588 757.86 -0.0033176 -3.2576n -0.0016588 812.25 -0.0033176 -3.2605n -0.0016588 870.55 -0.0033176 -3.2631n -0.0016588 933.03 -0.0033176 -3.2653n -0.0016588 1.K -0.0033176 -3.2673n -0.0016588 1.0718K -0.0033176 -3.269n -0.0016588 1.1487K -0.0033175 -3.2704n -0.0016588 1.2311K -0.0033175 -3.2714n -0.0016588 1.3195K -0.0033175 -3.2721n -0.0016587 1.4142K -0.0033175 -3.2725n -0.0016587 1.5157K -0.0033174 -3.2725n -0.0016587 1.6245K -0.0033174 -3.272n -0.0016587 1.7411K -0.0033173 -3.271n -0.0016587 1.8661K -0.0033173 -3.2695n -0.0016586 2.K -0.0033172 -3.2674n -0.0016586 2.1435K -0.0033172 -3.2647n -0.0016586 2.2974K -0.0033171 -3.2612n -0.0016585 2.4623K -0.003317 -3.2569n -0.0016585 2.639K -0.0033169 -3.2518n -0.0016584 2.8284K -0.0033168 -3.2458n -0.0016584 3.0314K -0.0033166 -3.2388n -0.0016583 3.249K -0.0033165 -3.2307n -0.0016582 3.4822K -0.0033163 -3.2215n -0.0016581 3.7321K -0.0033161 -3.2111n -0.001658 4.K -0.0033158 -3.1994n -0.0016579 4.2871K -0.0033156 -3.1864n -0.0016578 4.5948K -0.0033152 -3.1721n -0.0016576 4.9246K -0.0033149 -3.1563n -0.0016574 5.278K -0.0033145 -3.1391n -0.0016572 5.6569K -0.003314 -3.1205n -0.001657 6.0629K -0.0033134 -3.1004n -0.0016567 6.498K -0.0033128 -3.079n -0.0016564 6.9644K -0.0033121 -3.0562n -0.001656 7.4643K -0.0033112 -3.0323n -0.0016556 8.K -0.0033103 -3.0072n -0.0016551 8.5742K -0.0033092 -2.9811n -0.0016546 9.1896K -0.0033079 -2.9541n -0.001654 9.8492K -0.0033065 -2.9264n -0.0016533 10.556K -0.0033048 -2.8981n -0.0016524 11.314K -0.003303 -2.8693n -0.0016515 12.126K -0.0033008 -2.8401n -0.0016504 12.996K -0.0032983 -2.8106n -0.0016492 13.929K -0.0032955 -2.7807n -0.0016477 14.929K -0.0032922 -2.7506n -0.0016461 16.K -0.0032885 -2.7202n -0.0016442 17.148K -0.0032842 -2.6894n -0.0016421 18.379K -0.0032794 -2.6583n -0.0016397 19.698K -0.0032738 -2.6267n -0.0016369 21.112K -0.0032675 -2.5946n -0.0016338 22.627K -0.0032603 -2.5619n -0.0016302 24.251K -0.0032522 -2.5285n -0.0016261 25.992K -0.0032429 -2.4945n -0.0016214 27.858K -0.0032323 -2.4597n -0.0016162 29.857K -0.0032204 -2.4242n -0.0016102 32.K -0.003207 -2.388n -0.0016035 #Freq vdb(37) vdb(31) vdb(34) 31.25 0.095167 -2.0118n 0.096826 33.493 0.10227 -2.0499n 0.10392 35.897 0.10998 -2.086n 0.11164 38.473 0.1184 -2.1199n 0.12005 41.235 0.12763 -2.1515n 0.12929 44.194 0.13781 -2.1809n 0.13947 47.366 0.1491 -2.208n 0.15076 50.766 0.16166 -2.2329n 0.16332 54.409 0.1757 -2.2557n 0.17736 58.315 0.19147 -2.2764n 0.19313 62.5 0.20922 -2.2952n 0.21088 66.986 0.22927 -2.3121n 0.23093 71.794 0.25198 -2.3274n 0.25363 76.947 0.27772 -2.341n 0.27938 82.469 0.30697 -2.3532n 0.30863 88.388 0.34021 -2.3642n 0.34187 94.732 0.37803 -2.3739n 0.37969 101.53 0.42107 -2.3826n 0.42273 108.82 0.47004 -2.3904n 0.4717 116.63 0.52576 -2.3973n 0.52742 125. 0.58911 -2.4035n 0.59077 133.97 0.66109 -2.4091n 0.66275 143.59 0.74281 -2.4141n 0.74446 153.89 0.83546 -2.4187n 0.83712 164.94 0.94039 -2.4228n 0.94205 176.78 1.059 -2.4266n 1.0607 189.46 1.1929 -2.4301n 1.1946 203.06 1.3438 -2.4333n 1.3455 217.64 1.5135 -2.4364n 1.5152 233.26 1.7039 -2.4393n 1.7055 250. 1.9169 -2.4421n 1.9186 267.94 2.1549 -2.4449n 2.1566 287.17 2.42 -2.4475n 2.4216 307.79 2.7144 -2.4501n 2.7161 329.88 3.0407 -2.4527n 3.0424 353.55 3.4014 -2.4552n 3.403 378.93 3.7988 -2.4578n 3.8005 406.13 4.2357 -2.4603n 4.2373 435.28 4.7145 -2.4628n 4.7162 466.52 5.2378 -2.4653n 5.2394 500. 5.8076 -2.4678n 5.8093 535.89 6.4255 -2.4703n 6.4272 574.35 7.0918 -2.4728n 7.0935 615.57 7.8044 -2.4754n 7.8061 659.75 8.5569 -2.4779n 8.5586 707.11 9.3356 -2.4804n 9.3373 757.86 10.115 -2.4829n 10.116 812.25 10.851 -2.4854n 10.852 870.55 11.478 -2.4879n 11.48 933.03 11.917 -2.4904n 11.918 1.K 12.091 -2.4928n 12.092 1.0718K 11.965 -2.4952n 11.966 1.1487K 11.564 -2.4974n 11.566 1.2311K 10.958 -2.4996n 10.96 1.3195K 10.23 -2.5018n 10.232 1.4142K 9.4491 -2.5039n 9.4508 1.5157K 8.6622 -2.5059n 8.6638 1.6245K 7.8983 -2.5079n 7.9 1.7411K 7.1733 -2.5097n 7.175 1.8661K 6.4946 -2.5114n 6.4963 2.K 5.8651 -2.5129n 5.8667 2.1435K 5.2847 -2.5142n 5.2864 2.2974K 4.7522 -2.5153n 4.7539 2.4623K 4.2654 -2.5162n 4.2671 2.639K 3.8218 -2.5169n 3.8234 2.8284K 3.4187 -2.5174n 3.4204 3.0314K 3.0536 -2.5176n 3.0553 3.249K 2.7237 -2.5177n 2.7253 3.4822K 2.4264 -2.5174n 2.4281 3.7321K 2.1593 -2.517n 2.1609 4.K 1.9198 -2.5164n 1.9214 4.2871K 1.7056 -2.5155n 1.7072 4.5948K 1.5145 -2.5143n 1.5162 4.9246K 1.3444 -2.5129n 1.3461 5.278K 1.1933 -2.5112n 1.1949 5.6569K 1.0593 -2.5093n 1.061 6.0629K 0.94069 -2.507n 0.94235 6.498K 0.83586 -2.5043n 0.83752 6.9644K 0.74334 -2.5013n 0.745 7.4643K 0.66178 -2.4978n 0.66343 8.K 0.58993 -2.4938n 0.59159 8.5742K 0.5267 -2.4892n 0.52836 9.1896K 0.47108 -2.4841n 0.47273 9.8492K 0.42215 -2.4783n 0.4238 10.556K 0.37911 -2.4717n 0.38077 11.314K 0.34124 -2.4642n 0.34289 12.126K 0.30788 -2.4558n 0.30953 12.996K 0.27847 -2.4464n 0.28012 13.929K 0.25249 -2.4359n 0.25414 14.929K 0.22949 -2.4242n 0.23114 16.K 0.20907 -2.4112n 0.21072 17.148K 0.19089 -2.3968n 0.19253 18.379K 0.17462 -2.3809n 0.17626 19.698K 0.16001 -2.3636n 0.16164 21.112K 0.1468 -2.3446n 0.14844 22.627K 0.13481 -2.3241n 0.13644 24.251K 0.12386 -2.3019n 0.12548 25.992K 0.11378 -2.2781n 0.1154 27.858K 0.10447 -2.2528n 0.10608 29.857K 0.095802 -2.2259n 0.097412 32.K 0.087701 -2.1976n 0.089304 tests/==out/l.ckt.out000066400000000000000000000046261316501211100147640ustar00rootroot00000000000000'inductance check, no tolerance V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 C6 ( 3 0 ) 1. .fanout ^ ? fanout: no match .fanout 2 ^ ? fanout: no match #Time iter(0) v(1) v(2) v(3) z(C6) zraw(C6) z(3) 0. 3. 0. 0. 0. 0.97 0.97 0.97 0.1 52. 1. 0.095202 0.097999 0.97 0.038363 0.038363 0.2 4. 1. 0.18137 0.18643 0.97 0.047549 0.047549 0.3 4. 1. 0.25934 0.26619 0.97 0.047549 0.047549 0.4 4. 1. 0.32988 0.33813 0.97 0.047549 0.047549 0.5 4. 1. 0.3937 0.40302 0.97 0.047549 0.047549 0.6 4. 1. 0.45144 0.46155 0.97 0.047549 0.047549 0.7 4. 1. 0.50368 0.51434 0.97 0.047549 0.047549 0.8 4. 1. 0.55095 0.56195 0.97 0.047549 0.047549 0.9 4. 1. 0.59372 0.6049 0.97 0.047549 0.047549 1. 4. 1. 0.63241 0.64363 0.97 0.047549 0.047549 #Freq v(2) v(3) vp(2) vp(3) z(C6) zraw(C6) z(3) 0.001 0.99998 0.99998 -0.36 -0.3492 0.97 0.96998 0.96998 0.0031623 0.9998 0.99981 -1.1383 -1.1041 0.97 0.96982 0.96982 0.01 0.99803 0.99815 -3.5953 -3.4877 0.97 0.9682 0.9682 0.031623 0.98083 0.98193 -11.238 -10.909 0.97 0.95247 0.95247 0.1 0.84673 0.85391 -32.142 -31.361 0.97 0.82829 0.82829 0.31623 0.44956 0.46055 -63.284 -62.577 0.97 0.44674 0.44674 1. 0.15718 0.16191 -80.957 -80.682 0.97 0.15705 0.15705 3.1623 0.050266 0.051816 -87.119 -87.03 0.97 0.050262 0.050262 10. 0.015913 0.016406 -89.088 -89.06 0.97 0.015913 0.015913 V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 C6 ( 3 0 ) 1. Gnucap System status iterations: op=0, dc=0, tran=91, fourier=0, total=123 transient timesteps: accepted=16, rejected=7, total=23 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/l2.ckt.out000066400000000000000000000046261316501211100150460ustar00rootroot00000000000000'inductance check, no tolerance V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 C6 ( 3 0 ) 1. .fanout ^ ? fanout: no match .fanout 2 ^ ? fanout: no match #Time iter(0) v(1) v(2) v(3) z(C6) zraw(C6) z(3) 0. 3. 0. 0. 0. 0.97 0.97 0.97 0.1 52. 1. 0.095202 0.097999 0.97 0.038363 0.038363 0.2 4. 1. 0.18137 0.18643 0.97 0.047549 0.047549 0.3 4. 1. 0.25934 0.26619 0.97 0.047549 0.047549 0.4 4. 1. 0.32988 0.33813 0.97 0.047549 0.047549 0.5 4. 1. 0.3937 0.40302 0.97 0.047549 0.047549 0.6 4. 1. 0.45144 0.46155 0.97 0.047549 0.047549 0.7 4. 1. 0.50368 0.51434 0.97 0.047549 0.047549 0.8 4. 1. 0.55095 0.56195 0.97 0.047549 0.047549 0.9 4. 1. 0.59372 0.6049 0.97 0.047549 0.047549 1. 4. 1. 0.63241 0.64363 0.97 0.047549 0.047549 #Freq v(2) v(3) vp(2) vp(3) z(C6) zraw(C6) z(3) 0.001 0.99998 0.99998 -0.36 -0.3492 0.97 0.96998 0.96998 0.0031623 0.9998 0.99981 -1.1383 -1.1041 0.97 0.96982 0.96982 0.01 0.99803 0.99815 -3.5953 -3.4877 0.97 0.9682 0.9682 0.031623 0.98083 0.98193 -11.238 -10.909 0.97 0.95247 0.95247 0.1 0.84673 0.85391 -32.142 -31.361 0.97 0.82829 0.82829 0.31623 0.44956 0.46055 -63.284 -62.577 0.97 0.44674 0.44674 1. 0.15718 0.16191 -80.957 -80.682 0.97 0.15705 0.15705 3.1623 0.050266 0.051816 -87.119 -87.03 0.97 0.050262 0.050262 10. 0.015913 0.016406 -89.088 -89.06 0.97 0.015913 0.015913 V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 1. R4 ( 2 0 ) 1. R5 ( 1 3 ) 0.97 C6 ( 3 0 ) 1. Gnucap System status iterations: op=0, dc=0, tran=91, fourier=0, total=123 transient timesteps: accepted=16, rejected=7, total=23 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/lang_spectre.1.gc.out000066400000000000000000000026551316501211100171460ustar00rootroot00000000000000model zz npn level=1 kf=NA( 0.) af=NA( 1.) bf=150 br=NA( 1.) is=NA( 100.E-18) nf=NA( 1.) nr=NA( 1.) c4=NA( 0.) nc=NA( 2.) c2=NA( 0.) ne=NA( 1.5) rb=NA( 0.) re=NA( 0.) rc=NA( 0.) cjc=NA( 0.) cje=NA( 0.) cjs=NA( 0.) mjc=NA( 0.33) mje=NA( 0.33) mjs=NA( 0.) vjc=NA( 0.75) vje=NA( 0.75) vjs=NA( 0.75) xcjc=NA( 1.) itf=NA( 0.) ptf=NA( 0.) tf=NA( 0.) tr=NA( 0.) xtf=NA( 0.) xtb=NA( 0.) xti=NA( 3.) eg=NA( 1.11) subckt dumb_resistor (a b) *//parameters r=10k R1 (a b) resistor r=r ends dumb_resistor subckt foo (vcc in out) Rc (c vcc) resistor r=z q1 (c b e) zz area=NA( 1.) Re (e 0) dumb_resistor r=abs(-z)/10 Rb1 (b vcc) resistor r=100k Rb2 (b 0) dumb_resistor r=r Cin (b in) capacitor c=1u Cout (c out) capacitor c=1u Rin (in 0) resistor r=100k Rout (out 0) resistor r=100k ends foo X1 (V_cc amp_in out) foo r=10k Rin1 (in amp_in) resistor r=10*(1-gain) Rin2 (amp_in 0) resistor r=10*gain Vin (in 0) vsource AC 0.2 Vcc (V_cc 0) vsource DC 20. # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 869.54p 0.2 0.099968 0.87954 # v(V_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 796.25p 0.2 0.099968 0.80624 tests/==out/lang_spectre.2.gc.out000066400000000000000000000034461316501211100171460ustar00rootroot00000000000000parameters z=10k > boo.parameters ^ ? syntax error Cin (b in vcc) capacitor c=1u ^ ? too many: requested=3 max=2 Cout (c) capacitor c=1u ^ ? need 1 more nodes, grounding Rin in 0 vcc resistor r=100k ^ ? too many: requested=3 max=2 Rout out resistor r=100k ^ ? need 1 more nodes, grounding model zz npn level=1 kf=NA( 0.) af=NA( 1.) bf=150 br=NA( 1.) is=NA( 100.E-18) nf=NA( 1.) nr=NA( 1.) c4=NA( 0.) nc=NA( 2.) c2=NA( 0.) ne=NA( 1.5) rb=NA( 0.) re=NA( 0.) rc=NA( 0.) cjc=NA( 0.) cje=NA( 0.) cjs=NA( 0.) mjc=NA( 0.33) mje=NA( 0.33) mjs=NA( 0.) vjc=NA( 0.75) vje=NA( 0.75) vjs=NA( 0.75) xcjc=NA( 1.) itf=NA( 0.) ptf=NA( 0.) tf=NA( 0.) tr=NA( 0.) xtf=NA( 0.) xtb=NA( 0.) xti=NA( 3.) eg=NA( 1.11) subckt dumb_resistor (a b) *//parameters r=10k R1 (a b) resistor r=r ends dumb_resistor subckt foo (vcc in out) Rc (c vcc) resistor r=z q1 (c b e) zz area=NA( 1.) Re (e 0 vcc) dumb_resistor r=abs(-z)/10 Rb1 (b vcc) resistor r=100k Rb2 (b 0) dumb_resistor r=r Cin (b in) capacitor c=1u Cout (c 0) capacitor c=1u Rin (in 0) resistor r=100k Rout (out 0) resistor r=100k ends foo X1 (V_cc amp_in out) foo r=10k Rin1 (in amp_in) resistor r=10*(1-gain) Rin2 (amp_in 0) resistor r=10*gain Vin (in 0) vsource AC 0.2 Vcc (V_cc 0) vsource DC 20. # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 18.222p 0.2 0.099968 0. # v(V_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 18.222p 0.2 0.099968 0. tests/==out/lang_spice.1.gc.out000066400000000000000000000025071316501211100166000ustar00rootroot00000000000000.model zz npn ( level=1 kf=NA( 0.) af=NA( 1.) bf=150 br=NA( 1.) is=NA( 100.E-18) nf=NA( 1.) nr=NA( 1.) c4=NA( 0.) nc=NA( 2.) c2=NA( 0.) ne=NA( 1.5) rb=NA( 0.) re=NA( 0.) rc=NA( 0.) cjc=NA( 0.) cje=NA( 0.) cjs=NA( 0.) mjc=NA( 0.33) mje=NA( 0.33) mjs=NA( 0.) vjc=NA( 0.75) vje=NA( 0.75) vjs=NA( 0.75) xcjc=NA( 1.) itf=NA( 0.) ptf=NA( 0.) tf=NA( 0.) tr=NA( 0.) xtf=NA( 0.) xtb=NA( 0.) xti=NA( 3.) eg=NA( 1.11)) .subckt dumb_resistor ( a b ) R1 ( a b ) r .ends dumb_resistor .subckt foo ( vcc in out ) Rc ( c vcc ) z q1 ( c b e ) Zz NA( 1.) XRe ( e 0 ) dumb_resistor r=abs(-z)/10 Rb1 ( b vcc ) 100k XRb2 ( b 0 ) dumb_resistor r=r Cin ( b in ) 1.u Cout ( c out ) 1.u Rin ( in 0 ) 100.K Rout ( out 0 ) 100.K .ends foo X1 ( v_cc amp_in out ) foo r=10k Rin1 ( in amp_in ) 10*(1-gain) Rin2 ( amp_in 0 ) 10*gain Vcc ( v_cc 0 ) DC 20. Vin ( in 0 ) AC 0.2 # v(v_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(v_cc) v(in) v(amp_in) v(out) 1.K 869.54p 0.2 0.099968 0.87954 # v(v_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(v_cc) v(in) v(amp_in) v(out) 1.K 796.25p 0.2 0.099968 0.80624 tests/==out/lang_verilog.1.gc.out000066400000000000000000000033121316501211100171370ustar00rootroot00000000000000paramset zz npn;\ .level=1; .kf=NA( 0.); .af=NA( 1.); .bf=150; .br=NA( 1.); .is=NA( 100.E-18); .nf=NA( 1.); .nr=NA( 1.); .c4=NA( 0.); .nc=NA( 2.); .c2=NA( 0.); .ne=NA( 1.5); .rb=NA( 0.); .re=NA( 0.); .rc=NA( 0.); .cjc=NA( 0.); .cje=NA( 0.); .cjs=NA( 0.); .mjc=NA( 0.33); .mje=NA( 0.33); .mjs=NA( 0.); .vjc=NA( 0.75); .vje=NA( 0.75); .vjs=NA( 0.75); .xcjc=NA( 1.); .itf=NA( 0.); .ptf=NA( 0.); .tf=NA( 0.); .tr=NA( 0.); .xtf=NA( 0.); .xtb=NA( 0.); .xti=NA( 3.); .eg=NA( 1.11);\ endparmset module dumb_resistor (a,b); resistor #(.r(r)) R1 (.p(a),.n(b)); endmodule // dumb_resistor module foo (vcc,in,out); resistor #(.r(z)) Rc (.p(c),.n(vcc)); zz #(.area(NA( 1.))) q1 (.c(c),.b(b),.e(e)); dumb_resistor #(.r(abs(-z)/10)) Re (.a(e),.b(0)); resistor #(.r(100k)) Rb1 (.p(b),.n(vcc)); dumb_resistor #(.r(r)) Rb2 (.a(b),.b(0)); capacitor #(.c(1u)) Cin (.p(b),.n(in)); capacitor #(.c(1u)) Cout (.p(c),.n(out)); resistor #(.r(100k)) Rin (.p(in),.n(0)); resistor #(.r(100k)) Rout (.p(out),.n(0)); endmodule // foo foo #(.r(10k)) X1 (.vcc(V_cc),.in(amp_in),.out(out)); resistor #(.r(10*(1-gain))) Rin1 (.p(in),.n(amp_in)); resistor #(.r(10*gain)) Rin2 (.p(amp_in),.n(0)); vsource #( DC 20.) Vcc (.p(V_cc),.n(0)); vsource #( AC 0.2) Vin (.p(in),.n(0)); # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 869.54p 0.2 0.099968 0.87954 # v(V_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 796.25p 0.2 0.099968 0.80624 tests/==out/lang_verilog.1a.gc.out000066400000000000000000000033121316501211100173000ustar00rootroot00000000000000paramset zz npn;\ .level=1; .kf=NA( 0.); .af=NA( 1.); .bf=150; .br=NA( 1.); .is=NA( 100.E-18); .nf=NA( 1.); .nr=NA( 1.); .c4=NA( 0.); .nc=NA( 2.); .c2=NA( 0.); .ne=NA( 1.5); .rb=NA( 0.); .re=NA( 0.); .rc=NA( 0.); .cjc=NA( 0.); .cje=NA( 0.); .cjs=NA( 0.); .mjc=NA( 0.33); .mje=NA( 0.33); .mjs=NA( 0.); .vjc=NA( 0.75); .vje=NA( 0.75); .vjs=NA( 0.75); .xcjc=NA( 1.); .itf=NA( 0.); .ptf=NA( 0.); .tf=NA( 0.); .tr=NA( 0.); .xtf=NA( 0.); .xtb=NA( 0.); .xti=NA( 3.); .eg=NA( 1.11);\ endparmset module dumb_resistor (a,b); resistor #(.r(r)) R1 (.p(a),.n(b)); endmodule // dumb_resistor module foo (vcc,in,out); resistor #(.r(z)) Rc (.p(c),.n(vcc)); zz #(.area(NA( 1.))) q1 (.c(c),.b(b),.e(e)); dumb_resistor #(.r(abs(-z)/10)) Re (.a(e),.b(0)); resistor #(.r(100k)) Rb1 (.p(b),.n(vcc)); dumb_resistor #(.r(r)) Rb2 (.a(b),.b(0)); capacitor #(.c(1u)) Cin (.p(b),.n(in)); capacitor #(.c(1u)) Cout (.p(c),.n(out)); resistor #(.r(100k)) Rin (.p(in),.n(0)); resistor #(.r(100k)) Rout (.p(out),.n(0)); endmodule // foo foo #(.r(10k)) X1 (.vcc(V_cc),.in(amp_in),.out(out)); resistor #(.r(10*(1-gain))) Rin1 (.p(in),.n(amp_in)); resistor #(.r(10*gain)) Rin2 (.p(amp_in),.n(0)); vsource #( DC 20.) Vcc (.p(V_cc),.n(0)); vsource #( AC 0.2) Vin (.p(in),.n(0)); # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 869.54p 0.2 0.099968 0.87954 # v(V_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 796.25p 0.2 0.099968 0.80624 tests/==out/lang_verilog.2.gc.out000066400000000000000000000042341316501211100171440ustar00rootroot00000000000000capacitor # ... ) Cin (b in vcc); ^ ? too many: requested=3 max=2 capacitor #(.c(1u)) Cout (c); ^ ? need 1 more nodes, grounding resistor # ... k)) Rin (in 0 vcc); ^ ? too many: requested=3 max=2 resistor # ... 00k)) Rout (out); ^ ? need 1 more nodes, grounding paramset zz npn;\ .level=1; .kf=NA( 0.); .af=NA( 1.); .bf=150; .br=NA( 1.); .is=NA( 100.E-18); .nf=NA( 1.); .nr=NA( 1.); .c4=NA( 0.); .nc=NA( 2.); .c2=NA( 0.); .ne=NA( 1.5); .rb=NA( 0.); .re=NA( 0.); .rc=NA( 0.); .cjc=NA( 0.); .cje=NA( 0.); .cjs=NA( 0.); .mjc=NA( 0.33); .mje=NA( 0.33); .mjs=NA( 0.); .vjc=NA( 0.75); .vje=NA( 0.75); .vjs=NA( 0.75); .xcjc=NA( 1.); .itf=NA( 0.); .ptf=NA( 0.); .tf=NA( 0.); .tr=NA( 0.); .xtf=NA( 0.); .xtb=NA( 0.); .xti=NA( 3.); .eg=NA( 1.11);\ endparmset module dumb_resistor (a,b); resistor #(.r(r)) R1 (.p(a),.n(b)); endmodule // dumb_resistor module foo (vcc,in,out); resistor #(.r(z)) Rc (.p(c),.n(vcc)); zz #(.area(NA( 1.))) q1 (.c(c),.b(b),.e(e)); dumb_resistor #(.r(abs(-z)/10)) Re (.a(e),.b(0)); resistor #(.r(100k)) Rb1 (.p(b),.n(vcc)); dumb_resistor #(.r(r)) Rb2 (.a(b),.b(0)); capacitor #(.c(1u)) Cin (.p(b),.n(in)); capacitor #(.c(1u)) Cout (.p(c),.n(0)); resistor #(.r(100k)) Rin (.p(in),.n(0)); resistor #(.r(100k)) Rout (.p(out),.n(0)); endmodule // foo foo #(.r(10k)) X1 (.vcc(V_cc),.in(amp_in),.out(out)); resistor #(.r(10*(1-gain))) Rin1 (.p(in),.n(amp_in)); resistor #(.r(10*gain)) Rin2 (.p(amp_in),.n(0)); vsource #( DC 20.) Vcc (.p(V_cc),.n(0)); vsource #( AC 0.2) Vin (.p(in),.n(0)); # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 18.222p 0.2 0.099968 0. # v(V_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 18.222p 0.2 0.099968 0. tests/==out/lang_verilog.3.gc.out000066400000000000000000000035741316501211100171530ustar00rootroot00000000000000paramset zz npn;\ .level=1; .kf=NA( 0.); .af=NA( 1.); .bf=150; .br=NA( 1.); .is=NA( 100.E-18); .nf=NA( 1.); .nr=NA( 1.); .c4=NA( 0.); .nc=NA( 2.); .c2=NA( 0.); .ne=NA( 1.5); .rb=NA( 0.); .re=NA( 0.); .rc=NA( 0.); .cjc=NA( 0.); .cje=NA( 0.); .cjs=NA( 0.); .mjc=NA( 0.33); .mje=NA( 0.33); .mjs=NA( 0.); .vjc=NA( 0.75); .vje=NA( 0.75); .vjs=NA( 0.75); .xcjc=NA( 1.); .itf=NA( 0.); .ptf=NA( 0.); .tf=NA( 0.); .tr=NA( 0.); .xtf=NA( 0.); .xtb=NA( 0.); .xti=NA( 3.); .eg=NA( 1.11);\ endparmset module dumb_resistor (a,b); resistor #(.r(r)) R1 (.p(a),.n(b)); endmodule // dumb_resistor module foo (vcc,in,out); resistor #(.r(z)) Rc (.p(c),.n(vcc)); zz #(.area(NA( 1.))) q1 (.c(c),.b(b),.e(e)); dumb_resistor #(.r(abs(-z)/10)) Re (.a(e),.b(0)); resistor #(.r(100k)) Rb1 (.p(b),.n(vcc)); dumb_resistor #(.r(r)) Rb2 (.a(b),.b(0)); capacitor #(.c(1u)) Cin (.p(b),.n(in)); capacitor #(.c(1u)) Cout (.p(c),.n(out)); resistor #(.r(100k)) Rin (.p(in),.n(0)); resistor #(.r(100k)) Rout (.p(out),.n(0)); endmodule // foo foo #(.r(10k)) X1 (.vcc(V_cc),.in(amp_in),.out(out)); resistor #(.r(10*(1-gain))) Rin1 (.p(in),.n(amp_in)); resistor #(.r(10*gain)) Rin2 (.p(amp_in),.n(0)); vsource #( DC 20.) Vcc (.p(V_cc),.n(0)); vsource #( AC 0.2) Vin (.p(in),.n(0)); # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) 27. 20. 0. 0. 16. 10.213 9.2279 #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 869.54p 0.2 0.099968 0.87954 # v(V_cc) v(in) v(out) iter(0) 27. 20. 0. 0. 16. #Freq v(V_cc) v(in) v(amp_in) v(out) 1.K 559.14p 0.2 0.099968 0.5691 # v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) v(prb) 27. 20. 0. 0. 16. 10.213 9.2279 0. tests/==out/ll.ckt.out000066400000000000000000000075571316501211100151460ustar00rootroot00000000000000'trunc error check V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 .fanout ^ ? fanout: no match .fanout 2 ^ ? fanout: no match #Time iter(0) v(1) v(2) v(3) z(C6) zraw(C6) z(3) control(0) 0. 3. 0. 0. 0. 1. 1. 1. 1. 100.u 4. 1. 975.61u 999.u 1. 999.u 999.u 9. 8.3333u 4. 1. 83.326u 83.326u 1. 83.326u 83.326u 16. 694.44n 4. 1. 6.9444u 6.9444u 1. 6.9444u 6.9444u 16. 57.87n 4. 1. 578.7n 578.7n 1. 578.7n 578.7n 16. 4.8225n 4. 1. 48.225n 48.225n 1. 48.225n 48.225n 16. 401.88p 4. 1. 4.0188n 4.0188n 1. 4.0188n 4.0188n 16. 33.49p 4. 1. 334.9p 334.9p 1. 334.9p 334.9p 16. 16.745p 4. 1. 167.45p 167.45p 1. 167.45p 167.45p 16. 27.745p 4. 1. 277.45p 277.45p 1. 55.p 55.p 6. 766.72n 4. 1. 7.6672u 7.6672u 1. 3.8335u 3.8335u 6. 14.732u 4. 1. 147.31u 147.31u 1. 69.822u 69.822u 6. 0.0020118 4. 1. 0.019917 0.019917 1. 0.0098865 0.0098865 6. 0.01 4. 1. 0.095202 0.095202 1. 0.038407 0.038407 1. 0.02 4. 1. 0.18137 0.18137 1. 0.047619 0.047619 1. 0.03 4. 1. 0.25934 0.25934 1. 0.047619 0.047619 1. 0.04 4. 1. 0.32988 0.32988 1. 0.047619 0.047619 1. 0.05 4. 1. 0.3937 0.3937 1. 0.047619 0.047619 1. 0.06 4. 1. 0.45144 0.45144 1. 0.047619 0.047619 1. 0.07 4. 1. 0.50368 0.50368 1. 0.047619 0.047619 1. 0.08 4. 1. 0.55095 0.55095 1. 0.047619 0.047619 1. 0.09 4. 1. 0.59372 0.59372 1. 0.047619 0.047619 1. 0.1 4. 1. 0.63241 0.63241 1. 0.047619 0.047619 1. #Freq v(2) v(3) vp(2) vp(3) z(C6) zraw(C6) z(3) 0.001 1. 1. -0.036 -0.036 1. 1. 1. 0.0031623 1. 1. -0.11384 -0.11384 1. 1. 1. 0.01 0.99998 0.99998 -0.36 -0.36 1. 0.99998 0.99998 0.031623 0.9998 0.9998 -1.1383 -1.1383 1. 0.9998 0.9998 0.1 0.99803 0.99803 -3.5953 -3.5953 1. 0.99803 0.99803 0.31623 0.98083 0.98083 -11.238 -11.238 1. 0.98083 0.98083 1. 0.84673 0.84673 -32.142 -32.142 1. 0.84673 0.84673 3.1623 0.44956 0.44956 -63.284 -63.284 1. 0.44956 0.44956 10. 0.15718 0.15718 -80.957 -80.957 1. 0.15718 0.15718 31.623 0.050266 0.050266 -87.119 -87.119 1. 0.050266 0.050266 100. 0.015913 0.015913 -89.088 -89.088 1. 0.015913 0.015913 V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 Gnucap System status iterations: op=0, dc=0, tran=91, fourier=0, total=125 transient timesteps: accepted=16, rejected=7, total=23 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/ll1.ckt.out000066400000000000000000000073531316501211100152210ustar00rootroot00000000000000'trunc error check V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 .fanout ^ ? fanout: no match .fanout 2 ^ ? fanout: no match #Time iter(0) v(1) v(2) v(3) i(L3) i(R4) control(0) 0. 3. 0. 0. 0. 0. 0. 1. 100.u 4. 1. 975.61u 999.u 999.02u 975.61u 9. 8.3333u 4. 1. 83.326u 83.326u 83.326u 83.326u 16. 694.44n 4. 1. 6.9444u 6.9444u 6.9444u 6.9444u 16. 57.87n 4. 1. 578.7n 578.7n 578.7n 578.7n 16. 4.8225n 4. 1. 48.225n 48.225n 48.225n 48.225n 16. 401.88p 4. 1. 4.0188n 4.0188n 4.0188n 4.0188n 16. 33.49p 4. 1. 334.9p 334.9p 334.9p 334.9p 16. 16.745p 4. 1. 167.45p 167.45p 167.45p 167.45p 16. 27.745p 4. 1. 277.45p 277.45p 277.45p 277.45p 6. 766.72n 4. 1. 7.6672u 7.6672u 7.6672u 7.6672u 6. 14.732u 4. 1. 147.31u 147.31u 147.31u 147.31u 6. 0.0020118 4. 1. 0.019917 0.019917 0.019917 0.019917 6. 0.01 4. 1. 0.095202 0.095202 0.095202 0.095202 1. 0.02 4. 1. 0.18137 0.18137 0.18137 0.18137 1. 0.03 4. 1. 0.25934 0.25934 0.25934 0.25934 1. 0.04 4. 1. 0.32988 0.32988 0.32988 0.32988 1. 0.05 4. 1. 0.3937 0.3937 0.3937 0.3937 1. 0.06 4. 1. 0.45144 0.45144 0.45144 0.45144 1. 0.07 4. 1. 0.50368 0.50368 0.50368 0.50368 1. 0.08 4. 1. 0.55095 0.55095 0.55095 0.55095 1. 0.09 4. 1. 0.59372 0.59372 0.59372 0.59372 1. 0.1 4. 1. 0.63241 0.63241 0.63241 0.63241 1. #Freq v(2) v(3) vp(2) vp(3) i(L3) i(R4) ip(L3) ip(R4) 0.001 1. 1. -0.036 -0.036 1. 1. -0.036 -0.036 0.0031623 1. 1. -0.11384 -0.11384 1. 1. -0.11384 -0.11384 0.01 0.99998 0.99998 -0.36 -0.36 0.99998 0.99998 -0.36 -0.36 0.031623 0.9998 0.9998 -1.1383 -1.1383 0.9998 0.9998 -1.1383 -1.1383 0.1 0.99803 0.99803 -3.5953 -3.5953 0.99803 0.99803 -3.5953 -3.5953 0.31623 0.98083 0.98083 -11.238 -11.238 0.98083 0.98083 -11.238 -11.238 1. 0.84673 0.84673 -32.142 -32.142 0.84673 0.84673 -32.142 -32.142 3.1623 0.44956 0.44956 -63.284 -63.284 0.44956 0.44956 -63.284 -63.284 10. 0.15718 0.15718 -80.957 -80.957 0.15718 0.15718 -80.957 -80.957 31.623 0.050266 0.050266 -87.119 -87.119 0.050266 0.050266 -87.119 -87.119 100. 0.015913 0.015913 -89.088 -89.088 0.015913 0.015913 -89.088 -89.088 V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 Gnucap System status iterations: op=0, dc=0, tran=91, fourier=0, total=125 transient timesteps: accepted=16, rejected=7, total=23 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/lll.ckt.out000066400000000000000000000111261316501211100153050ustar00rootroot00000000000000'trunc error check V1 ( 1 0 ) pwl( 0., 0. 1.p, 1. ) AC 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 #Time iter(0) v(1) v(2) v(3) z(C6) zraw(C6) z(3) control(0) timef(C6) timef(L3) dt(C6) dtr(C6) 0. 3. 0. 0. 0. 1. 1. 1. 1. Inf Inf ?? Inf 20.p 4. 1. 0. 200.p 1. 200.p 200.p 7. 30.p 30.p 20.p 10.p 31.p 4. 1. 110.p 310.p 1. 73.333p 73.333p 6. 524.62n 524.62n 11.p 524.59n 524.61n 4. 1. 5.2459u 5.2461u 1. 3.4972u 3.4972u 6. 41.176u 41.176u 524.58n 40.651u 41.173u 4. 1. 411.62u 411.62u 1. 270.92u 270.92u 6. 402.84u 402.84u 40.648u 361.67u 396.85u 4. 1. 0.0039586 0.0039586 1. 0.0023655 0.0023655 6. 0.0015552 0.0015552 355.67u 0.0011584 0.0014639 4. 1. 0.014516 0.014516 1. 0.0070632 0.0070632 6. 0.0038133 0.0038133 0.001067 0.0023495 0.0035979 4. 1. 0.035279 0.035279 1. 0.014027 0.014027 6. 0.0073935 0.0073935 0.002134 0.0037956 0.0067989 4. 1. 0.065601 0.065601 1. 0.020894 0.020894 6. 0.012146 0.012147 0.0032011 0.0053475 0.01 4. 1. 0.095021 0.095021 1. 0.020894 0.020894 1. 0.016733 0.016733 0.0032011 0.006733 0.015 4. 1. 0.13904 0.13904 1. 0.032258 0.032258 6. 0.022862 0.022862 0.005 0.0078622 0.02 4. 1. 0.18101 0.18101 1. 0.032258 0.032258 1. 0.029641 0.029641 0.005 0.0096412 0.025 4. 1. 0.22097 0.22097 1. 0.032258 0.032258 6. 0.035734 0.035735 0.005 0.010734 0.03 4. 1. 0.25899 0.25899 1. 0.032258 0.032258 1. 0.041844 0.041844 0.005 0.011844 0.04 4. 1. 0.32906 0.32906 1. 0.0625 0.0625 1. 0.053183 0.053183 0.01 0.013183 0.05 4. 1. 0.3929 0.3929 1. 0.0625 0.0625 1. 0.066257 0.066257 0.01 0.016257 0.06 4. 1. 0.45079 0.45079 1. 0.0625 0.0625 1. 0.077852 0.077852 0.01 0.017852 0.07 4. 1. 0.5032 0.5032 1. 0.0625 0.0625 1. 0.089648 0.089648 0.01 0.019648 0.08 4. 1. 0.55063 0.55063 1. 0.0625 0.0625 1. 0.10153 0.10153 0.01 0.021535 0.09 4. 1. 0.59354 0.59354 1. 0.0625 0.0625 1. 0.11348 0.11348 0.01 0.023477 0.1 4. 1. 0.63235 0.63235 1. 0.0625 0.0625 1. 0.12547 0.12547 0.01 0.025467 #Freq v(2) v(3) vp(2) vp(3) z(C6) zraw(C6) z(3) 0.001 1. 1. -0.036 -0.036 1. 1. 1. 0.0031623 1. 1. -0.11384 -0.11384 1. 1. 1. 0.01 0.99998 0.99998 -0.36 -0.36 1. 0.99998 0.99998 0.031623 0.9998 0.9998 -1.1383 -1.1383 1. 0.9998 0.9998 0.1 0.99803 0.99803 -3.5953 -3.5953 1. 0.99803 0.99803 0.31623 0.98083 0.98083 -11.238 -11.238 1. 0.98083 0.98083 1. 0.84673 0.84673 -32.142 -32.142 1. 0.84673 0.84673 3.1623 0.44956 0.44956 -63.284 -63.284 1. 0.44956 0.44956 10. 0.15718 0.15718 -80.957 -80.957 1. 0.15718 0.15718 31.623 0.050266 0.050266 -87.119 -87.119 1. 0.050266 0.050266 100. 0.015913 0.015913 -89.088 -89.088 1. 0.015913 0.015913 V1 ( 1 0 ) pwl( 0., 0. 1.p, 1. ) AC 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 *.tran .01 .1 0 Gnucap System status iterations: op=0, dc=0, tran=83, fourier=0, total=115 transient timesteps: accepted=21, rejected=0, total=21 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/llll.ckt.out000066400000000000000000000361461316501211100154720ustar00rootroot00000000000000'trunc error check V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 .fanout ^ ? fanout: no match .fanout 2 ^ ? fanout: no match #Time iter(0) v(1) v(2) v(3) z(C6) zraw(C6) z(3) control(0) timef(C6) timef(L3) 0. 3. 0. 0. 0. 1. 1. 1. 1. Inf Inf 100.u 4. 1. 975.61u 999.u 1. 999.u 999.u 9. 8.4u 8.4u 8.3333u 4. 1. 83.326u 83.326u 1. 83.326u 83.326u 16. 700.n 700.n 694.44n 4. 1. 6.9444u 6.9444u 1. 6.9444u 6.9444u 16. 58.333n 58.333n 57.87n 4. 1. 578.7n 578.7n 1. 578.7n 578.7n 16. 4.8611n 4.8611n 4.8225n 4. 1. 48.225n 48.225n 1. 48.225n 48.225n 16. 405.09p 405.09p 401.88p 4. 1. 4.0188n 4.0188n 1. 4.0188n 4.0188n 16. 33.758p 33.758p 33.49p 4. 1. 334.9p 334.9p 1. 334.9p 334.9p 16. 10.p 10.p 16.745p 4. 1. 167.45p 167.45p 1. 167.45p 167.45p 16. 26.745p 26.745p 27.745p 4. 1. 277.45p 277.45p 1. 55.p 55.p 6. 766.73n 766.73n 766.72n 4. 1. 7.6672u 7.6672u 1. 3.8335u 3.8335u 6. 14.738u 14.738u 14.732u 4. 1. 147.31u 147.31u 1. 69.822u 69.822u 6. 0.0020717 0.0020717 0.0020118 4. 1. 0.019917 0.019917 1. 0.0098865 0.0098865 6. 0.012441 0.012441 0.01 4. 1. 0.095202 0.095202 1. 0.038407 0.038407 1. 0.029127 0.029127 0.02 4. 1. 0.18137 0.18137 1. 0.047619 0.047619 1. 0.046525 0.046525 0.03 4. 1. 0.25934 0.25934 1. 0.047619 0.047619 1. 0.059789 0.059789 0.04 4. 1. 0.32988 0.32988 1. 0.047619 0.047619 1. 0.072851 0.072851 0.05 4. 1. 0.3937 0.3937 1. 0.047619 0.047619 1. 0.086028 0.086028 0.06 4. 1. 0.45144 0.45144 1. 0.047619 0.047619 1. 0.098989 0.098989 0.07 4. 1. 0.50368 0.50368 1. 0.047619 0.047619 1. 0.11181 0.11181 0.08 4. 1. 0.55095 0.55095 1. 0.047619 0.047619 1. 0.12454 0.12454 0.09 4. 1. 0.59372 0.59372 1. 0.047619 0.047619 1. 0.13721 0.13721 0.1 4. 1. 0.63241 0.63241 1. 0.047619 0.047619 1. 0.14985 0.14985 0.11 4. 1. 0.66742 0.66742 1. 0.047619 0.047619 1. 0.16248 0.16248 0.12 4. 1. 0.6991 0.69909 1. 0.047619 0.047619 1. 0.1751 0.1751 0.13 4. 1. 0.72775 0.72775 1. 0.047619 0.047619 1. 0.18774 0.18774 0.14 4. 1. 0.75368 0.75368 1. 0.047619 0.047619 1. 0.2004 0.2004 0.15 4. 1. 0.77714 0.77714 1. 0.047619 0.047619 1. 0.21309 0.21309 0.16 4. 1. 0.79836 0.79836 1. 0.047619 0.047619 1. 0.22582 0.22582 0.17 4. 1. 0.81757 0.81757 1. 0.047619 0.047619 1. 0.23859 0.23859 0.18 4. 1. 0.83494 0.83494 1. 0.047619 0.047619 1. 0.25142 0.25142 0.19 4. 1. 0.85066 0.85066 1. 0.047619 0.047619 1. 0.2643 0.2643 0.2 4. 1. 0.86488 0.86488 1. 0.047619 0.047619 1. 0.27725 0.27725 0.21 4. 1. 0.87775 0.87775 1. 0.047619 0.047619 1. 0.29027 0.29027 0.22 4. 1. 0.8894 0.88939 1. 0.047619 0.047619 1. 0.30335 0.30335 0.23 4. 1. 0.89993 0.89993 1. 0.047619 0.047619 1. 0.31652 0.31652 0.24 4. 1. 0.90946 0.90946 1. 0.047619 0.047619 1. 0.32977 0.32977 0.25 4. 1. 0.91808 0.91808 1. 0.047619 0.047619 1. 0.34311 0.34311 0.26 4. 1. 0.92588 0.92588 1. 0.047619 0.047619 1. 0.35654 0.35654 0.27 4. 1. 0.93294 0.93294 1. 0.047619 0.047619 1. 0.37007 0.37007 0.28 4. 1. 0.93933 0.93933 1. 0.047619 0.047619 1. 0.3837 0.3837 0.29 4. 1. 0.94511 0.94511 1. 0.047619 0.047619 1. 0.39743 0.39743 0.3 4. 1. 0.95034 0.95033 1. 0.047619 0.047619 1. 0.41128 0.41128 0.31 4. 1. 0.95507 0.95506 1. 0.047619 0.047619 1. 0.42525 0.42525 0.32 4. 1. 0.95934 0.95934 1. 0.047619 0.047619 1. 0.43934 0.43934 0.33 4. 1. 0.96322 0.96322 1. 0.047619 0.047619 1. 0.45355 0.45355 0.34 4. 1. 0.96672 0.96672 1. 0.047619 0.047619 1. 0.4679 0.4679 0.35 4. 1. 0.96989 0.96989 1. 0.047619 0.047619 1. 0.48238 0.48238 0.36 4. 1. 0.97276 0.97276 1. 0.047619 0.047619 1. 0.497 0.497 0.37 4. 1. 0.97535 0.97535 1. 0.047619 0.047619 1. 0.51178 0.51178 0.38 4. 1. 0.9777 0.9777 1. 0.047619 0.047619 1. 0.5267 0.5267 0.39 4. 1. 0.97982 0.97982 1. 0.047619 0.047619 1. 0.54179 0.54179 0.4 4. 1. 0.98174 0.98174 1. 0.047619 0.047619 1. 0.55704 0.55704 0.41 4. 1. 0.98348 0.98348 1. 0.047619 0.047619 1. 0.57247 0.57247 0.42 4. 1. 0.98506 0.98506 1. 0.047619 0.047619 1. 0.58807 0.58807 0.43 4. 1. 0.98648 0.98648 1. 0.047619 0.047619 1. 0.60385 0.60385 0.44 4. 1. 0.98777 0.98777 1. 0.047619 0.047619 1. 0.61983 0.61983 0.45 4. 1. 0.98893 0.98893 1. 0.047619 0.047619 1. 0.636 0.636 0.46 4. 1. 0.98999 0.98999 1. 0.047619 0.047619 1. 0.65238 0.65238 0.47 3. 1. 0.99094 0.99094 1. 0.047619 0.047619 1. 0.66897 0.66897 0.48 3. 1. 0.9918 0.9918 1. 0.047619 0.047619 1. 0.68578 0.68578 0.49 3. 1. 0.99258 0.99258 1. 0.047619 0.047619 1. 0.70282 0.70282 0.5 3. 1. 0.99329 0.99329 1. 0.047619 0.047619 1. 0.72009 0.72009 0.51 3. 1. 0.99393 0.99393 1. 0.047619 0.047619 1. 0.7376 0.7376 0.52 3. 1. 0.99451 0.99451 1. 0.047619 0.047619 1. 0.75537 0.75537 0.53 3. 1. 0.99503 0.99503 1. 0.047619 0.047619 1. 0.7734 0.7734 0.54 3. 1. 0.9955 0.9955 1. 0.047619 0.047619 1. 0.7917 0.79169 0.55 3. 1. 0.99593 0.99593 1. 0.047619 0.047619 1. 0.81027 0.81027 0.56 3. 1. 0.99632 0.99632 1. 0.047619 0.047619 1. 0.82914 0.82913 0.57 3. 1. 0.99667 0.99667 1. 0.047619 0.047619 1. 0.8483 0.8483 0.58 3. 1. 0.99699 0.99699 1. 0.047619 0.047619 1. 0.86777 0.86777 0.59 3. 1. 0.99727 0.99727 1. 0.047619 0.047619 1. 0.88756 0.88756 0.6 3. 1. 0.99753 0.99753 1. 0.047619 0.047619 1. 0.90768 0.90768 0.61 3. 1. 0.99777 0.99777 1. 0.047619 0.047619 1. 0.92814 0.92814 0.62 3. 1. 0.99798 0.99798 1. 0.047619 0.047619 1. 0.94896 0.94896 0.63 3. 1. 0.99817 0.99817 1. 0.047619 0.047619 1. 0.97014 0.97014 0.64 3. 1. 0.99835 0.99835 1. 0.047619 0.047619 1. 0.9917 0.9917 0.65 3. 1. 0.9985 0.9985 1. 0.047619 0.047619 1. 1.0137 1.0137 0.66 3. 1. 0.99865 0.99865 1. 0.047619 0.047619 1. 1.036 1.036 0.67 3. 1. 0.99878 0.99877 1. 0.047619 0.047619 1. 1.0588 1.0588 0.68 3. 1. 0.99889 0.99889 1. 0.047619 0.047619 1. 1.082 1.082 0.69 3. 1. 0.999 0.999 1. 0.047619 0.047619 1. 1.1056 1.1056 0.7 3. 1. 0.99909 0.99909 1. 0.047619 0.047619 1. 1.1297 1.1297 0.71 3. 1. 0.99918 0.99918 1. 0.047619 0.047619 1. 1.1543 1.1543 0.72 3. 1. 0.99926 0.99926 1. 0.047619 0.047619 1. 1.1794 1.1794 0.73 3. 1. 0.99933 0.99933 1. 0.047619 0.047619 1. 1.205 1.205 0.74 3. 1. 0.99939 0.99939 1. 0.047619 0.047619 1. 1.2311 1.2311 0.75 3. 1. 0.99945 0.99945 1. 0.047619 0.047619 1. 1.2578 1.2578 0.76 3. 1. 0.9995 0.9995 1. 0.047619 0.047619 1. 1.2851 1.2851 0.77 3. 1. 0.99955 0.99955 1. 0.047619 0.047619 1. 1.3129 1.3129 0.78 3. 1. 0.99959 0.99959 1. 0.047619 0.047619 1. 1.3413 1.3413 0.79 3. 1. 0.99963 0.99963 1. 0.047619 0.047619 1. 1.3703 1.3703 0.8 3. 1. 0.99967 0.99967 1. 0.047619 0.047619 1. 1.4 1.4 0.81 3. 1. 0.9997 0.9997 1. 0.047619 0.047619 1. 1.4304 1.4304 0.82 3. 1. 0.99973 0.99973 1. 0.047619 0.047619 1. 1.4615 1.4615 0.83 3. 1. 0.99975 0.99975 1. 0.047619 0.047619 1. 1.4932 1.4932 0.84 3. 1. 0.99978 0.99978 1. 0.047619 0.047619 1. 1.5257 1.5257 0.85 3. 1. 0.9998 0.9998 1. 0.047619 0.047619 1. 1.559 1.559 0.86 3. 1. 0.99982 0.99982 1. 0.047619 0.047619 1. 1.5931 1.5931 0.87 3. 1. 0.99983 0.99983 1. 0.047619 0.047619 1. 1.6279 1.6279 0.88 3. 1. 0.99985 0.99985 1. 0.047619 0.047619 1. 1.6636 1.6636 0.89 3. 1. 0.99986 0.99986 1. 0.047619 0.047619 1. 1.7002 1.7002 0.9 3. 1. 0.99988 0.99988 1. 0.047619 0.047619 1. 1.7377 1.7377 0.91 3. 1. 0.99989 0.99989 1. 0.047619 0.047619 1. 1.7761 1.7761 0.92 3. 1. 0.9999 0.9999 1. 0.047619 0.047619 1. 1.8155 1.8155 0.93 3. 1. 0.99991 0.99991 1. 0.047619 0.047619 1. 1.8559 1.8559 0.94 3. 1. 0.99992 0.99992 1. 0.047619 0.047619 1. 1.8973 1.8973 0.95 3. 1. 0.99993 0.99992 1. 0.047619 0.047619 1. 1.9398 1.9398 0.96 3. 1. 0.99993 0.99993 1. 0.047619 0.047619 1. 1.9834 1.9834 0.97 3. 1. 0.99994 0.99994 1. 0.047619 0.047619 1. 2.0281 2.0281 0.98 3. 1. 0.99994 0.99994 1. 0.047619 0.047619 1. 2.074 2.074 0.99 3. 1. 0.99995 0.99995 1. 0.047619 0.047619 1. 2.1211 2.1211 1. 3. 1. 0.99995 0.99995 1. 0.047619 0.047619 1. 2.1695 2.1695 #Freq v(2) v(3) vp(2) vp(3) z(C6) zraw(C6) z(3) 0.001 1. 1. -0.036 -0.036 1. 1. 1. 0.0031623 1. 1. -0.11384 -0.11384 1. 1. 1. 0.01 0.99998 0.99998 -0.36 -0.36 1. 0.99998 0.99998 0.031623 0.9998 0.9998 -1.1383 -1.1383 1. 0.9998 0.9998 0.1 0.99803 0.99803 -3.5953 -3.5953 1. 0.99803 0.99803 0.31623 0.98083 0.98083 -11.238 -11.238 1. 0.98083 0.98083 1. 0.84673 0.84673 -32.142 -32.142 1. 0.84673 0.84673 3.1623 0.44956 0.44956 -63.284 -63.284 1. 0.44956 0.44956 10. 0.15718 0.15718 -80.957 -80.957 1. 0.15718 0.15718 31.623 0.050266 0.050266 -87.119 -87.119 1. 0.050266 0.050266 100. 0.015913 0.015913 -89.088 -89.088 1. 0.015913 0.015913 V1 ( 1 0 ) generator scale= 1. L3 ( 1 2 ) 0.1 R4 ( 2 0 ) 1. R5 ( 1 3 ) 1. C6 ( 3 0 ) 0.1 Gnucap System status iterations: op=0, dc=0, tran=397, fourier=0, total=521 transient timesteps: accepted=106, rejected=7, total=113 nodes: user=3, subckt=0, model=0, total=3 dctran density=77.8%, ac density=77.8% tests/==out/m_expression.1.ckt.out000066400000000000000000000022071316501211100173740ustar00rootroot00000000000000# expression test ".param a=9 " ".eval a " a= 9. ".param b=-8 " ".eval b " b=-8. ".param c={3*8} " ".eval c " c= 24. ".param d={3+8} " ".eval d " d= 11. ".param e={3-8} " ".eval e " e=-5. ".param f={3/8} " ".eval f " f= 0.375 ".param a1={3==8} " ".eval a1 " a1= 0. ".param b1={3!=8} " ".eval b1 " b1= 1. ".param c1={3<8} " ".eval c1 " c1= 1. ".param d1={3>8} " ".eval d1 " d1= 0. ".param e1={3<=8} " ".eval e1 " e1= 1. ".param f1={3>=8} " ".eval f1 " f1= 0. ".param g1={3||8} " ".eval g1 " g1= 1. ".param h1={3&&8} " ".eval h1 " h1= 1. ".param a2={3==3} " ".eval a2 " a2= 1. ".param b2={3!=3} " ".eval b2 " b2= 0. ".param c2={3<3} " ".eval c2 " c2= 0. ".param d2={3>3} " ".eval d2 " d2= 0. ".param e2={3<=3} " ".eval e2 " e2= 1. ".param f2={3>=3} " ".eval f2 " f2= 1. ".param g2={3||3} " ".eval g2 " g2= 1. ".param h2={3&&3} " ".eval h2 " h2= 1. ".param j1={0||0} " ".eval j1 " j1= 0. ".param j2={0||1} " ".eval j2 " j2= 1. ".param j3={1||0} " ".eval j3 " j3= 1. ".param j4={1||1} " ".eval j4 " j4= 1. ".param k1={0&&0} " ".eval k1 " k1= 0. ".param k2={0&&1} " ".eval k2 " k2= 0. ".param k3={1&&0} " ".eval k3 " k3= 0. ".param k4={1&&1} " ".eval k4 " k4= 1. tests/==out/m_expression.2.ckt.out000066400000000000000000000010151316501211100173710ustar00rootroot00000000000000# expression test ".param a={2+3*4} " ".eval a " a= 14. ".param b={(2+3)*4} " ".eval b " b= 20. ".param c={2+(3*4)} " ".eval c " c= 14. ".param d={2+(-3*4)} " ".eval d " d=-10. ".param e={2+(+3*4)} " ".eval e " e= 14. ".param f={2+(!3*4)} " ".eval f " f= 2. ".param g={abs(-3)} " ".eval g " g= 3. ".param h={abs(4-2)} " ".eval h " h= 2. ".param i={abs(2-4)} " ".eval i " i= 2. ".param j={pow(3,2)} " ".eval j " j= 9. ".param k={pow(3,-2)} " ".eval k " k= 0.111111111111111 ".param l={pow(abs(3),abs(-2))} " ".eval l " l= 9. tests/==out/m_expression.3.ckt.out000066400000000000000000000010411316501211100173710ustar00rootroot00000000000000# expression test -- eval ".eval (1+3) " (1 + 3)= 4. ".eval exp(1) " exp(1)= 2.71828182845905 ".eval exp(1-1) " exp((1 - 1))= 1. ".eval exp(-1) " exp((- 1))= 0.367879441171442 ".eval exp(-1)*exp(1) " (exp((- 1)) * exp(1))= 1. ".eval exp(2) " exp(2)= 7.38905609893065 ".eval log(2) " log(2)= 0.693147180559945 ".eval exp(log(2)) " exp(log(2))= 2. ".eval log(exp(2)) " log(exp(2))= 2. ".eval log(exp(abs(-2))) " log(exp(abs((- 2))))= 2. ".eval pow(abs(-3), abs(-2)) " pow(abs((- 3)), abs((- 2)))= 9. ".eval na() " na()=NA ".eval na(3) " na(3)=NA tests/==out/m_expression.error.1.ckt.out000066400000000000000000000000421316501211100205170ustar00rootroot00000000000000# expression error no match: foo tests/==out/named_nodes.ckt.out000066400000000000000000000004101316501211100167700ustar00rootroot00000000000000'named nodes test .option namednodes ^ ? what's this? # v(2) v(n1) 27. 0.5 1. .subckt foo ( q w ) R1 ( q w ) 1.K .ends foo X1 ( 2 0 ) foo X2 ( n1 2 ) foo V1 ( n1 0 ) DC 1. .fanout ^ ? fanout: no match tests/==out/nmos100.1.ckt.out000066400000000000000000000045071316501211100160630ustar00rootroot00000000000000100 cascaded NMOS inverters # iter(0) V(1) V(10) V(100) V(101) V(102) + V(11) V(12) V(13) V(14) V(15) V(16) V(17) + V(18) V(19) V(2) V(20) V(21) V(22) V(23) + V(24) V(25) V(26) V(27) V(28) V(29) V(3) + V(30) V(31) V(32) V(33) V(34) V(35) V(36) + V(37) V(38) V(39) V(4) V(40) V(41) V(42) + V(43) V(44) V(45) V(46) V(47) V(48) V(49) + V(5) V(50) V(51) V(52) V(53) V(54) V(55) + V(56) V(57) V(58) V(59) V(6) V(60) V(61) + V(62) V(63) V(64) V(65) V(66) V(67) V(68) + V(69) V(7) V(70) V(71) V(72) V(73) V(74) + V(75) V(76) V(77) V(78) V(79) V(8) V(80) + V(81) V(82) V(83) V(84) V(85) V(86) V(87) + V(88) V(89) V(9) V(90) V(91) V(92) V(93) + V(94) V(95) V(96) V(97) V(98) V(99) 27. 44. 5. 0.46622 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.8 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 3.0455 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.49727 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 + 3.2034 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 tests/==out/nmos100.ckt.out000066400000000000000000000045071316501211100157240ustar00rootroot00000000000000100 cascaded NMOS inverters # iter(0) V(1) V(10) V(100) V(101) V(102) + V(11) V(12) V(13) V(14) V(15) V(16) V(17) + V(18) V(19) V(2) V(20) V(21) V(22) V(23) + V(24) V(25) V(26) V(27) V(28) V(29) V(3) + V(30) V(31) V(32) V(33) V(34) V(35) V(36) + V(37) V(38) V(39) V(4) V(40) V(41) V(42) + V(43) V(44) V(45) V(46) V(47) V(48) V(49) + V(5) V(50) V(51) V(52) V(53) V(54) V(55) + V(56) V(57) V(58) V(59) V(6) V(60) V(61) + V(62) V(63) V(64) V(65) V(66) V(67) V(68) + V(69) V(7) V(70) V(71) V(72) V(73) V(74) + V(75) V(76) V(77) V(78) V(79) V(8) V(80) + V(81) V(82) V(83) V(84) V(85) V(86) V(87) + V(88) V(89) V(9) V(90) V(91) V(92) V(93) + V(94) V(95) V(96) V(97) V(98) V(99) 27. 25. 5. 0.46622 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.8 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 3.0455 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.49727 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 + 3.2034 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 0.46622 + 3.2034 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 3.2034 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.46622 3.2034 tests/==out/nmos15.ckt.out000066400000000000000000000054011316501211100156430ustar00rootroot0000000000000015 cascaded NMOS inverters # iter(0) V(1) V(10) V(11) V(12) V(13) + V(14) V(15) V(16) V(17) V(2) V(3) V(4) + V(5) V(6) V(7) V(8) V(9) 27. 21. 5. 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.8 3.0455 0.49727 + 3.2034 0.46622 3.2034 0.46622 3.2034 # iter(0) V(1) V(10) V(11) V(12) V(13) + V(14) V(15) V(16) V(17) V(2) V(3) V(4) + V(5) V(6) V(7) V(8) V(9) 27. 21. 5. 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.8 3.0455 0.49727 + 3.2034 0.46622 3.2034 0.46622 3.2034 Gnucap System status iterations: op=21, dc=0, tran=0, fourier=0, total=42 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=17, subckt=0, model=0, total=17 dctran density=26.6%, ac density=26.6% md1 ( 3 2 0 0 ) modeld l=2u w=10u ml1 ( 1 1 3 0 ) modell l=2u w=2u md2 ( 4 3 0 0 ) modeld l=2u w=10u ml2 ( 1 1 4 0 ) modell l=2u w=2u md3 ( 5 4 0 0 ) modeld l=2u w=10u ml3 ( 1 1 5 0 ) modell l=2u w=2u md4 ( 6 5 0 0 ) modeld l=2u w=10u ml4 ( 1 1 6 0 ) modell l=2u w=2u md5 ( 7 6 0 0 ) modeld l=2u w=10u ml5 ( 1 1 7 0 ) modell l=2u w=2u md6 ( 8 7 0 0 ) modeld l=2u w=10u ml6 ( 1 1 8 0 ) modell l=2u w=2u md7 ( 9 8 0 0 ) modeld l=2u w=10u ml7 ( 1 1 9 0 ) modell l=2u w=2u md8 ( 10 9 0 0 ) modeld l=2u w=10u ml8 ( 1 1 10 0 ) modell l=2u w=2u md9 ( 11 10 0 0 ) modeld l=2u w=10u ml9 ( 1 1 11 0 ) modell l=2u w=2u md10 ( 12 11 0 0 ) modeld l=2u w=10u ml10 ( 1 1 12 0 ) modell l=2u w=2u md11 ( 13 12 0 0 ) modeld l=2u w=10u ml11 ( 1 1 13 0 ) modell l=2u w=2u md12 ( 14 13 0 0 ) modeld l=2u w=10u ml12 ( 1 1 14 0 ) modell l=2u w=2u md13 ( 15 14 0 0 ) modeld l=2u w=10u ml13 ( 1 1 15 0 ) modell l=2u w=2u md14 ( 16 15 0 0 ) modeld l=2u w=10u ml14 ( 1 1 16 0 ) modell l=2u w=2u md15 ( 17 16 0 0 ) modeld l=2u w=10u ml15 ( 1 1 17 0 ) modell l=2u w=2u vdd ( 1 0 ) DC 5. vin ( 2 0 ) DC 0.8 .model MODELD nmos2 ( level=2 kp=28U nfs=NA( 0.) delta=NA( 0.) vto=0.7 + gamma=0.9 phi=0.5 lambda=0.01 tox= 100.n uo=NA( 600.) tpg=1 tnom=NA( 27.) + fc=NA( 0.5) pb=NA( 0.8) cj=NA( 0.) mj=NA( 0.5) cjsw=NA( 0.) mjsw=NA( 0.33) + is=NA( 10.f) cgso=NA( 0.) cgdo=NA( 0.) cgbo=NA( 0.) ld=NA( 0.)) .model MODELL nmos2 ( level=2 kp=28U nfs=NA( 0.) delta=NA( 0.) vto=0.7 + gamma=0.9 phi=0.5 lambda=0.01 tox= 100.n uo=NA( 600.) tpg=1 tnom=NA( 27.) + fc=NA( 0.5) pb=NA( 0.8) cj=NA( 0.) mj=NA( 0.5) cjsw=NA( 0.) mjsw=NA( 0.33) + is=NA( 10.f) cgso=NA( 0.) cgdo=NA( 0.) cgbo=NA( 0.) ld=NA( 0.)) tests/==out/nmos15a.ckt.out000066400000000000000000000053241316501211100160100ustar00rootroot0000000000000015 cascaded NMOS inverters # iter(0) V(1) V(10) V(11) V(12) V(13) + V(14) V(15) V(16) V(17) V(2) V(3) V(4) + V(5) V(6) V(7) V(8) V(9) 27. 21. 5. 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.8 3.0455 0.49727 + 3.2034 0.46622 3.2034 0.46622 3.2034 # iter(0) V(1) V(10) V(11) V(12) V(13) + V(14) V(15) V(16) V(17) V(2) V(3) V(4) + V(5) V(6) V(7) V(8) V(9) 27. 21. 5. 0.46622 3.2034 0.46622 3.2034 + 0.46622 3.2034 0.46622 3.2034 0.8 3.0455 0.49727 + 3.2034 0.46622 3.2034 0.46622 3.2034 Gnucap System status iterations: op=21, dc=0, tran=0, fourier=0, total=42 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=17, subckt=0, model=0, total=17 dctran density=26.6%, ac density=26.6% md1 ( 3 2 0 0 ) modeld l=l w=wd ml1 ( 1 1 3 0 ) modell l=l w=wl md2 ( 4 3 0 0 ) modeld l=l w=wd ml2 ( 1 1 4 0 ) modell l=l w=wl md3 ( 5 4 0 0 ) modeld l=l w=wd ml3 ( 1 1 5 0 ) modell l=l w=wl md4 ( 6 5 0 0 ) modeld l=l w=wd ml4 ( 1 1 6 0 ) modell l=l w=wl md5 ( 7 6 0 0 ) modeld l=l w=wd ml5 ( 1 1 7 0 ) modell l=l w=wl md6 ( 8 7 0 0 ) modeld l=l w=wd ml6 ( 1 1 8 0 ) modell l=l w=wl md7 ( 9 8 0 0 ) modeld l=l w=wd ml7 ( 1 1 9 0 ) modell l=l w=wl md8 ( 10 9 0 0 ) modeld l=l w=wd ml8 ( 1 1 10 0 ) modell l=l w=wl md9 ( 11 10 0 0 ) modeld l=l w=wd ml9 ( 1 1 11 0 ) modell l=l w=wl md10 ( 12 11 0 0 ) modeld l=l w=wd ml10 ( 1 1 12 0 ) modell l=l w=wl md11 ( 13 12 0 0 ) modeld l=l w=wd ml11 ( 1 1 13 0 ) modell l=l w=wl md12 ( 14 13 0 0 ) modeld l=l w=wd ml12 ( 1 1 14 0 ) modell l=l w=wl md13 ( 15 14 0 0 ) modeld l=l w=wd ml13 ( 1 1 15 0 ) modell l=l w=wl md14 ( 16 15 0 0 ) modeld l=l w=wd ml14 ( 1 1 16 0 ) modell l=l w=wl md15 ( 17 16 0 0 ) modeld l=l w=wd ml15 ( 1 1 17 0 ) modell l=l w=wl vdd ( 1 0 ) DC 5. vin ( 2 0 ) DC 0.8 .model MODELD nmos2 ( level=2 kp=28U nfs=NA( 0.) delta=NA( 0.) vto=0.7 + gamma=0.9 phi=0.5 lambda=0.01 tox= 100.n uo=NA( 600.) tpg=1 tnom=NA( 27.) + fc=NA( 0.5) pb=NA( 0.8) cj=NA( 0.) mj=NA( 0.5) cjsw=NA( 0.) mjsw=NA( 0.33) + is=NA( 10.f) cgso=NA( 0.) cgdo=NA( 0.) cgbo=NA( 0.) ld=NA( 0.)) .model MODELL nmos2 ( level=2 kp=28U nfs=NA( 0.) delta=NA( 0.) vto=0.7 + gamma=0.9 phi=0.5 lambda=0.01 tox= 100.n uo=NA( 600.) tpg=1 tnom=NA( 27.) + fc=NA( 0.5) pb=NA( 0.8) cj=NA( 0.) mj=NA( 0.5) cjsw=NA( 0.) mjsw=NA( 0.33) + is=NA( 10.f) cgso=NA( 0.) cgdo=NA( 0.) cgbo=NA( 0.) ld=NA( 0.)) tests/==out/nmp100.ckt.out000066400000000000000000000110011316501211100155250ustar00rootroot00000000000000100 cascaded NMOS inverters # iter(0) V(1) V(10) V(100) V(101) V(102) + V(103) V(104) V(105) V(106) V(107) V(108) V(109) + V(11) V(110) V(111) V(112) V(113) V(114) V(115) + V(116) V(117) V(118) V(119) V(12) V(120) V(121) + V(122) V(123) V(124) V(125) V(126) V(127) V(128) + V(129) V(13) V(130) V(131) V(132) V(133) V(134) + V(135) V(136) V(137) V(138) V(139) V(14) V(140) + V(141) V(142) V(143) V(144) V(145) V(146) V(147) + V(148) V(149) V(15) V(150) V(151) V(152) V(153) + V(154) V(155) V(156) V(157) V(158) V(159) V(16) + V(160) V(161) V(162) V(163) V(164) V(165) V(166) + V(167) V(168) V(169) V(17) V(170) V(171) V(172) + V(173) V(174) V(175) V(176) V(177) V(178) V(179) + V(18) V(180) V(181) V(182) V(183) V(184) V(185) + V(186) V(187) V(188) V(189) V(19) V(190) V(191) + V(192) V(193) V(194) V(195) V(196) V(197) V(198) + V(199) V(2) V(20) V(200) V(201) V(21) V(22) + V(23) V(24) V(25) V(26) V(27) V(28) V(29) + V(3) V(30) V(31) V(32) V(33) V(34) V(35) + V(36) V(37) V(38) V(39) V(4) V(40) V(41) + V(42) V(43) V(44) V(45) V(46) V(47) V(48) + V(49) V(5) V(50) V(51) V(52) V(53) V(54) + V(55) V(56) V(57) V(58) V(59) V(6) V(60) + V(61) V(62) V(63) V(64) V(65) V(66) V(67) + V(68) V(69) V(7) V(70) V(71) V(72) V(73) + V(74) V(75) V(76) V(77) V(78) V(79) V(8) + V(80) V(81) V(82) V(83) V(84) V(85) V(86) + V(87) V(88) V(89) V(9) V(90) V(91) V(92) + V(93) V(94) V(95) V(96) V(97) V(98) V(99) 27. 21. 0.8 5. 5. 0.46622 5. + 3.2034 5. 0.46622 5. 3.2034 5. 0.46622 + 3.2034 5. 3.2034 5. 0.46622 5. 3.2034 + 5. 0.46622 5. 3.2034 5. 5. 0.46622 + 5. 3.2034 5. 0.46622 5. 3.2034 5. + 0.46622 0.46622 5. 3.2034 5. 0.46622 5. + 3.2034 5. 0.46622 5. 3.2034 5. 5. + 0.46622 5. 3.2034 5. 0.46622 5. 3.2034 + 5. 0.46622 3.2034 5. 3.2034 5. 0.46622 + 5. 3.2034 5. 0.46622 5. 3.2034 5. + 5. 0.46622 5. 3.2034 5. 0.46622 5. + 3.2034 5. 0.46622 0.46622 5. 3.2034 5. + 0.46622 5. 3.2034 5. 0.46622 5. 3.2034 + 5. 5. 0.46622 5. 3.2034 5. 0.46622 + 5. 3.2034 5. 0.46622 3.2034 5. 3.2034 + 5. 0.46622 5. 3.2034 5. 0.46622 5. + 3.2034 5. 5. 5. 0.46622 0.46622 5. + 3.2034 5. 0.46622 5. 3.2034 5. 0.46622 + 3.0455 5. 3.2034 5. 0.46622 5. 3.2034 + 5. 0.46622 5. 3.2034 5. 5. 0.46622 + 5. 3.2034 5. 0.46622 5. 3.2034 5. + 0.46622 0.49727 5. 3.2034 5. 0.46622 5. + 3.2034 5. 0.46622 5. 3.2034 5. 5. + 0.46622 5. 3.2034 5. 0.46622 5. 3.2034 + 5. 0.46622 3.2034 5. 3.2034 5. 0.46622 + 5. 3.2034 5. 0.46622 5. 3.2034 5. + 5. 0.46622 5. 3.2034 5. 0.46622 5. + 3.2034 5. 0.46622 0.46622 5. 3.2034 5. + 0.46622 5. 3.2034 5. 0.46622 5. 3.2034 tests/==out/nothing.ckt.out000066400000000000000000000015261316501211100161730ustar00rootroot00000000000000'nothing Gnucap System status command ------ last -- total get 0.00 0.00 op 0.00 0.00 dc 0.00 0.00 tran 0.00 0.00 fourier 0.00 0.00 ac 0.00 0.00 function ----- last -- total setup 0.00 0.00 order 0.00 0.00 function ----- last -- total advance 0.00 0.00 queue 0.00 0.00 evaluate 0.00 0.00 load 0.00 0.00 lu 0.00 0.00 back 0.00 0.00 review 0.00 0.00 accept 0.00 0.00 output 0.00 0.00 overhead 0.00 0.00 total 0.00 0.00 iterations: op=0, dc=0, tran=0, fourier=0, total=0 transient timesteps: accepted=0, rejected=0, total=0 nodes: user=0, subckt=0, model=0, total=0 dctran density=0.0%, ac density=0.0% tests/==out/opamp-ol-disto.2.ckt.out000066400000000000000000000274621316501211100175400ustar00rootroot000000000000002 stage op-amp open loop 02/16/88 # iter(0) v(1) v(2) v(3) v(4) v(5) + v(6) v(7) v(8) v(9) 27. 13. 0. 0. 1.5708 1.5709 -1.1669 + 0.079194 -1.6303 -2.5 2.5 vdb(6) 0. 20. 40. 60. 80. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + * | 1.5849 | . +. * | 2.5119 | . +. * | 3.9811 | . + . * | 6.3096 | . + . * | 10. | . + . *. | 15.849 | . + . *. | 25.119 | . + . * . | 39.811 | . + . * . | 63.096 | . + . * . | 100. | . + . * . | 158.49 | .+ . * . | 251.19 | .+ * . | 398.11 | + * . . | 630.96 | + * . . | 1.K | +. * . . | 1.5849K| +. * . . | 2.5119K| +* . . | 3.9811K| * + . . . | 6.3096K| * + . . . | 10.K | * + . . . | 15.849K| * + . . . | 25.119K* + . . . | 39.811K* + . . . | 63.096K* + . . . | 100.K * . . . + | 158.49K* . . . + | 251.19K* . . . + | 398.11K* . . . + | 630.96K* . . . + | 1.Meg * . . .+ | 1.5849M* . . + | 2.5119M* . . +. | 3.9811M* . . + . | 6.3096M* . . + . | 10.Meg * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -500.u | . * . . | -480.u | . * . . | -460.u | . * . . | -440.u | . * . . | -420.u | . * . . | -400.u | . * . . | -380.u | . * . . | -360.u | . * . . | -340.u | . * . . | -320.u | . * . . | -300.u | . * . . | -280.u | . * . . | -260.u | . * . . | -240.u | . * . . | -220.u | . * . . | -200.u | . * . . | -180.u | . * . . | -160.u | . * . . | -140.u | . * . . | -120.u | . * . . | -100.u | . * . . | -80.u | . * . . | -60.u | . *. . | -40.u | . * . | -20.u | . * . | 0. | . .* . | 20.u | . .* . | 40.u | . . * . | 60.u | . . * . | 80.u | . . * . | 100.u | . . * . | 120.u | . . * . | 140.u | . . * . | 160.u | . . * . | 180.u | . . * . | 200.u | . . * . | 220.u | . . * . | 240.u | . . * . | 260.u | . . * . | 280.u | . . * . | 300.u | . . * . | 320.u | . . * . | 340.u | . . * . | 360.u | . . * . | 380.u | . . * . | 400.u | . . * . | 420.u | . . * . | 440.u | . . * . | 460.u | . . * . | 480.u | . . * . | 500.u | . . * . | +-----------------+----------------+-----------------+----------------+ #Time v(vin) v(6) 0. 0. 0.079194 31.25u 0.097545 0.45949 62.5u 0.19134 1.6937 93.75u 0.27779 2.4902 125.u 0.35355 2.4856 156.25u 0.41573 2.4951 187.5u 0.46194 2.4947 218.75u 0.49039 2.4944 250.u 0.5 2.4893 281.25u 0.49039 2.4943 312.5u 0.46194 2.4895 343.75u 0.41573 2.4942 375.u 0.35355 2.4895 406.25u 0.27779 2.4939 437.5u 0.19134 2.4894 468.75u 0.097545 2.4937 500.u -8.1211f 2.4893 531.25u -0.097545 2.4948 562.5u -0.19134 2.4716 593.75u -0.27779 2.2408 625.u -0.35355 1.5192 656.25u -0.41573 0.88639 687.5u -0.46194 0.33209 718.75u -0.49039 -0.15136 750.u -0.5 -0.57279 781.25u -0.49039 -0.9401 812.5u -0.46194 -1.2598 843.75u -0.41573 -1.5371 875.u -0.35355 -1.7787 906.25u -0.27779 -1.9882 937.5u -0.19134 -2.1712 968.75u -0.097545 -2.332 0.001 8.1988f -2.4302 #Time v(vin) v(6) 0.001 8.1988f -2.4302 0.0010313 0.097545 -2.4688 0.0010625 0.19134 -1.5063 0.0010938 0.27779 0.25546 0.001125 0.35355 2.2544 0.0011563 0.41573 2.492 0.0011875 0.46194 2.495 0.0012188 0.49039 2.4894 0.00125 0.5 2.4897 0.0012813 0.49039 2.4939 0.0013125 0.46194 2.4898 0.0013438 0.41573 2.4938 0.001375 0.35355 2.4898 0.0014063 0.27779 2.4936 0.0014375 0.19134 2.4897 0.0014688 0.097545 2.4934 0.0015 -7.5579f 2.4896 0.0015313 -0.097545 2.4944 0.0015625 -0.19134 2.4728 0.0015938 -0.27779 2.2279 0.001625 -0.35355 1.5083 0.0016563 -0.41573 0.87728 0.0016875 -0.46194 0.32414 0.0017188 -0.49039 -0.1583 0.00175 -0.5 -0.57883 0.0017813 -0.49039 -0.94536 0.0018125 -0.46194 -1.2644 0.0018438 -0.41573 -1.5411 0.001875 -0.35355 -1.7822 0.0019063 -0.27779 -1.9912 0.0019375 -0.19134 -2.1738 0.0019688 -0.097545 -2.3342 0.002 7.7668f -2.4309 # v(vin) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 0. 1.5743f -296.06 90.000 3.1487f -290.04 90.000 1.K 0.5 -6.02 0.000 1. 0.00 -0.000 2.K 1.5027f -296.46 -4.189 3.0054f -290.44 -4.189 3.K 2.366f -292.52 78.325 4.732f -286.50 78.325 4.K 1.0446f -299.62 -177.481 2.0892f -293.60 -177.481 5.K 629.7E-18 -304.02 22.785 1.2594f -298.00 22.785 6.K 2.1431f -293.38 58.421 4.2863f -287.36 58.421 7.K 2.8234f -290.98 8.896 5.6468f -284.96 8.896 8.K 1.9482f -294.21 -24.119 3.8963f -288.19 -24.119 9.K 3.4419f -289.26 -90.000 6.8837f -283.24 -90.000 10.K 453.3E-18 -306.87 -92.882 906.6E-18 -300.85 -92.882 # v(6) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 0. 0.72311 -2.82 90.000 0.28488 -10.91 143.092 1.K 2.5383 8.09 -53.092 1. 0.00 -0.000 2.K 0.73925 -2.62 -40.806 0.29124 -10.72 12.286 3.K 0.54829 -5.22 -108.100 0.216 -13.31 -55.008 4.K 0.32224 -9.84 -111.611 0.12695 -17.93 -58.519 5.K 0.24886 -12.08 -168.136 0.098041 -20.17 -115.044 6.K 0.15954 -15.94 -178.254 0.062853 -24.03 -125.162 7.K 0.12418 -18.12 125.421 0.048922 -26.21 178.513 8.K 0.07581 -22.41 113.335 0.029866 -30.50 166.427 9.K 0.059768 -24.47 50.347 0.023546 -32.56 103.439 10.K 0.029796 -30.52 36.162 0.011738 -38.61 89.254 Gnucap System status iterations: op=13, dc=291, tran=302, fourier=285, total=1032 transient timesteps: accepted=105, rejected=0, total=105 nodes: user=9, subckt=0, model=16, total=25 dctran density=47.5%, ac density=47.5% tests/==out/opamp-ol-disto.ckt.out000066400000000000000000000274621316501211100174000ustar00rootroot000000000000002 stage op-amp open loop 02/16/88 # iter(0) v(1) v(2) v(3) v(4) v(5) + v(6) v(7) v(8) v(9) 27. 13. 0. 0. 1.5708 1.5709 -1.1669 + 0.079194 -1.6303 -2.5 2.5 vdb(6) 0. 20. 40. 60. 80. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + * | 1.5849 | . +. * | 2.5119 | . +. * | 3.9811 | . + . * | 6.3096 | . + . * | 10. | . + . *. | 15.849 | . + . *. | 25.119 | . + . * . | 39.811 | . + . * . | 63.096 | . + . * . | 100. | . + . * . | 158.49 | .+ . * . | 251.19 | .+ * . | 398.11 | + * . . | 630.96 | + * . . | 1.K | +. * . . | 1.5849K| +. * . . | 2.5119K| +* . . | 3.9811K| * + . . . | 6.3096K| * + . . . | 10.K | * + . . . | 15.849K| * + . . . | 25.119K* + . . . | 39.811K* + . . . | 63.096K* + . . . | 100.K * . . . + | 158.49K* . . . + | 251.19K* . . . + | 398.11K* . . . + | 630.96K* . . . + | 1.Meg * . . .+ | 1.5849M* . . + | 2.5119M* . . +. | 3.9811M* . . + . | 6.3096M* . . + . | 10.Meg * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -500.u | . * . . | -480.u | . * . . | -460.u | . * . . | -440.u | . * . . | -420.u | . * . . | -400.u | . * . . | -380.u | . * . . | -360.u | . * . . | -340.u | . * . . | -320.u | . * . . | -300.u | . * . . | -280.u | . * . . | -260.u | . * . . | -240.u | . * . . | -220.u | . * . . | -200.u | . * . . | -180.u | . * . . | -160.u | . * . . | -140.u | . * . . | -120.u | . * . . | -100.u | . * . . | -80.u | . * . . | -60.u | . *. . | -40.u | . * . | -20.u | . * . | 0. | . .* . | 20.u | . .* . | 40.u | . . * . | 60.u | . . * . | 80.u | . . * . | 100.u | . . * . | 120.u | . . * . | 140.u | . . * . | 160.u | . . * . | 180.u | . . * . | 200.u | . . * . | 220.u | . . * . | 240.u | . . * . | 260.u | . . * . | 280.u | . . * . | 300.u | . . * . | 320.u | . . * . | 340.u | . . * . | 360.u | . . * . | 380.u | . . * . | 400.u | . . * . | 420.u | . . * . | 440.u | . . * . | 460.u | . . * . | 480.u | . . * . | 500.u | . . * . | +-----------------+----------------+-----------------+----------------+ #Time v(vin) v(6) 0. 0. 0.079311 31.25u 0.097545 0.45946 62.5u 0.19134 1.6898 93.75u 0.27779 2.4901 125.u 0.35355 2.4856 156.25u 0.41573 2.4951 187.5u 0.46194 2.4892 218.75u 0.49039 2.4895 250.u 0.5 2.4899 281.25u 0.49039 2.4938 312.5u 0.46194 2.49 343.75u 0.41573 2.4936 375.u 0.35355 2.49 406.25u 0.27779 2.4934 437.5u 0.19134 2.4899 468.75u 0.097545 2.4932 500.u -7.322f 2.4897 531.25u -0.097545 2.4942 562.5u -0.19134 2.4732 593.75u -0.27779 2.2247 625.u -0.35355 1.5055 656.25u -0.41573 0.87484 687.5u -0.46194 0.32201 718.75u -0.49039 -0.16015 750.u -0.5 -0.58045 781.25u -0.49039 -0.94676 812.5u -0.46194 -1.2656 843.75u -0.41573 -1.5422 875.u -0.35355 -1.7831 906.25u -0.27779 -1.9921 937.5u -0.19134 -2.1746 968.75u -0.097545 -2.3349 0.001 7.4576f -2.4311 #Time v(vin) v(6) 0.001 7.4576f -2.4311 0.0010313 0.097545 -2.4687 0.0010625 0.19134 -1.5089 0.0010938 0.27779 0.25327 0.001125 0.35355 2.2528 0.0011563 0.41573 2.4915 0.0011875 0.46194 2.4948 0.0012188 0.49039 2.4895 0.00125 0.5 2.4898 0.0012813 0.49039 2.4938 0.0013125 0.46194 2.4899 0.0013438 0.41573 2.4937 0.001375 0.35355 2.4899 0.0014063 0.27779 2.4935 0.0014375 0.19134 2.4898 0.0014688 0.097545 2.4933 0.0015 -6.7907f 2.4897 0.0015313 -0.097545 2.4943 0.0015625 -0.19134 2.4731 0.0015938 -0.27779 2.2264 0.001625 -0.35355 1.5099 0.0016563 -0.41573 0.87861 0.0016875 -0.46194 0.3253 0.0017188 -0.49039 -0.15729 0.00175 -0.5 -0.57796 0.0017813 -0.49039 -0.94461 0.0018125 -0.46194 -1.2637 0.0018438 -0.41573 -1.5406 0.001875 -0.35355 -1.7817 0.0019063 -0.27779 -1.9908 0.0019375 -0.19134 -2.1735 0.0019688 -0.097545 -2.334 0.002 6.9343f -2.4309 # v(vin) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 0. 1.4325f -296.88 90.000 2.8649f -290.86 90.000 1.K 0.5 -6.02 0.000 1. 0.00 -0.000 2.K 1.2991f -297.73 -2.998 2.5982f -291.71 -2.998 3.K 2.1641f -293.29 79.189 4.3281f -287.27 79.189 4.K 935.E-18 -300.58 -176.043 1.87f -294.56 -176.043 5.K 570.5E-18 -304.88 19.703 1.141f -298.85 19.703 6.K 1.9021f -294.42 58.884 3.8043f -288.39 58.884 7.K 2.5071f -292.02 7.768 5.0143f -286.00 7.768 8.K 1.7659f -295.06 -23.504 3.5317f -289.04 -23.504 9.K 3.106f -290.16 -90.288 6.2119f -284.14 -90.288 10.K 419.E-18 -307.56 -90.701 838.E-18 -301.53 -90.701 # v(6) --------- actual --------- -------- relative -------- #freq value dB phase value dB phase 0. 0.72312 -2.82 90.000 0.28489 -10.91 143.109 1.K 2.5382 8.09 -53.109 1. 0.00 -0.000 2.K 0.73932 -2.62 -40.851 0.29127 -10.71 12.258 3.K 0.54823 -5.22 -108.130 0.21599 -13.31 -55.021 4.K 0.32225 -9.84 -111.688 0.12696 -17.93 -58.579 5.K 0.2488 -12.08 -168.155 0.098021 -20.17 -115.046 6.K 0.1595 -15.94 -178.355 0.06284 -24.04 -125.246 7.K 0.12412 -18.12 125.432 0.048902 -26.21 178.541 8.K 0.075761 -22.41 113.154 0.029848 -30.50 166.263 9.K 0.059767 -24.47 50.385 0.023547 -32.56 103.494 10.K 0.029822 -30.51 35.665 0.011749 -38.60 88.774 Gnucap System status iterations: op=13, dc=291, tran=348, fourier=320, total=1114 transient timesteps: accepted=106, rejected=0, total=106 nodes: user=9, subckt=0, model=16, total=25 dctran density=47.5%, ac density=47.5% tests/==out/opamp-ol.ckt.out000066400000000000000000000357441316501211100162620ustar00rootroot000000000000002 stage op-amp open loop 02/16/88 # iter(0) v(1) v(2) v(3) v(4) v(5) + v(6) v(7) v(8) v(9) 27. 15. 0. 0. 1.5708 1.5709 -1.1669 + 0.33346 -1.6303 -2.5 2.5 vdb(6) 0. 20. 40. 60. 80. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . +. . * | 1.5849 | . + . . * | 2.5119 | . + . . * | 3.9811 | . + . . * | 6.3096 | . + . . * | 10. | . + . . * | 15.849 | . + . . * | 25.119 | . + . * | 39.811 | . + . * . | 63.096 | .+ . * . | 100. | + . * . | 158.49 | + . * . | 251.19 | + .* . | 398.11 | + * . . | 630.96 | +. * . . | 1.K | +. * . . | 1.5849K| +. * . . | 2.5119K| +* . . | 3.9811K| *+ . . . | 6.3096K| * + . . . | 10.K | * + . . . | 15.849K| * + . . . | 25.119K* + . . . | 39.811K* + . . . | 63.096K*+ . . . | 100.K * . . . + | 158.49K* . . . + | 251.19K* . . . + | 398.11K* . . . + | 630.96K* . . . + | 1.Meg * . . .+ | 1.5849M* . . + | 2.5119M* . . +. | 3.9811M* . . + . | 6.3096M* . . + . | 10.Meg * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -500.u | * . . . | -480.u | * . . . | -460.u | * . . . | -440.u | * . . . | -420.u | * . . . | -400.u | * . . . | -380.u | * . . . | -360.u | * . . . | -340.u | * . . . | -320.u | * . . . | -300.u | * . . . | -280.u | * . . . | -260.u | * . . . | -240.u | * . . . | -220.u | * . . . | -200.u | * . . . | -180.u | * . . | -160.u | .* . . | -140.u | . * . . | -120.u | . * . . | -100.u | . * . . | -80.u | . * . . | -60.u | . * . . | -40.u | . * . . | -20.u | . * . | 0. | . . * . | 20.u | . . * . | 40.u | . . * . | 60.u | . . * . | 80.u | . . * . | 100.u | . . * . | 120.u | . . * . | 140.u | . . * . | 160.u | . . * | 180.u | . . . * | 200.u | . . . * | 220.u | . . . * | 240.u | . . . * | 260.u | . . . * | 280.u | . . . * | 300.u | . . . * | 320.u | . . . * | 340.u | . . . * | 360.u | . . . * | 380.u | . . . * | 400.u | . . . * | 420.u | . . . * | 440.u | . . . * | 460.u | . . . * | 480.u | . . . * | 500.u | . . . * | +-----------------+----------------+-----------------+----------------+ vdb(6) 0. 20. 40. 60. 80. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . * + . | 1.5849 | . * + . | 2.5119 | . * + . | 3.9811 | . * + . | 6.3096 | . * + . | 10. | . * + . | 15.849 | . * + . | 25.119 | . * +. . | 39.811 | . * +. . | 63.096 | . * + . . | 100. | . * + . . | 158.49 | . * + . . | 251.19 | . * + . . | 398.11 | . * + . . | 630.96 | . * + . . | 1.K | * + . . | 1.5849K| * . + . . | 2.5119K| * .+ . . | 3.9811K| * +. . . | 6.3096K| * + . . . | 10.K |* + . . . | 15.849K* + . . . | 25.119K* + . . . | 39.811K* + . . . | 63.096K* . . . | 100.K * . . . + | 158.49K* . . . + | 251.19K* . . . + | 398.11K* . . . + | 630.96K* . . . + | 1.Meg * . . + | 1.5849M* . . + | 2.5119M* . . +. | 3.9811M* . . + . | 6.3096M* . . + . | 10.Meg * . . + . | +-----------------+----------------+-----------------+----------------+ cgs(m7) 5.f 5.5f 6.f 6.5f 7.f +-----------------+----------------+-----------------+----------------+ -500.u | . . . * | -480.u | . . . * | -460.u | . . . * | -440.u | . . . * | -420.u | . . . * | -400.u | . . . * | -380.u | . . . * | -360.u | . . . * | -340.u | . . . * | -320.u | . . . * | -300.u | . . . * | -280.u | . . . * | -260.u | . . . * | -240.u | . . . * | -220.u | . . . * | -200.u | . . . * | -180.u | . . . * | -160.u | . . . * | -140.u | . . . * | -120.u | . . . * | -100.u | . . . * | -80.u | . . . * | -60.u | . . . * | -40.u | . . . * | -20.u | . . . * | 0. | . . . * | 20.u | . . . * | 40.u | . . . * | 60.u | . . . * | 80.u | . . . * | 100.u | . . . * | 120.u | . . . * | 140.u | . . . * | 160.u | . . . * | 180.u | . . . * | 200.u | . . . * | 220.u | . . . * | 240.u | . . . * | 260.u | . . . * | 280.u | . . . * | 300.u | . . . * | 320.u | . . . * | 340.u | . . . * | 360.u | . . . * | 380.u | . . . * | 400.u | . . . * | 420.u | . . . * | 440.u | . . . * | 460.u | . . . * | 480.u | . . . * | 500.u | . . . * | +-----------------+----------------+-----------------+----------------+ tests/==out/opamp-vf.1.ckt.out000066400000000000000000000420621316501211100164110ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * i/o .options noacct nolist clobber out=80 ydivisions= 4. + phase=degrees harmonics=9 edit language=acs insensitive + units=spice recursion=20 * accuracy, i/o .options numdgt=5 floor= 1.E-21 vfloor= 1.f roundofftol= 100.f * accuracy, tolerances .options gmin= 1.p short= 10.u reltol= 0.001 abstol= 1.p + vntol= 1.u trtol= 7. chgtol= 10.f pivtol= 100.f + bypasstol= 0.1 loadtol= 0.1 * accuracy, algorithms .options method=trap bypass incmode lcbypass lubypass fbbypass traceload + order=auto mode=mixed transits=2 noquitconvfail * iteration limiting and heuristics .options itl1=100 itl2=50 itl3=6 itl4=20 itl5=0 itl6=5000 + itl7=1 itl8=99 itermin=1 vmax= 5. vmin=-5. dampmax= 1. + dampmin= 0.5 dampstrategy=11 * time step control .options dtmin= 1.p dtratio= 1.G trstepgrow= 1.E+99 + trstephold= 1.E+99 trstepshrink= 2. trreject= 0.5 + trsteporder=1 trstepcoef1= 0.25 trstepcoef2= 0.04166667 + trstepcoef3= 0.005208333 * circuit environment .options tnom= 27. temperature= 27. rstray cstray defl= 100.u + defw= 100.u defad= 0. defas= 0. # iter(0) v(1) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. 23. -1. 1.5729 1.5796 -1.9277 -0.99985 +-1.6303 -2.5 2.5 vdb(6)-90. -60. -30. 0. 30. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + *. | 1.5849 | . + *. | 2.5119 | . + *. | 3.9811 | . + *. | 6.3096 | . + *. | 10. | . + *. | 15.849 | . + *. | 25.119 | . + *. | 39.811 | . + *. | 63.096 | . + *. | 100. | . + *. | 158.49 | . + *. | 251.19 | . + *. | 398.11 | . + *. | 630.96 | . + * | 1.K | . + * | 1.5849K| . +. * | 2.5119K| . +. * | 3.9811K| . + . * | 6.3096K| . + . * | 10.K | . + . * | 15.849K| . + . * | 25.119K| . + . * | 39.811K| + . . * . | 63.096K| + . . * . | 100.K | . . * . + | 158.49K| . . * . + | 251.19K| . * . + | 398.11K| . * . . + | 630.96K| . * . . + | 1.Meg | . * . .+ | 1.5849M| . * . + | 2.5119M| . * . +. | 3.9811M| . * . + . | 6.3096M| *. . + . | 10.Meg | * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -5. | * . . . | -4.8 | * . . . | -4.6 | * . . . | -4.4 | * . . . | -4.2 | * . . . | -4. | * . . . | -3.8 | * . . . | -3.6 | * . . . | -3.4 | * . . . | -3.2 | * . . . | -3. | * . . . | -2.8 | * . . . | -2.6 | * . . . | -2.4 | * . . . | -2.2 | * . . . | -2. | *. . . | -1.8 | .* . . | -1.6 | . * . . | -1.4 | . * . . | -1.2 | . * . . | -1. | . * . . | -0.8 | . * . . | -0.6 | . * . . | -0.4 | . * . . | -0.2 | . * . . | 0. | . * . | 0.2 | . . * . | 0.4 | . . * . | 0.6 | . . * . | 0.8 | . . * . | 1. | . . * . | 1.2 | . . * . | 1.4 | . . * . | 1.6 | . . * . | 1.8 | . . * . | 2. | . . *. | 2.2 | . . .* | 2.4 | . . . * | 2.6 | . . . * | 2.8 | . . . * | 3. | . . . * | 3.2 | . . . * | 3.4 | . . . * | 3.6 | . . . * | 3.8 | . . . * | 4. | . . . * | 4.2 | . . . * | 4.4 | . . . * | 4.6 | . . . * | 4.8 | . . . * | 5. | . . . * | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 10.u | . * . . | 20.u | . * . . | 30.u | . * . . | 40.u | . * . . | 50.u | . * . . | 60.u | . * . . | 70.u | . * . . | 80.u | . * . . | 90.u | . * . . | 100.u | . * . . | 110.u | . * . . | 120.u | . * . . | 130.u | . * . . | 140.u | . * . . | 150.u | . * . . | 160.u | . * . . | 170.u | . * . . | 180.u | . * . . | 190.u | . * . . | 200.u | . * . . | 210.u | . * . . | 220.u | . . * . | 230.u | . . * . | 240.u | . . * . | 250.u | . . * . | 260.u | . . * . | 270.u | . . * . | 280.u | . . * . | 290.u | . . * . | 300.u | . . * . | 310.u | . . * . | 320.u | . . * . | 330.u | . . * . | 340.u | . . * . | 350.u | . . * . | 360.u | . . * . | 370.u | . . * . | 380.u | . . * . | 390.u | . . * . | 400.u | . . * . | 410.u | . . * . | 420.u | . . * . | 430.u | . . * . | 440.u | . . * . | 450.u | . . * . | 460.u | . . * . | 470.u | . . * . | 480.u | . . * . | 490.u | . . * . | 500.u | . . * . | 510.u | . . * . | 520.u | . . * . | 530.u | . . * . | 540.u | . . * . | 550.u | . . * . | 560.u | . . * . | 570.u | . .* . | 580.u | . * . | 590.u | . *. . | 600.u | . * . . | 610.u | . * . . | 620.u | . * . . | 630.u | . * . . | 640.u | . * . . | 650.u | . * . . | 660.u | . * . . | 670.u | . * . . | 680.u | . * . . | 690.u | . * . . | 700.u | . * . . | 710.u | . * . . | 720.u | . * . . | 730.u | . * . . | 740.u | . * . . | 750.u | . * . . | 760.u | . * . . | 770.u | . * . . | 780.u | . * . . | 790.u | . * . . | 800.u | . * . . | 810.u | . * . . | 820.u | . . * . | 830.u | . . * . | 840.u | . . * . | 850.u | . . * . | 860.u | . . * . | 870.u | . . * . | 880.u | . . * . | 890.u | . . * . | 900.u | . . * . | 910.u | . . * . | 920.u | . . * . | 930.u | . . * . | 940.u | . . * . | 950.u | . . * . | 960.u | . . * . | 970.u | . . * . | 980.u | . . * . | 990.u | . . * . | 0.001 | . . * . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=23, dc=348, tran=1069, fourier=0, total=1652 transient timesteps: accepted=167, rejected=9, total=176 nodes: user=8, subckt=0, model=16, total=24 dctran density=47.9%, ac density=47.9% tests/==out/opamp-vf.1d.ckt.out000066400000000000000000000420601316501211100165530ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * i/o .options noacct nolist clobber out=80 ydivisions= 4. + phase=degrees harmonics=9 edit language=acs insensitive + units=spice recursion=20 * accuracy, i/o .options numdgt=5 floor= 1.E-21 vfloor= 1.f roundofftol= 100.f * accuracy, tolerances .options gmin= 1.p short= 10.u reltol= 0.001 abstol= 1.p + vntol= 1.u trtol= 7. chgtol= 10.f pivtol= 100.f + bypasstol= 0.1 loadtol= 0.1 * accuracy, algorithms .options method=trap bypass incmode lcbypass lubypass fbbypass traceload + order=auto mode=mixed transits=2 noquitconvfail * iteration limiting and heuristics .options itl1=100 itl2=50 itl3=6 itl4=20 itl5=0 itl6=5000 + itl7=1 itl8=99 itermin=1 vmax= 5. vmin=-5. dampmax= 1. + dampmin= 0.5 dampstrategy=0 * time step control .options dtmin= 1.p dtratio= 1.G trstepgrow= 1.E+99 + trstephold= 1.E+99 trstepshrink= 2. trreject= 0.5 + trsteporder=1 trstepcoef1= 0.25 trstepcoef2= 0.04166667 + trstepcoef3= 0.005208333 * circuit environment .options tnom= 27. temperature= 27. rstray cstray defl= 100.u + defw= 100.u defad= 0. defas= 0. # iter(0) v(1) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. 93. -1. 1.5729 1.5796 -1.9277 -0.99985 +-1.6303 -2.5 2.5 vdb(6)-90. -60. -30. 0. 30. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + *. | 1.5849 | . + *. | 2.5119 | . + *. | 3.9811 | . + *. | 6.3096 | . + *. | 10. | . + *. | 15.849 | . + *. | 25.119 | . + *. | 39.811 | . + *. | 63.096 | . + *. | 100. | . + *. | 158.49 | . + *. | 251.19 | . + *. | 398.11 | . + *. | 630.96 | . + * | 1.K | . + * | 1.5849K| . +. * | 2.5119K| . +. * | 3.9811K| . + . * | 6.3096K| . + . * | 10.K | . + . * | 15.849K| . + . * | 25.119K| . + . * | 39.811K| + . . * . | 63.096K| + . . * . | 100.K | . . * . + | 158.49K| . . * . + | 251.19K| . * . + | 398.11K| . * . . + | 630.96K| . * . . + | 1.Meg | . * . .+ | 1.5849M| . * . + | 2.5119M| . * . +. | 3.9811M| . * . + . | 6.3096M| *. . + . | 10.Meg | * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -5. | * . . . | -4.8 | * . . . | -4.6 | * . . . | -4.4 | * . . . | -4.2 | * . . . | -4. | * . . . | -3.8 | * . . . | -3.6 | * . . . | -3.4 | * . . . | -3.2 | * . . . | -3. | * . . . | -2.8 | * . . . | -2.6 | * . . . | -2.4 | * . . . | -2.2 | * . . . | -2. | *. . . | -1.8 | .* . . | -1.6 | . * . . | -1.4 | . * . . | -1.2 | . * . . | -1. | . * . . | -0.8 | . * . . | -0.6 | . * . . | -0.4 | . * . . | -0.2 | . * . . | 0. | . * . | 0.2 | . . * . | 0.4 | . . * . | 0.6 | . . * . | 0.8 | . . * . | 1. | . . * . | 1.2 | . . * . | 1.4 | . . * . | 1.6 | . . * . | 1.8 | . . * . | 2. | . . *. | 2.2 | . . .* | 2.4 | . . . * | 2.6 | . . . * | 2.8 | . . . * | 3. | . . . * | 3.2 | . . . * | 3.4 | . . . * | 3.6 | . . . * | 3.8 | . . . * | 4. | . . . * | 4.2 | . . . * | 4.4 | . . . * | 4.6 | . . . * | 4.8 | . . . * | 5. | . . . * | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 10.u | . * . . | 20.u | . * . . | 30.u | . * . . | 40.u | . * . . | 50.u | . * . . | 60.u | . * . . | 70.u | . * . . | 80.u | . * . . | 90.u | . * . . | 100.u | . * . . | 110.u | . * . . | 120.u | . * . . | 130.u | . * . . | 140.u | . * . . | 150.u | . * . . | 160.u | . * . . | 170.u | . * . . | 180.u | . * . . | 190.u | . * . . | 200.u | . * . . | 210.u | . * . . | 220.u | . . * . | 230.u | . . * . | 240.u | . . * . | 250.u | . . * . | 260.u | . . * . | 270.u | . . * . | 280.u | . . * . | 290.u | . . * . | 300.u | . . * . | 310.u | . . * . | 320.u | . . * . | 330.u | . . * . | 340.u | . . * . | 350.u | . . * . | 360.u | . . * . | 370.u | . . * . | 380.u | . . * . | 390.u | . . * . | 400.u | . . * . | 410.u | . . * . | 420.u | . . * . | 430.u | . . * . | 440.u | . . * . | 450.u | . . * . | 460.u | . . * . | 470.u | . . * . | 480.u | . . * . | 490.u | . . * . | 500.u | . . * . | 510.u | . . * . | 520.u | . . * . | 530.u | . . * . | 540.u | . . * . | 550.u | . . * . | 560.u | . . * . | 570.u | . .* . | 580.u | . * . | 590.u | . *. . | 600.u | . * . . | 610.u | . * . . | 620.u | . * . . | 630.u | . * . . | 640.u | . * . . | 650.u | . * . . | 660.u | . * . . | 670.u | . * . . | 680.u | . * . . | 690.u | . * . . | 700.u | . * . . | 710.u | . * . . | 720.u | . * . . | 730.u | . * . . | 740.u | . * . . | 750.u | . * . . | 760.u | . * . . | 770.u | . * . . | 780.u | . * . . | 790.u | . * . . | 800.u | . * . . | 810.u | . * . . | 820.u | . . * . | 830.u | . . * . | 840.u | . . * . | 850.u | . . * . | 860.u | . . * . | 870.u | . . * . | 880.u | . . * . | 890.u | . . * . | 900.u | . . * . | 910.u | . . * . | 920.u | . . * . | 930.u | . . * . | 940.u | . . * . | 950.u | . . * . | 960.u | . . * . | 970.u | . . * . | 980.u | . . * . | 990.u | . . * . | 0.001 | . . * . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=93, dc=322, tran=991, fourier=0, total=1614 transient timesteps: accepted=163, rejected=9, total=172 nodes: user=8, subckt=0, model=16, total=24 dctran density=47.9%, ac density=47.9% tests/==out/opamp-vf.2.ckt.out000066400000000000000000000420621316501211100164120ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * i/o .options noacct nolist clobber out=80 ydivisions= 4. + phase=degrees harmonics=9 edit language=acs insensitive + units=spice recursion=20 * accuracy, i/o .options numdgt=5 floor= 1.E-21 vfloor= 1.f roundofftol= 100.f * accuracy, tolerances .options gmin= 1.p short= 10.u reltol= 0.001 abstol= 1.p + vntol= 1.u trtol= 7. chgtol= 10.f pivtol= 100.f + bypasstol= 0.1 loadtol= 0.1 * accuracy, algorithms .options method=trap bypass incmode lcbypass lubypass fbbypass traceload + order=auto mode=mixed transits=2 noquitconvfail * iteration limiting and heuristics .options itl1=100 itl2=50 itl3=6 itl4=20 itl5=0 itl6=5000 + itl7=1 itl8=99 itermin=1 vmax= 5. vmin=-5. dampmax= 1. + dampmin= 0.5 dampstrategy=11 * time step control .options dtmin= 1.p dtratio= 1.G trstepgrow= 1.E+99 + trstephold= 1.E+99 trstepshrink= 2. trreject= 0.5 + trsteporder=2 trstepcoef1= 0.25 trstepcoef2= 0.04166667 + trstepcoef3= 0.005208333 * circuit environment .options tnom= 27. temperature= 27. rstray cstray defl= 100.u + defw= 100.u defad= 0. defas= 0. # iter(0) v(1) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. 23. -1. 1.5729 1.5796 -1.9277 -0.99985 +-1.6303 -2.5 2.5 vdb(6)-90. -60. -30. 0. 30. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + *. | 1.5849 | . + *. | 2.5119 | . + *. | 3.9811 | . + *. | 6.3096 | . + *. | 10. | . + *. | 15.849 | . + *. | 25.119 | . + *. | 39.811 | . + *. | 63.096 | . + *. | 100. | . + *. | 158.49 | . + *. | 251.19 | . + *. | 398.11 | . + *. | 630.96 | . + * | 1.K | . + * | 1.5849K| . +. * | 2.5119K| . +. * | 3.9811K| . + . * | 6.3096K| . + . * | 10.K | . + . * | 15.849K| . + . * | 25.119K| . + . * | 39.811K| + . . * . | 63.096K| + . . * . | 100.K | . . * . + | 158.49K| . . * . + | 251.19K| . * . + | 398.11K| . * . . + | 630.96K| . * . . + | 1.Meg | . * . .+ | 1.5849M| . * . + | 2.5119M| . * . +. | 3.9811M| . * . + . | 6.3096M| *. . + . | 10.Meg | * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -5. | * . . . | -4.8 | * . . . | -4.6 | * . . . | -4.4 | * . . . | -4.2 | * . . . | -4. | * . . . | -3.8 | * . . . | -3.6 | * . . . | -3.4 | * . . . | -3.2 | * . . . | -3. | * . . . | -2.8 | * . . . | -2.6 | * . . . | -2.4 | * . . . | -2.2 | * . . . | -2. | *. . . | -1.8 | .* . . | -1.6 | . * . . | -1.4 | . * . . | -1.2 | . * . . | -1. | . * . . | -0.8 | . * . . | -0.6 | . * . . | -0.4 | . * . . | -0.2 | . * . . | 0. | . * . | 0.2 | . . * . | 0.4 | . . * . | 0.6 | . . * . | 0.8 | . . * . | 1. | . . * . | 1.2 | . . * . | 1.4 | . . * . | 1.6 | . . * . | 1.8 | . . * . | 2. | . . *. | 2.2 | . . .* | 2.4 | . . . * | 2.6 | . . . * | 2.8 | . . . * | 3. | . . . * | 3.2 | . . . * | 3.4 | . . . * | 3.6 | . . . * | 3.8 | . . . * | 4. | . . . * | 4.2 | . . . * | 4.4 | . . . * | 4.6 | . . . * | 4.8 | . . . * | 5. | . . . * | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 10.u | . * . . | 20.u | . * . . | 30.u | . * . . | 40.u | . * . . | 50.u | . * . . | 60.u | . * . . | 70.u | . * . . | 80.u | . * . . | 90.u | . * . . | 100.u | . * . . | 110.u | . * . . | 120.u | . * . . | 130.u | . * . . | 140.u | . * . . | 150.u | . * . . | 160.u | . * . . | 170.u | . * . . | 180.u | . * . . | 190.u | . * . . | 200.u | . * . . | 210.u | . * . . | 220.u | . . * . | 230.u | . . * . | 240.u | . . * . | 250.u | . . * . | 260.u | . . * . | 270.u | . . * . | 280.u | . . * . | 290.u | . . * . | 300.u | . . * . | 310.u | . . * . | 320.u | . . * . | 330.u | . . * . | 340.u | . . * . | 350.u | . . * . | 360.u | . . * . | 370.u | . . * . | 380.u | . . * . | 390.u | . . * . | 400.u | . . * . | 410.u | . . * . | 420.u | . . * . | 430.u | . . * . | 440.u | . . * . | 450.u | . . * . | 460.u | . . * . | 470.u | . . * . | 480.u | . . * . | 490.u | . . * . | 500.u | . . * . | 510.u | . . * . | 520.u | . . * . | 530.u | . . * . | 540.u | . . * . | 550.u | . . * . | 560.u | . . * . | 570.u | . .* . | 580.u | . * . | 590.u | . *. . | 600.u | . * . . | 610.u | . * . . | 620.u | . * . . | 630.u | . * . . | 640.u | . * . . | 650.u | . * . . | 660.u | . * . . | 670.u | . * . . | 680.u | . * . . | 690.u | . * . . | 700.u | . * . . | 710.u | . * . . | 720.u | . * . . | 730.u | . * . . | 740.u | . * . . | 750.u | . * . . | 760.u | . * . . | 770.u | . * . . | 780.u | . * . . | 790.u | . * . . | 800.u | . * . . | 810.u | . * . . | 820.u | . . * . | 830.u | . . * . | 840.u | . . * . | 850.u | . . * . | 860.u | . . * . | 870.u | . . * . | 880.u | . . * . | 890.u | . . * . | 900.u | . . * . | 910.u | . . * . | 920.u | . . * . | 930.u | . . * . | 940.u | . . * . | 950.u | . . * . | 960.u | . . * . | 970.u | . . * . | 980.u | . . * . | 990.u | . . * . | 0.001 | . . * . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=23, dc=348, tran=1008, fourier=0, total=1582 transient timesteps: accepted=160, rejected=7, total=167 nodes: user=8, subckt=0, model=16, total=24 dctran density=47.9%, ac density=47.9% tests/==out/opamp-vf.3.ckt.out000066400000000000000000000420611316501211100164120ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * i/o .options noacct nolist clobber out=80 ydivisions= 4. + phase=degrees harmonics=9 edit language=acs insensitive + units=spice recursion=20 * accuracy, i/o .options numdgt=5 floor= 1.E-21 vfloor= 1.f roundofftol= 100.f * accuracy, tolerances .options gmin= 1.p short= 10.u reltol= 0.001 abstol= 1.p + vntol= 1.u trtol= 7. chgtol= 10.f pivtol= 100.f + bypasstol= 0.1 loadtol= 0.1 * accuracy, algorithms .options method=trap bypass incmode lcbypass lubypass fbbypass traceload + order=auto mode=mixed transits=2 noquitconvfail * iteration limiting and heuristics .options itl1=100 itl2=50 itl3=6 itl4=20 itl5=0 itl6=5000 + itl7=1 itl8=99 itermin=1 vmax= 5. vmin=-5. dampmax= 1. + dampmin= 0.5 dampstrategy=11 * time step control .options dtmin= 1.p dtratio= 1.G trstepgrow= 1.E+99 + trstephold= 1.E+99 trstepshrink= 2. trreject= 0.5 + trsteporder=3 trstepcoef1= 0.25 trstepcoef2= 0.04166667 + trstepcoef3= 0.005208333 * circuit environment .options tnom= 27. temperature= 27. rstray cstray defl= 100.u + defw= 100.u defad= 0. defas= 0. # iter(0) v(1) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. 23. -1. 1.5729 1.5796 -1.9277 -0.99985 +-1.6303 -2.5 2.5 vdb(6)-90. -60. -30. 0. 30. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + *. | 1.5849 | . + *. | 2.5119 | . + *. | 3.9811 | . + *. | 6.3096 | . + *. | 10. | . + *. | 15.849 | . + *. | 25.119 | . + *. | 39.811 | . + *. | 63.096 | . + *. | 100. | . + *. | 158.49 | . + *. | 251.19 | . + *. | 398.11 | . + *. | 630.96 | . + * | 1.K | . + * | 1.5849K| . +. * | 2.5119K| . +. * | 3.9811K| . + . * | 6.3096K| . + . * | 10.K | . + . * | 15.849K| . + . * | 25.119K| . + . * | 39.811K| + . . * . | 63.096K| + . . * . | 100.K | . . * . + | 158.49K| . . * . + | 251.19K| . * . + | 398.11K| . * . . + | 630.96K| . * . . + | 1.Meg | . * . .+ | 1.5849M| . * . + | 2.5119M| . * . +. | 3.9811M| . * . + . | 6.3096M| *. . + . | 10.Meg | * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -5. | * . . . | -4.8 | * . . . | -4.6 | * . . . | -4.4 | * . . . | -4.2 | * . . . | -4. | * . . . | -3.8 | * . . . | -3.6 | * . . . | -3.4 | * . . . | -3.2 | * . . . | -3. | * . . . | -2.8 | * . . . | -2.6 | * . . . | -2.4 | * . . . | -2.2 | * . . . | -2. | *. . . | -1.8 | .* . . | -1.6 | . * . . | -1.4 | . * . . | -1.2 | . * . . | -1. | . * . . | -0.8 | . * . . | -0.6 | . * . . | -0.4 | . * . . | -0.2 | . * . . | 0. | . * . | 0.2 | . . * . | 0.4 | . . * . | 0.6 | . . * . | 0.8 | . . * . | 1. | . . * . | 1.2 | . . * . | 1.4 | . . * . | 1.6 | . . * . | 1.8 | . . * . | 2. | . . *. | 2.2 | . . .* | 2.4 | . . . * | 2.6 | . . . * | 2.8 | . . . * | 3. | . . . * | 3.2 | . . . * | 3.4 | . . . * | 3.6 | . . . * | 3.8 | . . . * | 4. | . . . * | 4.2 | . . . * | 4.4 | . . . * | 4.6 | . . . * | 4.8 | . . . * | 5. | . . . * | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 10.u | . * . . | 20.u | . * . . | 30.u | . * . . | 40.u | . * . . | 50.u | . * . . | 60.u | . * . . | 70.u | . * . . | 80.u | . * . . | 90.u | . * . . | 100.u | . * . . | 110.u | . * . . | 120.u | . * . . | 130.u | . * . . | 140.u | . * . . | 150.u | . * . . | 160.u | . * . . | 170.u | . * . . | 180.u | . * . . | 190.u | . * . . | 200.u | . * . . | 210.u | . * . . | 220.u | . . * . | 230.u | . . * . | 240.u | . . * . | 250.u | . . * . | 260.u | . . * . | 270.u | . . * . | 280.u | . . * . | 290.u | . . * . | 300.u | . . * . | 310.u | . . * . | 320.u | . . * . | 330.u | . . * . | 340.u | . . * . | 350.u | . . * . | 360.u | . . * . | 370.u | . . * . | 380.u | . . * . | 390.u | . . * . | 400.u | . . * . | 410.u | . . * . | 420.u | . . * . | 430.u | . . * . | 440.u | . . * . | 450.u | . . * . | 460.u | . . * . | 470.u | . . * . | 480.u | . . * . | 490.u | . . * . | 500.u | . . * . | 510.u | . . * . | 520.u | . . * . | 530.u | . . * . | 540.u | . . * . | 550.u | . . * . | 560.u | . . * . | 570.u | . .* . | 580.u | . * . | 590.u | . *. . | 600.u | . * . . | 610.u | . * . . | 620.u | . * . . | 630.u | . * . . | 640.u | . * . . | 650.u | . * . . | 660.u | . * . . | 670.u | . * . . | 680.u | . * . . | 690.u | . * . . | 700.u | . * . . | 710.u | . * . . | 720.u | . * . . | 730.u | . * . . | 740.u | . * . . | 750.u | . * . . | 760.u | . * . . | 770.u | . * . . | 780.u | . * . . | 790.u | . * . . | 800.u | . * . . | 810.u | . * . . | 820.u | . . * . | 830.u | . . * . | 840.u | . . * . | 850.u | . . * . | 860.u | . . * . | 870.u | . . * . | 880.u | . . * . | 890.u | . . * . | 900.u | . . * . | 910.u | . . * . | 920.u | . . * . | 930.u | . . * . | 940.u | . . * . | 950.u | . . * . | 960.u | . . * . | 970.u | . . * . | 980.u | . . * . | 990.u | . . * . | 0.001 | . . * . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=23, dc=348, tran=861, fourier=0, total=1407 transient timesteps: accepted=139, rejected=0, total=139 nodes: user=8, subckt=0, model=16, total=24 dctran density=47.9%, ac density=47.9% tests/==out/opamp-vf.ckt.out000066400000000000000000000420611316501211100162510ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * i/o .options noacct nolist clobber out=80 ydivisions= 4. + phase=degrees harmonics=9 edit language=acs insensitive + units=spice recursion=20 * accuracy, i/o .options numdgt=5 floor= 1.E-21 vfloor= 1.f roundofftol= 100.f * accuracy, tolerances .options gmin= 1.p short= 10.u reltol= 0.001 abstol= 1.p + vntol= 1.u trtol= 7. chgtol= 10.f pivtol= 100.f + bypasstol= 0.1 loadtol= 0.1 * accuracy, algorithms .options method=trap bypass incmode lcbypass lubypass fbbypass traceload + order=auto mode=mixed transits=2 noquitconvfail * iteration limiting and heuristics .options itl1=100 itl2=50 itl3=6 itl4=20 itl5=0 itl6=5000 + itl7=1 itl8=99 itermin=1 vmax= 5. vmin=-5. dampmax= 1. + dampmin= 0.5 dampstrategy=11 * time step control .options dtmin= 1.p dtratio= 1.G trstepgrow= 1.E+99 + trstephold= 1.E+99 trstepshrink= 2. trreject= 0.5 + trsteporder=3 trstepcoef1= 0.25 trstepcoef2= 0.04166667 + trstepcoef3= 0.005208333 * circuit environment .options tnom= 27. temperature= 27. rstray cstray defl= 100.u + defw= 100.u defad= 0. defas= 0. # iter(0) v(1) v(3) v(4) v(5) v(6) + v(7) v(8) v(9) 27. 23. -1. 1.5729 1.5796 -1.9277 -0.99985 +-1.6303 -2.5 2.5 vdb(6)-90. -60. -30. 0. 30. vp(6)-180. -90. 0. 90. 180. +-----------------+----------------+-----------------+----------------+ 1. | . + *. | 1.5849 | . + *. | 2.5119 | . + *. | 3.9811 | . + *. | 6.3096 | . + *. | 10. | . + *. | 15.849 | . + *. | 25.119 | . + *. | 39.811 | . + *. | 63.096 | . + *. | 100. | . + *. | 158.49 | . + *. | 251.19 | . + *. | 398.11 | . + *. | 630.96 | . + * | 1.K | . + * | 1.5849K| . +. * | 2.5119K| . +. * | 3.9811K| . + . * | 6.3096K| . + . * | 10.K | . + . * | 15.849K| . + . * | 25.119K| . + . * | 39.811K| + . . * . | 63.096K| + . . * . | 100.K | . . * . + | 158.49K| . . * . + | 251.19K| . * . + | 398.11K| . * . . + | 630.96K| . * . . + | 1.Meg | . * . .+ | 1.5849M| . * . + | 2.5119M| . * . +. | 3.9811M| . * . + . | 6.3096M| *. . + . | 10.Meg | * . . + . | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ -5. | * . . . | -4.8 | * . . . | -4.6 | * . . . | -4.4 | * . . . | -4.2 | * . . . | -4. | * . . . | -3.8 | * . . . | -3.6 | * . . . | -3.4 | * . . . | -3.2 | * . . . | -3. | * . . . | -2.8 | * . . . | -2.6 | * . . . | -2.4 | * . . . | -2.2 | * . . . | -2. | *. . . | -1.8 | .* . . | -1.6 | . * . . | -1.4 | . * . . | -1.2 | . * . . | -1. | . * . . | -0.8 | . * . . | -0.6 | . * . . | -0.4 | . * . . | -0.2 | . * . . | 0. | . * . | 0.2 | . . * . | 0.4 | . . * . | 0.6 | . . * . | 0.8 | . . * . | 1. | . . * . | 1.2 | . . * . | 1.4 | . . * . | 1.6 | . . * . | 1.8 | . . * . | 2. | . . *. | 2.2 | . . .* | 2.4 | . . . * | 2.6 | . . . * | 2.8 | . . . * | 3. | . . . * | 3.2 | . . . * | 3.4 | . . . * | 3.6 | . . . * | 3.8 | . . . * | 4. | . . . * | 4.2 | . . . * | 4.4 | . . . * | 4.6 | . . . * | 4.8 | . . . * | 5. | . . . * | +-----------------+----------------+-----------------+----------------+ v(6) -4. -2. 0. 2. 4. +-----------------+----------------+-----------------+----------------+ 0. | . * . . | 10.u | . * . . | 20.u | . * . . | 30.u | . * . . | 40.u | . * . . | 50.u | . * . . | 60.u | . * . . | 70.u | . * . . | 80.u | . * . . | 90.u | . * . . | 100.u | . * . . | 110.u | . * . . | 120.u | . * . . | 130.u | . * . . | 140.u | . * . . | 150.u | . * . . | 160.u | . * . . | 170.u | . * . . | 180.u | . * . . | 190.u | . * . . | 200.u | . * . . | 210.u | . * . . | 220.u | . . * . | 230.u | . . * . | 240.u | . . * . | 250.u | . . * . | 260.u | . . * . | 270.u | . . * . | 280.u | . . * . | 290.u | . . * . | 300.u | . . * . | 310.u | . . * . | 320.u | . . * . | 330.u | . . * . | 340.u | . . * . | 350.u | . . * . | 360.u | . . * . | 370.u | . . * . | 380.u | . . * . | 390.u | . . * . | 400.u | . . * . | 410.u | . . * . | 420.u | . . * . | 430.u | . . * . | 440.u | . . * . | 450.u | . . * . | 460.u | . . * . | 470.u | . . * . | 480.u | . . * . | 490.u | . . * . | 500.u | . . * . | 510.u | . . * . | 520.u | . . * . | 530.u | . . * . | 540.u | . . * . | 550.u | . . * . | 560.u | . . * . | 570.u | . .* . | 580.u | . * . | 590.u | . *. . | 600.u | . * . . | 610.u | . * . . | 620.u | . * . . | 630.u | . * . . | 640.u | . * . . | 650.u | . * . . | 660.u | . * . . | 670.u | . * . . | 680.u | . * . . | 690.u | . * . . | 700.u | . * . . | 710.u | . * . . | 720.u | . * . . | 730.u | . * . . | 740.u | . * . . | 750.u | . * . . | 760.u | . * . . | 770.u | . * . . | 780.u | . * . . | 790.u | . * . . | 800.u | . * . . | 810.u | . * . . | 820.u | . . * . | 830.u | . . * . | 840.u | . . * . | 850.u | . . * . | 860.u | . . * . | 870.u | . . * . | 880.u | . . * . | 890.u | . . * . | 900.u | . . * . | 910.u | . . * . | 920.u | . . * . | 930.u | . . * . | 940.u | . . * . | 950.u | . . * . | 960.u | . . * . | 970.u | . . * . | 980.u | . . * . | 990.u | . . * . | 0.001 | . . * . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=23, dc=348, tran=861, fourier=0, total=1407 transient timesteps: accepted=139, rejected=0, total=139 nodes: user=8, subckt=0, model=16, total=24 dctran density=47.9%, ac density=47.9% tests/==out/oscillator.1.ckt.out000066400000000000000000000402631316501211100170400ustar00rootroot00000000000000*oscillator, .159 Hz. v(1) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.5 | . . * . | 1. | . . . * | 1.5 | . . . * 2. | . . . * | 2.5 | . . . * | 3. | . . * . | 3.5 | . * . . | 4. | * . . . | 4.5 |* . . . | 5. |* . . . | 5.5 | * . . . | 6. | . * . . | 6.5 | . . * . | 7. | . . . * | 7.5 | . . . * | 8. | . . . * 8.5 | . . . * | 9. | . . *. | 9.5 | . .* . | 10. | .* . . | 10.5 | * . . . | 11. * . . . | 11.5 | * . . . | 12. | * . . . | 12.5 | . * . . | 13. | . . * . | 13.5 | . . . * | 14. | . . . *| 14.5 | . . . *| 15. | . . . * | 15.5 | . . * . | 16. | . * . . | 16.5 | * . . . | 17. | * . . . | 17.5 * . . . | 18. | * . . . | 18.5 | * . . | 19. | . * . | 19.5 | . . *. | 20. | . . . * | 20.5 | . . . * 21. | . . . * | 21.5 | . . . * | 22. | . . * . | 22.5 | . * . . | 23. | * . . . | 23.5 |* . . . | 24. |* . . . | 24.5 | * . . . | 25. | . * . . | 25.5 | . . * . | 26. | . . . * | 26.5 | . . . * | 27. | . . . * 27.5 | . . . * | 28. | . . * . | 28.5 | . *. . | 29. | *. . . | 29.5 | * . . . | 30. * . . . | 30.5 | * . . . | 31. | * . . . | 31.5 | . * . . | 32. | . . * . | 32.5 | . . . * | 33. | . . . *| 33.5 | . . . * | 34. | . . . * | 34.5 | . . * . | 35. | . * . . | 35.5 | * . . . | 36. | * . . . | 36.5 * . . . | 37. | * . . . | 37.5 | . * . . | 38. | . . * . | 38.5 | . . * | 39. | . . . * | 39.5 | . . . * 40. | . . . * | 40.5 | . . . * | 41. | . . * . | 41.5 | . * . . | 42. | * . . . | 42.5 |* . . . | 43. | * . . . | 43.5 | * . . . | 44. | . * . . | 44.5 | . . * . | 45. | . . . * | 45.5 | . . . * | 46. | . . . * 46.5 | . . . * | 47. | . . * . | 47.5 | . * . . | 48. | * . . . | 48.5 | * . . . | 49. * . . . | 49.5 | * . . . | 50. | * . . . | 50.5 | . * . . | 51. | . . * . | 51.5 | . . . * | 52. | . . . * 52.5 | . . . * | 53. | . . . * | 53.5 | . . * . | 54. | . * . . | 54.5 | * . . . | 55. | * . . . | 55.5 |* . . . | 56. | * . . . | 56.5 | . * . . | 57. | . . * . | 57.5 | . . . * | 58. | . . . * | 58.5 | . . . * 59. | . . . * | 59.5 | . . * | 60. | . . * . | 60.5 | . * . . | 61. | * . . . | 61.5 * . . . | 62. | * . . . | 62.5 | * . . . | 63. | . * . . | 63.5 | . . * . | 64. | . . . * | 64.5 | . . . *| 65. | . . . *| 65.5 | . . . * | 66. | . . * . | 66.5 | . * . . | 67. | * . . . | 67.5 | * . . . | 68. * . . . | 68.5 | * . . . | 69. | * . . | 69.5 | . *. . | 70. | . . * . | 70.5 | . . . * | 71. | . . . * 71.5 | . . . * | 72. | . . . * | 72.5 | . . * . | 73. | . * . . | 73.5 | * . . . | 74. |* . . . | 74.5 |* . . . | 75. | * . . . | 75.5 | . * . . | 76. | . . * . | 76.5 | . . . * | 77. | . . . * | 77.5 | . . . * 78. | . . . * | 78.5 | . . *. | 79. | . * . | 79.5 | * . . | 80. | * . . . | 80.5 * . . . | 81. | * . . . | 81.5 | * . . . | 82. | . * . . | 82.5 | . . * . | 83. | . . . * | 83.5 | . . . *| 84. | . . . *| 84.5 | . . . * | 85. | . . * . | 85.5 | . * . . | 86. | * . . . | 86.5 | * . . . | 87. * . . . | 87.5 | * . . . | 88. | .* . . | 88.5 | . .* . | 89. | . . * | 89.5 | . . . * | 90. | . . . * 90.5 | . . . * | 91. | . . . * | 91.5 | . . * . | 92. | . * . . | 92.5 | * . . . | 93. |* . . . | 93.5 | * . . . | 94. | * . . . | 94.5 | . * . . | 95. | . . * . | 95.5 | . . . * | 96. | . . . * | 96.5 | . . . * 97. | . . . * | 97.5 | . . * . | 98. | . * . . | 98.5 | *. . . | 99. | * . . . | 99.5 * . . . | 100. | * . . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=1233, fourier=0, total=1644 transient timesteps: accepted=409, rejected=2, total=411 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/oscillator.2.ckt.out000066400000000000000000014215051316501211100170440ustar00rootroot00000000000000*oscillator, .159 Hz. v(1) -5. -2.5 0. 2.5 5. v(2) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.1 | . + . . * 0.2 | . + . . *| 0.3 | . + . . * | 0.4 | . + . . * | 0.5 | + . . * | 0.6 | + . . . * | 0.7 | + . . . * | 0.8 | + . . . * | 0.9 | + . . . * | 1. | + . . .* | 1.1 | + . . * . | 1.2 | + . . * . | 1.3 |+ . . * . | 1.4 |+ . . * . | 1.5 + . . * . | 1.6 + . *. . | 1.7 + . * . . | 1.8 |+ . * . . | 1.9 | + . * . . | 2. | + . * . . | 2.1 | + *. . . | 2.2 | + * . . . | 2.3 | + * . . . | 2.4 | * + . . . | 2.5 | * + . . . | 2.6 | * +. . . | 2.7 | * . + . . | 2.8 | * . + . . | 2.9 |* . + . . | 3. * . + . . | 3.1 * . + . . | 3.2 * . . + . | 3.3 * . . + . | 3.4 |* . . + . | 3.5 | * . . + . | 3.6 | * . . + . | 3.7 | * . . + | 3.8 | * . . . + | 3.9 | * . . . + | 4. | * . . . + | 4.1 | * . . . + | 4.2 | * . . + | 4.3 | . * . . + | 4.4 | . * . . + | 4.5 | . * . . +| 4.6 | . * . . + 4.7 | . *. . + 4.8 | . . * . + 4.9 | . . * . +| 5. | . . * . +| 5.1 | . . * . + | 5.2 | . . * . + | 5.3 | . . .* + | 5.4 | . . . * + | 5.5 | . . . * | 5.6 | . . . + * | 5.7 | . . .+ * | 5.8 | . . + . * | 5.9 | . . + . * | 6. | . . + . *| 6.1 | . . + . *| 6.2 | . . + . * 6.3 | . + . * 6.4 | . + . . * 6.5 | . + . . *| 6.6 | . + . . * | 6.7 | . + . . * | 6.8 | + . . * | 6.9 | + . . . * | 7. | + . . . * | 7.1 | + . . . * | 7.2 | + . . . * | 7.3 | + . . .* | 7.4 | + . . * . | 7.5 | + . . * . | 7.6 |+ . . * . | 7.7 + . . * . | 7.8 + . . * . | 7.9 + . *. . | 8. + . * . . | 8.1 |+ . * . . | 8.2 | + . * . . | 8.3 | + . * . . | 8.4 | + *. . . | 8.5 | + * . . . | 8.6 | + * . . . | 8.7 | * + . . . | 8.8 | * + . . . | 8.9 | * +. . . | 9. | * . + . . | 9.1 | * . + . . | 9.2 |* . + . . | 9.3 * . + . . | 9.4 * . +. . | 9.5 * . . + . | 9.6 * . . + . | 9.7 |* . . + . | 9.8 | * . . + . | 9.9 | * . . + . | 10. | * . . .+ | 10.1 | * . . . + | 10.2 | * . . . + | 10.3 | * . . . + | 10.4 | * . . . + | 10.5 | * . . + | 10.6 | . * . . + | 10.7 | . * . . + | 10.8 | . * . . +| 10.9 | . * . . + 11. | . * . + 11.1 | . . * . + 11.2 | . . * . +| 11.3 | . . * . + | 11.4 | . . * . + | 11.5 | . . *. + | 11.6 | . . . * + | 11.7 | . . . * + | 11.8 | . . . * | 11.9 | . . . + * | 12. | . . .+ * | 12.1 | . . + . * | 12.2 | . . + . * | 12.3 | . . + . *| 12.4 | . . + . *| 12.5 | . . + . * 12.6 | . +. . * 12.7 | . + . . * 12.8 | . + . . *| 12.9 | . + . . * | 13. | . + . . * | 13.1 | + . . * | 13.2 | + . . . * | 13.3 | + . . . * | 13.4 | + . . . * | 13.5 | + . . . * | 13.6 | + . . * | 13.7 | + . . * . | 13.8 | + . . * . | 13.9 |+ . . * . | 14. + . . * . | 14.1 + . . * . | 14.2 + . * . . | 14.3 + . * . . | 14.4 |+ . * . . | 14.5 | + . * . . | 14.6 | + . * . . | 14.7 | + *. . . | 14.8 | + * . . . | 14.9 | + * . . . | 15. | * + . . . | 15.1 | * + . . . | 15.2 | * + . . | 15.3 | * . + . . | 15.4 | * . + . . | 15.5 |* . + . . | 15.6 * . + . . | 15.7 * . +. . | 15.8 * . . + . | 15.9 |* . . + . | 16. |* . . + . | 16.1 | * . . + . | 16.2 | * . . + . | 16.3 | * . . .+ | 16.4 | * . . . + | 16.5 | * . . . + | 16.6 | * . . . + | 16.7 | * . . . + | 16.8 | * . . + | 16.9 | . * . . + | 17. | . * . . +| 17.1 | . * . . +| 17.2 | . * . . + 17.3 | . * . + 17.4 | . . * . + 17.5 | . . * . +| 17.6 | . . * . + | 17.7 | . . * . + | 17.8 | . . *. + | 17.9 | . . . * + | 18. | . . . * + | 18.1 | . . . +* | 18.2 | . . . + * | 18.3 | . . .+ * | 18.4 | . . + . * | 18.5 | . . + . * | 18.6 | . . + . *| 18.7 | . . + . * 18.8 | . . + . * 18.9 | . +. . * 19. | . + . . * 19.1 | . + . . *| 19.2 | . + . . * | 19.3 | . + . . * | 19.4 | +. . . * | 19.5 | + . . . * | 19.6 | + . . . * | 19.7 | + . . . * | 19.8 | + . . . * | 19.9 | + . . * | 20. | + . . * . | 20.1 | + . . * . | 20.2 |+ . . * . | 20.3 + . . * . | 20.4 + . .* . | 20.5 + . * . . | 20.6 + . * . . | 20.7 |+ . * . . | 20.8 | + . * . . | 20.9 | + .* . . | 21. | + * . . . | 21.1 | + * . . . | 21.2 | +* . . . | 21.3 | * + . . . | 21.4 | * + . . . | 21.5 | * + . . | 21.6 | * . + . . | 21.7 | * . + . . | 21.8 |* . + . . | 21.9 * . + . . | 22. * . + . | 22.1 * . . + . | 22.2 |* . . + . | 22.3 |* . . + . | 22.4 | * . . + . | 22.5 | * . . + . | 22.6 | * . . .+ | 22.7 | * . . . + | 22.8 | * . . . + | 22.9 | * . . . + | 23. | * . . . + | 23.1 | .* . . + | 23.2 | . * . . + | 23.3 | . * . . +| 23.4 | . * . . +| 23.5 | . * . . + 23.6 | . .* . + 23.7 | . . * . + 23.8 | . . * . +| 23.9 | . . * . + | 24. | . . * . + | 24.1 | . . *. + | 24.2 | . . . * + | 24.3 | . . . * + | 24.4 | . . . + * | 24.5 | . . . + * | 24.6 | . . + * | 24.7 | . . + . * | 24.8 | . . + . * | 24.9 | . . + . *| 25. | . . + . * 25.1 | . . + . * 25.2 | . + . . * 25.3 | . + . . * 25.4 | . + . . *| 25.5 | . + . . * | 25.6 | . + . . * | 25.7 | +. . . * | 25.8 | + . . . * | 25.9 | + . . . * | 26. | + . . . * | 26.1 | + . . . * | 26.2 | + . . * | 26.3 | + . . * . | 26.4 | + . . * . | 26.5 |+ . . * . | 26.6 + . . * . | 26.7 + . .* . | 26.8 + . * . . | 26.9 |+ . * . . | 27. |+ . * . . | 27.1 | + . * . . | 27.2 | + .* . . | 27.3 | + * . . . | 27.4 | + * . . . | 27.5 | +* . . . | 27.6 | * + . . . | 27.7 | * + . . . | 27.8 | * + . . | 27.9 | * . + . . | 28. | * . + . . | 28.1 |* . + . . | 28.2 * . + . . | 28.3 * . + . | 28.4 * . . + . | 28.5 |* . . + . | 28.6 | * . . + . | 28.7 | * . . + . | 28.8 | * . . +. | 28.9 | * . . . + | 29. | * . . . + | 29.1 | * . . . + | 29.2 | * . . . + | 29.3 | * . . . + | 29.4 | .* . . + | 29.5 | . * . . + | 29.6 | . * . . +| 29.7 | . * . . +| 29.8 | . * . . + 29.9 | . .* . + 30. | . . * . + 30.1 | . . * . +| 30.2 | . . * . + | 30.3 | . . * . + | 30.4 | . . * + | 30.5 | . . . * + | 30.6 | . . . * + | 30.7 | . . . + * | 30.8 | . . . + * | 30.9 | . . + * | 31. | . . + . * | 31.1 | . . + . * | 31.2 | . . + . *| 31.3 | . . + . * 31.4 | . .+ . * 31.5 | . + . . * 31.6 | . + . . * 31.7 | . + . . *| 31.8 | . + . . * | 31.9 | . + . . * | 32. | + . . . * | 32.1 | + . . . * | 32.2 | + . . . * | 32.3 | + . . . * | 32.4 | + . . . * | 32.5 | + . . *. | 32.6 | + . . * . | 32.7 | + . . * . | 32.8 |+ . . * . | 32.9 + . . * . | 33. + . * . | 33.1 + . * . . | 33.2 |+ . * . . | 33.3 |+ . * . . | 33.4 | + . * . . | 33.5 | + .* . . | 33.6 | + * . . . | 33.7 | + * . . . | 33.8 | * . . . | 33.9 | * + . . . | 34. | * + . . . | 34.1 | * .+ . . | 34.2 | * . + . . | 34.3 |* . + . . | 34.4 |* . + . . | 34.5 * . + . . | 34.6 * . + . | 34.7 * . . + . | 34.8 |* . . + . | 34.9 | * . . + . | 35. | * . . + . | 35.1 | * . . +. | 35.2 | * . . . + | 35.3 | * . . . + | 35.4 | * . . . + | 35.5 | * . . . + | 35.6 | * . . . + | 35.7 | . * . . + | 35.8 | . * . . + | 35.9 | . * . . +| 36. | . * . . + 36.1 | . * . . + 36.2 | . .* . + 36.3 | . . * . + 36.4 | . . * . +| 36.5 | . . * . + | 36.6 | . . * . + | 36.7 | . . * + | 36.8 | . . . * + | 36.9 | . . . * + | 37. | . . . + * | 37.1 | . . . + * | 37.2 | . . + * | 37.3 | . . + . * | 37.4 | . . + . * | 37.5 | . . + . *| 37.6 | . . + . * 37.7 | . .+ . * 37.8 | . + . . * 37.9 | . + . . *| 38. | . + . . *| 38.1 | . + . . * | 38.2 | .+ . . * | 38.3 | + . . . * | 38.4 | + . . . * | 38.5 | + . . . * | 38.6 | + . . . * | 38.7 | + . . . * | 38.8 | + . . *. | 38.9 | + . . * . | 39. | + . . * . | 39.1 |+ . . * . | 39.2 + . . * . | 39.3 + . * . | 39.4 + . * . . | 39.5 |+ . * . . | 39.6 | + . * . . | 39.7 | + . * . . | 39.8 | + * . . | 39.9 | + * . . . | 40. | + * . . . | 40.1 | *+ . . . | 40.2 | * + . . . | 40.3 | * + . . . | 40.4 | * .+ . . | 40.5 | * . + . . | 40.6 |* . + . . | 40.7 |* . + . . | 40.8 * . + . . | 40.9 * . .+ . | 41. * . . + . | 41.1 |* . . + . | 41.2 | * . . + . | 41.3 | * . . + . | 41.4 | * . . + | 41.5 | * . . . + | 41.6 | * . . . + | 41.7 | * . . . + | 41.8 | * . . . + | 41.9 | *. . . + | 42. | . * . . + | 42.1 | . * . . + | 42.2 | . * . . +| 42.3 | . * . . + 42.4 | . * . . + 42.5 | . . * . + 42.6 | . . * . + 42.7 | . . * . +| 42.8 | . . * . + | 42.9 | . . * . + | 43. | . . * + | 43.1 | . . . * + | 43.2 | . . . * + | 43.3 | . . . + * | 43.4 | . . . + * | 43.5 | . . +. * | 43.6 | . . + . * | 43.7 | . . + . * | 43.8 | . . + . *| 43.9 | . . + . * 44. | . .+ . * 44.1 | . + . . * 44.2 | . + . . *| 44.3 | . + . . *| 44.4 | . + . . * | 44.5 | .+ . . * | 44.6 | + . . . * | 44.7 | + . . . * | 44.8 | + . . . * | 44.9 | + . . . * | 45. | + . . .* | 45.1 | + . . * . | 45.2 | + . . * . | 45.3 |+ . . * . | 45.4 |+ . . * . | 45.5 + . . * . | 45.6 + . * . | 45.7 + . * . . | 45.8 |+ . * . . | 45.9 | + . * . . | 46. | + . * . . | 46.1 | + * . . | 46.2 | + * . . . | 46.3 | + * . . . | 46.4 | *+ . . . | 46.5 | * + . . . | 46.6 | * + . . . | 46.7 | * .+ . . | 46.8 | * . + . . | 46.9 |* . + . . | 47. * . + . . | 47.1 * . + . . | 47.2 * . .+ . | 47.3 * . . + . | 47.4 |* . . + . | 47.5 | * . . + . | 47.6 | * . . + . | 47.7 | * . . + | 47.8 | * . . . + | 47.9 | * . . . + | 48. | * . . . + | 48.1 | * . . . + | 48.2 | *. . . + | 48.3 | . * . . + | 48.4 | . * . . + | 48.5 | . * . . +| 48.6 | . * . . + 48.7 | . *. . + 48.8 | . . * . + 48.9 | . . * . + 49. | . . * . +| 49.1 | . . * . + | 49.2 | . . * . + | 49.3 | . . .* + | 49.4 | . . . * + | 49.5 | . . . *+ | 49.6 | . . . + * | 49.7 | . . . + * | 49.8 | . . +. * | 49.9 | . . + . * | 50. | . . + . * | 50.1 | . . + . *| 50.2 | . . + . * 50.3 | . + . * 50.4 | . + . . * 50.5 | . + . . *| 50.6 | . + . . *| 50.7 | . + . . * | 50.8 | + . . * | 50.9 | + . . . * | 51. | + . . . * | 51.1 | + . . . * | 51.2 | + . . . * | 51.3 | + . . .* | 51.4 | + . . * . | 51.5 | + . . * . | 51.6 |+ . . * . | 51.7 |+ . . * . | 51.8 + . . * . | 51.9 + . *. . | 52. + . * . . | 52.1 |+ . * . . | 52.2 | + . * . . | 52.3 | + . * . . | 52.4 | + * . . | 52.5 | + * . . . | 52.6 | + * . . . | 52.7 | * + . . . | 52.8 | * + . . . | 52.9 | * +. . . | 53. | * . + . . | 53.1 | * . + . . | 53.2 |* . + . . | 53.3 * . + . . | 53.4 * . + . . | 53.5 * . . + . | 53.6 * . . + . | 53.7 |* . . + . | 53.8 | * . . + . | 53.9 | * . . + . | 54. | * . . + | 54.1 | * . . . + | 54.2 | * . . . + | 54.3 | * . . . + | 54.4 | * . . . + | 54.5 | * . . + | 54.6 | . * . . + | 54.7 | . * . . + | 54.8 | . * . . +| 54.9 | . * . . + 55. | . *. . + 55.1 | . . * . + 55.2 | . . * . +| 55.3 | . . * . +| 55.4 | . . * . + | 55.5 | . . * . + | 55.6 | . . .* + | 55.7 | . . . * + | 55.8 | . . . * | 55.9 | . . . + * | 56. | . . . + * | 56.1 | . . +. * | 56.2 | . . + . * | 56.3 | . . + . * | 56.4 | . . + . *| 56.5 | . . + . * 56.6 | . + . * 56.7 | . + . . * 56.8 | . + . . *| 56.9 | . + . . * | 57. | . + . . * | 57.1 | + . . * | 57.2 | + . . . * | 57.3 | + . . . * | 57.4 | + . . . * | 57.5 | + . . . * | 57.6 | + . . .* | 57.7 | + . . * . | 57.8 | + . . * . | 57.9 |+ . . * . | 58. + . . * . | 58.1 + . . * . | 58.2 + . *. . | 58.3 + . * . . | 58.4 |+ . * . . | 58.5 | + . * . . | 58.6 | + . * . . | 58.7 | + *. . . | 58.8 | + * . . . | 58.9 | + * . . . | 59. | * + . . . | 59.1 | * + . . . | 59.2 | * +. . . | 59.3 | * . + . . | 59.4 | * . + . . | 59.5 |* . + . . | 59.6 * . + . . | 59.7 * . +. . | 59.8 * . . + . | 59.9 * . . + . | 60. |* . . + . | 60.1 | * . . + . | 60.2 | * . . + . | 60.3 | * . . .+ | 60.4 | * . . . + | 60.5 | * . . . + | 60.6 | * . . . + | 60.7 | * . . . + | 60.8 | * . . + | 60.9 | . * . . + | 61. | . * . . + | 61.1 | . * . . +| 61.2 | . * . . + 61.3 | . * . + 61.4 | . . * . + 61.5 | . . * . +| 61.6 | . . * . +| 61.7 | . . * . + | 61.8 | . . * . + | 61.9 | . . .* + | 62. | . . . * + | 62.1 | . . . * | 62.2 | . . . + * | 62.3 | . . .+ * | 62.4 | . . + . * | 62.5 | . . + . * | 62.6 | . . + . *| 62.7 | . . + . *| 62.8 | . . + . * 62.9 | . +. . * 63. | . + . . * 63.1 | . + . . *| 63.2 | . + . . * | 63.3 | . + . . * | 63.4 | + . . * | 63.5 | + . . . * | 63.6 | + . . . * | 63.7 | + . . . * | 63.8 | + . . . * | 63.9 | + . . * | 64. | + . . * . | 64.1 | + . . * . | 64.2 |+ . . * . | 64.3 + . . * . | 64.4 + . . * . | 64.5 + . * . . | 64.6 + . * . . | 64.7 |+ . * . . | 64.8 | + . * . . | 64.9 | + . * . . | 65. | + *. . . | 65.1 | + * . . . | 65.2 | + * . . . | 65.3 | * + . . . | 65.4 | * + . . . | 65.5 | * +. . . | 65.6 | * . + . . | 65.7 | * . + . . | 65.8 |* . + . . | 65.9 * . + . . | 66. * . +. . | 66.1 * . . + . | 66.2 |* . . + . | 66.3 |* . . + . | 66.4 | * . . + . | 66.5 | * . . + . | 66.6 | * . . .+ | 66.7 | * . . . + | 66.8 | * . . . + | 66.9 | * . . . + | 67. | * . . . + | 67.1 | * . . + | 67.2 | . * . . + | 67.3 | . * . . + | 67.4 | . * . . +| 67.5 | . * . . + 67.6 | . * . + 67.7 | . . * . + 67.8 | . . * . +| 67.9 | . . * . + | 68. | . . * . + | 68.1 | . . *. + | 68.2 | . . . * + | 68.3 | . . . * + | 68.4 | . . . +* | 68.5 | . . . + * | 68.6 | . . .+ * | 68.7 | . . + . * | 68.8 | . . + . * | 68.9 | . . + . *| 69. | . . + . *| 69.1 | . . + . * 69.2 | . +. . * 69.3 | . + . . * 69.4 | . + . . *| 69.5 | . + . . * | 69.6 | . + . . * | 69.7 | +. . . * | 69.8 | + . . . * | 69.9 | + . . . * | 70. | + . . . * | 70.1 | + . . . * | 70.2 | + . . * | 70.3 | + . . * . | 70.4 | + . . * . | 70.5 |+ . . * . | 70.6 + . . * . | 70.7 + . . * . | 70.8 + . * . . | 70.9 + . * . . | 71. |+ . * . . | 71.1 | + . * . . | 71.2 | + . * . . | 71.3 | + *. . . | 71.4 | + * . . . | 71.5 | +* . . . | 71.6 | * + . . . | 71.7 | * + . . . | 71.8 | * + . . | 71.9 | * . + . . | 72. | * . + . . | 72.1 |* . + . . | 72.2 * . + . . | 72.3 * . +. . | 72.4 * . . + . | 72.5 |* . . + . | 72.6 |* . . + . | 72.7 | * . . + . | 72.8 | * . . + . | 72.9 | * . . .+ | 73. | * . . . + | 73.1 | * . . . + | 73.2 | * . . . + | 73.3 | * . . . + | 73.4 | .* . . + | 73.5 | . * . . + | 73.6 | . * . . +| 73.7 | . * . . +| 73.8 | . * . . + 73.9 | . * . + 74. | . . * . + 74.1 | . . * . +| 74.2 | . . * . + | 74.3 | . . * . + | 74.4 | . . *. + | 74.5 | . . . * + | 74.6 | . . . * + | 74.7 | . . . +* | 74.8 | . . . + * | 74.9 | . . .+ * | 75. | . . + . * | 75.1 | . . + . * | 75.2 | . . + . *| 75.3 | . . + . * 75.4 | . . + . * 75.5 | . +. . * 75.6 | . + . . * 75.7 | . + . . *| 75.8 | . + . . * | 75.9 | . + . . * | 76. | +. . . * | 76.1 | + . . . * | 76.2 | + . . . * | 76.3 | + . . . * | 76.4 | + . . . * | 76.5 | + . . * | 76.6 | + . . * . | 76.7 | + . . * . | 76.8 |+ . . * . | 76.9 + . . * . | 77. + . .* . | 77.1 + . * . . | 77.2 + . * . . | 77.3 |+ . * . . | 77.4 | + . * . . | 77.5 | + .* . . | 77.6 | + * . . . | 77.7 | + * . . . | 77.8 | +* . . . | 77.9 | * + . . . | 78. | * + . . . | 78.1 | * + . . | 78.2 | * . + . . | 78.3 | * . + . . | 78.4 |* . + . . | 78.5 * . + . . | 78.6 * . + . | 78.7 * . . + . | 78.8 |* . . + . | 78.9 | * . . + . | 79. | * . . + . | 79.1 | * . . +. | 79.2 | * . . . + | 79.3 | * . . . + | 79.4 | * . . . + | 79.5 | * . . . + | 79.6 | * . . . + | 79.7 | .* . . + | 79.8 | . * . . + | 79.9 | . * . . +| 80. | . * . . +| 80.1 | . * . . + 80.2 | . .* . + 80.3 | . . * . + 80.4 | . . * . +| 80.5 | . . * . + | 80.6 | . . * . + | 80.7 | . . *. + | 80.8 | . . . * + | 80.9 | . . . * + | 81. | . . . + * | 81.1 | . . . + * | 81.2 | . . + * | 81.3 | . . + . * | 81.4 | . . + . * | 81.5 | . . + . *| 81.6 | . . + . * 81.7 | . . + . * 81.8 | . + . . * 81.9 | . + . . * 82. | . + . . *| 82.1 | . + . . * | 82.2 | . + . . * | 82.3 | +. . . * | 82.4 | + . . . * | 82.5 | + . . . * | 82.6 | + . . . * | 82.7 | + . . . * | 82.8 | + . . *. | 82.9 | + . . * . | 83. | + . . * . | 83.1 |+ . . * . | 83.2 + . . * . | 83.3 + . .* . | 83.4 + . * . . | 83.5 |+ . * . . | 83.6 |+ . * . . | 83.7 | + . * . . | 83.8 | + .* . . | 83.9 | + * . . . | 84. | + * . . . | 84.1 | * . . . | 84.2 | * + . . . | 84.3 | * + . . . | 84.4 | * + . . | 84.5 | * . + . . | 84.6 |* . + . . | 84.7 |* . + . . | 84.8 * . + . . | 84.9 * . + . | 85. * . . + . | 85.1 |* . . + . | 85.2 | * . . + . | 85.3 | * . . + . | 85.4 | * . . +. | 85.5 | * . . . + | 85.6 | * . . . + | 85.7 | * . . . + | 85.8 | * . . . + | 85.9 | * . . . + | 86. | .* . . + | 86.1 | . * . . + | 86.2 | . * . . +| 86.3 | . * . . + 86.4 | . * . . + 86.5 | . .* . + 86.6 | . . * . + 86.7 | . . * . +| 86.8 | . . * . + | 86.9 | . . * . + | 87. | . . * + | 87.1 | . . . * + | 87.2 | . . . * + | 87.3 | . . . + * | 87.4 | . . . + * | 87.5 | . . + * | 87.6 | . . + . * | 87.7 | . . + . * | 87.8 | . . + . *| 87.9 | . . + . * 88. | . .+ . * 88.1 | . + . . * 88.2 | . + . . * 88.3 | . + . . *| 88.4 | . + . . * | 88.5 | .+ . . * | 88.6 | + . . . * | 88.7 | + . . . * | 88.8 | + . . . * | 88.9 | + . . . * | 89. | + . . . * | 89.1 | + . . *. | 89.2 | + . . * . | 89.3 | + . . * . | 89.4 |+ . . * . | 89.5 + . . * . | 89.6 + . * . | 89.7 + . * . . | 89.8 |+ . * . . | 89.9 |+ . * . . | 90. | + . * . . | 90.1 | + .* . . | 90.2 | + * . . . | 90.3 | + * . . . | 90.4 | * . . . | 90.5 | * + . . . | 90.6 | * + . . . | 90.7 | * .+ . . | 90.8 | * . + . . | 90.9 |* . + . . | 91. |* . + . . | 91.1 * . + . . | 91.2 * . .+ . | 91.3 * . . + . | 91.4 |* . . + . | 91.5 | * . . + . | 91.6 | * . . + . | 91.7 | * . . +. | 91.8 | * . . . + | 91.9 | * . . . + | 92. | * . . . + | 92.1 | * . . . + | 92.2 | *. . . + | 92.3 | . * . . + | 92.4 | . * . . + | 92.5 | . * . . +| 92.6 | . * . . + 92.7 | . * . . + 92.8 | . . * . + 92.9 | . . * . + 93. | . . * . +| 93.1 | . . * . + | 93.2 | . . * . + | 93.3 | . . * + | 93.4 | . . . * + | 93.5 | . . . * + | 93.6 | . . . + * | 93.7 | . . . + * | 93.8 | . . + * | 93.9 | . . + . * | 94. | . . + . * | 94.1 | . . + . *| 94.2 | . . + . * 94.3 | . .+ . * 94.4 | . + . . * 94.5 | . + . . *| 94.6 | . + . . *| 94.7 | . + . . * | 94.8 | .+ . . * | 94.9 | + . . . * | 95. | + . . . * | 95.1 | + . . . * | 95.2 | + . . . * | 95.3 | + . . . * | 95.4 | + . . *. | 95.5 | + . . * . | 95.6 | + . . * . | 95.7 |+ . . * . | 95.8 + . . * . | 95.9 + . * . | 96. + . * . . | 96.1 |+ . * . . | 96.2 | + . * . . | 96.3 | + . * . . | 96.4 | + * . . | 96.5 | + * . . . | 96.6 | + * . . . | 96.7 | *+ . . . | 96.8 | * + . . . | 96.9 | * + . . . | 97. | * .+ . . | 97.1 | * . + . . | 97.2 |* . + . . | 97.3 |* . + . . | 97.4 * . + . . | 97.5 * . .+ . | 97.6 * . . + . | 97.7 |* . . + . | 97.8 | * . . + . | 97.9 | * . . + . | 98. | * . . + | 98.1 | * . . . + | 98.2 | * . . . + | 98.3 | * . . . + | 98.4 | * . . . + | 98.5 | *. . . + | 98.6 | . * . . + | 98.7 | . * . . + | 98.8 | . * . . +| 98.9 | . * . . + 99. | . *. . + 99.1 | . . * . + 99.2 | . . * . + 99.3 | . . * . +| 99.4 | . . * . + | 99.5 | . . * . + | 99.6 | . . .* + | 99.7 | . . . * + | 99.8 | . . . *+ | 99.9 | . . . + * | 100. | . . . + * | +-----------------+----------------+-----------------+----------------+ v(1) -5. -2.5 0. 2.5 5. v(2) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 100. | . . . + * | 100.1 | . . +. * | 100.2 | . . + . * | 100.3 | . . + . * | 100.4 | . . + . *| 100.5 | . . + . * 100.6 | . .+ . * 100.7 | . + . . * 100.8 | . + . . *| 100.9 | . + . . *| 101. | . + . . * | 101.1 | .+ . . * | 101.2 | + . . . * | 101.3 | + . . . * | 101.4 | + . . . * | 101.5 | + . . . * | 101.6 | + . . .* | 101.7 | + . . * . | 101.8 | + . . * . | 101.9 |+ . . * . | 102. |+ . . * . | 102.1 + . . * . | 102.2 + . * . | 102.3 + . * . . | 102.4 |+ . * . . | 102.5 | + . * . . | 102.6 | + . * . . | 102.7 | + * . . | 102.8 | + * . . . | 102.9 | + * . . . | 103. | *+ . . . | 103.1 | * + . . . | 103.2 | * + . . . | 103.3 | * . + . . | 103.4 | * . + . . | 103.5 |* . + . . | 103.6 * . + . . | 103.7 * . + . . | 103.8 * . .+ . | 103.9 * . . + . | 104. |* . . + . | 104.1 | * . . + . | 104.2 | * . . + . | 104.3 | * . . + | 104.4 | * . . . + | 104.5 | * . . . + | 104.6 | * . . . + | 104.7 | * . . . + | 104.8 | *. . . + | 104.9 | . * . . + | 105. | . * . . + | 105.1 | . * . . +| 105.2 | . * . . + 105.3 | . *. . + 105.4 | . . * . + 105.5 | . . * . + 105.6 | . . * . +| 105.7 | . . * . + | 105.8 | . . * . + | 105.9 | . . .* + | 106. | . . . * + | 106.1 | . . . *+ | 106.2 | . . . + * | 106.3 | . . . + * | 106.4 | . . +. * | 106.5 | . . + . * | 106.6 | . . + . * | 106.7 | . . + . *| 106.8 | . . + . * 106.9 | . + . * 107. | . + . . * 107.1 | . + . . *| 107.2 | . + . . * | 107.3 | . + . . * | 107.4 | + . . * | 107.5 | + . . . * | 107.6 | + . . . * | 107.7 | + . . . * | 107.8 | + . . . * | 107.9 | + . . .* | 108. | + . . * . | 108.1 | + . . * . | 108.2 |+ . . * . | 108.3 |+ . . * . | 108.4 + . . * . | 108.5 + . *. . | 108.6 + . * . . | 108.7 |+ . * . . | 108.8 | + . * . . | 108.9 | + . * . . | 109. | + *. . . | 109.1 | + * . . . | 109.2 | + * . . . | 109.3 | * + . . . | 109.4 | * + . . . | 109.5 | * +. . . | 109.6 | * . + . . | 109.7 | * . + . . | 109.8 |* . + . . | 109.9 * . + . . | 110. * . + . . | 110.1 * . . + . | 110.2 * . . + . | 110.3 |* . . + . | 110.4 | * . . + . | 110.5 | * . . + . | 110.6 | * . . + | 110.7 | * . . . + | 110.8 | * . . . + | 110.9 | * . . . + | 111. | * . . . + | 111.1 | * . . + | 111.2 | . * . . + | 111.3 | . * . . + | 111.4 | . * . . +| 111.5 | . * . . + 111.6 | . *. . + 111.7 | . . * . + 111.8 | . . * . +| 111.9 | . . * . +| 112. | . . * . + | 112.1 | . . * . + | 112.2 | . . .* + | 112.3 | . . . * + | 112.4 | . . . * | 112.5 | . . . + * | 112.6 | . . . + * | 112.7 | . . +. * | 112.8 | . . + . * | 112.9 | . . + . *| 113. | . . + . *| 113.1 | . . + . * 113.2 | . + . * 113.3 | . + . . * 113.4 | . + . . *| 113.5 | . + . . * | 113.6 | . + . . * | 113.7 | + . . * | 113.8 | + . . . * | 113.9 | + . . . * | 114. | + . . . * | 114.1 | + . . . * | 114.2 | + . . .* | 114.3 | + . . * . | 114.4 | + . . * . | 114.5 |+ . . * . | 114.6 + . . * . | 114.7 + . . * . | 114.8 + . *. . | 114.9 + . * . . | 115. |+ . * . . | 115.1 | + . * . . | 115.2 | + . * . . | 115.3 | + *. . . | 115.4 | + * . . . | 115.5 | + * . . . | 115.6 | * + . . . | 115.7 | * + . . . | 115.8 | * +. . . | 115.9 | * . + . . | 116. | * . + . . | 116.1 |* . + . . | 116.2 * . + . . | 116.3 * . +. . | 116.4 * . . + . | 116.5 * . . + . | 116.6 |* . . + . | 116.7 | * . . + . | 116.8 | * . . + . | 116.9 | * . . .+ | 117. | * . . . + | 117.1 | * . . . + | 117.2 | * . . . + | 117.3 | * . . . + | 117.4 | * . . + | 117.5 | . * . . + | 117.6 | . * . . + | 117.7 | . * . . +| 117.8 | . * . . + 117.9 | . * . + 118. | . . * . + 118.1 | . . * . +| 118.2 | . . * . +| 118.3 | . . * . + | 118.4 | . . *. + | 118.5 | . . . * + | 118.6 | . . . * + | 118.7 | . . . * | 118.8 | . . . + * | 118.9 | . . .+ * | 119. | . . + . * | 119.1 | . . + . * | 119.2 | . . + . *| 119.3 | . . + . *| 119.4 | . . + . * 119.5 | . +. . * 119.6 | . + . . * 119.7 | . + . . *| 119.8 | . + . . * | 119.9 | . + . . * | 120. | + . . * | 120.1 | + . . . * | 120.2 | + . . . * | 120.3 | + . . . * | 120.4 | + . . . * | 120.5 | + . . * | 120.6 | + . . * . | 120.7 | + . . * . | 120.8 |+ . . * . | 120.9 + . . * . | 121. + . . * . | 121.1 + . * . . | 121.2 + . * . . | 121.3 |+ . * . . | 121.4 | + . * . . | 121.5 | + . * . . | 121.6 | + *. . . | 121.7 | + * . . . | 121.8 | + * . . . | 121.9 | * + . . . | 122. | * + . . . | 122.1 | * +. . . | 122.2 | * . + . . | 122.3 | * . + . . | 122.4 |* . + . . | 122.5 * . + . . | 122.6 * . +. . | 122.7 * . . + . | 122.8 |* . . + . | 122.9 |* . . + . | 123. | * . . + . | 123.1 | * . . + . | 123.2 | * . . .+ | 123.3 | * . . . + | 123.4 | * . . . + | 123.5 | * . . . + | 123.6 | * . . . + | 123.7 | * . . + | 123.8 | . * . . + | 123.9 | . * . . + | 124. | . * . . +| 124.1 | . * . . + 124.2 | . * . + 124.3 | . . * . + 124.4 | . . * . +| 124.5 | . . * . + | 124.6 | . . * . + | 124.7 | . . *. + | 124.8 | . . . * + | 124.9 | . . . * + | 125. | . . . +* | 125.1 | . . . + * | 125.2 | . . .+ * | 125.3 | . . + . * | 125.4 | . . + . * | 125.5 | . . + . *| 125.6 | . . + . * 125.7 | . . + . * 125.8 | . +. . * 125.9 | . + . . * 126. | . + . . *| 126.1 | . + . . * | 126.2 | . + . . * | 126.3 | +. . . * | 126.4 | + . . . * | 126.5 | + . . . * | 126.6 | + . . . * | 126.7 | + . . . * | 126.8 | + . . * | 126.9 | + . . * . | 127. | + . . * . | 127.1 |+ . . * . | 127.2 + . . * . | 127.3 + . .* . | 127.4 + . * . . | 127.5 + . * . . | 127.6 |+ . * . . | 127.7 | + . * . . | 127.8 | + .* . . | 127.9 | + * . . . | 128. | + * . . . | 128.1 | +* . . . | 128.2 | * + . . . | 128.3 | * + . . . | 128.4 | * + . . | 128.5 | * . + . . | 128.6 | * . + . . | 128.7 |* . + . . | 128.8 * . + . . | 128.9 * . + . | 129. * . . + . | 129.1 |* . . + . | 129.2 |* . . + . | 129.3 | * . . + . | 129.4 | * . . + . | 129.5 | * . . .+ | 129.6 | * . . . + | 129.7 | * . . . + | 129.8 | * . . . + | 129.9 | * . . . + | 130. | .* . . + | 130.1 | . * . . + | 130.2 | . * . . +| 130.3 | . * . . +| 130.4 | . * . . + 130.5 | . .* . + 130.6 | . . * . + 130.7 | . . * . +| 130.8 | . . * . + | 130.9 | . . * . + | 131. | . . *. + | 131.1 | . . . * + | 131.2 | . . . * + | 131.3 | . . . +* | 131.4 | . . . + * | 131.5 | . . + * | 131.6 | . . + . * | 131.7 | . . + . * | 131.8 | . . + . *| 131.9 | . . + . * 132. | . . + . * 132.1 | . + . . * 132.2 | . + . . * 132.3 | . + . . *| 132.4 | . + . . * | 132.5 | . + . . * | 132.6 | +. . . * | 132.7 | + . . . * | 132.8 | + . . . * | 132.9 | + . . . * | 133. | + . . . * | 133.1 | + . . * | 133.2 | + . . * . | 133.3 | + . . * . | 133.4 |+ . . * . | 133.5 + . . * . | 133.6 + . .* . | 133.7 + . * . . | 133.8 |+ . * . . | 133.9 |+ . * . . | 134. | + . * . . | 134.1 | + .* . . | 134.2 | + * . . . | 134.3 | + * . . . | 134.4 | +* . . . | 134.5 | * + . . . | 134.6 | * + . . . | 134.7 | * + . . | 134.8 | * . + . . | 134.9 | * . + . . | 135. |* . + . . | 135.1 * . + . . | 135.2 * . + . | 135.3 * . . + . | 135.4 |* . . + . | 135.5 | * . . + . | 135.6 | * . . + . | 135.7 | * . . +. | 135.8 | * . . . + | 135.9 | * . . . + | 136. | * . . . + | 136.1 | * . . . + | 136.2 | * . . . + | 136.3 | .* . . + | 136.4 | . * . . + | 136.5 | . * . . +| 136.6 | . * . . +| 136.7 | . * . . + 136.8 | . .* . + 136.9 | . . * . + 137. | . . * . +| 137.1 | . . * . + | 137.2 | . . * . + | 137.3 | . . * + | 137.4 | . . . * + | 137.5 | . . . * + | 137.6 | . . . + * | 137.7 | . . . + * | 137.8 | . . + * | 137.9 | . . + . * | 138. | . . + . * | 138.1 | . . + . *| 138.2 | . . + . * 138.3 | . . + . * 138.4 | . + . . * 138.5 | . + . . * 138.6 | . + . . *| 138.7 | . + . . * | 138.8 | . + . . * | 138.9 | +. . . * | 139. | + . . . * | 139.1 | + . . . * | 139.2 | + . . . * | 139.3 | + . . . * | 139.4 | + . . *. | 139.5 | + . . * . | 139.6 | + . . * . | 139.7 |+ . . * . | 139.8 + . . * . | 139.9 + . .* . | 140. + . * . . | 140.1 |+ . * . . | 140.2 |+ . * . . | 140.3 | + . * . . | 140.4 | + .* . . | 140.5 | + * . . . | 140.6 | + * . . . | 140.7 | * . . . | 140.8 | * + . . . | 140.9 | * + . . . | 141. | * .+ . . | 141.1 | * . + . . | 141.2 |* . + . . | 141.3 |* . + . . | 141.4 * . + . . | 141.5 * . + . | 141.6 * . . + . | 141.7 |* . . + . | 141.8 | * . . + . | 141.9 | * . . + . | 142. | * . . +. | 142.1 | * . . . + | 142.2 | * . . . + | 142.3 | * . . . + | 142.4 | * . . . + | 142.5 | * . . . + | 142.6 | .* . . + | 142.7 | . * . . + | 142.8 | . * . . +| 142.9 | . * . . + 143. | . * . . + 143.1 | . .* . + 143.2 | . . * . + 143.3 | . . * . +| 143.4 | . . * . + | 143.5 | . . * . + | 143.6 | . . * + | 143.7 | . . . * + | 143.8 | . . . * + | 143.9 | . . . + * | 144. | . . . + * | 144.1 | . . + * | 144.2 | . . + . * | 144.3 | . . + . * | 144.4 | . . + . *| 144.5 | . . + . * 144.6 | . .+ . * 144.7 | . + . . * 144.8 | . + . . * 144.9 | . + . . *| 145. | . + . . * | 145.1 | .+ . . * | 145.2 | + . . . * | 145.3 | + . . . * | 145.4 | + . . . * | 145.5 | + . . . * | 145.6 | + . . . * | 145.7 | + . . *. | 145.8 | + . . * . | 145.9 | + . . * . | 146. |+ . . * . | 146.1 + . . * . | 146.2 + . * . | 146.3 + . * . . | 146.4 |+ . * . . | 146.5 | + . * . . | 146.6 | + . * . . | 146.7 | + * . . | 146.8 | + * . . . | 146.9 | + * . . . | 147. | * . . . | 147.1 | * + . . . | 147.2 | * + . . . | 147.3 | * .+ . . | 147.4 | * . + . . | 147.5 |* . + . . | 147.6 |* . + . . | 147.7 * . + . . | 147.8 * . .+ . | 147.9 * . . + . | 148. |* . . + . | 148.1 | * . . + . | 148.2 | * . . + . | 148.3 | * . . +. | 148.4 | * . . . + | 148.5 | * . . . + | 148.6 | * . . . + | 148.7 | * . . . + | 148.8 | *. . . + | 148.9 | . * . . + | 149. | . * . . + | 149.1 | . * . . +| 149.2 | . * . . + 149.3 | . * . . + 149.4 | . . * . + 149.5 | . . * . + 149.6 | . . * . +| 149.7 | . . * . + | 149.8 | . . * . + | 149.9 | . . * + | 150. | . . . * + | 150.1 | . . . * + | 150.2 | . . . + * | 150.3 | . . . + * | 150.4 | . . +. * | 150.5 | . . + . * | 150.6 | . . + . * | 150.7 | . . + . *| 150.8 | . . + . * 150.9 | . .+ . * 151. | . + . . * 151.1 | . + . . *| 151.2 | . + . . *| 151.3 | . + . . * | 151.4 | .+ . . * | 151.5 | + . . . * | 151.6 | + . . . * | 151.7 | + . . . * | 151.8 | + . . . * | 151.9 | + . . . * | 152. | + . . *. | 152.1 | + . . * . | 152.2 | + . . * . | 152.3 |+ . . * . | 152.4 + . . * . | 152.5 + . * . | 152.6 + . * . . | 152.7 |+ . * . . | 152.8 | + . * . . | 152.9 | + . * . . | 153. | + * . . | 153.1 | + * . . . | 153.2 | + * . . . | 153.3 | *+ . . . | 153.4 | * + . . . | 153.5 | * + . . . | 153.6 | * .+ . . | 153.7 | * . + . . | 153.8 |* . + . . | 153.9 * . + . . | 154. * . + . . | 154.1 * . .+ . | 154.2 * . . + . | 154.3 |* . . + . | 154.4 | * . . + . | 154.5 | * . . + . | 154.6 | * . . + | 154.7 | * . . . + | 154.8 | * . . . + | 154.9 | * . . . + | 155. | * . . . + | 155.1 | *. . . + | 155.2 | . * . . + | 155.3 | . * . . + | 155.4 | . * . . +| 155.5 | . * . . + 155.6 | . *. . + 155.7 | . . * . + 155.8 | . . * . + 155.9 | . . * . +| 156. | . . * . + | 156.1 | . . * . + | 156.2 | . . .* + | 156.3 | . . . * + | 156.4 | . . . *+ | 156.5 | . . . + * | 156.6 | . . . + * | 156.7 | . . +. * | 156.8 | . . + . * | 156.9 | . . + . * | 157. | . . + . *| 157.1 | . . + . * 157.2 | . + . * 157.3 | . + . . * 157.4 | . + . . *| 157.5 | . + . . *| 157.6 | . + . . * | 157.7 | .+ . . * | 157.8 | + . . . * | 157.9 | + . . . * | 158. | + . . . * | 158.1 | + . . . * | 158.2 | + . . .* | 158.3 | + . . * . | 158.4 | + . . * . | 158.5 |+ . . * . | 158.6 |+ . . * . | 158.7 + . . * . | 158.8 + . *. . | 158.9 + . * . . | 159. |+ . * . . | 159.1 | + . * . . | 159.2 | + . * . . | 159.3 | + * . . | 159.4 | + * . . . | 159.5 | + * . . . | 159.6 | * + . . . | 159.7 | * + . . . | 159.8 | * +. . . | 159.9 | * . + . . | 160. | * . + . . | 160.1 |* . + . . | 160.2 * . + . . | 160.3 * . + . . | 160.4 * . . + . | 160.5 * . . + . | 160.6 |* . . + . | 160.7 | * . . + . | 160.8 | * . . + . | 160.9 | * . . + | 161. | * . . . + | 161.1 | * . . . + | 161.2 | * . . . + | 161.3 | * . . . + | 161.4 | *. . . + | 161.5 | . * . . + | 161.6 | . * . . + | 161.7 | . * . . +| 161.8 | . * . . + 161.9 | . *. . + 162. | . . * . + 162.1 | . . * . +| 162.2 | . . * . +| 162.3 | . . * . + | 162.4 | . . * . + | 162.5 | . . .* + | 162.6 | . . . * + | 162.7 | . . . *+ | 162.8 | . . . + * | 162.9 | . . . + * | 163. | . . +. * | 163.1 | . . + . * | 163.2 | . . + . * | 163.3 | . . + . *| 163.4 | . . + . * 163.5 | . + . * 163.6 | . + . . * 163.7 | . + . . *| 163.8 | . + . . * | 163.9 | . + . . * | 164. | + . . * | 164.1 | + . . . * | 164.2 | + . . . * | 164.3 | + . . . * | 164.4 | + . . . * | 164.5 | + . . .* | 164.6 | + . . * . | 164.7 | + . . * . | 164.8 |+ . . * . | 164.9 |+ . . * . | 165. + . . * . | 165.1 + . *. . | 165.2 + . * . . | 165.3 |+ . * . . | 165.4 | + . * . . | 165.5 | + . * . . | 165.6 | + *. . . | 165.7 | + * . . . | 165.8 | + * . . . | 165.9 | * + . . . | 166. | * + . . . | 166.1 | * +. . . | 166.2 | * . + . . | 166.3 | * . + . . | 166.4 |* . + . . | 166.5 * . + . . | 166.6 * . + . . | 166.7 * . . + . | 166.8 * . . + . | 166.9 |* . . + . | 167. | * . . + . | 167.1 | * . . + . | 167.2 | * . . + | 167.3 | * . . . + | 167.4 | * . . . + | 167.5 | * . . . + | 167.6 | * . . . + | 167.7 | * . . + | 167.8 | . * . . + | 167.9 | . * . . + | 168. | . * . . +| 168.1 | . * . . + 168.2 | . *. . + 168.3 | . . * . + 168.4 | . . * . +| 168.5 | . . * . +| 168.6 | . . * . + | 168.7 | . . * . + | 168.8 | . . .* + | 168.9 | . . . * + | 169. | . . . * | 169.1 | . . . + * | 169.2 | . . .+ * | 169.3 | . . + . * | 169.4 | . . + . * | 169.5 | . . + . *| 169.6 | . . + . *| 169.7 | . . + . * 169.8 | . + . * 169.9 | . + . . * 170. | . + . . *| 170.1 | . + . . * | 170.2 | . + . . * | 170.3 | + . . * | 170.4 | + . . . * | 170.5 | + . . . * | 170.6 | + . . . * | 170.7 | + . . . * | 170.8 | + . . .* | 170.9 | + . . * . | 171. | + . . * . | 171.1 |+ . . * . | 171.2 + . . * . | 171.3 + . . * . | 171.4 + . *. . | 171.5 + . * . . | 171.6 |+ . * . . | 171.7 | + . * . . | 171.8 | + . * . . | 171.9 | + *. . . | 172. | + * . . . | 172.1 | + * . . . | 172.2 | * + . . . | 172.3 | * + . . . | 172.4 | * +. . . | 172.5 | * . + . . | 172.6 | * . + . . | 172.7 |* . + . . | 172.8 * . + . . | 172.9 * . +. . | 173. * . . + . | 173.1 * . . + . | 173.2 |* . . + . | 173.3 | * . . + . | 173.4 | * . . + . | 173.5 | * . . .+ | 173.6 | * . . . + | 173.7 | * . . . + | 173.8 | * . . . + | 173.9 | * . . . + | 174. | * . . + | 174.1 | . * . . + | 174.2 | . * . . + | 174.3 | . * . . +| 174.4 | . * . . + 174.5 | . * . + 174.6 | . . * . + 174.7 | . . * . +| 174.8 | . . * . + | 174.9 | . . * . + | 175. | . . *. + | 175.1 | . . . * + | 175.2 | . . . * + | 175.3 | . . . +* | 175.4 | . . . + * | 175.5 | . . .+ * | 175.6 | . . + . * | 175.7 | . . + . * | 175.8 | . . + . *| 175.9 | . . + . *| 176. | . . + . * 176.1 | . +. . * 176.2 | . + . . * 176.3 | . + . . *| 176.4 | . + . . * | 176.5 | . + . . * | 176.6 | +. . . * | 176.7 | + . . . * | 176.8 | + . . . * | 176.9 | + . . . * | 177. | + . . . * | 177.1 | + . . * | 177.2 | + . . * . | 177.3 | + . . * . | 177.4 |+ . . * . | 177.5 + . . * . | 177.6 + . . * . | 177.7 + . * . . | 177.8 + . * . . | 177.9 |+ . * . . | 178. | + . * . . | 178.1 | + . * . . | 178.2 | + *. . . | 178.3 | + * . . . | 178.4 | + * . . . | 178.5 | * + . . . | 178.6 | * + . . . | 178.7 | * + . . | 178.8 | * . + . . | 178.9 | * . + . . | 179. |* . + . . | 179.1 * . + . . | 179.2 * . +. . | 179.3 * . . + . | 179.4 |* . . + . | 179.5 |* . . + . | 179.6 | * . . + . | 179.7 | * . . + . | 179.8 | * . . .+ | 179.9 | * . . . + | 180. | * . . . + | 180.1 | * . . . + | 180.2 | * . . . + | 180.3 | * . . + | 180.4 | . * . . + | 180.5 | . * . . +| 180.6 | . * . . +| 180.7 | . * . . + 180.8 | . * . + 180.9 | . . * . + 181. | . . * . +| 181.1 | . . * . + | 181.2 | . . * . + | 181.3 | . . *. + | 181.4 | . . . * + | 181.5 | . . . * + | 181.6 | . . . +* | 181.7 | . . . + * | 181.8 | . . .+ * | 181.9 | . . + . * | 182. | . . + . * | 182.1 | . . + . *| 182.2 | . . + . * 182.3 | . . + . * 182.4 | . +. . * 182.5 | . + . . * 182.6 | . + . . *| 182.7 | . + . . * | 182.8 | . + . . * | 182.9 | +. . . * | 183. | + . . . * | 183.1 | + . . . * | 183.2 | + . . . * | 183.3 | + . . . * | 183.4 | + . . * | 183.5 | + . . * . | 183.6 | + . . * . | 183.7 |+ . . * . | 183.8 + . . * . | 183.9 + . .* . | 184. + . * . . | 184.1 + . * . . | 184.2 |+ . * . . | 184.3 | + . * . . | 184.4 | + .* . . | 184.5 | + * . . . | 184.6 | + * . . . | 184.7 | +* . . . | 184.8 | * + . . . | 184.9 | * + . . . | 185. | * + . . | 185.1 | * . + . . | 185.2 | * . + . . | 185.3 |* . + . . | 185.4 * . + . . | 185.5 * . + . | 185.6 * . . + . | 185.7 |* . . + . | 185.8 |* . . + . | 185.9 | * . . + . | 186. | * . . +. | 186.1 | * . . . + | 186.2 | * . . . + | 186.3 | * . . . + | 186.4 | * . . . + | 186.5 | * . . . + | 186.6 | .* . . + | 186.7 | . * . . + | 186.8 | . * . . +| 186.9 | . * . . +| 187. | . * . . + 187.1 | . .* . + 187.2 | . . * . + 187.3 | . . * . +| 187.4 | . . * . + | 187.5 | . . * . + | 187.6 | . . *. + | 187.7 | . . . * + | 187.8 | . . . * + | 187.9 | . . . + * | 188. | . . . + * | 188.1 | . . + * | 188.2 | . . + . * | 188.3 | . . + . * | 188.4 | . . + . *| 188.5 | . . + . * 188.6 | . . + . * 188.7 | . + . . * 188.8 | . + . . * 188.9 | . + . . *| 189. | . + . . * | 189.1 | . + . . * | 189.2 | +. . . * | 189.3 | + . . . * | 189.4 | + . . . * | 189.5 | + . . . * | 189.6 | + . . . * | 189.7 | + . . * | 189.8 | + . . * . | 189.9 | + . . * . | 190. |+ . . * . | 190.1 + . . * . | 190.2 + . .* . | 190.3 + . * . . | 190.4 |+ . * . . | 190.5 |+ . * . . | 190.6 | + . * . . | 190.7 | + .* . . | 190.8 | + * . . . | 190.9 | + * . . . | 191. | +* . . . | 191.1 | * + . . . | 191.2 | * + . . . | 191.3 | * + . . | 191.4 | * . + . . | 191.5 | * . + . . | 191.6 |* . + . . | 191.7 * . + . . | 191.8 * . + . | 191.9 * . . + . | 192. |* . . + . | 192.1 | * . . + . | 192.2 | * . . + . | 192.3 | * . . +. | 192.4 | * . . . + | 192.5 | * . . . + | 192.6 | * . . . + | 192.7 | * . . . + | 192.8 | * . . . + | 192.9 | .* . . + | 193. | . * . . + | 193.1 | . * . . +| 193.2 | . * . . + 193.3 | . * . . + 193.4 | . .* . + 193.5 | . . * . + 193.6 | . . * . +| 193.7 | . . * . + | 193.8 | . . * . + | 193.9 | . . * + | 194. | . . . * + | 194.1 | . . . * + | 194.2 | . . . + * | 194.3 | . . . + * | 194.4 | . . + * | 194.5 | . . + . * | 194.6 | . . + . * | 194.7 | . . + . *| 194.8 | . . + . * 194.9 | . .+ . * 195. | . + . . * 195.1 | . + . . * 195.2 | . + . . *| 195.3 | . + . . * | 195.4 | . + . . * | 195.5 | + . . . * | 195.6 | + . . . * | 195.7 | + . . . * | 195.8 | + . . . * | 195.9 | + . . . * | 196. | + . . *. | 196.1 | + . . * . | 196.2 | + . . * . | 196.3 |+ . . * . | 196.4 + . . * . | 196.5 + . * . | 196.6 + . * . . | 196.7 |+ . * . . | 196.8 |+ . * . . | 196.9 | + . * . . | 197. | + .* . . | 197.1 | + * . . . | 197.2 | + * . . . | 197.3 | * . . . | 197.4 | * + . . . | 197.5 | * + . . . | 197.6 | * .+ . . | 197.7 | * . + . . | 197.8 |* . + . . | 197.9 |* . + . . | 198. * . + . . | 198.1 * . .+ . | 198.2 * . . + . | 198.3 |* . . + . | 198.4 | * . . + . | 198.5 | * . . + . | 198.6 | * . . +. | 198.7 | * . . . + | 198.8 | * . . . + | 198.9 | * . . . + | 199. | * . . . + | 199.1 | *. . . + | 199.2 | . * . . + | 199.3 | . * . . + | 199.4 | . * . . +| 199.5 | . * . . + 199.6 | . * . . + 199.7 | . .* . + 199.8 | . . * . + 199.9 | . . * . +| 200. | . . * . + | +-----------------+----------------+-----------------+----------------+ v(1) -5. -2.5 0. 2.5 5. v(2) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 200. | . . * . + | 200.1 | . . * . + | 200.2 | . . * + | 200.3 | . . . * + | 200.4 | . . . * + | 200.5 | . . . + * | 200.6 | . . . + * | 200.7 | . . + * | 200.8 | . . + . * | 200.9 | . . + . * | 201. | . . + . *| 201.1 | . . + . * 201.2 | . .+ . * 201.3 | . + . . * 201.4 | . + . . *| 201.5 | . + . . *| 201.6 | . + . . * | 201.7 | .+ . . * | 201.8 | + . . . * | 201.9 | + . . . * | 202. | + . . . * | 202.1 | + . . . * | 202.2 | + . . . * | 202.3 | + . . *. | 202.4 | + . . * . | 202.5 | + . . * . | 202.6 |+ . . * . | 202.7 + . . * . | 202.8 + . * . | 202.9 + . * . . | 203. |+ . * . . | 203.1 | + . * . . | 203.2 | + . * . . | 203.3 | + * . . | 203.4 | + * . . . | 203.5 | + * . . . | 203.6 | *+ . . . | 203.7 | * + . . . | 203.8 | * + . . . | 203.9 | * .+ . . | 204. | * . + . . | 204.1 |* . + . . | 204.2 |* . + . . | 204.3 * . + . . | 204.4 * . .+ . | 204.5 * . . + . | 204.6 |* . . + . | 204.7 | * . . + . | 204.8 | * . . + . | 204.9 | * . . + | 205. | * . . . + | 205.1 | * . . . + | 205.2 | * . . . + | 205.3 | * . . . + | 205.4 | *. . . + | 205.5 | . * . . + | 205.6 | . * . . + | 205.7 | . * . . +| 205.8 | . * . . + 205.9 | . * . . + 206. | . . * . + 206.1 | . . * . + 206.2 | . . * . +| 206.3 | . . * . + | 206.4 | . . * . + | 206.5 | . . * + | 206.6 | . . . * + | 206.7 | . . . * + | 206.8 | . . . + * | 206.9 | . . . + * | 207. | . . +. * | 207.1 | . . + . * | 207.2 | . . + . * | 207.3 | . . + . *| 207.4 | . . + . * 207.5 | . .+ . * 207.6 | . + . . * 207.7 | . + . . *| 207.8 | . + . . *| 207.9 | . + . . * | 208. | .+ . . * | 208.1 | + . . . * | 208.2 | + . . . * | 208.3 | + . . . * | 208.4 | + . . . * | 208.5 | + . . .* | 208.6 | + . . * . | 208.7 | + . . * . | 208.8 |+ . . * . | 208.9 |+ . . * . | 209. + . . * . | 209.1 + . * . | 209.2 + . * . . | 209.3 |+ . * . . | 209.4 | + . * . . | 209.5 | + . * . . | 209.6 | + * . . | 209.7 | + * . . . | 209.8 | + * . . . | 209.9 | *+ . . . | 210. | * + . . . | 210.1 | * + . . . | 210.2 | * .+ . . | 210.3 | * . + . . | 210.4 |* . + . . | 210.5 * . + . . | 210.6 * . + . . | 210.7 * . .+ . | 210.8 * . . + . | 210.9 |* . . + . | 211. | * . . + . | 211.1 | * . . + . | 211.2 | * . . + | 211.3 | * . . . + | 211.4 | * . . . + | 211.5 | * . . . + | 211.6 | * . . . + | 211.7 | *. . . + | 211.8 | . * . . + | 211.9 | . * . . + | 212. | . * . . +| 212.1 | . * . . + 212.2 | . *. . + 212.3 | . . * . + 212.4 | . . * . + 212.5 | . . * . +| 212.6 | . . * . + | 212.7 | . . * . + | 212.8 | . . .* + | 212.9 | . . . * + | 213. | . . . *+ | 213.1 | . . . + * | 213.2 | . . . + * | 213.3 | . . +. * | 213.4 | . . + . * | 213.5 | . . + . * | 213.6 | . . + . *| 213.7 | . . + . * 213.8 | . + . * 213.9 | . + . . * 214. | . + . . *| 214.1 | . + . . *| 214.2 | . + . . * | 214.3 | + . . * | 214.4 | + . . . * | 214.5 | + . . . * | 214.6 | + . . . * | 214.7 | + . . . * | 214.8 | + . . .* | 214.9 | + . . * . | 215. | + . . * . | 215.1 |+ . . * . | 215.2 |+ . . * . | 215.3 + . . * . | 215.4 + . *. . | 215.5 + . * . . | 215.6 |+ . * . . | 215.7 | + . * . . | 215.8 | + . * . . | 215.9 | + * . . | 216. | + * . . . | 216.1 | + * . . . | 216.2 | * + . . . | 216.3 | * + . . . | 216.4 | * +. . . | 216.5 | * . + . . | 216.6 | * . + . . | 216.7 |* . + . . | 216.8 * . + . . | 216.9 * . + . . | 217. * . . + . | 217.1 * . . + . | 217.2 |* . . + . | 217.3 | * . . + . | 217.4 | * . . + . | 217.5 | * . . + | 217.6 | * . . . + | 217.7 | * . . . + | 217.8 | * . . . + | 217.9 | * . . . + | 218. | * . . + | 218.1 | . * . . + | 218.2 | . * . . + | 218.3 | . * . . +| 218.4 | . * . . + 218.5 | . *. . + 218.6 | . . * . + 218.7 | . . * . +| 218.8 | . . * . +| 218.9 | . . * . + | 219. | . . * . + | 219.1 | . . .* + | 219.2 | . . . * + | 219.3 | . . . * | 219.4 | . . . + * | 219.5 | . . . + * | 219.6 | . . +. * | 219.7 | . . + . * | 219.8 | . . + . * | 219.9 | . . + . *| 220. | . . + . * 220.1 | . + . * 220.2 | . + . . * 220.3 | . + . . *| 220.4 | . + . . * | 220.5 | . + . . * | 220.6 | + . . * | 220.7 | + . . . * | 220.8 | + . . . * | 220.9 | + . . . * | 221. | + . . . * | 221.1 | + . . .* | 221.2 | + . . * . | 221.3 | + . . * . | 221.4 |+ . . * . | 221.5 + . . * . | 221.6 + . . * . | 221.7 + . *. . | 221.8 + . * . . | 221.9 |+ . * . . | 222. | + . * . . | 222.1 | + . * . . | 222.2 | + *. . . | 222.3 | + * . . . | 222.4 | + * . . . | 222.5 | * + . . . | 222.6 | * + . . . | 222.7 | * +. . . | 222.8 | * . + . . | 222.9 | * . + . . | 223. |* . + . . | 223.1 * . + . . | 223.2 * . +. . | 223.3 * . . + . | 223.4 * . . + . | 223.5 |* . . + . | 223.6 | * . . + . | 223.7 | * . . + . | 223.8 | * . . .+ | 223.9 | * . . . + | 224. | * . . . + | 224.1 | * . . . + | 224.2 | * . . . + | 224.3 | * . . + | 224.4 | . * . . + | 224.5 | . * . . + | 224.6 | . * . . +| 224.7 | . * . . + 224.8 | . * . + 224.9 | . . * . + 225. | . . * . +| 225.1 | . . * . +| 225.2 | . . * . + | 225.3 | . . * . + | 225.4 | . . .* + | 225.5 | . . . * + | 225.6 | . . . * | 225.7 | . . . + * | 225.8 | . . .+ * | 225.9 | . . + . * | 226. | . . + . * | 226.1 | . . + . *| 226.2 | . . + . *| 226.3 | . . + . * 226.4 | . +. . * 226.5 | . + . . * 226.6 | . + . . *| 226.7 | . + . . * | 226.8 | . + . . * | 226.9 | + . . * | 227. | + . . . * | 227.1 | + . . . * | 227.2 | + . . . * | 227.3 | + . . . * | 227.4 | + . . * | 227.5 | + . . * . | 227.6 | + . . * . | 227.7 |+ . . * . | 227.8 + . . * . | 227.9 + . . * . | 228. + . * . . | 228.1 + . * . . | 228.2 |+ . * . . | 228.3 | + . * . . | 228.4 | + . * . . | 228.5 | + *. . . | 228.6 | + * . . . | 228.7 | + * . . . | 228.8 | * + . . . | 228.9 | * + . . . | 229. | * +. . . | 229.1 | * . + . . | 229.2 | * . + . . | 229.3 |* . + . . | 229.4 * . + . . | 229.5 * . +. . | 229.6 * . . + . | 229.7 |* . . + . | 229.8 |* . . + . | 229.9 | * . . + . | 230. | * . . + . | 230.1 | * . . .+ | 230.2 | * . . . + | 230.3 | * . . . + | 230.4 | * . . . + | 230.5 | * . . . + | 230.6 | * . . + | 230.7 | . * . . + | 230.8 | . * . . + | 230.9 | . * . . +| 231. | . * . . + 231.1 | . * . + 231.2 | . . * . + 231.3 | . . * . +| 231.4 | . . * . + | 231.5 | . . * . + | 231.6 | . . *. + | 231.7 | . . . * + | 231.8 | . . . * + | 231.9 | . . . +* | 232. | . . . + * | 232.1 | . . .+ * | 232.2 | . . + . * | 232.3 | . . + . * | 232.4 | . . + . *| 232.5 | . . + . *| 232.6 | . . + . * 232.7 | . +. . * 232.8 | . + . . * 232.9 | . + . . *| 233. | . + . . * | 233.1 | . + . . * | 233.2 | +. . . * | 233.3 | + . . . * | 233.4 | + . . . * | 233.5 | + . . . * | 233.6 | + . . . * | 233.7 | + . . * | 233.8 | + . . * . | 233.9 | + . . * . | 234. |+ . . * . | 234.1 + . . * . | 234.2 + . . * . | 234.3 + . * . . | 234.4 + . * . . | 234.5 |+ . * . . | 234.6 | + . * . . | 234.7 | + . * . . | 234.8 | + *. . . | 234.9 | + * . . . | 235. | +* . . . | 235.1 | * + . . . | 235.2 | * + . . . | 235.3 | * + . . | 235.4 | * . + . . | 235.5 | * . + . . | 235.6 |* . + . . | 235.7 * . + . . | 235.8 * . +. . | 235.9 * . . + . | 236. |* . . + . | 236.1 |* . . + . | 236.2 | * . . + . | 236.3 | * . . + . | 236.4 | * . . .+ | 236.5 | * . . . + | 236.6 | * . . . + | 236.7 | * . . . + | 236.8 | * . . . + | 236.9 | .* . . + | 237. | . * . . + | 237.1 | . * . . +| 237.2 | . * . . +| 237.3 | . * . . + 237.4 | . * . + 237.5 | . . * . + 237.6 | . . * . +| 237.7 | . . * . + | 237.8 | . . * . + | 237.9 | . . *. + | 238. | . . . * + | 238.1 | . . . * + | 238.2 | . . . +* | 238.3 | . . . + * | 238.4 | . . .+ * | 238.5 | . . + . * | 238.6 | . . + . * | 238.7 | . . + . *| 238.8 | . . + . * 238.9 | . . + . * 239. | . +. . * 239.1 | . + . . * 239.2 | . + . . *| 239.3 | . + . . * | 239.4 | . + . . * | 239.5 | +. . . * | 239.6 | + . . . * | 239.7 | + . . . * | 239.8 | + . . . * | 239.9 | + . . . * | 240. | + . . * | 240.1 | + . . * . | 240.2 | + . . * . | 240.3 |+ . . * . | 240.4 + . . * . | 240.5 + . .* . | 240.6 + . * . . | 240.7 + . * . . | 240.8 |+ . * . . | 240.9 | + . * . . | 241. | + .* . . | 241.1 | + * . . . | 241.2 | + * . . . | 241.3 | +* . . . | 241.4 | * + . . . | 241.5 | * + . . . | 241.6 | * + . . | 241.7 | * . + . . | 241.8 | * . + . . | 241.9 |* . + . . | 242. * . + . . | 242.1 * . + . | 242.2 * . . + . | 242.3 |* . . + . | 242.4 | * . . + . | 242.5 | * . . + . | 242.6 | * . . +. | 242.7 | * . . . + | 242.8 | * . . . + | 242.9 | * . . . + | 243. | * . . . + | 243.1 | * . . . + | 243.2 | .* . . + | 243.3 | . * . . + | 243.4 | . * . . +| 243.5 | . * . . +| 243.6 | . * . . + 243.7 | . .* . + 243.8 | . . * . + 243.9 | . . * . +| 244. | . . * . + | 244.1 | . . * . + | 244.2 | . . *. + | 244.3 | . . . * + | 244.4 | . . . * + | 244.5 | . . . + * | 244.6 | . . . + * | 244.7 | . . + * | 244.8 | . . + . * | 244.9 | . . + . * | 245. | . . + . *| 245.1 | . . + . * 245.2 | . . + . * 245.3 | . + . . * 245.4 | . + . . * 245.5 | . + . . *| 245.6 | . + . . * | 245.7 | . + . . * | 245.8 | +. . . * | 245.9 | + . . . * | 246. | + . . . * | 246.1 | + . . . * | 246.2 | + . . . * | 246.3 | + . . *. | 246.4 | + . . * . | 246.5 | + . . * . | 246.6 |+ . . * . | 246.7 + . . * . | 246.8 + . .* . | 246.9 + . * . . | 247. |+ . * . . | 247.1 |+ . * . . | 247.2 | + . * . . | 247.3 | + .* . . | 247.4 | + * . . . | 247.5 | + * . . . | 247.6 | * . . . | 247.7 | * + . . . | 247.8 | * + . . . | 247.9 | * + . . | 248. | * . + . . | 248.1 |* . + . . | 248.2 |* . + . . | 248.3 * . + . . | 248.4 * . + . | 248.5 * . . + . | 248.6 |* . . + . | 248.7 | * . . + . | 248.8 | * . . + . | 248.9 | * . . +. | 249. | * . . . + | 249.1 | * . . . + | 249.2 | * . . . + | 249.3 | * . . . + | 249.4 | * . . . + | 249.5 | .* . . + | 249.6 | . * . . + | 249.7 | . * . . +| 249.8 | . * . . + 249.9 | . * . . + 250. | . .* . + 250.1 | . . * . + 250.2 | . . * . +| 250.3 | . . * . + | 250.4 | . . * . + | 250.5 | . . * + | 250.6 | . . . * + | 250.7 | . . . * + | 250.8 | . . . + * | 250.9 | . . . + * | 251. | . . + * | 251.1 | . . + . * | 251.2 | . . + . * | 251.3 | . . + . *| 251.4 | . . + . * 251.5 | . .+ . * 251.6 | . + . . * 251.7 | . + . . * 251.8 | . + . . *| 251.9 | . + . . * | 252. | .+ . . * | 252.1 | + . . . * | 252.2 | + . . . * | 252.3 | + . . . * | 252.4 | + . . . * | 252.5 | + . . . * | 252.6 | + . . *. | 252.7 | + . . * . | 252.8 | + . . * . | 252.9 |+ . . * . | 253. + . . * . | 253.1 + . * . | 253.2 + . * . . | 253.3 |+ . * . . | 253.4 |+ . * . . | 253.5 | + . * . . | 253.6 | + .* . . | 253.7 | + * . . . | 253.8 | + * . . . | 253.9 | * . . . | 254. | * + . . . | 254.1 | * + . . . | 254.2 | * .+ . . | 254.3 | * . + . . | 254.4 |* . + . . | 254.5 |* . + . . | 254.6 * . + . . | 254.7 * . .+ . | 254.8 * . . + . | 254.9 |* . . + . | 255. | * . . + . | 255.1 | * . . + . | 255.2 | * . . +. | 255.3 | * . . . + | 255.4 | * . . . + | 255.5 | * . . . + | 255.6 | * . . . + | 255.7 | *. . . + | 255.8 | . * . . + | 255.9 | . * . . + | 256. | . * . . +| 256.1 | . * . . + 256.2 | . * . . + 256.3 | . . * . + 256.4 | . . * . + 256.5 | . . * . +| 256.6 | . . * . + | 256.7 | . . * . + | 256.8 | . . * + | 256.9 | . . . * + | 257. | . . . * + | 257.1 | . . . + * | 257.2 | . . . + * | 257.3 | . . + * | 257.4 | . . + . * | 257.5 | . . + . * | 257.6 | . . + . *| 257.7 | . . + . * 257.8 | . .+ . * 257.9 | . + . . * 258. | . + . . *| 258.1 | . + . . *| 258.2 | . + . . * | 258.3 | .+ . . * | 258.4 | + . . . * | 258.5 | + . . . * | 258.6 | + . . . * | 258.7 | + . . . * | 258.8 | + . . . * | 258.9 | + . . *. | 259. | + . . * . | 259.1 | + . . * . | 259.2 |+ . . * . | 259.3 + . . * . | 259.4 + . * . | 259.5 + . * . . | 259.6 |+ . * . . | 259.7 | + . * . . | 259.8 | + . * . . | 259.9 | + * . . | 260. | + * . . . | 260.1 | + * . . . | 260.2 | *+ . . . | 260.3 | * + . . . | 260.4 | * + . . . | 260.5 | * .+ . . | 260.6 | * . + . . | 260.7 |* . + . . | 260.8 * . + . . | 260.9 * . + . . | 261. * . .+ . | 261.1 * . . + . | 261.2 |* . . + . | 261.3 | * . . + . | 261.4 | * . . + . | 261.5 | * . . + | 261.6 | * . . . + | 261.7 | * . . . + | 261.8 | * . . . + | 261.9 | * . . . + | 262. | *. . . + | 262.1 | . * . . + | 262.2 | . * . . + | 262.3 | . * . . +| 262.4 | . * . . + 262.5 | . *. . + 262.6 | . . * . + 262.7 | . . * . + 262.8 | . . * . +| 262.9 | . . * . + | 263. | . . * . + | 263.1 | . . .* + | 263.2 | . . . * + | 263.3 | . . . *+ | 263.4 | . . . + * | 263.5 | . . . + * | 263.6 | . . +. * | 263.7 | . . + . * | 263.8 | . . + . * | 263.9 | . . + . *| 264. | . . + . * 264.1 | . + . * 264.2 | . + . . * 264.3 | . + . . *| 264.4 | . + . . *| 264.5 | . + . . * | 264.6 | .+ . . * | 264.7 | + . . . * | 264.8 | + . . . * | 264.9 | + . . . * | 265. | + . . . * | 265.1 | + . . .* | 265.2 | + . . * . | 265.3 | + . . * . | 265.4 |+ . . * . | 265.5 |+ . . * . | 265.6 + . . * . | 265.7 + . *. . | 265.8 + . * . . | 265.9 |+ . * . . | 266. | + . * . . | 266.1 | + . * . . | 266.2 | + * . . | 266.3 | + * . . . | 266.4 | + * . . . | 266.5 | *+ . . . | 266.6 | * + . . . | 266.7 | * + . . . | 266.8 | * . + . . | 266.9 | * . + . . | 267. |* . + . . | 267.1 * . + . . | 267.2 * . + . . | 267.3 * . .+ . | 267.4 * . . + . | 267.5 |* . . + . | 267.6 | * . . + . | 267.7 | * . . + . | 267.8 | * . . + | 267.9 | * . . . + | 268. | * . . . + | 268.1 | * . . . + | 268.2 | * . . . + | 268.3 | *. . . + | 268.4 | . * . . + | 268.5 | . * . . + | 268.6 | . * . . +| 268.7 | . * . . + 268.8 | . *. . + 268.9 | . . * . + 269. | . . * . +| 269.1 | . . * . +| 269.2 | . . * . + | 269.3 | . . * . + | 269.4 | . . .* + | 269.5 | . . . * + | 269.6 | . . . *+ | 269.7 | . . . + * | 269.8 | . . . + * | 269.9 | . . +. * | 270. | . . + . * | 270.1 | . . + . * | 270.2 | . . + . *| 270.3 | . . + . * 270.4 | . + . * 270.5 | . + . . * 270.6 | . + . . *| 270.7 | . + . . * | 270.8 | . + . . * | 270.9 | + . . * | 271. | + . . . * | 271.1 | + . . . * | 271.2 | + . . . * | 271.3 | + . . . * | 271.4 | + . . .* | 271.5 | + . . * . | 271.6 | + . . * . | 271.7 |+ . . * . | 271.8 |+ . . * . | 271.9 + . . * . | 272. + . *. . | 272.1 + . * . . | 272.2 |+ . * . . | 272.3 | + . * . . | 272.4 | + . * . . | 272.5 | + *. . . | 272.6 | + * . . . | 272.7 | + * . . . | 272.8 | * + . . . | 272.9 | * + . . . | 273. | * +. . . | 273.1 | * . + . . | 273.2 | * . + . . | 273.3 |* . + . . | 273.4 * . + . . | 273.5 * . + . . | 273.6 * . . + . | 273.7 * . . + . | 273.8 |* . . + . | 273.9 | * . . + . | 274. | * . . + . | 274.1 | * . . + | 274.2 | * . . . + | 274.3 | * . . . + | 274.4 | * . . . + | 274.5 | * . . . + | 274.6 | * . . + | 274.7 | . * . . + | 274.8 | . * . . + | 274.9 | . * . . +| 275. | . * . . + 275.1 | . *. . + 275.2 | . . * . + 275.3 | . . * . +| 275.4 | . . * . +| 275.5 | . . * . + | 275.6 | . . * . + | 275.7 | . . .* + | 275.8 | . . . * + | 275.9 | . . . * | 276. | . . . + * | 276.1 | . . .+ * | 276.2 | . . + . * | 276.3 | . . + . * | 276.4 | . . + . *| 276.5 | . . + . *| 276.6 | . . + . * 276.7 | . + . * 276.8 | . + . . * 276.9 | . + . . *| 277. | . + . . * | 277.1 | . + . . * | 277.2 | + . . * | 277.3 | + . . . * | 277.4 | + . . . * | 277.5 | + . . . * | 277.6 | + . . . * | 277.7 | + . . .* | 277.8 | + . . * . | 277.9 | + . . * . | 278. |+ . . * . | 278.1 + . . * . | 278.2 + . . * . | 278.3 + . *. . | 278.4 + . * . . | 278.5 |+ . * . . | 278.6 | + . * . . | 278.7 | + . * . . | 278.8 | + *. . . | 278.9 | + * . . . | 279. | + * . . . | 279.1 | * + . . . | 279.2 | * + . . . | 279.3 | * +. . . | 279.4 | * . + . . | 279.5 | * . + . . | 279.6 |* . + . . | 279.7 * . + . . | 279.8 * . +. . | 279.9 * . . + . | 280. * . . + . | 280.1 |* . . + . | 280.2 | * . . + . | 280.3 | * . . + . | 280.4 | * . . .+ | 280.5 | * . . . + | 280.6 | * . . . + | 280.7 | * . . . + | 280.8 | * . . . + | 280.9 | * . . + | 281. | . * . . + | 281.1 | . * . . + | 281.2 | . * . . +| 281.3 | . * . . + 281.4 | . * . + 281.5 | . . * . + 281.6 | . . * . +| 281.7 | . . * . +| 281.8 | . . * . + | 281.9 | . . *. + | 282. | . . . * + | 282.1 | . . . * + | 282.2 | . . . * | 282.3 | . . . + * | 282.4 | . . .+ * | 282.5 | . . + . * | 282.6 | . . + . * | 282.7 | . . + . *| 282.8 | . . + . *| 282.9 | . . + . * 283. | . +. . * 283.1 | . + . . * 283.2 | . + . . *| 283.3 | . + . . * | 283.4 | . + . . * | 283.5 | + . . * | 283.6 | + . . . * | 283.7 | + . . . * | 283.8 | + . . . * | 283.9 | + . . . * | 284. | + . . * | 284.1 | + . . * . | 284.2 | + . . * . | 284.3 |+ . . * . | 284.4 + . . * . | 284.5 + . . * . | 284.6 + . * . . | 284.7 + . * . . | 284.8 |+ . * . . | 284.9 | + . * . . | 285. | + . * . . | 285.1 | + *. . . | 285.2 | + * . . . | 285.3 | + * . . . | 285.4 | * + . . . | 285.5 | * + . . . | 285.6 | * + . . | 285.7 | * . + . . | 285.8 | * . + . . | 285.9 |* . + . . | 286. * . + . . | 286.1 * . +. . | 286.2 * . . + . | 286.3 |* . . + . | 286.4 |* . . + . | 286.5 | * . . + . | 286.6 | * . . + . | 286.7 | * . . .+ | 286.8 | * . . . + | 286.9 | * . . . + | 287. | * . . . + | 287.1 | * . . . + | 287.2 | * . . + | 287.3 | . * . . + | 287.4 | . * . . + | 287.5 | . * . . +| 287.6 | . * . . + 287.7 | . * . + 287.8 | . . * . + 287.9 | . . * . +| 288. | . . * . + | 288.1 | . . * . + | 288.2 | . . *. + | 288.3 | . . . * + | 288.4 | . . . * + | 288.5 | . . . +* | 288.6 | . . . + * | 288.7 | . . .+ * | 288.8 | . . + . * | 288.9 | . . + . * | 289. | . . + . *| 289.1 | . . + . * 289.2 | . . + . * 289.3 | . +. . * 289.4 | . + . . * 289.5 | . + . . *| 289.6 | . + . . * | 289.7 | . + . . * | 289.8 | +. . . * | 289.9 | + . . . * | 290. | + . . . * | 290.1 | + . . . * | 290.2 | + . . . * | 290.3 | + . . * | 290.4 | + . . * . | 290.5 | + . . * . | 290.6 |+ . . * . | 290.7 + . . * . | 290.8 + . .* . | 290.9 + . * . . | 291. + . * . . | 291.1 |+ . * . . | 291.2 | + . * . . | 291.3 | + .* . . | 291.4 | + * . . . | 291.5 | + * . . . | 291.6 | +* . . . | 291.7 | * + . . . | 291.8 | * + . . . | 291.9 | * + . . | 292. | * . + . . | 292.1 | * . + . . | 292.2 |* . + . . | 292.3 * . + . . | 292.4 * . + . | 292.5 * . . + . | 292.6 |* . . + . | 292.7 |* . . + . | 292.8 | * . . + . | 292.9 | * . . + . | 293. | * . . .+ | 293.1 | * . . . + | 293.2 | * . . . + | 293.3 | * . . . + | 293.4 | * . . . + | 293.5 | .* . . + | 293.6 | . * . . + | 293.7 | . * . . +| 293.8 | . * . . +| 293.9 | . * . . + 294. | . .* . + 294.1 | . . * . + 294.2 | . . * . +| 294.3 | . . * . + | 294.4 | . . * . + | 294.5 | . . *. + | 294.6 | . . . * + | 294.7 | . . . * + | 294.8 | . . . +* | 294.9 | . . . + * | 295. | . . + * | 295.1 | . . + . * | 295.2 | . . + . * | 295.3 | . . + . *| 295.4 | . . + . * 295.5 | . . + . * 295.6 | . + . . * 295.7 | . + . . * 295.8 | . + . . *| 295.9 | . + . . * | 296. | . + . . * | 296.1 | +. . . * | 296.2 | + . . . * | 296.3 | + . . . * | 296.4 | + . . . * | 296.5 | + . . . * | 296.6 | + . . * | 296.7 | + . . * . | 296.8 | + . . * . | 296.9 |+ . . * . | 297. + . . * . | 297.1 + . .* . | 297.2 + . * . . | 297.3 |+ . * . . | 297.4 |+ . * . . | 297.5 | + . * . . | 297.6 | + .* . . | 297.7 | + * . . . | 297.8 | + * . . . | 297.9 | +* . . . | 298. | * + . . . | 298.1 | * + . . . | 298.2 | * + . . | 298.3 | * . + . . | 298.4 | * . + . . | 298.5 |* . + . . | 298.6 * . + . . | 298.7 * . + . | 298.8 * . . + . | 298.9 |* . . + . | 299. | * . . + . | 299.1 | * . . + . | 299.2 | * . . +. | 299.3 | * . . . + | 299.4 | * . . . + | 299.5 | * . . . + | 299.6 | * . . . + | 299.7 | * . . . + | 299.8 | .* . . + | 299.9 | . * . . + | 300. | . * . . +| +-----------------+----------------+-----------------+----------------+ v(1) -5. -2.5 0. 2.5 5. v(2) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.1 | . * . | 0.2 | . * . | 0.3 | . * . | 0.4 | . * . | 0.5 | . * . | 0.6 | . * . | 0.7 | . * . | 0.8 | . * . | 0.9 | . * . | 1. | . * . | 1.1 | . * . | 1.2 | . * . | 1.3 | . * . | 1.4 | . * . | 1.5 | . * . | 1.6 | . * . | 1.7 | . * . | 1.8 | . * . | 1.9 | . * . | 2. | . * . | 2.1 | . * . | 2.2 | . * . | 2.3 | . * . | 2.4 | . * . | 2.5 | . * . | 2.6 | . * . | 2.7 | . * . | 2.8 | . * . | 2.9 | . * . | 3. | . * . | 3.1 | . * . | 3.2 | . * . | 3.3 | . * . | 3.4 | . * . | 3.5 | . * . | 3.6 | . * . | 3.7 | . * . | 3.8 | . * . | 3.9 | . * . | 4. | . * . | 4.1 | . * . | 4.2 | . * . | 4.3 | . * . | 4.4 | . * . | 4.5 | . * . | 4.6 | . * . | 4.7 | . * . | 4.8 | . * . | 4.9 | . * . | 5. | . * . | 5.1 | . * . | 5.2 | . * . | 5.3 | . * . | 5.4 | . * . | 5.5 | . * . | 5.6 | . * . | 5.7 | . * . | 5.8 | . * . | 5.9 | . * . | 6. | . * . | 6.1 | . * . | 6.2 | . * . | 6.3 | . * . | 6.4 | . * . | 6.5 | . * . | 6.6 | . * . | 6.7 | . * . | 6.8 | . * . | 6.9 | . * . | 7. | . * . | 7.1 | . * . | 7.2 | . * . | 7.3 | . * . | 7.4 | . * . | 7.5 | . * . | 7.6 | . * . | 7.7 | . * . | 7.8 | . * . | 7.9 | . * . | 8. | . * . | 8.1 | . * . | 8.2 | . * . | 8.3 | . * . | 8.4 | . * . | 8.5 | . * . | 8.6 | . * . | 8.7 | . * . | 8.8 | . * . | 8.9 | . * . | 9. | . * . | 9.1 | . * . | 9.2 | . * . | 9.3 | . * . | 9.4 | . * . | 9.5 | . * . | 9.6 | . * . | 9.7 | . * . | 9.8 | . * . | 9.9 | . * . | 10. | . * . | 10.1 | . * . | 10.2 | . * . | 10.3 | . * . | 10.4 | . * . | 10.5 | . * . | 10.6 | . * . | 10.7 | . * . | 10.8 | . * . | 10.9 | . * . | 11. | . * . | 11.1 | . * . | 11.2 | . * . | 11.3 | . * . | 11.4 | . * . | 11.5 | . * . | 11.6 | . * . | 11.7 | . * . | 11.8 | . * . | 11.9 | . * . | 12. | . * . | 12.1 | . * . | 12.2 | . * . | 12.3 | . * . | 12.4 | . * . | 12.5 | . * . | 12.6 | . * . | 12.7 | . * . | 12.8 | . * . | 12.9 | . * . | 13. | . * . | 13.1 | . * . | 13.2 | . * . | 13.3 | . * . | 13.4 | . * . | 13.5 | . * . | 13.6 | . * . | 13.7 | . * . | 13.8 | . * . | 13.9 | . * . | 14. | . * . | 14.1 | . * . | 14.2 | . * . | 14.3 | . * . | 14.4 | . * . | 14.5 | . * . | 14.6 | . * . | 14.7 | . * . | 14.8 | . * . | 14.9 | . * . | 15. | . * . | 15.1 | . * . | 15.2 | . * . | 15.3 | . * . | 15.4 | . * . | 15.5 | . * . | 15.6 | . * . | 15.7 | . * . | 15.8 | . * . | 15.9 | . * . | 16. | . * . | 16.1 | . * . | 16.2 | . * . | 16.3 | . * . | 16.4 | . * . | 16.5 | . * . | 16.6 | . * . | 16.7 | . * . | 16.8 | . * . | 16.9 | . * . | 17. | . * . | 17.1 | . * . | 17.2 | . * . | 17.3 | . * . | 17.4 | . * . | 17.5 | . * . | 17.6 | . * . | 17.7 | . * . | 17.8 | . * . | 17.9 | . * . | 18. | . * . | 18.1 | . * . | 18.2 | . * . | 18.3 | . * . | 18.4 | . * . | 18.5 | . * . | 18.6 | . * . | 18.7 | . * . | 18.8 | . * . | 18.9 | . * . | 19. | . * . | 19.1 | . * . | 19.2 | . * . | 19.3 | . * . | 19.4 | . * . | 19.5 | . * . | 19.6 | . * . | 19.7 | . * . | 19.8 | . * . | 19.9 | . * . | 20. | . * . | 20.1 | . * . | 20.2 | . * . | 20.3 | . * . | 20.4 | . * . | 20.5 | . * . | 20.6 | . * . | 20.7 | . * . | 20.8 | . * . | 20.9 | . * . | 21. | . * . | 21.1 | . * . | 21.2 | . * . | 21.3 | . * . | 21.4 | . * . | 21.5 | . * . | 21.6 | . * . | 21.7 | . * . | 21.8 | . * . | 21.9 | . * . | 22. | . * . | 22.1 | . * . | 22.2 | . * . | 22.3 | . * . | 22.4 | . * . | 22.5 | . * . | 22.6 | . * . | 22.7 | . * . | 22.8 | . * . | 22.9 | . * . | 23. | . * . | 23.1 | . * . | 23.2 | . * . | 23.3 | . * . | 23.4 | . * . | 23.5 | . * . | 23.6 | . * . | 23.7 | . * . | 23.8 | . * . | 23.9 | . * . | 24. | . * . | 24.1 | . * . | 24.2 | . * . | 24.3 | . * . | 24.4 | . * . | 24.5 | . * . | 24.6 | . * . | 24.7 | . * . | 24.8 | . * . | 24.9 | . * . | 25. | . * . | 25.1 | . * . | 25.2 | . * . | 25.3 | . * . | 25.4 | . * . | 25.5 | . * . | 25.6 | . * . | 25.7 | . * . | 25.8 | . * . | 25.9 | . * . | 26. | . * . | 26.1 | . * . | 26.2 | . * . | 26.3 | . * . | 26.4 | . * . | 26.5 | . * . | 26.6 | . * . | 26.7 | . * . | 26.8 | . * . | 26.9 | . * . | 27. | . * . | 27.1 | . * . | 27.2 | . * . | 27.3 | . * . | 27.4 | . * . | 27.5 | . * . | 27.6 | . * . | 27.7 | . * . | 27.8 | . * . | 27.9 | . * . | 28. | . * . | 28.1 | . * . | 28.2 | . * . | 28.3 | . * . | 28.4 | . * . | 28.5 | . * . | 28.6 | . * . | 28.7 | . * . | 28.8 | . * . | 28.9 | . * . | 29. | . * . | 29.1 | . * . | 29.2 | . * . | 29.3 | . * . | 29.4 | . * . | 29.5 | . * . | 29.6 | . * . | 29.7 | . * . | 29.8 | . * . | 29.9 | . * . | 30. | . * . | 30.1 | . * . | 30.2 | . * . | 30.3 | . * . | 30.4 | . * . | 30.5 | . * . | 30.6 | . * . | 30.7 | . * . | 30.8 | . * . | 30.9 | . * . | 31. | . * . | 31.1 | . * . | 31.2 | . * . | 31.3 | . * . | 31.4 | . * . | 31.5 | . * . | 31.6 | . * . | 31.7 | . * . | 31.8 | . * . | 31.9 | . * . | 32. | . * . | 32.1 | . * . | 32.2 | . * . | 32.3 | . * . | 32.4 | . * . | 32.5 | . * . | 32.6 | . * . | 32.7 | . * . | 32.8 | . * . | 32.9 | . * . | 33. | . * . | 33.1 | . * . | 33.2 | . * . | 33.3 | . * . | 33.4 | . * . | 33.5 | . * . | 33.6 | . * . | 33.7 | . * . | 33.8 | . * . | 33.9 | . * . | 34. | . * . | 34.1 | . * . | 34.2 | . * . | 34.3 | . * . | 34.4 | . * . | 34.5 | . * . | 34.6 | . * . | 34.7 | . * . | 34.8 | . * . | 34.9 | . * . | 35. | . * . | 35.1 | . * . | 35.2 | . * . | 35.3 | . * . | 35.4 | . * . | 35.5 | . * . | 35.6 | . * . | 35.7 | . * . | 35.8 | . * . | 35.9 | . * . | 36. | . * . | 36.1 | . * . | 36.2 | . * . | 36.3 | . * . | 36.4 | . * . | 36.5 | . * . | 36.6 | . * . | 36.7 | . * . | 36.8 | . * . | 36.9 | . * . | 37. | . * . | 37.1 | . * . | 37.2 | . * . | 37.3 | . * . | 37.4 | . * . | 37.5 | . * . | 37.6 | . * . | 37.7 | . * . | 37.8 | . * . | 37.9 | . * . | 38. | . * . | 38.1 | . * . | 38.2 | . * . | 38.3 | . * . | 38.4 | . * . | 38.5 | . * . | 38.6 | . * . | 38.7 | . * . | 38.8 | . * . | 38.9 | . * . | 39. | . * . | 39.1 | . * . | 39.2 | . * . | 39.3 | . * . | 39.4 | . * . | 39.5 | . * . | 39.6 | . * . | 39.7 | . * . | 39.8 | . * . | 39.9 | . * . | 40. | . * . | 40.1 | . * . | 40.2 | . * . | 40.3 | . * . | 40.4 | . * . | 40.5 | . * . | 40.6 | . * . | 40.7 | . * . | 40.8 | . * . | 40.9 | . * . | 41. | . * . | 41.1 | . * . | 41.2 | . * . | 41.3 | . * . | 41.4 | . * . | 41.5 | . * . | 41.6 | . * . | 41.7 | . * . | 41.8 | . * . | 41.9 | . * . | 42. | . * . | 42.1 | . * . | 42.2 | . * . | 42.3 | . * . | 42.4 | . * . | 42.5 | . * . | 42.6 | . * . | 42.7 | . * . | 42.8 | . * . | 42.9 | . * . | 43. | . * . | 43.1 | . * . | 43.2 | . * . | 43.3 | . * . | 43.4 | . * . | 43.5 | . * . | 43.6 | . * . | 43.7 | . * . | 43.8 | . * . | 43.9 | . * . | 44. | . * . | 44.1 | . * . | 44.2 | . * . | 44.3 | . * . | 44.4 | . * . | 44.5 | . * . | 44.6 | . * . | 44.7 | . * . | 44.8 | . * . | 44.9 | . * . | 45. | . * . | 45.1 | . * . | 45.2 | . * . | 45.3 | . * . | 45.4 | . * . | 45.5 | . * . | 45.6 | . * . | 45.7 | . * . | 45.8 | . * . | 45.9 | . * . | 46. | . * . | 46.1 | . * . | 46.2 | . * . | 46.3 | . * . | 46.4 | . * . | 46.5 | . * . | 46.6 | . * . | 46.7 | . * . | 46.8 | . * . | 46.9 | . * . | 47. | . * . | 47.1 | . * . | 47.2 | . * . | 47.3 | . * . | 47.4 | . * . | 47.5 | . * . | 47.6 | . * . | 47.7 | . * . | 47.8 | . * . | 47.9 | . * . | 48. | . * . | 48.1 | . * . | 48.2 | . * . | 48.3 | . * . | 48.4 | . * . | 48.5 | . * . | 48.6 | . * . | 48.7 | . * . | 48.8 | . * . | 48.9 | . * . | 49. | . * . | 49.1 | . * . | 49.2 | . * . | 49.3 | . * . | 49.4 | . * . | 49.5 | . * . | 49.6 | . * . | 49.7 | . * . | 49.8 | . * . | 49.9 | . * . | 50. | . * . | 50.1 | . * . | 50.2 | . * . | 50.3 | . * . | 50.4 | . * . | 50.5 | . * . | 50.6 | . * . | 50.7 | . * . | 50.8 | . * . | 50.9 | . * . | 51. | . * . | 51.1 | . * . | 51.2 | . * . | 51.3 | . * . | 51.4 | . * . | 51.5 | . * . | 51.6 | . * . | 51.7 | . * . | 51.8 | . * . | 51.9 | . * . | 52. | . * . | 52.1 | . * . | 52.2 | . * . | 52.3 | . * . | 52.4 | . * . | 52.5 | . * . | 52.6 | . * . | 52.7 | . * . | 52.8 | . * . | 52.9 | . * . | 53. | . * . | 53.1 | . * . | 53.2 | . * . | 53.3 | . * . | 53.4 | . * . | 53.5 | . * . | 53.6 | . * . | 53.7 | . * . | 53.8 | . * . | 53.9 | . * . | 54. | . * . | 54.1 | . * . | 54.2 | . * . | 54.3 | . * . | 54.4 | . * . | 54.5 | . * . | 54.6 | . * . | 54.7 | . * . | 54.8 | . * . | 54.9 | . * . | 55. | . * . | 55.1 | . * . | 55.2 | . * . | 55.3 | . * . | 55.4 | . * . | 55.5 | . * . | 55.6 | . * . | 55.7 | . * . | 55.8 | . * . | 55.9 | . * . | 56. | . * . | 56.1 | . * . | 56.2 | . * . | 56.3 | . * . | 56.4 | . * . | 56.5 | . * . | 56.6 | . * . | 56.7 | . * . | 56.8 | . * . | 56.9 | . * . | 57. | . * . | 57.1 | . * . | 57.2 | . * . | 57.3 | . * . | 57.4 | . * . | 57.5 | . * . | 57.6 | . * . | 57.7 | . * . | 57.8 | . * . | 57.9 | . * . | 58. | . * . | 58.1 | . * . | 58.2 | . * . | 58.3 | . * . | 58.4 | . * . | 58.5 | . * . | 58.6 | . * . | 58.7 | . * . | 58.8 | . * . | 58.9 | . * . | 59. | . * . | 59.1 | . * . | 59.2 | . * . | 59.3 | . * . | 59.4 | . * . | 59.5 | . * . | 59.6 | . * . | 59.7 | . * . | 59.8 | . * . | 59.9 | . * . | 60. | . * . | 60.1 | . * . | 60.2 | . * . | 60.3 | . * . | 60.4 | . * . | 60.5 | . * . | 60.6 | . * . | 60.7 | . * . | 60.8 | . * . | 60.9 | . * . | 61. | . * . | 61.1 | . * . | 61.2 | . * . | 61.3 | . * . | 61.4 | . * . | 61.5 | . * . | 61.6 | . * . | 61.7 | . * . | 61.8 | . * . | 61.9 | . * . | 62. | . * . | 62.1 | . * . | 62.2 | . * . | 62.3 | . * . | 62.4 | . * . | 62.5 | . * . | 62.6 | . * . | 62.7 | . * . | 62.8 | . * . | 62.9 | . * . | 63. | . * . | 63.1 | . * . | 63.2 | . * . | 63.3 | . * . | 63.4 | . * . | 63.5 | . * . | 63.6 | . * . | 63.7 | . * . | 63.8 | . * . | 63.9 | . * . | 64. | . * . | 64.1 | . * . | 64.2 | . * . | 64.3 | . * . | 64.4 | . * . | 64.5 | . * . | 64.6 | . * . | 64.7 | . * . | 64.8 | . * . | 64.9 | . * . | 65. | . * . | 65.1 | . * . | 65.2 | . * . | 65.3 | . * . | 65.4 | . * . | 65.5 | . * . | 65.6 | . * . | 65.7 | . * . | 65.8 | . * . | 65.9 | . * . | 66. | . * . | 66.1 | . * . | 66.2 | . * . | 66.3 | . * . | 66.4 | . * . | 66.5 | . * . | 66.6 | . * . | 66.7 | . * . | 66.8 | . * . | 66.9 | . * . | 67. | . * . | 67.1 | . * . | 67.2 | . * . | 67.3 | . * . | 67.4 | . * . | 67.5 | . * . | 67.6 | . * . | 67.7 | . * . | 67.8 | . * . | 67.9 | . * . | 68. | . * . | 68.1 | . * . | 68.2 | . * . | 68.3 | . * . | 68.4 | . * . | 68.5 | . * . | 68.6 | . * . | 68.7 | . * . | 68.8 | . * . | 68.9 | . * . | 69. | . * . | 69.1 | . * . | 69.2 | . * . | 69.3 | . * . | 69.4 | . * . | 69.5 | . * . | 69.6 | . * . | 69.7 | . * . | 69.8 | . * . | 69.9 | . * . | 70. | . * . | 70.1 | . * . | 70.2 | . * . | 70.3 | . * . | 70.4 | . * . | 70.5 | . * . | 70.6 | . * . | 70.7 | . * . | 70.8 | . * . | 70.9 | . * . | 71. | . * . | 71.1 | . * . | 71.2 | . * . | 71.3 | . * . | 71.4 | . * . | 71.5 | . * . | 71.6 | . * . | 71.7 | . * . | 71.8 | . * . | 71.9 | . * . | 72. | . * . | 72.1 | . * . | 72.2 | . * . | 72.3 | . * . | 72.4 | . * . | 72.5 | . * . | 72.6 | . * . | 72.7 | . * . | 72.8 | . * . | 72.9 | . * . | 73. | . * . | 73.1 | . * . | 73.2 | . * . | 73.3 | . * . | 73.4 | . * . | 73.5 | . * . | 73.6 | . * . | 73.7 | . * . | 73.8 | . * . | 73.9 | . * . | 74. | . * . | 74.1 | . * . | 74.2 | . * . | 74.3 | . * . | 74.4 | . * . | 74.5 | . * . | 74.6 | . * . | 74.7 | . * . | 74.8 | . * . | 74.9 | . * . | 75. | . * . | 75.1 | . * . | 75.2 | . * . | 75.3 | . * . | 75.4 | . * . | 75.5 | . * . | 75.6 | . * . | 75.7 | . * . | 75.8 | . * . | 75.9 | . * . | 76. | . * . | 76.1 | . * . | 76.2 | . * . | 76.3 | . * . | 76.4 | . * . | 76.5 | . * . | 76.6 | . * . | 76.7 | . * . | 76.8 | . * . | 76.9 | . * . | 77. | . * . | 77.1 | . * . | 77.2 | . * . | 77.3 | . * . | 77.4 | . * . | 77.5 | . * . | 77.6 | . * . | 77.7 | . * . | 77.8 | . * . | 77.9 | . * . | 78. | . * . | 78.1 | . * . | 78.2 | . * . | 78.3 | . * . | 78.4 | . * . | 78.5 | . * . | 78.6 | . * . | 78.7 | . * . | 78.8 | . * . | 78.9 | . * . | 79. | . * . | 79.1 | . * . | 79.2 | . * . | 79.3 | . * . | 79.4 | . * . | 79.5 | . * . | 79.6 | . * . | 79.7 | . * . | 79.8 | . * . | 79.9 | . * . | 80. | . * . | 80.1 | . * . | 80.2 | . * . | 80.3 | . * . | 80.4 | . * . | 80.5 | . * . | 80.6 | . * . | 80.7 | . * . | 80.8 | . * . | 80.9 | . * . | 81. | . * . | 81.1 | . * . | 81.2 | . * . | 81.3 | . * . | 81.4 | . * . | 81.5 | . * . | 81.6 | . * . | 81.7 | . * . | 81.8 | . * . | 81.9 | . * . | 82. | . * . | 82.1 | . * . | 82.2 | . * . | 82.3 | . * . | 82.4 | . * . | 82.5 | . * . | 82.6 | . * . | 82.7 | . * . | 82.8 | . * . | 82.9 | . * . | 83. | . * . | 83.1 | . * . | 83.2 | . * . | 83.3 | . * . | 83.4 | . * . | 83.5 | . * . | 83.6 | . * . | 83.7 | . * . | 83.8 | . * . | 83.9 | . * . | 84. | . * . | 84.1 | . * . | 84.2 | . * . | 84.3 | . * . | 84.4 | . * . | 84.5 | . * . | 84.6 | . * . | 84.7 | . * . | 84.8 | . * . | 84.9 | . * . | 85. | . * . | 85.1 | . * . | 85.2 | . * . | 85.3 | . * . | 85.4 | . * . | 85.5 | . * . | 85.6 | . * . | 85.7 | . * . | 85.8 | . * . | 85.9 | . * . | 86. | . * . | 86.1 | . * . | 86.2 | . * . | 86.3 | . * . | 86.4 | . * . | 86.5 | . * . | 86.6 | . * . | 86.7 | . * . | 86.8 | . * . | 86.9 | . * . | 87. | . * . | 87.1 | . * . | 87.2 | . * . | 87.3 | . * . | 87.4 | . * . | 87.5 | . * . | 87.6 | . * . | 87.7 | . * . | 87.8 | . * . | 87.9 | . * . | 88. | . * . | 88.1 | . * . | 88.2 | . * . | 88.3 | . * . | 88.4 | . * . | 88.5 | . * . | 88.6 | . * . | 88.7 | . * . | 88.8 | . * . | 88.9 | . * . | 89. | . * . | 89.1 | . * . | 89.2 | . * . | 89.3 | . * . | 89.4 | . * . | 89.5 | . * . | 89.6 | . * . | 89.7 | . * . | 89.8 | . * . | 89.9 | . * . | 90. | . * . | 90.1 | . * . | 90.2 | . * . | 90.3 | . * . | 90.4 | . * . | 90.5 | . * . | 90.6 | . * . | 90.7 | . * . | 90.8 | . * . | 90.9 | . * . | 91. | . * . | 91.1 | . * . | 91.2 | . * . | 91.3 | . * . | 91.4 | . * . | 91.5 | . * . | 91.6 | . * . | 91.7 | . * . | 91.8 | . * . | 91.9 | . * . | 92. | . * . | 92.1 | . * . | 92.2 | . * . | 92.3 | . * . | 92.4 | . * . | 92.5 | . * . | 92.6 | . * . | 92.7 | . * . | 92.8 | . * . | 92.9 | . * . | 93. | . * . | 93.1 | . * . | 93.2 | . * . | 93.3 | . * . | 93.4 | . * . | 93.5 | . * . | 93.6 | . * . | 93.7 | . * . | 93.8 | . * . | 93.9 | . * . | 94. | . * . | 94.1 | . * . | 94.2 | . * . | 94.3 | . * . | 94.4 | . * . | 94.5 | . * . | 94.6 | . * . | 94.7 | . * . | 94.8 | . * . | 94.9 | . * . | 95. | . * . | 95.1 | . * . | 95.2 | . * . | 95.3 | . * . | 95.4 | . * . | 95.5 | . * . | 95.6 | . * . | 95.7 | . * . | 95.8 | . * . | 95.9 | . * . | 96. | . * . | 96.1 | . * . | 96.2 | . * . | 96.3 | . * . | 96.4 | . * . | 96.5 | . * . | 96.6 | . * . | 96.7 | . * . | 96.8 | . * . | 96.9 | . * . | 97. | . * . | 97.1 | . * . | 97.2 | . * . | 97.3 | . * . | 97.4 | . * . | 97.5 | . * . | 97.6 | . * . | 97.7 | . * . | 97.8 | . * . | 97.9 | . * . | 98. | . * . | 98.1 | . * . | 98.2 | . * . | 98.3 | . * . | 98.4 | . * . | 98.5 | . * . | 98.6 | . * . | 98.7 | . * . | 98.8 | . * . | 98.9 | . * . | 99. | . * . | 99.1 | . * . | 99.2 | . * . | 99.3 | . * . | 99.4 | . * . | 99.5 | . * . | 99.6 | . * . | 99.7 | . * . | 99.8 | . * . | 99.9 | . * . | 100. | . * . | +-----------------+----------------+-----------------+----------------+ v(1) -5. -2.5 0. 2.5 5. v(2) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.1 | . + . . * 0.2 | . + . . *| 0.3 | . + . . * | 0.4 | . + . . * | 0.5 | + . . * | 0.6 | + . . . * | 0.7 | + . . . * | 0.8 | + . . . * | 0.9 | + . . . * | 1. | + . . .* | 1.1 | + . . * . | 1.2 | + . . * . | 1.3 |+ . . * . | 1.4 |+ . . * . | 1.5 + . . * . | 1.6 + . *. . | 1.7 + . * . . | 1.8 |+ . * . . | 1.9 | + . * . . | 2. | + . * . . | 2.1 | + *. . . | 2.2 | + * . . . | 2.3 | + * . . . | 2.4 | * + . . . | 2.5 | * + . . . | 2.6 | * +. . . | 2.7 | * . + . . | 2.8 | * . + . . | 2.9 |* . + . . | 3. * . + . . | 3.1 * . + . . | 3.2 * . . + . | 3.3 * . . + . | 3.4 |* . . + . | 3.5 | * . . + . | 3.6 | * . . + . | 3.7 | * . . + | 3.8 | * . . . + | 3.9 | * . . . + | 4. | * . . . + | 4.1 | * . . . + | 4.2 | * . . + | 4.3 | . * . . + | 4.4 | . * . . + | 4.5 | . * . . +| 4.6 | . * . . + 4.7 | . *. . + 4.8 | . . * . + 4.9 | . . * . +| 5. | . . * . +| 5.1 | . . * . + | 5.2 | . . * . + | 5.3 | . . .* + | 5.4 | . . . * + | 5.5 | . . . * | 5.6 | . . . + * | 5.7 | . . .+ * | 5.8 | . . + . * | 5.9 | . . + . * | 6. | . . + . *| 6.1 | . . + . *| 6.2 | . . + . * 6.3 | . + . * 6.4 | . + . . * 6.5 | . + . . *| 6.6 | . + . . * | 6.7 | . + . . * | 6.8 | + . . * | 6.9 | + . . . * | 7. | + . . . * | 7.1 | + . . . * | 7.2 | + . . . * | 7.3 | + . . .* | 7.4 | + . . * . | 7.5 | + . . * . | 7.6 |+ . . * . | 7.7 + . . * . | 7.8 + . . * . | 7.9 + . *. . | 8. + . * . . | 8.1 |+ . * . . | 8.2 | + . * . . | 8.3 | + . * . . | 8.4 | + *. . . | 8.5 | + * . . . | 8.6 | + * . . . | 8.7 | * + . . . | 8.8 | * + . . . | 8.9 | * +. . . | 9. | * . + . . | 9.1 | * . + . . | 9.2 |* . + . . | 9.3 * . + . . | 9.4 * . +. . | 9.5 * . . + . | 9.6 * . . + . | 9.7 |* . . + . | 9.8 | * . . + . | 9.9 | * . . + . | 10. | * . . .+ | 10.1 | * . . . + | 10.2 | * . . . + | 10.3 | * . . . + | 10.4 | * . . . + | 10.5 | * . . + | 10.6 | . * . . + | 10.7 | . * . . + | 10.8 | . * . . +| 10.9 | . * . . + 11. | . * . + 11.1 | . . * . + 11.2 | . . * . +| 11.3 | . . * . + | 11.4 | . . * . + | 11.5 | . . *. + | 11.6 | . . . * + | 11.7 | . . . * + | 11.8 | . . . * | 11.9 | . . . + * | 12. | . . .+ * | 12.1 | . . + . * | 12.2 | . . + . * | 12.3 | . . + . *| 12.4 | . . + . *| 12.5 | . . + . * 12.6 | . +. . * 12.7 | . + . . * 12.8 | . + . . *| 12.9 | . + . . * | 13. | . + . . * | 13.1 | + . . * | 13.2 | + . . . * | 13.3 | + . . . * | 13.4 | + . . . * | 13.5 | + . . . * | 13.6 | + . . * | 13.7 | + . . * . | 13.8 | + . . * . | 13.9 |+ . . * . | 14. + . . * . | 14.1 + . . * . | 14.2 + . * . . | 14.3 + . * . . | 14.4 |+ . * . . | 14.5 | + . * . . | 14.6 | + . * . . | 14.7 | + *. . . | 14.8 | + * . . . | 14.9 | + * . . . | 15. | * + . . . | 15.1 | * + . . . | 15.2 | * + . . | 15.3 | * . + . . | 15.4 | * . + . . | 15.5 |* . + . . | 15.6 * . + . . | 15.7 * . +. . | 15.8 * . . + . | 15.9 |* . . + . | 16. |* . . + . | 16.1 | * . . + . | 16.2 | * . . + . | 16.3 | * . . .+ | 16.4 | * . . . + | 16.5 | * . . . + | 16.6 | * . . . + | 16.7 | * . . . + | 16.8 | * . . + | 16.9 | . * . . + | 17. | . * . . +| 17.1 | . * . . +| 17.2 | . * . . + 17.3 | . * . + 17.4 | . . * . + 17.5 | . . * . +| 17.6 | . . * . + | 17.7 | . . * . + | 17.8 | . . *. + | 17.9 | . . . * + | 18. | . . . * + | 18.1 | . . . +* | 18.2 | . . . + * | 18.3 | . . .+ * | 18.4 | . . + . * | 18.5 | . . + . * | 18.6 | . . + . *| 18.7 | . . + . * 18.8 | . . + . * 18.9 | . +. . * 19. | . + . . * 19.1 | . + . . *| 19.2 | . + . . * | 19.3 | . + . . * | 19.4 | +. . . * | 19.5 | + . . . * | 19.6 | + . . . * | 19.7 | + . . . * | 19.8 | + . . . * | 19.9 | + . . * | 20. | + . . * . | 20.1 | + . . * . | 20.2 |+ . . * . | 20.3 + . . * . | 20.4 + . .* . | 20.5 + . * . . | 20.6 + . * . . | 20.7 |+ . * . . | 20.8 | + . * . . | 20.9 | + .* . . | 21. | + * . . . | 21.1 | + * . . . | 21.2 | +* . . . | 21.3 | * + . . . | 21.4 | * + . . . | 21.5 | * + . . | 21.6 | * . + . . | 21.7 | * . + . . | 21.8 |* . + . . | 21.9 * . + . . | 22. * . + . | 22.1 * . . + . | 22.2 |* . . + . | 22.3 |* . . + . | 22.4 | * . . + . | 22.5 | * . . + . | 22.6 | * . . .+ | 22.7 | * . . . + | 22.8 | * . . . + | 22.9 | * . . . + | 23. | * . . . + | 23.1 | .* . . + | 23.2 | . * . . + | 23.3 | . * . . +| 23.4 | . * . . +| 23.5 | . * . . + 23.6 | . .* . + 23.7 | . . * . + 23.8 | . . * . +| 23.9 | . . * . + | 24. | . . * . + | 24.1 | . . *. + | 24.2 | . . . * + | 24.3 | . . . * + | 24.4 | . . . + * | 24.5 | . . . + * | 24.6 | . . + * | 24.7 | . . + . * | 24.8 | . . + . * | 24.9 | . . + . *| 25. | . . + . * 25.1 | . . + . * 25.2 | . + . . * 25.3 | . + . . * 25.4 | . + . . *| 25.5 | . + . . * | 25.6 | . + . . * | 25.7 | +. . . * | 25.8 | + . . . * | 25.9 | + . . . * | 26. | + . . . * | 26.1 | + . . . * | 26.2 | + . . * | 26.3 | + . . * . | 26.4 | + . . * . | 26.5 |+ . . * . | 26.6 + . . * . | 26.7 + . .* . | 26.8 + . * . . | 26.9 |+ . * . . | 27. |+ . * . . | 27.1 | + . * . . | 27.2 | + .* . . | 27.3 | + * . . . | 27.4 | + * . . . | 27.5 | +* . . . | 27.6 | * + . . . | 27.7 | * + . . . | 27.8 | * + . . | 27.9 | * . + . . | 28. | * . + . . | 28.1 |* . + . . | 28.2 * . + . . | 28.3 * . + . | 28.4 * . . + . | 28.5 |* . . + . | 28.6 | * . . + . | 28.7 | * . . + . | 28.8 | * . . +. | 28.9 | * . . . + | 29. | * . . . + | 29.1 | * . . . + | 29.2 | * . . . + | 29.3 | * . . . + | 29.4 | .* . . + | 29.5 | . * . . + | 29.6 | . * . . +| 29.7 | . * . . +| 29.8 | . * . . + 29.9 | . .* . + 30. | . . * . + 30.1 | . . * . +| 30.2 | . . * . + | 30.3 | . . * . + | 30.4 | . . * + | 30.5 | . . . * + | 30.6 | . . . * + | 30.7 | . . . + * | 30.8 | . . . + * | 30.9 | . . + * | 31. | . . + . * | 31.1 | . . + . * | 31.2 | . . + . *| 31.3 | . . + . * 31.4 | . .+ . * 31.5 | . + . . * 31.6 | . + . . * 31.7 | . + . . *| 31.8 | . + . . * | 31.9 | . + . . * | 32. | + . . . * | 32.1 | + . . . * | 32.2 | + . . . * | 32.3 | + . . . * | 32.4 | + . . . * | 32.5 | + . . *. | 32.6 | + . . * . | 32.7 | + . . * . | 32.8 |+ . . * . | 32.9 + . . * . | 33. + . * . | 33.1 + . * . . | 33.2 |+ . * . . | 33.3 |+ . * . . | 33.4 | + . * . . | 33.5 | + .* . . | 33.6 | + * . . . | 33.7 | + * . . . | 33.8 | * . . . | 33.9 | * + . . . | 34. | * + . . . | 34.1 | * .+ . . | 34.2 | * . + . . | 34.3 |* . + . . | 34.4 |* . + . . | 34.5 * . + . . | 34.6 * . + . | 34.7 * . . + . | 34.8 |* . . + . | 34.9 | * . . + . | 35. | * . . + . | 35.1 | * . . +. | 35.2 | * . . . + | 35.3 | * . . . + | 35.4 | * . . . + | 35.5 | * . . . + | 35.6 | * . . . + | 35.7 | . * . . + | 35.8 | . * . . + | 35.9 | . * . . +| 36. | . * . . + 36.1 | . * . . + 36.2 | . .* . + 36.3 | . . * . + 36.4 | . . * . +| 36.5 | . . * . + | 36.6 | . . * . + | 36.7 | . . * + | 36.8 | . . . * + | 36.9 | . . . * + | 37. | . . . + * | 37.1 | . . . + * | 37.2 | . . + * | 37.3 | . . + . * | 37.4 | . . + . * | 37.5 | . . + . *| 37.6 | . . + . * 37.7 | . .+ . * 37.8 | . + . . * 37.9 | . + . . *| 38. | . + . . *| 38.1 | . + . . * | 38.2 | .+ . . * | 38.3 | + . . . * | 38.4 | + . . . * | 38.5 | + . . . * | 38.6 | + . . . * | 38.7 | + . . . * | 38.8 | + . . *. | 38.9 | + . . * . | 39. | + . . * . | 39.1 |+ . . * . | 39.2 + . . * . | 39.3 + . * . | 39.4 + . * . . | 39.5 |+ . * . . | 39.6 | + . * . . | 39.7 | + . * . . | 39.8 | + * . . | 39.9 | + * . . . | 40. | + * . . . | 40.1 | *+ . . . | 40.2 | * + . . . | 40.3 | * + . . . | 40.4 | * .+ . . | 40.5 | * . + . . | 40.6 |* . + . . | 40.7 |* . + . . | 40.8 * . + . . | 40.9 * . .+ . | 41. * . . + . | 41.1 |* . . + . | 41.2 | * . . + . | 41.3 | * . . + . | 41.4 | * . . + | 41.5 | * . . . + | 41.6 | * . . . + | 41.7 | * . . . + | 41.8 | * . . . + | 41.9 | *. . . + | 42. | . * . . + | 42.1 | . * . . + | 42.2 | . * . . +| 42.3 | . * . . + 42.4 | . * . . + 42.5 | . . * . + 42.6 | . . * . + 42.7 | . . * . +| 42.8 | . . * . + | 42.9 | . . * . + | 43. | . . * + | 43.1 | . . . * + | 43.2 | . . . * + | 43.3 | . . . + * | 43.4 | . . . + * | 43.5 | . . +. * | 43.6 | . . + . * | 43.7 | . . + . * | 43.8 | . . + . *| 43.9 | . . + . * 44. | . .+ . * 44.1 | . + . . * 44.2 | . + . . *| 44.3 | . + . . *| 44.4 | . + . . * | 44.5 | .+ . . * | 44.6 | + . . . * | 44.7 | + . . . * | 44.8 | + . . . * | 44.9 | + . . . * | 45. | + . . .* | 45.1 | + . . * . | 45.2 | + . . * . | 45.3 |+ . . * . | 45.4 |+ . . * . | 45.5 + . . * . | 45.6 + . * . | 45.7 + . * . . | 45.8 |+ . * . . | 45.9 | + . * . . | 46. | + . * . . | 46.1 | + * . . | 46.2 | + * . . . | 46.3 | + * . . . | 46.4 | *+ . . . | 46.5 | * + . . . | 46.6 | * + . . . | 46.7 | * .+ . . | 46.8 | * . + . . | 46.9 |* . + . . | 47. * . + . . | 47.1 * . + . . | 47.2 * . .+ . | 47.3 * . . + . | 47.4 |* . . + . | 47.5 | * . . + . | 47.6 | * . . + . | 47.7 | * . . + | 47.8 | * . . . + | 47.9 | * . . . + | 48. | * . . . + | 48.1 | * . . . + | 48.2 | *. . . + | 48.3 | . * . . + | 48.4 | . * . . + | 48.5 | . * . . +| 48.6 | . * . . + 48.7 | . *. . + 48.8 | . . * . + 48.9 | . . * . + 49. | . . * . +| 49.1 | . . * . + | 49.2 | . . * . + | 49.3 | . . .* + | 49.4 | . . . * + | 49.5 | . . . *+ | 49.6 | . . . + * | 49.7 | . . . + * | 49.8 | . . +. * | 49.9 | . . + . * | 50. | . . + . * | 50.1 | . . + . *| 50.2 | . . + . * 50.3 | . + . * 50.4 | . + . . * 50.5 | . + . . *| 50.6 | . + . . *| 50.7 | . + . . * | 50.8 | + . . * | 50.9 | + . . . * | 51. | + . . . * | 51.1 | + . . . * | 51.2 | + . . . * | 51.3 | + . . .* | 51.4 | + . . * . | 51.5 | + . . * . | 51.6 |+ . . * . | 51.7 |+ . . * . | 51.8 + . . * . | 51.9 + . *. . | 52. + . * . . | 52.1 |+ . * . . | 52.2 | + . * . . | 52.3 | + . * . . | 52.4 | + * . . | 52.5 | + * . . . | 52.6 | + * . . . | 52.7 | * + . . . | 52.8 | * + . . . | 52.9 | * +. . . | 53. | * . + . . | 53.1 | * . + . . | 53.2 |* . + . . | 53.3 * . + . . | 53.4 * . + . . | 53.5 * . . + . | 53.6 * . . + . | 53.7 |* . . + . | 53.8 | * . . + . | 53.9 | * . . + . | 54. | * . . + | 54.1 | * . . . + | 54.2 | * . . . + | 54.3 | * . . . + | 54.4 | * . . . + | 54.5 | * . . + | 54.6 | . * . . + | 54.7 | . * . . + | 54.8 | . * . . +| 54.9 | . * . . + 55. | . *. . + 55.1 | . . * . + 55.2 | . . * . +| 55.3 | . . * . +| 55.4 | . . * . + | 55.5 | . . * . + | 55.6 | . . .* + | 55.7 | . . . * + | 55.8 | . . . * | 55.9 | . . . + * | 56. | . . . + * | 56.1 | . . +. * | 56.2 | . . + . * | 56.3 | . . + . * | 56.4 | . . + . *| 56.5 | . . + . * 56.6 | . + . * 56.7 | . + . . * 56.8 | . + . . *| 56.9 | . + . . * | 57. | . + . . * | 57.1 | + . . * | 57.2 | + . . . * | 57.3 | + . . . * | 57.4 | + . . . * | 57.5 | + . . . * | 57.6 | + . . .* | 57.7 | + . . * . | 57.8 | + . . * . | 57.9 |+ . . * . | 58. + . . * . | 58.1 + . . * . | 58.2 + . *. . | 58.3 + . * . . | 58.4 |+ . * . . | 58.5 | + . * . . | 58.6 | + . * . . | 58.7 | + *. . . | 58.8 | + * . . . | 58.9 | + * . . . | 59. | * + . . . | 59.1 | * + . . . | 59.2 | * +. . . | 59.3 | * . + . . | 59.4 | * . + . . | 59.5 |* . + . . | 59.6 * . + . . | 59.7 * . +. . | 59.8 * . . + . | 59.9 * . . + . | 60. |* . . + . | 60.1 | * . . + . | 60.2 | * . . + . | 60.3 | * . . .+ | 60.4 | * . . . + | 60.5 | * . . . + | 60.6 | * . . . + | 60.7 | * . . . + | 60.8 | * . . + | 60.9 | . * . . + | 61. | . * . . + | 61.1 | . * . . +| 61.2 | . * . . + 61.3 | . * . + 61.4 | . . * . + 61.5 | . . * . +| 61.6 | . . * . +| 61.7 | . . * . + | 61.8 | . . * . + | 61.9 | . . .* + | 62. | . . . * + | 62.1 | . . . * | 62.2 | . . . + * | 62.3 | . . .+ * | 62.4 | . . + . * | 62.5 | . . + . * | 62.6 | . . + . *| 62.7 | . . + . *| 62.8 | . . + . * 62.9 | . +. . * 63. | . + . . * 63.1 | . + . . *| 63.2 | . + . . * | 63.3 | . + . . * | 63.4 | + . . * | 63.5 | + . . . * | 63.6 | + . . . * | 63.7 | + . . . * | 63.8 | + . . . * | 63.9 | + . . * | 64. | + . . * . | 64.1 | + . . * . | 64.2 |+ . . * . | 64.3 + . . * . | 64.4 + . . * . | 64.5 + . * . . | 64.6 + . * . . | 64.7 |+ . * . . | 64.8 | + . * . . | 64.9 | + . * . . | 65. | + *. . . | 65.1 | + * . . . | 65.2 | + * . . . | 65.3 | * + . . . | 65.4 | * + . . . | 65.5 | * +. . . | 65.6 | * . + . . | 65.7 | * . + . . | 65.8 |* . + . . | 65.9 * . + . . | 66. * . +. . | 66.1 * . . + . | 66.2 |* . . + . | 66.3 |* . . + . | 66.4 | * . . + . | 66.5 | * . . + . | 66.6 | * . . .+ | 66.7 | * . . . + | 66.8 | * . . . + | 66.9 | * . . . + | 67. | * . . . + | 67.1 | * . . + | 67.2 | . * . . + | 67.3 | . * . . + | 67.4 | . * . . +| 67.5 | . * . . + 67.6 | . * . + 67.7 | . . * . + 67.8 | . . * . +| 67.9 | . . * . + | 68. | . . * . + | 68.1 | . . *. + | 68.2 | . . . * + | 68.3 | . . . * + | 68.4 | . . . +* | 68.5 | . . . + * | 68.6 | . . .+ * | 68.7 | . . + . * | 68.8 | . . + . * | 68.9 | . . + . *| 69. | . . + . *| 69.1 | . . + . * 69.2 | . +. . * 69.3 | . + . . * 69.4 | . + . . *| 69.5 | . + . . * | 69.6 | . + . . * | 69.7 | +. . . * | 69.8 | + . . . * | 69.9 | + . . . * | 70. | + . . . * | 70.1 | + . . . * | 70.2 | + . . * | 70.3 | + . . * . | 70.4 | + . . * . | 70.5 |+ . . * . | 70.6 + . . * . | 70.7 + . . * . | 70.8 + . * . . | 70.9 + . * . . | 71. |+ . * . . | 71.1 | + . * . . | 71.2 | + . * . . | 71.3 | + *. . . | 71.4 | + * . . . | 71.5 | +* . . . | 71.6 | * + . . . | 71.7 | * + . . . | 71.8 | * + . . | 71.9 | * . + . . | 72. | * . + . . | 72.1 |* . + . . | 72.2 * . + . . | 72.3 * . +. . | 72.4 * . . + . | 72.5 |* . . + . | 72.6 |* . . + . | 72.7 | * . . + . | 72.8 | * . . + . | 72.9 | * . . .+ | 73. | * . . . + | 73.1 | * . . . + | 73.2 | * . . . + | 73.3 | * . . . + | 73.4 | .* . . + | 73.5 | . * . . + | 73.6 | . * . . +| 73.7 | . * . . +| 73.8 | . * . . + 73.9 | . * . + 74. | . . * . + 74.1 | . . * . +| 74.2 | . . * . + | 74.3 | . . * . + | 74.4 | . . *. + | 74.5 | . . . * + | 74.6 | . . . * + | 74.7 | . . . +* | 74.8 | . . . + * | 74.9 | . . .+ * | 75. | . . + . * | 75.1 | . . + . * | 75.2 | . . + . *| 75.3 | . . + . * 75.4 | . . + . * 75.5 | . +. . * 75.6 | . + . . * 75.7 | . + . . *| 75.8 | . + . . * | 75.9 | . + . . * | 76. | +. . . * | 76.1 | + . . . * | 76.2 | + . . . * | 76.3 | + . . . * | 76.4 | + . . . * | 76.5 | + . . * | 76.6 | + . . * . | 76.7 | + . . * . | 76.8 |+ . . * . | 76.9 + . . * . | 77. + . .* . | 77.1 + . * . . | 77.2 + . * . . | 77.3 |+ . * . . | 77.4 | + . * . . | 77.5 | + .* . . | 77.6 | + * . . . | 77.7 | + * . . . | 77.8 | +* . . . | 77.9 | * + . . . | 78. | * + . . . | 78.1 | * + . . | 78.2 | * . + . . | 78.3 | * . + . . | 78.4 |* . + . . | 78.5 * . + . . | 78.6 * . + . | 78.7 * . . + . | 78.8 |* . . + . | 78.9 | * . . + . | 79. | * . . + . | 79.1 | * . . +. | 79.2 | * . . . + | 79.3 | * . . . + | 79.4 | * . . . + | 79.5 | * . . . + | 79.6 | * . . . + | 79.7 | .* . . + | 79.8 | . * . . + | 79.9 | . * . . +| 80. | . * . . +| 80.1 | . * . . + 80.2 | . .* . + 80.3 | . . * . + 80.4 | . . * . +| 80.5 | . . * . + | 80.6 | . . * . + | 80.7 | . . *. + | 80.8 | . . . * + | 80.9 | . . . * + | 81. | . . . + * | 81.1 | . . . + * | 81.2 | . . + * | 81.3 | . . + . * | 81.4 | . . + . * | 81.5 | . . + . *| 81.6 | . . + . * 81.7 | . . + . * 81.8 | . + . . * 81.9 | . + . . * 82. | . + . . *| 82.1 | . + . . * | 82.2 | . + . . * | 82.3 | +. . . * | 82.4 | + . . . * | 82.5 | + . . . * | 82.6 | + . . . * | 82.7 | + . . . * | 82.8 | + . . *. | 82.9 | + . . * . | 83. | + . . * . | 83.1 |+ . . * . | 83.2 + . . * . | 83.3 + . .* . | 83.4 + . * . . | 83.5 |+ . * . . | 83.6 |+ . * . . | 83.7 | + . * . . | 83.8 | + .* . . | 83.9 | + * . . . | 84. | + * . . . | 84.1 | * . . . | 84.2 | * + . . . | 84.3 | * + . . . | 84.4 | * + . . | 84.5 | * . + . . | 84.6 |* . + . . | 84.7 |* . + . . | 84.8 * . + . . | 84.9 * . + . | 85. * . . + . | 85.1 |* . . + . | 85.2 | * . . + . | 85.3 | * . . + . | 85.4 | * . . +. | 85.5 | * . . . + | 85.6 | * . . . + | 85.7 | * . . . + | 85.8 | * . . . + | 85.9 | * . . . + | 86. | .* . . + | 86.1 | . * . . + | 86.2 | . * . . +| 86.3 | . * . . + 86.4 | . * . . + 86.5 | . .* . + 86.6 | . . * . + 86.7 | . . * . +| 86.8 | . . * . + | 86.9 | . . * . + | 87. | . . * + | 87.1 | . . . * + | 87.2 | . . . * + | 87.3 | . . . + * | 87.4 | . . . + * | 87.5 | . . + * | 87.6 | . . + . * | 87.7 | . . + . * | 87.8 | . . + . *| 87.9 | . . + . * 88. | . .+ . * 88.1 | . + . . * 88.2 | . + . . * 88.3 | . + . . *| 88.4 | . + . . * | 88.5 | .+ . . * | 88.6 | + . . . * | 88.7 | + . . . * | 88.8 | + . . . * | 88.9 | + . . . * | 89. | + . . . * | 89.1 | + . . *. | 89.2 | + . . * . | 89.3 | + . . * . | 89.4 |+ . . * . | 89.5 + . . * . | 89.6 + . * . | 89.7 + . * . . | 89.8 |+ . * . . | 89.9 |+ . * . . | 90. | + . * . . | 90.1 | + .* . . | 90.2 | + * . . . | 90.3 | + * . . . | 90.4 | * . . . | 90.5 | * + . . . | 90.6 | * + . . . | 90.7 | * .+ . . | 90.8 | * . + . . | 90.9 |* . + . . | 91. |* . + . . | 91.1 * . + . . | 91.2 * . .+ . | 91.3 * . . + . | 91.4 |* . . + . | 91.5 | * . . + . | 91.6 | * . . + . | 91.7 | * . . +. | 91.8 | * . . . + | 91.9 | * . . . + | 92. | * . . . + | 92.1 | * . . . + | 92.2 | *. . . + | 92.3 | . * . . + | 92.4 | . * . . + | 92.5 | . * . . +| 92.6 | . * . . + 92.7 | . * . . + 92.8 | . . * . + 92.9 | . . * . + 93. | . . * . +| 93.1 | . . * . + | 93.2 | . . * . + | 93.3 | . . * + | 93.4 | . . . * + | 93.5 | . . . * + | 93.6 | . . . + * | 93.7 | . . . + * | 93.8 | . . + * | 93.9 | . . + . * | 94. | . . + . * | 94.1 | . . + . *| 94.2 | . . + . * 94.3 | . .+ . * 94.4 | . + . . * 94.5 | . + . . *| 94.6 | . + . . *| 94.7 | . + . . * | 94.8 | .+ . . * | 94.9 | + . . . * | 95. | + . . . * | 95.1 | + . . . * | 95.2 | + . . . * | 95.3 | + . . . * | 95.4 | + . . *. | 95.5 | + . . * . | 95.6 | + . . * . | 95.7 |+ . . * . | 95.8 + . . * . | 95.9 + . * . | 96. + . * . . | 96.1 |+ . * . . | 96.2 | + . * . . | 96.3 | + . * . . | 96.4 | + * . . | 96.5 | + * . . . | 96.6 | + * . . . | 96.7 | *+ . . . | 96.8 | * + . . . | 96.9 | * + . . . | 97. | * .+ . . | 97.1 | * . + . . | 97.2 |* . + . . | 97.3 |* . + . . | 97.4 * . + . . | 97.5 * . .+ . | 97.6 * . . + . | 97.7 |* . . + . | 97.8 | * . . + . | 97.9 | * . . + . | 98. | * . . + | 98.1 | * . . . + | 98.2 | * . . . + | 98.3 | * . . . + | 98.4 | * . . . + | 98.5 | *. . . + | 98.6 | . * . . + | 98.7 | . * . . + | 98.8 | . * . . +| 98.9 | . * . . + 99. | . *. . + 99.1 | . . * . + 99.2 | . . * . + 99.3 | . . * . +| 99.4 | . . * . + | 99.5 | . . * . + | 99.6 | . . .* + | 99.7 | . . . * + | 99.8 | . . . *+ | 99.9 | . . . + * | 100. | . . . + * | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=4028, fourier=0, total=23073 transient timesteps: accepted=5016, rejected=14, total=5030 nodes: user=2, subckt=0, model=0, total=2 dctran density=50.0%, ac density=50.0% tests/==out/oscillator.3.ckt.out000066400000000000000000000402631316501211100170420ustar00rootroot00000000000000*oscillator, .159 Hz. v(1) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.5 | . . * . | 1. | . . . * | 1.5 | . . . * 2. | . . . * | 2.5 | . . . * | 3. | . . * . | 3.5 | . * . . | 4. | * . . . | 4.5 |* . . . | 5. |* . . . | 5.5 | * . . . | 6. | . * . . | 6.5 | . . * . | 7. | . . . * | 7.5 | . . . * | 8. | . . . * 8.5 | . . . * | 9. | . . *. | 9.5 | . .* . | 10. | .* . . | 10.5 | * . . . | 11. * . . . | 11.5 | * . . . | 12. | * . . . | 12.5 | . * . . | 13. | . . * . | 13.5 | . . . * | 14. | . . . *| 14.5 | . . . *| 15. | . . . * | 15.5 | . . * . | 16. | . * . . | 16.5 | * . . . | 17. | * . . . | 17.5 * . . . | 18. | * . . . | 18.5 | * . . | 19. | . * . | 19.5 | . . *. | 20. | . . . * | 20.5 | . . . * 21. | . . . * | 21.5 | . . . * | 22. | . . * . | 22.5 | . * . . | 23. | * . . . | 23.5 |* . . . | 24. |* . . . | 24.5 | * . . . | 25. | . * . . | 25.5 | . . * . | 26. | . . . * | 26.5 | . . . * | 27. | . . . * 27.5 | . . . * | 28. | . . * . | 28.5 | . *. . | 29. | *. . . | 29.5 | * . . . | 30. * . . . | 30.5 | * . . . | 31. | * . . . | 31.5 | . * . . | 32. | . . * . | 32.5 | . . . * | 33. | . . . *| 33.5 | . . . * | 34. | . . . * | 34.5 | . . * . | 35. | . * . . | 35.5 | * . . . | 36. | * . . . | 36.5 * . . . | 37. | * . . . | 37.5 | . * . . | 38. | . . * . | 38.5 | . . * | 39. | . . . * | 39.5 | . . . * 40. | . . . * | 40.5 | . . . * | 41. | . . * . | 41.5 | . * . . | 42. | * . . . | 42.5 |* . . . | 43. | * . . . | 43.5 | * . . . | 44. | . * . . | 44.5 | . . * . | 45. | . . . * | 45.5 | . . . * | 46. | . . . * 46.5 | . . . * | 47. | . . * . | 47.5 | . * . . | 48. | * . . . | 48.5 | * . . . | 49. * . . . | 49.5 | * . . . | 50. | * . . . | 50.5 | . * . . | 51. | . . * . | 51.5 | . . . * | 52. | . . . * 52.5 | . . . * | 53. | . . . * | 53.5 | . . * . | 54. | . * . . | 54.5 | * . . . | 55. | * . . . | 55.5 |* . . . | 56. | * . . . | 56.5 | . * . . | 57. | . . * . | 57.5 | . . . * | 58. | . . . * | 58.5 | . . . * 59. | . . . * | 59.5 | . . * | 60. | . . * . | 60.5 | . * . . | 61. | * . . . | 61.5 * . . . | 62. | * . . . | 62.5 | * . . . | 63. | . * . . | 63.5 | . . * . | 64. | . . . * | 64.5 | . . . *| 65. | . . . *| 65.5 | . . . * | 66. | . . * . | 66.5 | . * . . | 67. | * . . . | 67.5 | * . . . | 68. * . . . | 68.5 | * . . . | 69. | * . . | 69.5 | . *. . | 70. | . . * . | 70.5 | . . . * | 71. | . . . * 71.5 | . . . * | 72. | . . . * | 72.5 | . . * . | 73. | . * . . | 73.5 | * . . . | 74. |* . . . | 74.5 |* . . . | 75. | * . . . | 75.5 | . * . . | 76. | . . * . | 76.5 | . . . * | 77. | . . . * | 77.5 | . . . * 78. | . . . * | 78.5 | . . *. | 79. | . * . | 79.5 | * . . | 80. | * . . . | 80.5 * . . . | 81. | * . . . | 81.5 | * . . . | 82. | . * . . | 82.5 | . . * . | 83. | . . . * | 83.5 | . . . *| 84. | . . . *| 84.5 | . . . * | 85. | . . * . | 85.5 | . * . . | 86. | * . . . | 86.5 | * . . . | 87. * . . . | 87.5 | * . . . | 88. | .* . . | 88.5 | . .* . | 89. | . . * | 89.5 | . . . * | 90. | . . . * 90.5 | . . . * | 91. | . . . * | 91.5 | . . * . | 92. | . * . . | 92.5 | * . . . | 93. |* . . . | 93.5 | * . . . | 94. | * . . . | 94.5 | . * . . | 95. | . . * . | 95.5 | . . . * | 96. | . . . * | 96.5 | . . . * 97. | . . . * | 97.5 | . . * . | 98. | . * . . | 98.5 | *. . . | 99. | * . . . | 99.5 * . . . | 100. | * . . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=1233, fourier=0, total=1644 transient timesteps: accepted=409, rejected=2, total=411 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/oscillator.4.ckt.out000066400000000000000000000402631316501211100170430ustar00rootroot00000000000000*oscillator, .159 Hz. v(1) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.5 | . . * . | 1. | . . . * | 1.5 | . . . * 2. | . . . * | 2.5 | . . . * | 3. | . . * . | 3.5 | . * . . | 4. | * . . . | 4.5 |* . . . | 5. |* . . . | 5.5 | * . . . | 6. | . * . . | 6.5 | . . * . | 7. | . . . * | 7.5 | . . . * | 8. | . . . * 8.5 | . . . * | 9. | . . * . | 9.5 | . * . | 10. | * . . | 10.5 | * . . . | 11. * . . . | 11.5 | * . . . | 12. | * . . . | 12.5 | . * . . | 13. | . . * . | 13.5 | . . . * | 14. | . . . *| 14.5 | . . . *| 15. | . . . * | 15.5 | . . * . | 16. | . * . . | 16.5 | * . . . | 17. | * . . . | 17.5 * . . . | 18. | * . . . | 18.5 | . * . . | 19. | . . * . | 19.5 | . . .* | 20. | . . . * | 20.5 | . . . * 21. | . . . * | 21.5 | . . .* | 22. | . . * . | 22.5 | . * . . | 23. | * . . . | 23.5 * . . . | 24. | * . . . | 24.5 | * . . . | 25. | . * . . | 25.5 | . . * . | 26. | . . . * | 26.5 | . . . * | 27. | . . . *| 27.5 | . . . * | 28. | . . * . | 28.5 | . * . . | 29. | * . . . | 29.5 | * . . . | 30. * . . . | 30.5 | * . . . | 31. | * . . | 31.5 | . *. . | 32. | . . * . | 32.5 | . . . * | 33. | . . . * 33.5 | . . . * | 34. | . . . * | 34.5 | . . * . | 35. | . * . . | 35.5 | * . . . | 36. |* . . . | 36.5 |* . . . | 37. | * . . . | 37.5 | . * . . | 38. | . . * . | 38.5 | . . . * | 39. | . . . * | 39.5 | . . . * 40. | . . . * | 40.5 | . . * . | 41. | . * . . | 41.5 | *. . . | 42. | * . . . | 42.5 * . . . | 43. | * . . . | 43.5 | * . . . | 44. | . * . . | 44.5 | . . * . | 45. | . . . * | 45.5 | . . . *| 46. | . . . * | 46.5 | . . . * | 47. | . . * . | 47.5 | . * . . | 48. | * . . . | 48.5 | * . . . | 49. |* . . . | 49.5 | * . . . | 50. | . * . . | 50.5 | . . * . | 51. | . . . * | 51.5 | . . . * | 52. | . . . * 52.5 | . . . * | 53. | . . * | 53.5 | . .* . | 54. | . * . . | 54.5 | * . . . | 55. * . . . | 55.5 | * . . . | 56. | * . . . | 56.5 | . * . . | 57. | . . * . | 57.5 | . . . * | 58. | . . . *| 58.5 | . . . *| 59. | . . . * | 59.5 | . . * . | 60. | . * . . | 60.5 | * . . . | 61. | * . . . | 61.5 * . . . | 62. | * . . . | 62.5 | .* . . | 63. | . .* . | 63.5 | . . *. | 64. | . . . * | 64.5 | . . . * 65. | . . . * | 65.5 | . . . * | 66. | . . * . | 66.5 | . * . . | 67. | * . . . | 67.5 |* . . . | 68. | * . . . | 68.5 | * . . . | 69. | . * . . | 69.5 | . . * . | 70. | . . . * | 70.5 | . . . * | 71. | . . . * 71.5 | . . . * | 72. | . . * . | 72.5 | . * . . | 73. | * . . . | 73.5 | * . . . | 74. * . . . | 74.5 | * . . . | 75. | * . . . | 75.5 | . * . . | 76. | . . * . | 76.5 | . . . * | 77. | . . . * 77.5 | . . . * | 78. | . . . * | 78.5 | . . * . | 79. | . * . . | 79.5 | * . . . | 80. |* . . . | 80.5 |* . . . | 81. | * . . . | 81.5 | . * . . | 82. | . . * . | 82.5 | . . . * | 83. | . . . * | 83.5 | . . . * 84. | . . . * | 84.5 | . . *. | 85. | . * . | 85.5 | * . . | 86. | * . . . | 86.5 * . . . | 87. | * . . . | 87.5 | * . . . | 88. | . * . . | 88.5 | . . * . | 89. | . . . * | 89.5 | . . . *| 90. | . . . *| 90.5 | . . . * | 91. | . . * . | 91.5 | . * . . | 92. | * . . . | 92.5 | * . . . | 93. * . . . | 93.5 | * . . . | 94. | . * . . | 94.5 | . . * . | 95. | . . * | 95.5 | . . . * | 96. | . . . * 96.5 | . . . * | 97. | . . .* | 97.5 | . . * . | 98. | . * . . | 98.5 | * . . . | 99. * . . . | 99.5 | * . . . | 100. | * . . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=2469, fourier=0, total=3292 transient timesteps: accepted=820, rejected=3, total=823 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/oscillator.5.ckt.out000066400000000000000000000402651316501211100170460ustar00rootroot00000000000000*oscillator, .159 Hz. v(1) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.5 | . . * . | 1. | . . . * | 1.5 | . . . * 2. | . . . * | 2.5 | . . . * | 3. | . . * . | 3.5 | . * . . | 4. | * . . . | 4.5 |* . . . | 5. |* . . . | 5.5 | * . . . | 6. | . * . . | 6.5 | . . * . | 7. | . . . * | 7.5 | . . . * | 8. | . . . * 8.5 | . . . * | 9. | . . * . | 9.5 | . *. . | 10. | * . . | 10.5 | * . . . | 11. * . . . | 11.5 | * . . . | 12. | * . . . | 12.5 | . * . . | 13. | . . * . | 13.5 | . . . * | 14. | . . . *| 14.5 | . . . * | 15. | . . . * | 15.5 | . . * . | 16. | . * . . | 16.5 | * . . . | 17. | * . . . | 17.5 * . . . | 18. | * . . . | 18.5 | . * . . | 19. | . . * . | 19.5 | . . . * | 20. | . . . * | 20.5 | . . . * 21. | . . . * | 21.5 | . . * | 22. | . . * . | 22.5 | . * . . | 23. | * . . . | 23.5 * . . . | 24. | * . . . | 24.5 | * . . . | 25. | . * . . | 25.5 | . . * . | 26. | . . . * | 26.5 | . . . *| 27. | . . . *| 27.5 | . . . * | 28. | . . * . | 28.5 | . * . . | 29. | * . . . | 29.5 | * . . . | 30. * . . . | 30.5 | * . . . | 31. | .* . . | 31.5 | . .* . | 32. | . . *. | 32.5 | . . . * | 33. | . . . * 33.5 | . . . * | 34. | . . . * | 34.5 | . . * . | 35. | . * . . | 35.5 | * . . . | 36. |* . . . | 36.5 | * . . . | 37. | * . . . | 37.5 | . * . . | 38. | . . * . | 38.5 | . . . * | 39. | . . . * | 39.5 | . . . *| 40. | . . . * | 40.5 | . . * . | 41. | . * . . | 41.5 | * . . . | 42. | * . . . | 42.5 * . . . | 43. | * . . . | 43.5 | *. . . | 44. | . * . . | 44.5 | . . * . | 45. | . . . * | 45.5 | . . . * 46. | . . . * | 46.5 | . . . * | 47. | . . * . | 47.5 | . * . . | 48. | * . . . | 48.5 |* . . . | 49. |* . . . | 49.5 | * . . . | 50. | . * . . | 50.5 | . . * . | 51. | . . . * | 51.5 | . . . * | 52. | . . . * 52.5 | . . . * | 53. | . . * . | 53.5 | . *. . | 54. | *. . . | 54.5 | * . . . | 55. * . . . | 55.5 | * . . . | 56. | * . . . | 56.5 | . * . . | 57. | . . * . | 57.5 | . . . * | 58. | . . . *| 58.5 | . . . * | 59. | . . . * | 59.5 | . . * . | 60. | . * . . | 60.5 | * . . . | 61. | * . . . | 61.5 |* . . . | 62. | * . . . | 62.5 | . * . . | 63. | . . * . | 63.5 | . . . * | 64. | . . . * | 64.5 | . . . * 65. | . . . * | 65.5 | . . * | 66. | . . * . | 66.5 | . * . . | 67. | * . . . | 67.5 * . . . | 68. | * . . . | 68.5 | * . . . | 69. | . * . . | 69.5 | . . * . | 70. | . . . * | 70.5 | . . . *| 71. | . . . *| 71.5 | . . . * | 72. | . . * . | 72.5 | . * . . | 73. | * . . . | 73.5 | * . . . | 74. * . . . | 74.5 | * . . . | 75. | .* . . | 75.5 | . .* . | 76. | . . * | 76.5 | . . . * | 77. | . . . * 77.5 | . . . * | 78. | . . . * | 78.5 | . . * . | 79. | . * . . | 79.5 | * . . . | 80. |* . . . | 80.5 | * . . . | 81. | * . . . | 81.5 | . * . . | 82. | . . * . | 82.5 | . . . * | 83. | . . . * | 83.5 | . . . *| 84. | . . . * | 84.5 | . . * . | 85. | . * . . | 85.5 | * . . . | 86. | * . . . | 86.5 * . . . | 87. | * . . . | 87.5 | *. . . | 88. | . * . . | 88.5 | . . * . | 89. | . . . * | 89.5 | . . . * 90. | . . . * | 90.5 | . . . * | 91. | . . * . | 91.5 | . * . . | 92. | * . . . | 92.5 |* . . . | 93. |* . . . | 93.5 | * . . . | 94. | . * . . | 94.5 | . . * . | 95. | . . . * | 95.5 | . . . * | 96. | . . . * 96.5 | . . . * | 97. | . . * . | 97.5 | . *. . | 98. | *. . . | 98.5 | * . . . | 99. * . . . | 99.5 | * . . . | 100. | * . . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=5460, fourier=0, total=7280 transient timesteps: accepted=1817, rejected=3, total=1820 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/oscillator.6.ckt.out000066400000000000000000000402631316501211100170450ustar00rootroot00000000000000*oscillator, .159 Hz. v(1) -5. -2.5 0. 2.5 5. +-----------------+----------------+-----------------+----------------+ 0. | . * . | 0.5 | . . * . | 1. | . . . * | 1.5 | . . . * 2. | . . . * | 2.5 | . . . * | 3. | . . * . | 3.5 | . * . . | 4. | * . . . | 4.5 |* . . . | 5. |* . . . | 5.5 | * . . . | 6. | . * . . | 6.5 | . . * . | 7. | . . . * | 7.5 | . . . * | 8. | . . . * 8.5 | . . . * | 9. | . . * . | 9.5 | . * . | 10. | * . . | 10.5 | * . . . | 11. * . . . | 11.5 | * . . . | 12. | * . . . | 12.5 | . * . . | 13. | . . * . | 13.5 | . . . * | 14. | . . . *| 14.5 | . . . *| 15. | . . . * | 15.5 | . . * . | 16. | . * . . | 16.5 | * . . . | 17. | * . . . | 17.5 * . . . | 18. | * . . . | 18.5 | . * . . | 19. | . . * . | 19.5 | . . .* | 20. | . . . * | 20.5 | . . . * 21. | . . . * | 21.5 | . . .* | 22. | . . * . | 22.5 | . * . . | 23. | * . . . | 23.5 * . . . | 24. | * . . . | 24.5 | * . . . | 25. | . * . . | 25.5 | . . * . | 26. | . . . * | 26.5 | . . . * | 27. | . . . *| 27.5 | . . . * | 28. | . . * . | 28.5 | . * . . | 29. | * . . . | 29.5 | * . . . | 30. * . . . | 30.5 | * . . . | 31. | * . . | 31.5 | . *. . | 32. | . . * . | 32.5 | . . . * | 33. | . . . * 33.5 | . . . * | 34. | . . . * | 34.5 | . . * . | 35. | . * . . | 35.5 | * . . . | 36. |* . . . | 36.5 |* . . . | 37. | * . . . | 37.5 | . * . . | 38. | . . * . | 38.5 | . . . * | 39. | . . . * | 39.5 | . . . * 40. | . . . * | 40.5 | . . * . | 41. | . *. . | 41.5 | *. . . | 42. | * . . . | 42.5 * . . . | 43. | * . . . | 43.5 | * . . . | 44. | . * . . | 44.5 | . . * . | 45. | . . . * | 45.5 | . . . *| 46. | . . . * | 46.5 | . . . * | 47. | . . * . | 47.5 | . * . . | 48. | * . . . | 48.5 | * . . . | 49. * . . . | 49.5 | * . . . | 50. | . * . . | 50.5 | . . * . | 51. | . . .* | 51.5 | . . . * | 52. | . . . * 52.5 | . . . * | 53. | . . * | 53.5 | . . * . | 54. | . * . . | 54.5 | * . . . | 55. * . . . | 55.5 | * . . . | 56. | * . . . | 56.5 | . * . . | 57. | . . * . | 57.5 | . . . * | 58. | . . . *| 58.5 | . . . *| 59. | . . . * | 59.5 | . . * . | 60. | . * . . | 60.5 | * . . . | 61. | * . . . | 61.5 * . . . | 62. | * . . . | 62.5 | * . . | 63. | . * . | 63.5 | . . *. | 64. | . . . * | 64.5 | . . . * 65. | . . . * | 65.5 | . . . * | 66. | . . * . | 66.5 | . * . . | 67. | * . . . | 67.5 |* . . . | 68. |* . . . | 68.5 | * . . . | 69. | . * . . | 69.5 | . . * . | 70. | . . . * | 70.5 | . . . * | 71. | . . . * 71.5 | . . . * | 72. | . . * . | 72.5 | . * . . | 73. | * . . . | 73.5 | * . . . | 74. * . . . | 74.5 | * . . . | 75. | * . . . | 75.5 | . * . . | 76. | . . * . | 76.5 | . . . * | 77. | . . . * 77.5 | . . . * | 78. | . . . * | 78.5 | . . * . | 79. | . * . . | 79.5 | * . . . | 80. | * . . . | 80.5 |* . . . | 81. | * . . . | 81.5 | . * . . | 82. | . . * . | 82.5 | . . . * | 83. | . . . * | 83.5 | . . . * 84. | . . . * | 84.5 | . . * | 85. | . .* . | 85.5 | .* . . | 86. | * . . . | 86.5 * . . . | 87. | * . . . | 87.5 | * . . . | 88. | . * . . | 88.5 | . . * . | 89. | . . . * | 89.5 | . . . *| 90. | . . . *| 90.5 | . . . * | 91. | . . * . | 91.5 | . * . . | 92. | * . . . | 92.5 | * . . . | 93. * . . . | 93.5 | * . . . | 94. | .* . . | 94.5 | . .* . | 95. | . . * | 95.5 | . . . * | 96. | . . . * 96.5 | . . . * | 97. | . . . * | 97.5 | . . * . | 98. | . * . . | 98.5 | * . . . | 99. |* . . . | 99.5 | * . . . | 100. | * . . . | +-----------------+----------------+-----------------+----------------+ Gnucap System status iterations: op=0, dc=0, tran=2173, fourier=0, total=2901 transient timesteps: accepted=726, rejected=2, total=728 nodes: user=1, subckt=0, model=0, total=1 dctran density=100.0%, ac density=100.0% tests/==out/oscillator.7.ckt.out000066400000000000000000002627631316501211100170610ustar00rootroot00000000000000*oscillator, .159 Hz. #Time v(1) v(2) iter(0) 0. 0. 0. 0. 0.001 5. -0.005 4. 83.333u 5. -416.67u 4. 6.9444u 5. -34.722u 4. 578.7n 5. -2.8935u 4. 48.225n 5. -241.13n 4. 4.0188n 5. -20.094n 4. 334.9p 5. -1.6745n 4. 167.45p 5. -837.25p 4. 277.45p 5. -1.3872n 2. 0.0029412 5. -0.014706 2. 0.035294 4.9969 -0.17642 2. 0.1 4.975 -0.49904 4. 0.2 4.9004 -0.99281 4. 0.3 4.777 -1.4767 4. 0.4 4.6058 -1.9458 4. 0.5 4.3888 -2.3956 4. 0.6 4.1279 -2.8214 4. 0.7 3.8259 -3.2191 4. 0.8 3.4857 -3.5847 4. 0.9 3.1108 -3.9145 4. 1. 2.7048 -4.2053 4. 1.1 2.2718 -4.4541 4. 1.2 1.8162 -4.6585 4. 1.3 1.3424 -4.8164 4. 1.4 0.85529 -4.9263 4. 1.5 0.35963 -4.9871 4. 1.6 -0.13963 -4.998 4. 1.7 -0.63749 -4.9592 4. 1.8 -1.129 -4.8709 4. 1.9 -1.6092 -4.734 4. 2. -2.0734 -4.5498 4. 2.1 -2.5169 -4.3203 4. 2.2 -2.9353 -4.0477 4. 2.3 -3.3245 -3.7347 4. 2.4 -3.6804 -3.3845 4. 2.5 -3.9997 -3.0005 4. 2.6 -4.279 -2.5865 4. 2.7 -4.5157 -2.1468 4. 2.8 -4.7073 -1.6856 4. 2.9 -4.852 -1.2077 4. 3. -4.9482 -0.71767 4. 3.1 -4.9951 -0.2205 4. 3.2 -4.9922 0.27887 2. 3.3 -4.9395 0.77545 4. 3.4 -4.8375 1.2643 4. 3.5 -4.6873 1.7405 4. 3.6 -4.4903 2.1994 4. 3.7 -4.2485 2.6364 4. 3.8 -3.9643 3.047 4. 3.9 -3.6406 3.4272 4. 4. -3.2806 3.7733 4. 4.1 -2.8878 4.0817 4. 4.2 -2.4663 4.3494 4. 4.3 -2.0201 4.5737 4. 4.4 -1.5538 4.7524 4. 4.5 -1.072 4.8837 4. 4.6 -0.57949 4.9663 4. 4.7 -0.08121 4.9993 4. 4.8 0.41788 4.9825 4. 4.9 0.91281 4.916 4. 5. 1.3986 4.8004 4. 5.1 1.8705 4.6369 4. 5.2 2.3237 4.4272 4. 5.3 2.7537 4.1734 4. 5.4 3.1563 3.8779 4. 5.5 3.5274 3.5437 4. 5.6 3.8633 3.1741 4. 5.7 4.1606 2.773 4. 5.8 4.4165 2.3441 4. 5.9 4.6283 1.8919 4. 6. 4.7939 1.4208 4. 6.1 4.9117 0.93547 4. 6.2 4.9805 0.44086 4. 6.3 4.9997 -0.058151 4. 6.4 4.9689 -0.55658 4. 6.5 4.8886 -1.0495 4. 6.6 4.7596 -1.5319 4. 6.7 4.583 -1.999 4. 6.8 4.3608 -2.4462 4. 6.9 4.095 -2.869 4. 7. 3.7884 -3.2631 4. 7.1 3.444 -3.6248 4. 7.2 3.0653 -3.9502 4. 7.3 2.6559 -4.2363 4. 7.4 2.2201 -4.4801 4. 7.5 1.7621 -4.6792 4. 7.6 1.2866 -4.8316 4. 7.7 0.79823 -4.9359 4. 7.8 0.30189 -4.9909 4. 7.9 -0.19746 -4.9961 4. 8. -0.69484 -4.9515 4. 8.1 -1.1853 -4.8575 4. 8.2 -1.6639 -4.715 4. 8.3 -2.1259 -4.5255 4. 8.4 -2.5668 -4.2909 4. 8.5 -2.982 -4.0135 4. 8.6 -3.3674 -3.696 4. 8.7 -3.7193 -3.3416 4. 8.8 -4.0341 -2.954 4. 8.9 -4.3087 -2.5368 4. 9. -4.5402 -2.0944 4. 9.1 -4.7265 -1.6311 4. 9.2 -4.8656 -1.1514 4. 9.3 -4.9562 -0.66036 4. 9.4 -4.9974 -0.16268 4. 9.5 -4.9887 0.33662 4. 9.6 -4.9302 0.83256 4. 9.7 -4.8226 1.3202 4. 9.8 -4.6668 1.7947 4. 9.9 -4.4645 2.2512 4. 10. -4.2177 2.6853 4. 10.1 -3.9288 3.0927 4. 10.2 -3.6007 3.4691 4. 10.3 -3.2367 3.811 4. 10.4 -2.8404 4.1149 4. 10.5 -2.4158 4.3777 4. 10.6 -1.967 4.5968 4. 10.7 -1.4987 4.7701 4. 10.8 -1.0154 4.8958 4. 10.9 -0.52198 4.9727 4. 11. -0.023351 4.9999 4. 11.1 0.47551 4.9773 4. 11.2 0.96963 4.9051 4. 11.3 1.4541 4.7839 4. 11.4 1.924 4.615 4. 11.5 2.3748 4.4 4. 11.6 2.8018 4.1412 4. 11.7 3.201 3.8411 4. 11.8 3.5681 3.5026 4. 11.9 3.8997 3.1292 4. 12. 4.1924 2.7246 4. 12.1 4.4433 2.2928 4. 12.2 4.6499 1.8382 4. 12.3 4.81 1.3652 4. 12.4 4.9222 0.87857 4. 12.5 4.9853 0.38319 4. 12.6 4.9987 -0.116 4. 12.7 4.9622 -0.61404 4. 12.8 4.8762 -1.106 4. 12.9 4.7415 -1.5868 4. 13. 4.5596 -2.0519 4. 13.1 4.3322 -2.4965 4. 13.2 4.0615 -2.9162 4. 13.3 3.7504 -3.3068 4. 13.4 3.4018 -3.6644 4. 13.5 3.0193 -3.9854 4. 13.6 2.6067 -4.2667 4. 13.7 2.1681 -4.5055 4. 13.8 1.7079 -4.6993 4. 13.9 1.2306 -4.8462 4. 14. 0.74106 -4.9448 4. 14.1 0.24411 -4.994 4. 14.2 -0.25526 -4.9935 4. 14.3 -0.75209 -4.9431 4. 14.4 -1.2414 -4.8434 4. 14.5 -1.7184 -4.6954 4. 14.6 -2.1782 -4.5006 4. 14.7 -2.6162 -4.2609 4. 14.8 -3.0282 -3.9787 4. 14.9 -3.41 -3.6568 4. 15. -3.7578 -3.2984 4. 15.1 -4.068 -2.9071 4. 15.2 -4.3377 -2.4868 4. 15.3 -4.5641 -2.0417 4. 15.4 -4.745 -1.5762 4. 15.5 -4.8786 -1.0951 4. 15.6 -4.9635 -0.60296 4. 15.7 -4.9989 -0.10484 4. 15.8 -4.9844 0.39433 4. 15.9 -4.9202 0.88956 4. 16. -4.807 1.3759 4. 16.1 -4.6457 1.8486 4. 16.2 -4.4382 2.3028 4. 16.3 -4.1863 2.734 4. 16.4 -3.8927 3.1379 4. 16.5 -3.5603 3.5106 4. 16.6 -3.1924 3.8482 4. 16.7 -2.7926 4.1475 4. 16.8 -2.365 4.4053 4. 16.9 -1.9137 4.6193 4. 17. -1.4434 4.7871 4. 17.1 -0.95868 4.9072 4. 17.2 -0.4644 4.9784 4. 17.3 0.034511 4.9999 4. 17.4 0.53308 4.9715 4. 17.5 1.0263 4.8935 4. 17.6 1.5093 4.7667 4. 17.7 1.9773 4.5924 4. 17.8 2.4255 4.3723 4. 17.9 2.8496 4.1085 4. 18. 3.2452 3.8038 4. 18.1 3.6084 3.4611 4. 18.2 3.9357 3.0839 4. 18.3 4.2237 2.6759 4. 18.4 4.4695 2.2413 4. 18.5 4.6708 1.7842 4. 18.6 4.8255 1.3094 4. 18.7 4.932 0.82155 4. 18.8 4.9894 0.32548 4. 18.9 4.997 -0.17384 4. 19. 4.9547 -0.67143 4. 19.1 4.863 -1.1623 4. 19.2 4.7228 -1.6416 4. 19.3 4.5355 -2.1045 4. 19.4 4.303 -2.5464 4. 19.5 4.0275 -2.963 4. 19.6 3.7119 -3.3499 4. 19.7 3.3592 -3.7035 4. 19.8 2.973 -4.0201 4. 19.9 2.5572 -4.2966 4. 20. 2.1158 -4.5303 4. 20.1 1.6534 -4.7187 4. 20.2 1.1744 -4.8601 4. 20.3 0.68378 -4.953 4. 20.4 0.18631 -4.9965 4. 20.5 -0.31303 -4.9902 4. 20.6 -0.80924 -4.9341 4. 20.7 -1.2974 -4.8287 4. 20.8 -1.7726 -4.6752 4. 20.9 -2.2301 -4.4751 4. 21. -2.6654 -4.2303 4. 21.1 -3.0741 -3.9434 4. 21.2 -3.4521 -3.6171 4. 21.3 -3.7957 -3.2547 4. 21.4 -4.1014 -2.8598 4. 21.5 -4.3662 -2.4364 4. 21.6 -4.5875 -1.9888 4. 21.7 -4.763 -1.5212 4. 21.8 -4.891 -1.0385 4. 21.9 -4.9702 -0.54548 4. 22. -4.9998 -0.046982 4. 22.1 -4.9795 0.45198 4. 22.2 -4.9096 0.94644 4. 22.3 -4.7907 1.4315 4. 22.4 -4.624 1.9022 4. 22.5 -4.4112 2.354 4. 22.6 -4.1544 2.7822 4. 22.7 -3.8562 3.1828 4. 22.8 -3.5195 3.5515 4. 22.9 -3.1476 3.8849 4. 23. -2.7444 4.1795 4. 23.1 -2.3138 4.4324 4. 23.2 -1.8601 4.6411 4. 23.3 -1.3879 4.8035 4. 23.4 -0.90183 4.918 4. 23.5 -0.40676 4.9834 4. 23.6 0.092369 4.9991 4. 23.7 0.59058 4.965 4. 23.8 1.0829 4.8813 4. 23.9 1.5644 4.749 4. 24. 2.0303 4.5692 4. 24.1 2.476 4.3439 4. 24.2 2.8969 4.0753 4. 24.3 3.289 3.766 4. 24.4 3.6482 3.4191 4. 24.5 3.9711 3.0381 4. 24.6 4.2544 2.6269 4. 24.7 4.4952 2.1894 4. 24.8 4.6911 1.7301 4. 24.9 4.8403 1.2535 4. 25. 4.9412 0.76442 4. 25.1 4.9928 0.26772 4. 25.2 4.9946 -0.23166 2. 25.3 4.9466 -0.72872 4. 25.4 4.8493 -1.2185 4. 25.5 4.7035 -1.6962 4. 25.6 4.5109 -2.1569 4. 25.7 4.2732 -2.5961 4. 25.8 3.9929 -3.0094 4. 25.9 3.6728 -3.3927 4. 26. 3.3161 -3.7421 4. 26.1 2.9263 -4.0542 4. 26.2 2.5073 -4.3259 4. 26.3 2.0633 -4.5544 4. 26.4 1.5987 -4.7375 4. 26.5 1.1181 -4.8734 4. 26.6 0.62642 -4.9606 4. 26.7 0.12847 -4.9983 4. 26.8 -0.37076 -4.9862 4. 26.9 -0.86629 -4.9244 4. 27. -1.3532 -4.8134 4. 27.1 -1.8266 -4.6544 4. 27.2 -2.2817 -4.449 4. 27.3 -2.7142 -4.1992 4. 27.4 -3.1195 -3.9075 4. 27.5 -3.4937 -3.5769 4. 27.6 -3.8331 -3.2105 4. 27.7 -4.1342 -2.8122 4. 27.8 -4.3941 -2.3857 4. 27.9 -4.6102 -1.9355 4. 28. -4.7803 -1.466 4. 28.1 -4.9026 -0.98187 4. 28.2 -4.9761 -0.48793 4. 28.3 -5. 0.01088 4. 28.4 -4.974 0.50958 4. 28.5 -4.8983 1.0032 4. 28.6 -4.7738 1.4868 4. 28.7 -4.6017 1.9556 4. 28.8 -4.3837 2.4048 4. 28.9 -4.1219 2.8301 4. 29. -3.8191 3.2272 4. 29.1 -3.4781 3.592 4. 29.2 -3.1025 3.9211 4. 29.3 -2.6959 4.211 4. 29.4 -2.2624 4.4589 4. 29.5 -1.8063 4.6623 4. 29.6 -1.3322 4.8193 4. 29.7 -0.84486 4.9281 4. 29.8 -0.34906 4.9878 4. 29.9 0.15021 4.9977 4. 30. 0.64799 4.9578 4. 30.1 1.1393 4.8685 4. 30.2 1.6193 4.7305 4. 30.3 2.0831 4.5454 4. 30.4 2.5261 4.315 4. 30.5 2.9439 4.0415 4. 30.6 3.3324 3.7277 4. 30.7 3.6876 3.3767 4. 30.8 4.006 2.992 4. 30.9 4.2845 2.5775 4. 31. 4.5202 2.1372 4. 31.1 4.7109 1.6757 4. 31.2 4.8545 1.1974 4. 31.3 4.9497 0.70719 4. 31.4 4.9956 0.20992 4. 31.5 4.9916 -0.28944 2. 31.6 4.9378 -0.78591 4. 31.7 4.8348 -1.2745 4. 31.8 4.6836 -1.7505 4. 31.9 4.4856 -2.2089 4. 32. 4.2429 -2.6454 4. 32.1 3.9579 -3.0554 4. 32.2 3.6333 -3.4349 4. 32.3 3.2726 -3.7802 4. 32.4 2.8792 -4.0878 4. 32.5 2.4571 -4.3546 4. 32.6 2.0104 -4.578 4. 32.7 1.5437 -4.7557 4. 32.8 1.0616 -4.886 4. 32.9 0.56897 -4.9675 4. 33. 0.070621 -4.9995 4. 33.1 -0.42843 -4.9816 4. 33.2 -0.92322 -4.914 4. 33.3 -1.4088 -4.7974 4. 33.4 -1.8803 -4.633 4. 33.5 -2.3331 -4.4223 4. 33.6 -2.7626 -4.1675 4. 33.7 -3.1645 -3.8712 4. 33.8 -3.5349 -3.5362 4. 33.9 -3.87 -3.166 4. 34. -4.1665 -2.7641 4. 34.1 -4.4214 -2.3347 4. 34.2 -4.6323 -1.8821 4. 34.3 -4.7969 -1.4106 4. 34.4 -4.9137 -0.92507 4. 34.5 -4.9814 -0.43031 4. 34.6 -4.9995 0.06874 4. 34.7 -4.9677 0.5671 4. 34.8 -4.8864 1.0598 4. 34.9 -4.7563 1.5419 4. 35. -4.5788 2.0087 4. 35.1 -4.3556 2.4554 4. 35.2 -4.0889 2.8776 4. 35.3 -3.7815 3.2712 4. 35.4 -3.4363 3.632 4. 35.5 -3.0569 3.9567 4. 35.6 -2.6469 4.2419 4. 35.7 -2.2106 4.4848 4. 35.8 -1.7522 4.6829 4. 35.9 -1.2764 4.8343 4. 36. -0.78777 4.9376 4. 36.1 -0.29132 4.9915 4. 36.2 0.20804 4.9957 4. 36.3 0.70532 4.95 4. 36.4 1.1956 4.855 4. 36.5 1.6739 4.7115 4. 36.6 2.1355 4.521 4. 36.7 2.5758 4.2854 4. 36.8 2.9905 4.0071 4. 36.9 3.3753 3.6888 4. 37. 3.7264 3.3338 4. 37.1 4.0404 2.9454 4. 37.2 4.314 2.5277 4. 37.3 4.5446 2.0848 4. 37.4 4.7299 1.621 4. 37.5 4.868 1.1411 4. 37.6 4.9576 0.64986 4. 37.7 4.9977 0.15209 4. 37.8 4.9879 -0.34719 4. 37.9 4.9284 -0.843 4. 38. 4.8198 -1.3304 4. 38.1 4.663 -1.8046 4. 38.2 4.4597 -2.2607 4. 38.3 4.212 -2.6943 4. 38.4 3.9222 -3.101 4. 38.5 3.5933 -3.4768 4. 38.6 3.2286 -3.8179 4. 38.7 2.8317 -4.1209 4. 38.8 2.4065 -4.3828 4. 38.9 1.9573 -4.601 4. 39. 1.4886 -4.7733 4. 39.1 1.005 -4.898 4. 39.2 0.51145 -4.9738 4. 39.3 0.012761 -5. 4. 39.4 -0.48605 -4.9763 4. 39.5 -0.98002 -4.903 4. 39.6 -1.4642 -4.7808 4. 39.7 -1.9338 -4.6109 4. 39.8 -2.3841 -4.395 4. 39.9 -2.8106 -4.1353 4. 40. -3.2091 -3.8343 4. 40.1 -3.5756 -3.4951 4. 40.2 -3.9064 -3.121 4. 40.3 -4.1982 -2.7157 4. 40.4 -4.4481 -2.2834 4. 40.5 -4.6537 -1.8283 4. 40.6 -4.8129 -1.355 4. 40.7 -4.9241 -0.86814 4. 40.8 -4.9861 -0.37263 4. 40.9 -4.9984 0.12659 4. 41. -4.9608 0.62455 4. 41.1 -4.8738 1.1163 4. 41.2 -4.7381 1.5969 4. 41.3 -4.5552 2.0616 4. 41.4 -4.3269 2.5057 4. 41.5 -4.0553 2.9248 4. 41.6 -3.7434 3.3147 4. 41.7 -3.3941 3.6716 4. 41.8 -3.0109 3.9918 4. 41.9 -2.5977 4.2722 4. 42. -2.1586 4.5101 4. 42.1 -1.6979 4.7029 4. 42.2 -1.2203 4.8488 4. 42.3 -0.73058 4.9463 4. 42.4 -0.23354 4.9945 4. 42.5 0.26584 4.9929 4. 42.6 0.76256 4.9415 4. 42.7 1.2517 4.8408 4. 42.8 1.7283 4.6918 4. 42.9 2.1877 4.496 4. 43. 2.6253 4.2553 4. 43.1 3.0366 3.9723 4. 43.2 3.4177 3.6495 4. 43.3 3.7647 3.2904 4. 43.4 4.0742 2.8985 4. 43.5 4.343 2.4776 4. 43.6 4.5685 2.032 4. 43.7 4.7484 1.5662 4. 43.8 4.8809 1.0847 4. 43.9 4.9648 0.59244 4. 44. 4.9991 0.09425 4. 44.1 4.9836 -0.40488 4. 44.2 4.9183 -0.89998 4. 44.3 4.804 -1.3861 4. 44.4 4.6418 -1.8584 4. 44.5 4.4333 -2.3121 4. 44.6 4.1805 -2.7428 4. 44.7 3.8861 -3.1462 4. 44.8 3.5529 -3.5181 4. 44.9 3.1842 -3.855 4. 45. 2.7838 -4.1534 4. 45.1 2.3556 -4.4103 4. 45.2 1.9039 -4.6233 4. 45.3 1.4333 -4.7902 4. 45.4 0.94829 -4.9093 4. 45.5 0.45386 -4.9794 4. 45.6 -0.045102 -4.9998 4. 45.7 -0.54361 -4.9704 4. 45.8 -1.0367 -4.8913 4. 45.9 -1.5194 -4.7635 4. 46. -1.987 -4.5882 4. 46.1 -2.4348 -4.3671 4. 46.2 -2.8583 -4.1025 4. 46.3 -3.2532 -3.7969 4. 46.4 -3.6158 -3.4534 4. 46.5 -3.9422 -3.0755 4. 46.6 -4.2293 -2.667 4. 46.7 -4.4743 -2.2318 4. 46.8 -4.6746 -1.7743 4. 46.9 -4.8283 -1.2992 4. 47. -4.9338 -0.8111 4. 47.1 -4.9901 -0.31491 4. 47.2 -4.9966 0.18443 4. 47.3 -4.9533 0.68192 4. 47.4 -4.8606 1.1726 4. 47.5 -4.7193 1.6516 4. 47.6 -4.5311 2.1141 4. 47.7 -4.2976 2.5556 4. 47.8 -4.0212 2.9715 4. 47.9 -3.7048 3.3578 4. 48. -3.3513 3.7106 4. 48.1 -2.9645 4.0264 4. 48.2 -2.5481 4.302 4. 48.3 -2.1062 4.5347 4. 48.4 -1.6434 4.7222 4. 48.5 -1.1641 4.8626 4. 48.6 -0.67329 4.9545 4. 48.7 -0.17572 4.9969 4. 48.8 0.3236 4.9895 4. 48.9 0.81969 4.9324 4. 49. 1.3076 4.826 4. 49.1 1.7825 4.6715 4. 49.2 2.2396 4.4704 4. 49.3 2.6743 4.2247 4. 49.4 3.0824 3.9368 4. 49.5 3.4597 3.6097 4. 49.6 3.8026 3.2466 4. 49.7 4.1074 2.8511 4. 49.8 4.3714 2.4272 4. 49.9 4.5917 1.979 4. 50. 4.7662 1.5111 4. 50.1 4.8931 1.0282 4. 50.2 4.9713 0.53495 4. 50.3 4.9999 0.036392 4. 50.4 4.9786 -0.46253 4. 50.5 4.9076 -0.95684 4. 50.6 4.7877 -1.4416 4. 50.7 4.62 -1.912 4. 50.8 4.4062 -2.3633 4. 50.9 4.1485 -2.791 4. 51. 3.8494 -3.1909 4. 51.1 3.5119 -3.559 4. 51.2 3.1394 -3.8916 4. 51.3 2.7356 -4.1853 4. 51.4 2.3044 -4.4373 4. 51.5 1.8503 -4.645 4. 51.6 1.3777 -4.8064 4. 51.7 0.89141 -4.9199 4. 51.8 0.3962 -4.9843 4. 51.9 -0.10296 -4.9989 4. 52. -0.60109 -4.9637 4. 52.1 -1.0932 -4.879 4. 52.2 -1.5745 -4.7456 4. 52.3 -2.04 -4.5649 4. 52.4 -2.4852 -4.3387 4. 52.5 -2.9056 -4.0691 4. 52.6 -3.297 -3.759 4. 52.7 -3.6555 -3.4114 4. 52.8 -3.9775 -3.0297 4. 52.9 -4.2599 -2.6178 4. 53. -4.4998 -2.1799 4. 53.1 -4.6948 -1.7201 4. 53.2 -4.843 -1.2432 4. 53.3 -4.9428 -0.75395 4. 53.4 -4.9934 -0.25714 4. 53.5 -4.9941 0.24224 2. 53.6 -4.9451 0.7392 4. 53.7 -4.8467 1.2288 4. 53.8 -4.6999 1.7061 4. 53.9 -4.5063 2.1664 4. 54. -4.2677 2.6051 4. 54.1 -3.9866 3.0178 4. 54.2 -3.6657 3.4004 4. 54.3 -3.3082 3.7491 4. 54.4 -2.9177 4.0604 4. 54.5 -2.4981 4.3312 4. 54.6 -2.0536 4.5588 4. 54.7 -1.5886 4.7409 4. 54.8 -1.1078 4.8757 4. 54.9 -0.61591 4.9619 4. 55. -0.11788 4.9986 4. 55.1 0.38132 4.9854 4. 55.2 0.87672 4.9225 4. 55.3 1.3634 4.8105 4. 55.4 1.8364 4.6505 4. 55.5 2.2912 4.4442 4. 55.6 2.723 4.1935 4. 55.7 3.1278 3.9009 4. 55.8 3.5013 3.5695 4. 55.9 3.8399 3.2024 4. 56. 4.1402 2.8034 4. 56.1 4.3992 2.3764 4. 56.2 4.6143 1.9258 4. 56.3 4.7833 1.4559 4. 56.4 4.9047 0.97148 4. 56.5 4.9772 0.47739 4. 56.6 5. -0.02147 4. 56.7 4.9729 -0.52011 4. 56.8 4.8962 -1.0136 4. 56.9 4.7707 -1.4969 4. 57. 4.5976 -1.9653 4. 57.1 4.3786 -2.4141 4. 57.2 4.1159 -2.8389 4. 57.3 3.8122 -3.2353 4. 57.4 3.4705 -3.5994 4. 57.5 3.0941 -3.9276 4. 57.6 2.6869 -4.2167 4. 57.7 2.2529 -4.4637 4. 57.8 1.7964 -4.6661 4. 57.9 1.322 -4.8221 4. 58. 0.83442 -4.9299 4. 58.1 0.3385 -4.9885 4. 58.2 -0.1608 -4.9974 4. 58.3 -0.65849 -4.9564 4. 58.4 -1.1496 -4.866 4. 58.5 -1.6293 -4.7271 4. 58.6 -2.0927 -4.541 4. 58.7 -2.5352 -4.3096 4. 58.8 -2.9525 -4.0352 4. 58.9 -3.3402 -3.7206 4. 59. -3.6947 -3.3688 4. 59.1 -4.0123 -2.9835 4. 59.2 -4.2899 -2.5684 4. 59.3 -4.5247 -2.1276 4. 59.4 -4.7144 -1.6657 4. 59.5 -4.857 -1.1871 4. 59.6 -4.9512 -0.6967 4. 59.7 -4.996 -0.19934 4. 59.8 -4.991 0.30001 4. 59.9 -4.9362 0.79637 4. 60. -4.8321 1.2848 4. 60.1 -4.6799 1.7604 4. 60.2 -4.4809 2.2184 4. 60.3 -4.2373 2.6543 4. 60.4 -3.9514 3.0638 4. 60.5 -3.6261 3.4426 4. 60.6 -3.2646 3.7872 4. 60.7 -2.8705 4.0939 4. 60.8 -2.4478 4.3598 4. 60.9 -2.0007 4.5823 4. 61. -1.5337 4.759 4. 61.1 -1.0513 4.8882 4. 61.2 -0.55845 4.9687 4. 61.3 -0.060031 4.9996 4. 61.4 0.43899 4.9807 4. 61.5 0.93362 4.9121 4. 61.6 1.4189 4.7944 4. 61.7 1.8901 4.629 4. 61.8 2.3424 4.4174 4. 61.9 2.7714 4.1617 4. 62. 3.1727 3.8645 4. 62.1 3.5423 3.5287 4. 62.2 3.8767 3.1578 4. 62.3 4.1723 2.7553 4. 62.4 4.4264 2.3254 4. 62.5 4.6362 1.8722 4. 62.6 4.7999 1.4004 4. 62.7 4.9156 0.91466 4. 62.8 4.9823 0.41976 4. 62.9 4.9994 -0.07933 4. 63. 4.9665 -0.57762 4. 63.1 4.8841 -1.0702 4. 63.2 4.753 -1.552 4. 63.3 4.5745 -2.0184 4. 63.4 4.3504 -2.4646 4. 63.5 4.0828 -2.8863 4. 63.6 3.7745 -3.2792 4. 63.7 3.4286 -3.6393 4. 63.8 3.0485 -3.9632 4. 63.9 2.638 -4.2475 4. 64. 2.2011 -4.4894 4. 64.1 1.7423 -4.6866 4. 64.2 1.2661 -4.837 4. 64.3 0.77731 -4.9392 4. 64.4 0.28075 -4.9921 4. 64.5 -0.21862 -4.9952 4. 64.6 -0.71581 -4.9485 4. 64.7 -1.2059 -4.8524 4. 64.8 -1.6839 -4.7079 4. 64.9 -2.1451 -4.5165 4. 65. -2.5849 -4.28 4. 65.1 -2.999 -4.0008 4. 65.2 -3.3831 -3.6817 4. 65.3 -3.7335 -3.3259 4. 65.4 -4.0466 -2.9369 4. 65.5 -4.3194 -2.5186 4. 65.6 -4.549 -2.0751 4. 65.7 -4.7334 -1.611 4. 65.8 -4.8704 -1.1308 4. 65.9 -4.959 -0.63936 4. 66. -4.998 -0.14151 4. 66.1 -4.9872 0.35775 4. 66.2 -4.9266 0.85344 4. 66.3 -4.8169 1.3406 4. 66.4 -4.6592 1.8144 4. 66.5 -4.4549 2.2701 4. 66.6 -4.2063 2.7032 4. 66.7 -3.9157 3.1093 4. 66.8 -3.586 3.4844 4. 66.9 -3.2205 3.8247 4. 67. -2.8229 4.1269 4. 67.1 -2.3972 4.3879 4. 67.2 -1.9476 4.6051 4. 67.3 -1.4785 4.7764 4. 67.4 -0.99466 4.9001 4. 67.5 -0.50091 4.9748 4. 67.6 -0.0021701 5. 4. 67.7 0.49659 4.9753 4. 67.8 0.9904 4.9009 4. 67.9 1.4743 4.7777 4. 68. 1.9436 4.6068 4. 68.1 2.3934 4.3899 4. 68.2 2.8194 4.1293 4. 68.3 3.2172 3.8275 4. 68.4 3.5829 3.4875 4. 68.5 3.913 3.1127 4. 68.6 4.2039 2.7068 4. 68.7 4.453 2.274 4. 68.8 4.6576 1.8185 4. 68.9 4.8158 1.3448 4. 69. 4.9259 0.85771 4. 69.1 4.9869 0.36207 4. 69.2 4.9981 -0.13718 4. 69.3 4.9595 -0.63506 4. 69.4 4.8714 -1.1266 4. 69.5 4.7347 -1.6069 4. 69.6 4.5508 -2.0712 4. 69.7 4.3215 -2.5148 4. 69.8 4.0491 -2.9333 4. 69.9 3.7363 -3.3226 4. 70. 3.3863 -3.6788 4. 70.1 3.0024 -3.9982 4. 70.2 2.5886 -4.2777 4. 70.3 2.149 -4.5146 4. 70.4 1.688 -4.7065 4. 70.5 1.2101 -4.8514 4. 70.6 0.7201 -4.9479 4. 70.7 0.22296 -4.995 4. 70.8 -0.27641 -4.9924 4. 70.9 -0.77302 -4.9399 4. 71. -1.2619 -4.8381 4. 71.1 -1.7382 -4.6881 4. 71.2 -2.1972 -4.4914 4. 71.3 -2.6343 -4.2498 4. 71.4 -3.045 -3.9658 4. 71.5 -3.4255 -3.6423 4. 71.6 -3.7717 -3.2824 4. 71.7 -4.0803 -2.8898 4. 71.8 -4.3482 -2.4684 4. 71.9 -4.5728 -2.0224 4. 72. -4.7517 -1.5561 4. 72.1 -4.8832 -1.0744 4. 72.2 -4.966 -0.58193 4. 72.3 -4.9993 -0.083661 4. 72.4 -4.9827 0.41544 4. 72.5 -4.9164 0.9104 4. 72.6 -4.8011 1.3963 4. 72.7 -4.6379 1.8682 4. 72.8 -4.4284 2.3215 4. 72.9 -4.1747 2.7517 4. 73. -3.8794 3.1544 4. 73.1 -3.5454 3.5256 4. 73.2 -3.176 3.8617 4. 73.3 -2.775 4.1593 4. 73.4 -2.3463 4.4153 4. 73.5 -1.8941 4.6273 4. 73.6 -1.4231 4.7932 4. 73.7 -0.93789 4.9113 4. 73.8 -0.44331 4.9803 4. 73.9 0.055692 4.9997 4. 74. 0.55414 4.9692 4. 74.1 1.0471 4.8891 4. 74.2 1.5295 4.7603 4. 74.3 1.9967 4.584 4. 74.4 2.444 4.362 4. 74.5 2.867 4.0964 4. 74.6 3.2613 3.79 4. 74.7 3.6231 3.4458 4. 74.8 3.9487 3.0672 4. 74.9 4.235 2.658 4. 75. 4.479 2.2223 4. 75.1 4.6783 1.7644 4. 75.2 4.831 1.289 4. 75.3 4.9355 0.80065 4. 75.4 4.9907 0.30434 4. 75.5 4.9962 -0.19501 4. 75.6 4.9518 -0.69241 4. 75.7 4.8581 -1.1829 4. 75.8 4.7158 -1.6616 4. 75.9 4.5266 -2.1237 4. 76. 4.2922 -2.5647 4. 76.1 4.0149 -2.98 4. 76.2 3.6976 -3.3656 4. 76.3 3.3435 -3.7177 4. 76.4 2.956 -4.0327 4. 76.5 2.539 -4.3074 4. 76.6 2.0966 -4.5392 4. 76.7 1.6334 -4.7257 4. 76.8 1.1538 -4.865 4. 76.9 0.6628 -4.9559 4. 77. 0.16514 -4.9973 4. 77.1 -0.33417 -4.9888 4. 77.2 -0.83014 -4.9306 4. 77.3 -1.3178 -4.8232 4. 77.4 -1.7924 -4.6677 4. 77.5 -2.249 -4.4656 4. 77.6 -2.6833 -4.219 4. 77.7 -3.0907 -3.9303 4. 77.8 -3.4674 -3.6024 4. 77.9 -3.8094 -3.2386 4. 78. -4.1135 -2.8424 4. 78.1 -4.3765 -2.4179 4. 78.2 -4.5959 -1.9693 4. 78.3 -4.7694 -1.501 4. 78.4 -4.8953 -1.0178 4. 78.5 -4.9724 -0.52442 4. 78.6 -4.9999 -0.025802 4. 78.7 -4.9776 0.47307 4. 78.8 -4.9056 0.96723 4. 78.9 -4.7846 1.4517 4. 79. -4.6159 1.9218 4. 79.1 -4.4012 2.3726 4. 79.2 -4.1426 2.7998 4. 79.3 -3.8426 3.1991 4. 79.4 -3.5044 3.5664 4. 79.5 -3.1311 3.8982 4. 79.6 -2.7267 4.1911 4. 79.7 -2.295 4.4422 4. 79.8 -1.8405 4.6489 4. 79.9 -1.3675 4.8093 4. 80. -0.88099 4.9218 4. 80.1 -0.38565 4.9851 4. 80.2 0.11355 4.9987 4. 80.3 0.6116 4.9625 4. 80.4 1.1036 4.8767 4. 80.5 1.5845 4.7423 4. 80.6 2.0497 4.5606 4. 80.7 2.4944 4.3334 4. 80.8 2.9142 4.063 4. 80.9 3.3049 3.752 4. 81. 3.6627 3.4036 4. 81.1 3.9839 3.0213 4. 81.2 4.2654 2.6088 4. 81.3 4.5044 2.1703 4. 81.4 4.6984 1.7102 4. 81.5 4.8456 1.233 4. 81.6 4.9444 0.74348 4. 81.7 4.9939 0.24656 4. 81.8 4.9936 -0.25281 2. 81.9 4.9435 -0.74967 4. 82. 4.844 -1.239 4. 82.1 4.6963 -1.7161 4. 82.2 4.5017 -2.176 4. 82.3 4.2622 -2.6142 4. 82.4 3.9802 -3.0263 4. 82.5 3.6584 -3.4082 4. 82.6 3.3002 -3.7561 4. 82.7 2.9091 -4.0666 4. 82.8 2.4889 -4.3365 4. 82.9 2.044 -4.5631 4. 83. 1.5786 -4.7443 4. 83.1 1.0975 -4.8781 4. 83.2 0.6054 -4.9632 4. 83.3 0.1073 -4.9988 4. 83.4 -0.39188 -4.9846 4. 83.5 -0.88714 -4.9207 4. 83.6 -1.3736 -4.8076 4. 83.7 -1.8463 -4.6466 4. 83.8 -2.3006 -4.4393 4. 83.9 -2.7319 -4.1877 4. 84. -3.136 -3.8943 4. 84.1 -3.5088 -3.562 4. 84.2 -3.8466 -3.1943 4. 84.3 -4.1461 -2.7946 4. 84.4 -4.4042 -2.3671 4. 84.5 -4.6183 -1.916 4. 84.6 -4.7864 -1.4457 4. 84.7 -4.9068 -0.96109 4. 84.8 -4.9782 -0.46684 4. 84.9 -4.9999 0.03206 4. 85. -4.9718 0.53064 4. 85.1 -4.894 1.0239 4. 85.2 -4.7675 1.507 4. 85.3 -4.5934 1.9751 4. 85.4 -4.3735 2.4234 4. 85.5 -4.1099 2.8476 4. 85.6 -3.8054 3.2433 4. 85.7 -3.4629 3.6067 4. 85.8 -3.0858 3.9342 4. 85.9 -2.678 4.2224 4. 86. -2.2435 4.4684 4. 86.1 -1.7865 4.6699 4. 86.2 -1.3118 4.8249 4. 86.3 -0.82397 4.9316 4. 86.4 -0.32793 4.9892 4. 86.5 0.17138 4.9971 4. 86.6 0.66899 4.955 4. 86.7 1.1599 4.8636 4. 86.8 1.6393 4.7236 4. 86.9 2.1023 4.5366 4. 87. 2.5443 4.3042 4. 87.1 2.961 4.029 4. 87.2 3.3481 3.7135 4. 87.3 3.7018 3.361 4. 87.4 4.0186 2.975 4. 87.5 4.2954 2.5593 4. 87.6 4.5292 2.1181 4. 87.7 4.7179 1.6557 4. 87.8 4.8595 1.1768 4. 87.9 4.9527 0.68621 4. 88. 4.9964 0.18876 4. 88.1 4.9903 -0.31058 4. 88.2 4.9345 -0.80682 4. 88.3 4.8294 -1.295 4. 88.4 4.6761 -1.7703 4. 88.5 4.4762 -2.2279 4. 88.6 4.2316 -2.6633 4. 88.7 3.9449 -3.0721 4. 88.8 3.6188 -3.4503 4. 88.9 3.2565 -3.7941 4. 89. 2.8618 -4.1 4. 89.1 2.4386 -4.365 4. 89.2 1.991 -4.5865 4. 89.3 1.5236 -4.7622 4. 89.4 1.0409 -4.8904 4. 89.5 0.54792 -4.9699 4. 89.6 0.049442 -4.9998 4. 89.7 -0.44953 -4.9798 4. 89.8 -0.94403 -4.9101 4. 89.9 -1.4291 -4.7914 4. 90. -1.8999 -4.625 4. 90.1 -2.3518 -4.4124 4. 90.2 -2.7802 -4.1558 4. 90.3 -3.1809 -3.8577 4. 90.4 -3.5498 -3.5212 4. 90.5 -3.8834 -3.1495 4. 90.6 -4.1782 -2.7465 4. 90.7 -4.4313 -2.316 4. 90.8 -4.6402 -1.8624 4. 90.9 -4.8028 -1.3903 4. 91. -4.9176 -0.90424 4. 91.1 -4.9832 -0.4092 4. 91.2 -4.9992 0.089918 4. 91.3 -4.9653 0.58814 4. 91.4 -4.8819 1.0805 4. 91.5 -4.7497 1.5621 4. 91.6 -4.5702 2.0281 4. 91.7 -4.3451 2.4738 4. 91.8 -4.0767 2.8949 4. 91.9 -3.7676 3.2871 4. 92. -3.4209 3.6466 4. 92.1 -3.0401 3.9696 4. 92.2 -2.629 4.2531 4. 92.3 -2.1916 4.4941 4. 92.4 -1.7324 4.6903 4. 92.5 -1.2559 4.8397 4. 92.6 -0.76685 4.9408 4. 92.7 -0.27017 4.9927 4. 92.8 0.2292 4.9947 4. 92.9 0.72629 4.947 4. 93. 1.2161 4.8498 4. 93.1 1.6938 4.7043 4. 93.2 2.1547 4.5119 4. 93.3 2.594 4.2745 4. 93.4 3.0074 3.9944 4. 93.5 3.3909 3.6745 4. 93.6 3.7405 3.3179 4. 93.7 4.0528 2.9283 4. 93.8 4.3247 2.5094 4. 93.9 4.5534 2.0655 4. 94. 4.7368 1.601 4. 94.1 4.8728 1.1205 4. 94.2 4.9603 0.62885 4. 94.3 4.9983 0.13092 4. 94.4 4.9864 -0.36831 4. 94.5 4.9248 -0.86387 4. 94.6 4.8141 -1.3508 4. 94.7 4.6553 -1.8243 4. 94.8 4.4501 -2.2796 4. 94.9 4.2005 -2.7121 4. 95. 3.9091 -3.1176 4. 95.1 3.5786 -3.492 4. 95.2 3.2124 -3.8315 4. 95.3 2.8142 -4.1328 4. 95.4 2.3879 -4.3929 4. 95.5 1.9378 -4.6092 4. 95.6 1.4684 -4.7795 4. 95.7 0.98428 -4.9022 4. 95.8 0.49037 -4.9759 4. 95.9 -0.0084204 -5. 4. 96. -0.50713 -4.9742 4. 96.1 -1.0008 -4.8988 4. 96.2 -1.4845 -4.7746 4. 96.3 -1.9533 -4.6027 4. 96.4 -2.4027 -4.3849 4. 96.5 -2.8281 -4.1233 4. 96.6 -3.2253 -3.8207 4. 96.7 -3.5903 -3.4799 4. 96.8 -3.9195 -3.1044 4. 96.9 -4.2097 -2.6979 4. 97. -4.4578 -2.2646 4. 97.1 -4.6614 -1.8086 4. 97.2 -4.8186 -1.3346 4. 97.3 -4.9277 -0.84727 4. 97.4 -4.9876 -0.35151 4. 97.5 -4.9978 0.14776 4. 97.6 -4.9582 0.64556 4. 97.7 -4.869 1.1369 4. 97.8 -4.7313 1.6169 4. 97.9 -4.5464 2.0808 4. 98. -4.3162 2.524 4. 98.1 -4.0429 2.9419 4. 98.2 -3.7293 3.3305 4. 98.3 -3.3785 3.6859 4. 98.4 -2.9939 4.0045 4. 98.5 -2.5796 4.2832 4. 98.6 -2.1394 4.5192 4. 98.7 -1.678 4.71 4. 98.8 -1.1998 4.8539 4. 98.9 -0.70962 4.9494 4. 99. -0.21238 4.9955 4. 99.1 0.28699 4.9918 4. 99.2 0.78349 4.9382 4. 99.3 1.2722 4.8355 4. 99.4 1.7482 4.6844 4. 99.5 2.2067 4.4867 4. 99.6 2.6433 4.2442 4. 99.7 3.0534 3.9594 4. 99.8 3.4332 3.635 4. 99.9 3.7786 3.2744 4. 100. 4.0864 2.8812 4. Gnucap System status iterations: op=0, dc=0, tran=4028, fourier=0, total=5040 transient timesteps: accepted=1005, rejected=7, total=1012 nodes: user=2, subckt=0, model=0, total=2 dctran density=50.0%, ac density=50.0% #Time v(1) v(2) iter(0) 0. 0. 0. 0. 0.001 5. -0.005 4. 83.333u 5. -416.67u 4. 6.9444u 5. -34.722u 4. 578.7n 5. -2.8935u 4. 48.225n 5. -241.13n 4. 4.0188n 5. -20.094n 4. 334.9p 5. -1.6745n 4. 167.45p 5. -837.25p 4. 277.45p 5. -1.3872n 2. 0.0029412 5. -0.014706 2. 0.035294 4.9969 -0.17642 2. 0.1 4.975 -0.49904 4. 0.2 4.9004 -0.99281 4. 0.3 4.777 -1.4767 4. 0.4 4.6058 -1.9458 4. 0.5 4.3888 -2.3956 4. 0.6 4.1279 -2.8214 4. 0.7 3.8259 -3.2191 4. 0.8 3.4857 -3.5847 4. 0.9 3.1108 -3.9145 4. 1. 2.7048 -4.2053 4. 1.1 2.2718 -4.4541 4. 1.2 1.8162 -4.6585 4. 1.3 1.3424 -4.8164 4. 1.4 0.85529 -4.9263 4. 1.5 0.35963 -4.9871 4. 1.6 -0.13963 -4.998 4. 1.7 -0.63749 -4.9592 4. 1.8 -1.129 -4.8709 4. 1.9 -1.6092 -4.734 4. 2. -2.0734 -4.5498 4. 2.1 -2.5169 -4.3203 4. 2.2 -2.9353 -4.0477 4. 2.3 -3.3245 -3.7347 4. 2.4 -3.6804 -3.3845 4. 2.5 -3.9997 -3.0005 4. 2.6 -4.279 -2.5865 4. 2.7 -4.5157 -2.1468 4. 2.8 -4.7073 -1.6856 4. 2.9 -4.852 -1.2077 4. 3. -4.9482 -0.71767 4. 3.1 -4.9951 -0.2205 4. 3.2 -4.9922 0.27887 2. 3.3 -4.9395 0.77545 4. 3.4 -4.8375 1.2643 4. 3.5 -4.6873 1.7405 4. 3.6 -4.4903 2.1994 4. 3.7 -4.2485 2.6364 4. 3.8 -3.9643 3.047 4. 3.9 -3.6406 3.4272 4. 4. -3.2806 3.7733 4. 4.1 -2.8878 4.0817 4. 4.2 -2.4663 4.3494 4. 4.3 -2.0201 4.5737 4. 4.4 -1.5538 4.7524 4. 4.5 -1.072 4.8837 4. 4.6 -0.57949 4.9663 4. 4.7 -0.08121 4.9993 4. 4.8 0.41788 4.9825 4. 4.9 0.91281 4.916 4. 5. 1.3986 4.8004 4. 5.1 1.8705 4.6369 4. 5.2 2.3237 4.4272 4. 5.3 2.7537 4.1734 4. 5.4 3.1563 3.8779 4. 5.5 3.5274 3.5437 4. 5.6 3.8633 3.1741 4. 5.7 4.1606 2.773 4. 5.8 4.4165 2.3441 4. 5.9 4.6283 1.8919 4. 6. 4.7939 1.4208 4. 6.1 4.9117 0.93547 4. 6.2 4.9805 0.44086 4. 6.3 4.9997 -0.058151 4. 6.4 4.9689 -0.55658 4. 6.5 4.8886 -1.0495 4. 6.6 4.7596 -1.5319 4. 6.7 4.583 -1.999 4. 6.8 4.3608 -2.4462 4. 6.9 4.095 -2.869 4. 7. 3.7884 -3.2631 4. 7.1 3.444 -3.6248 4. 7.2 3.0653 -3.9502 4. 7.3 2.6559 -4.2363 4. 7.4 2.2201 -4.4801 4. 7.5 1.7621 -4.6792 4. 7.6 1.2866 -4.8316 4. 7.7 0.79823 -4.9359 4. 7.8 0.30189 -4.9909 4. 7.9 -0.19746 -4.9961 4. 8. -0.69484 -4.9515 4. 8.1 -1.1853 -4.8575 4. 8.2 -1.6639 -4.715 4. 8.3 -2.1259 -4.5255 4. 8.4 -2.5668 -4.2909 4. 8.5 -2.982 -4.0135 4. 8.6 -3.3674 -3.696 4. 8.7 -3.7193 -3.3416 4. 8.8 -4.0341 -2.954 4. 8.9 -4.3087 -2.5368 4. 9. -4.5402 -2.0944 4. 9.1 -4.7265 -1.6311 4. 9.2 -4.8656 -1.1514 4. 9.3 -4.9562 -0.66036 4. 9.4 -4.9974 -0.16268 4. 9.5 -4.9887 0.33662 4. 9.6 -4.9302 0.83256 4. 9.7 -4.8226 1.3202 4. 9.8 -4.6668 1.7947 4. 9.9 -4.4645 2.2512 4. 10. -4.2177 2.6853 4. 10.1 -3.9288 3.0927 4. 10.2 -3.6007 3.4691 4. 10.3 -3.2367 3.811 4. 10.4 -2.8404 4.1149 4. 10.5 -2.4158 4.3777 4. 10.6 -1.967 4.5968 4. 10.7 -1.4987 4.7701 4. 10.8 -1.0154 4.8958 4. 10.9 -0.52198 4.9727 4. 11. -0.023351 4.9999 4. 11.1 0.47551 4.9773 4. 11.2 0.96963 4.9051 4. 11.3 1.4541 4.7839 4. 11.4 1.924 4.615 4. 11.5 2.3748 4.4 4. 11.6 2.8018 4.1412 4. 11.7 3.201 3.8411 4. 11.8 3.5681 3.5026 4. 11.9 3.8997 3.1292 4. 12. 4.1924 2.7246 4. 12.1 4.4433 2.2928 4. 12.2 4.6499 1.8382 4. 12.3 4.81 1.3652 4. 12.4 4.9222 0.87857 4. 12.5 4.9853 0.38319 4. 12.6 4.9987 -0.116 4. 12.7 4.9622 -0.61404 4. 12.8 4.8762 -1.106 4. 12.9 4.7415 -1.5868 4. 13. 4.5596 -2.0519 4. 13.1 4.3322 -2.4965 4. 13.2 4.0615 -2.9162 4. 13.3 3.7504 -3.3068 4. 13.4 3.4018 -3.6644 4. 13.5 3.0193 -3.9854 4. 13.6 2.6067 -4.2667 4. 13.7 2.1681 -4.5055 4. 13.8 1.7079 -4.6993 4. 13.9 1.2306 -4.8462 4. 14. 0.74106 -4.9448 4. 14.1 0.24411 -4.994 4. 14.2 -0.25526 -4.9935 4. 14.3 -0.75209 -4.9431 4. 14.4 -1.2414 -4.8434 4. 14.5 -1.7184 -4.6954 4. 14.6 -2.1782 -4.5006 4. 14.7 -2.6162 -4.2609 4. 14.8 -3.0282 -3.9787 4. 14.9 -3.41 -3.6568 4. 15. -3.7578 -3.2984 4. 15.1 -4.068 -2.9071 4. 15.2 -4.3377 -2.4868 4. 15.3 -4.5641 -2.0417 4. 15.4 -4.745 -1.5762 4. 15.5 -4.8786 -1.0951 4. 15.6 -4.9635 -0.60296 4. 15.7 -4.9989 -0.10484 4. 15.8 -4.9844 0.39433 4. 15.9 -4.9202 0.88956 4. 16. -4.807 1.3759 4. 16.1 -4.6457 1.8486 4. 16.2 -4.4382 2.3028 4. 16.3 -4.1863 2.734 4. 16.4 -3.8927 3.1379 4. 16.5 -3.5603 3.5106 4. 16.6 -3.1924 3.8482 4. 16.7 -2.7926 4.1475 4. 16.8 -2.365 4.4053 4. 16.9 -1.9137 4.6193 4. 17. -1.4434 4.7871 4. 17.1 -0.95868 4.9072 4. 17.2 -0.4644 4.9784 4. 17.3 0.034511 4.9999 4. 17.4 0.53308 4.9715 4. 17.5 1.0263 4.8935 4. 17.6 1.5093 4.7667 4. 17.7 1.9773 4.5924 4. 17.8 2.4255 4.3723 4. 17.9 2.8496 4.1085 4. 18. 3.2452 3.8038 4. 18.1 3.6084 3.4611 4. 18.2 3.9357 3.0839 4. 18.3 4.2237 2.6759 4. 18.4 4.4695 2.2413 4. 18.5 4.6708 1.7842 4. 18.6 4.8255 1.3094 4. 18.7 4.932 0.82155 4. 18.8 4.9894 0.32548 4. 18.9 4.997 -0.17384 4. 19. 4.9547 -0.67143 4. 19.1 4.863 -1.1623 4. 19.2 4.7228 -1.6416 4. 19.3 4.5355 -2.1045 4. 19.4 4.303 -2.5464 4. 19.5 4.0275 -2.963 4. 19.6 3.7119 -3.3499 4. 19.7 3.3592 -3.7035 4. 19.8 2.973 -4.0201 4. 19.9 2.5572 -4.2966 4. 20. 2.1158 -4.5303 4. 20.1 1.6534 -4.7187 4. 20.2 1.1744 -4.8601 4. 20.3 0.68378 -4.953 4. 20.4 0.18631 -4.9965 4. 20.5 -0.31303 -4.9902 4. 20.6 -0.80924 -4.9341 4. 20.7 -1.2974 -4.8287 4. 20.8 -1.7726 -4.6752 4. 20.9 -2.2301 -4.4751 4. 21. -2.6654 -4.2303 4. 21.1 -3.0741 -3.9434 4. 21.2 -3.4521 -3.6171 4. 21.3 -3.7957 -3.2547 4. 21.4 -4.1014 -2.8598 4. 21.5 -4.3662 -2.4364 4. 21.6 -4.5875 -1.9888 4. 21.7 -4.763 -1.5212 4. 21.8 -4.891 -1.0385 4. 21.9 -4.9702 -0.54548 4. 22. -4.9998 -0.046982 4. 22.1 -4.9795 0.45198 4. 22.2 -4.9096 0.94644 4. 22.3 -4.7907 1.4315 4. 22.4 -4.624 1.9022 4. 22.5 -4.4112 2.354 4. 22.6 -4.1544 2.7822 4. 22.7 -3.8562 3.1828 4. 22.8 -3.5195 3.5515 4. 22.9 -3.1476 3.8849 4. 23. -2.7444 4.1795 4. 23.1 -2.3138 4.4324 4. 23.2 -1.8601 4.6411 4. 23.3 -1.3879 4.8035 4. 23.4 -0.90183 4.918 4. 23.5 -0.40676 4.9834 4. 23.6 0.092369 4.9991 4. 23.7 0.59058 4.965 4. 23.8 1.0829 4.8813 4. 23.9 1.5644 4.749 4. 24. 2.0303 4.5692 4. 24.1 2.476 4.3439 4. 24.2 2.8969 4.0753 4. 24.3 3.289 3.766 4. 24.4 3.6482 3.4191 4. 24.5 3.9711 3.0381 4. 24.6 4.2544 2.6269 4. 24.7 4.4952 2.1894 4. 24.8 4.6911 1.7301 4. 24.9 4.8403 1.2535 4. 25. 4.9412 0.76442 4. 25.1 4.9928 0.26772 4. 25.2 4.9946 -0.23166 2. 25.3 4.9466 -0.72872 4. 25.4 4.8493 -1.2185 4. 25.5 4.7035 -1.6962 4. 25.6 4.5109 -2.1569 4. 25.7 4.2732 -2.5961 4. 25.8 3.9929 -3.0094 4. 25.9 3.6728 -3.3927 4. 26. 3.3161 -3.7421 4. 26.1 2.9263 -4.0542 4. 26.2 2.5073 -4.3259 4. 26.3 2.0633 -4.5544 4. 26.4 1.5987 -4.7375 4. 26.5 1.1181 -4.8734 4. 26.6 0.62642 -4.9606 4. 26.7 0.12847 -4.9983 4. 26.8 -0.37076 -4.9862 4. 26.9 -0.86629 -4.9244 4. 27. -1.3532 -4.8134 4. 27.1 -1.8266 -4.6544 4. 27.2 -2.2817 -4.449 4. 27.3 -2.7142 -4.1992 4. 27.4 -3.1195 -3.9075 4. 27.5 -3.4937 -3.5769 4. 27.6 -3.8331 -3.2105 4. 27.7 -4.1342 -2.8122 4. 27.8 -4.3941 -2.3857 4. 27.9 -4.6102 -1.9355 4. 28. -4.7803 -1.466 4. 28.1 -4.9026 -0.98187 4. 28.2 -4.9761 -0.48793 4. 28.3 -5. 0.01088 4. 28.4 -4.974 0.50958 4. 28.5 -4.8983 1.0032 4. 28.6 -4.7738 1.4868 4. 28.7 -4.6017 1.9556 4. 28.8 -4.3837 2.4048 4. 28.9 -4.1219 2.8301 4. 29. -3.8191 3.2272 4. 29.1 -3.4781 3.592 4. 29.2 -3.1025 3.9211 4. 29.3 -2.6959 4.211 4. 29.4 -2.2624 4.4589 4. 29.5 -1.8063 4.6623 4. 29.6 -1.3322 4.8193 4. 29.7 -0.84486 4.9281 4. 29.8 -0.34906 4.9878 4. 29.9 0.15021 4.9977 4. 30. 0.64799 4.9578 4. 30.1 1.1393 4.8685 4. 30.2 1.6193 4.7305 4. 30.3 2.0831 4.5454 4. 30.4 2.5261 4.315 4. 30.5 2.9439 4.0415 4. 30.6 3.3324 3.7277 4. 30.7 3.6876 3.3767 4. 30.8 4.006 2.992 4. 30.9 4.2845 2.5775 4. 31. 4.5202 2.1372 4. 31.1 4.7109 1.6757 4. 31.2 4.8545 1.1974 4. 31.3 4.9497 0.70719 4. 31.4 4.9956 0.20992 4. 31.5 4.9916 -0.28944 2. 31.6 4.9378 -0.78591 4. 31.7 4.8348 -1.2745 4. 31.8 4.6836 -1.7505 4. 31.9 4.4856 -2.2089 4. 32. 4.2429 -2.6454 4. 32.1 3.9579 -3.0554 4. 32.2 3.6333 -3.4349 4. 32.3 3.2726 -3.7802 4. 32.4 2.8792 -4.0878 4. 32.5 2.4571 -4.3546 4. 32.6 2.0104 -4.578 4. 32.7 1.5437 -4.7557 4. 32.8 1.0616 -4.886 4. 32.9 0.56897 -4.9675 4. 33. 0.070621 -4.9995 4. 33.1 -0.42843 -4.9816 4. 33.2 -0.92322 -4.914 4. 33.3 -1.4088 -4.7974 4. 33.4 -1.8803 -4.633 4. 33.5 -2.3331 -4.4223 4. 33.6 -2.7626 -4.1675 4. 33.7 -3.1645 -3.8712 4. 33.8 -3.5349 -3.5362 4. 33.9 -3.87 -3.166 4. 34. -4.1665 -2.7641 4. 34.1 -4.4214 -2.3347 4. 34.2 -4.6323 -1.8821 4. 34.3 -4.7969 -1.4106 4. 34.4 -4.9137 -0.92507 4. 34.5 -4.9814 -0.43031 4. 34.6 -4.9995 0.06874 4. 34.7 -4.9677 0.5671 4. 34.8 -4.8864 1.0598 4. 34.9 -4.7563 1.5419 4. 35. -4.5788 2.0087 4. 35.1 -4.3556 2.4554 4. 35.2 -4.0889 2.8776 4. 35.3 -3.7815 3.2712 4. 35.4 -3.4363 3.632 4. 35.5 -3.0569 3.9567 4. 35.6 -2.6469 4.2419 4. 35.7 -2.2106 4.4848 4. 35.8 -1.7522 4.6829 4. 35.9 -1.2764 4.8343 4. 36. -0.78777 4.9376 4. 36.1 -0.29132 4.9915 4. 36.2 0.20804 4.9957 4. 36.3 0.70532 4.95 4. 36.4 1.1956 4.855 4. 36.5 1.6739 4.7115 4. 36.6 2.1355 4.521 4. 36.7 2.5758 4.2854 4. 36.8 2.9905 4.0071 4. 36.9 3.3753 3.6888 4. 37. 3.7264 3.3338 4. 37.1 4.0404 2.9454 4. 37.2 4.314 2.5277 4. 37.3 4.5446 2.0848 4. 37.4 4.7299 1.621 4. 37.5 4.868 1.1411 4. 37.6 4.9576 0.64986 4. 37.7 4.9977 0.15209 4. 37.8 4.9879 -0.34719 4. 37.9 4.9284 -0.843 4. 38. 4.8198 -1.3304 4. 38.1 4.663 -1.8046 4. 38.2 4.4597 -2.2607 4. 38.3 4.212 -2.6943 4. 38.4 3.9222 -3.101 4. 38.5 3.5933 -3.4768 4. 38.6 3.2286 -3.8179 4. 38.7 2.8317 -4.1209 4. 38.8 2.4065 -4.3828 4. 38.9 1.9573 -4.601 4. 39. 1.4886 -4.7733 4. 39.1 1.005 -4.898 4. 39.2 0.51145 -4.9738 4. 39.3 0.012761 -5. 4. 39.4 -0.48605 -4.9763 4. 39.5 -0.98002 -4.903 4. 39.6 -1.4642 -4.7808 4. 39.7 -1.9338 -4.6109 4. 39.8 -2.3841 -4.395 4. 39.9 -2.8106 -4.1353 4. 40. -3.2091 -3.8343 4. 40.1 -3.5756 -3.4951 4. 40.2 -3.9064 -3.121 4. 40.3 -4.1982 -2.7157 4. 40.4 -4.4481 -2.2834 4. 40.5 -4.6537 -1.8283 4. 40.6 -4.8129 -1.355 4. 40.7 -4.9241 -0.86814 4. 40.8 -4.9861 -0.37263 4. 40.9 -4.9984 0.12659 4. 41. -4.9608 0.62455 4. 41.1 -4.8738 1.1163 4. 41.2 -4.7381 1.5969 4. 41.3 -4.5552 2.0616 4. 41.4 -4.3269 2.5057 4. 41.5 -4.0553 2.9248 4. 41.6 -3.7434 3.3147 4. 41.7 -3.3941 3.6716 4. 41.8 -3.0109 3.9918 4. 41.9 -2.5977 4.2722 4. 42. -2.1586 4.5101 4. 42.1 -1.6979 4.7029 4. 42.2 -1.2203 4.8488 4. 42.3 -0.73058 4.9463 4. 42.4 -0.23354 4.9945 4. 42.5 0.26584 4.9929 4. 42.6 0.76256 4.9415 4. 42.7 1.2517 4.8408 4. 42.8 1.7283 4.6918 4. 42.9 2.1877 4.496 4. 43. 2.6253 4.2553 4. 43.1 3.0366 3.9723 4. 43.2 3.4177 3.6495 4. 43.3 3.7647 3.2904 4. 43.4 4.0742 2.8985 4. 43.5 4.343 2.4776 4. 43.6 4.5685 2.032 4. 43.7 4.7484 1.5662 4. 43.8 4.8809 1.0847 4. 43.9 4.9648 0.59244 4. 44. 4.9991 0.09425 4. 44.1 4.9836 -0.40488 4. 44.2 4.9183 -0.89998 4. 44.3 4.804 -1.3861 4. 44.4 4.6418 -1.8584 4. 44.5 4.4333 -2.3121 4. 44.6 4.1805 -2.7428 4. 44.7 3.8861 -3.1462 4. 44.8 3.5529 -3.5181 4. 44.9 3.1842 -3.855 4. 45. 2.7838 -4.1534 4. 45.1 2.3556 -4.4103 4. 45.2 1.9039 -4.6233 4. 45.3 1.4333 -4.7902 4. 45.4 0.94829 -4.9093 4. 45.5 0.45386 -4.9794 4. 45.6 -0.045102 -4.9998 4. 45.7 -0.54361 -4.9704 4. 45.8 -1.0367 -4.8913 4. 45.9 -1.5194 -4.7635 4. 46. -1.987 -4.5882 4. 46.1 -2.4348 -4.3671 4. 46.2 -2.8583 -4.1025 4. 46.3 -3.2532 -3.7969 4. 46.4 -3.6158 -3.4534 4. 46.5 -3.9422 -3.0755 4. 46.6 -4.2293 -2.667 4. 46.7 -4.4743 -2.2318 4. 46.8 -4.6746 -1.7743 4. 46.9 -4.8283 -1.2992 4. 47. -4.9338 -0.8111 4. 47.1 -4.9901 -0.31491 4. 47.2 -4.9966 0.18443 4. 47.3 -4.9533 0.68192 4. 47.4 -4.8606 1.1726 4. 47.5 -4.7193 1.6516 4. 47.6 -4.5311 2.1141 4. 47.7 -4.2976 2.5556 4. 47.8 -4.0212 2.9715 4. 47.9 -3.7048 3.3578 4. 48. -3.3513 3.7106 4. 48.1 -2.9645 4.0264 4. 48.2 -2.5481 4.302 4. 48.3 -2.1062 4.5347 4. 48.4 -1.6434 4.7222 4. 48.5 -1.1641 4.8626 4. 48.6 -0.67329 4.9545 4. 48.7 -0.17572 4.9969 4. 48.8 0.3236 4.9895 4. 48.9 0.81969 4.9324 4. 49. 1.3076 4.826 4. 49.1 1.7825 4.6715 4. 49.2 2.2396 4.4704 4. 49.3 2.6743 4.2247 4. 49.4 3.0824 3.9368 4. 49.5 3.4597 3.6097 4. 49.6 3.8026 3.2466 4. 49.7 4.1074 2.8511 4. 49.8 4.3714 2.4272 4. 49.9 4.5917 1.979 4. 50. 4.7662 1.5111 4. 50.1 4.8931 1.0282 4. 50.2 4.9713 0.53495 4. 50.3 4.9999 0.036392 4. 50.4 4.9786 -0.46253 4. 50.5 4.9076 -0.95684 4. 50.6 4.7877 -1.4416 4. 50.7 4.62 -1.912 4. 50.8 4.4062 -2.3633 4. 50.9 4.1485 -2.791 4. 51. 3.8494 -3.1909 4. 51.1 3.5119 -3.559 4. 51.2 3.1394 -3.8916 4. 51.3 2.7356 -4.1853 4. 51.4 2.3044 -4.4373 4. 51.5 1.8503 -4.645 4. 51.6 1.3777 -4.8064 4. 51.7 0.89141 -4.9199 4. 51.8 0.3962 -4.9843 4. 51.9 -0.10296 -4.9989 4. 52. -0.60109 -4.9637 4. 52.1 -1.0932 -4.879 4. 52.2 -1.5745 -4.7456 4. 52.3 -2.04 -4.5649 4. 52.4 -2.4852 -4.3387 4. 52.5 -2.9056 -4.0691 4. 52.6 -3.297 -3.759 4. 52.7 -3.6555 -3.4114 4. 52.8 -3.9775 -3.0297 4. 52.9 -4.2599 -2.6178 4. 53. -4.4998 -2.1799 4. 53.1 -4.6948 -1.7201 4. 53.2 -4.843 -1.2432 4. 53.3 -4.9428 -0.75395 4. 53.4 -4.9934 -0.25714 4. 53.5 -4.9941 0.24224 2. 53.6 -4.9451 0.7392 4. 53.7 -4.8467 1.2288 4. 53.8 -4.6999 1.7061 4. 53.9 -4.5063 2.1664 4. 54. -4.2677 2.6051 4. 54.1 -3.9866 3.0178 4. 54.2 -3.6657 3.4004 4. 54.3 -3.3082 3.7491 4. 54.4 -2.9177 4.0604 4. 54.5 -2.4981 4.3312 4. 54.6 -2.0536 4.5588 4. 54.7 -1.5886 4.7409 4. 54.8 -1.1078 4.8757 4. 54.9 -0.61591 4.9619 4. 55. -0.11788 4.9986 4. 55.1 0.38132 4.9854 4. 55.2 0.87672 4.9225 4. 55.3 1.3634 4.8105 4. 55.4 1.8364 4.6505 4. 55.5 2.2912 4.4442 4. 55.6 2.723 4.1935 4. 55.7 3.1278 3.9009 4. 55.8 3.5013 3.5695 4. 55.9 3.8399 3.2024 4. 56. 4.1402 2.8034 4. 56.1 4.3992 2.3764 4. 56.2 4.6143 1.9258 4. 56.3 4.7833 1.4559 4. 56.4 4.9047 0.97148 4. 56.5 4.9772 0.47739 4. 56.6 5. -0.02147 4. 56.7 4.9729 -0.52011 4. 56.8 4.8962 -1.0136 4. 56.9 4.7707 -1.4969 4. 57. 4.5976 -1.9653 4. 57.1 4.3786 -2.4141 4. 57.2 4.1159 -2.8389 4. 57.3 3.8122 -3.2353 4. 57.4 3.4705 -3.5994 4. 57.5 3.0941 -3.9276 4. 57.6 2.6869 -4.2167 4. 57.7 2.2529 -4.4637 4. 57.8 1.7964 -4.6661 4. 57.9 1.322 -4.8221 4. 58. 0.83442 -4.9299 4. 58.1 0.3385 -4.9885 4. 58.2 -0.1608 -4.9974 4. 58.3 -0.65849 -4.9564 4. 58.4 -1.1496 -4.866 4. 58.5 -1.6293 -4.7271 4. 58.6 -2.0927 -4.541 4. 58.7 -2.5352 -4.3096 4. 58.8 -2.9525 -4.0352 4. 58.9 -3.3402 -3.7206 4. 59. -3.6947 -3.3688 4. 59.1 -4.0123 -2.9835 4. 59.2 -4.2899 -2.5684 4. 59.3 -4.5247 -2.1276 4. 59.4 -4.7144 -1.6657 4. 59.5 -4.857 -1.1871 4. 59.6 -4.9512 -0.6967 4. 59.7 -4.996 -0.19934 4. 59.8 -4.991 0.30001 4. 59.9 -4.9362 0.79637 4. 60. -4.8321 1.2848 4. 60.1 -4.6799 1.7604 4. 60.2 -4.4809 2.2184 4. 60.3 -4.2373 2.6543 4. 60.4 -3.9514 3.0638 4. 60.5 -3.6261 3.4426 4. 60.6 -3.2646 3.7872 4. 60.7 -2.8705 4.0939 4. 60.8 -2.4478 4.3598 4. 60.9 -2.0007 4.5823 4. 61. -1.5337 4.759 4. 61.1 -1.0513 4.8882 4. 61.2 -0.55845 4.9687 4. 61.3 -0.060031 4.9996 4. 61.4 0.43899 4.9807 4. 61.5 0.93362 4.9121 4. 61.6 1.4189 4.7944 4. 61.7 1.8901 4.629 4. 61.8 2.3424 4.4174 4. 61.9 2.7714 4.1617 4. 62. 3.1727 3.8645 4. 62.1 3.5423 3.5287 4. 62.2 3.8767 3.1578 4. 62.3 4.1723 2.7553 4. 62.4 4.4264 2.3254 4. 62.5 4.6362 1.8722 4. 62.6 4.7999 1.4004 4. 62.7 4.9156 0.91466 4. 62.8 4.9823 0.41976 4. 62.9 4.9994 -0.07933 4. 63. 4.9665 -0.57762 4. 63.1 4.8841 -1.0702 4. 63.2 4.753 -1.552 4. 63.3 4.5745 -2.0184 4. 63.4 4.3504 -2.4646 4. 63.5 4.0828 -2.8863 4. 63.6 3.7745 -3.2792 4. 63.7 3.4286 -3.6393 4. 63.8 3.0485 -3.9632 4. 63.9 2.638 -4.2475 4. 64. 2.2011 -4.4894 4. 64.1 1.7423 -4.6866 4. 64.2 1.2661 -4.837 4. 64.3 0.77731 -4.9392 4. 64.4 0.28075 -4.9921 4. 64.5 -0.21862 -4.9952 4. 64.6 -0.71581 -4.9485 4. 64.7 -1.2059 -4.8524 4. 64.8 -1.6839 -4.7079 4. 64.9 -2.1451 -4.5165 4. 65. -2.5849 -4.28 4. 65.1 -2.999 -4.0008 4. 65.2 -3.3831 -3.6817 4. 65.3 -3.7335 -3.3259 4. 65.4 -4.0466 -2.9369 4. 65.5 -4.3194 -2.5186 4. 65.6 -4.549 -2.0751 4. 65.7 -4.7334 -1.611 4. 65.8 -4.8704 -1.1308 4. 65.9 -4.959 -0.63936 4. 66. -4.998 -0.14151 4. 66.1 -4.9872 0.35775 4. 66.2 -4.9266 0.85344 4. 66.3 -4.8169 1.3406 4. 66.4 -4.6592 1.8144 4. 66.5 -4.4549 2.2701 4. 66.6 -4.2063 2.7032 4. 66.7 -3.9157 3.1093 4. 66.8 -3.586 3.4844 4. 66.9 -3.2205 3.8247 4. 67. -2.8229 4.1269 4. 67.1 -2.3972 4.3879 4. 67.2 -1.9476 4.6051 4. 67.3 -1.4785 4.7764 4. 67.4 -0.99466 4.9001 4. 67.5 -0.50091 4.9748 4. 67.6 -0.0021701 5. 4. 67.7 0.49659 4.9753 4. 67.8 0.9904 4.9009 4. 67.9 1.4743 4.7777 4. 68. 1.9436 4.6068 4. 68.1 2.3934 4.3899 4. 68.2 2.8194 4.1293 4. 68.3 3.2172 3.8275 4. 68.4 3.5829 3.4875 4. 68.5 3.913 3.1127 4. 68.6 4.2039 2.7068 4. 68.7 4.453 2.274 4. 68.8 4.6576 1.8185 4. 68.9 4.8158 1.3448 4. 69. 4.9259 0.85771 4. 69.1 4.9869 0.36207 4. 69.2 4.9981 -0.13718 4. 69.3 4.9595 -0.63506 4. 69.4 4.8714 -1.1266 4. 69.5 4.7347 -1.6069 4. 69.6 4.5508 -2.0712 4. 69.7 4.3215 -2.5148 4. 69.8 4.0491 -2.9333 4. 69.9 3.7363 -3.3226 4. 70. 3.3863 -3.6788 4. 70.1 3.0024 -3.9982 4. 70.2 2.5886 -4.2777 4. 70.3 2.149 -4.5146 4. 70.4 1.688 -4.7065 4. 70.5 1.2101 -4.8514 4. 70.6 0.7201 -4.9479 4. 70.7 0.22296 -4.995 4. 70.8 -0.27641 -4.9924 4. 70.9 -0.77302 -4.9399 4. 71. -1.2619 -4.8381 4. 71.1 -1.7382 -4.6881 4. 71.2 -2.1972 -4.4914 4. 71.3 -2.6343 -4.2498 4. 71.4 -3.045 -3.9658 4. 71.5 -3.4255 -3.6423 4. 71.6 -3.7717 -3.2824 4. 71.7 -4.0803 -2.8898 4. 71.8 -4.3482 -2.4684 4. 71.9 -4.5728 -2.0224 4. 72. -4.7517 -1.5561 4. 72.1 -4.8832 -1.0744 4. 72.2 -4.966 -0.58193 4. 72.3 -4.9993 -0.083661 4. 72.4 -4.9827 0.41544 4. 72.5 -4.9164 0.9104 4. 72.6 -4.8011 1.3963 4. 72.7 -4.6379 1.8682 4. 72.8 -4.4284 2.3215 4. 72.9 -4.1747 2.7517 4. 73. -3.8794 3.1544 4. 73.1 -3.5454 3.5256 4. 73.2 -3.176 3.8617 4. 73.3 -2.775 4.1593 4. 73.4 -2.3463 4.4153 4. 73.5 -1.8941 4.6273 4. 73.6 -1.4231 4.7932 4. 73.7 -0.93789 4.9113 4. 73.8 -0.44331 4.9803 4. 73.9 0.055692 4.9997 4. 74. 0.55414 4.9692 4. 74.1 1.0471 4.8891 4. 74.2 1.5295 4.7603 4. 74.3 1.9967 4.584 4. 74.4 2.444 4.362 4. 74.5 2.867 4.0964 4. 74.6 3.2613 3.79 4. 74.7 3.6231 3.4458 4. 74.8 3.9487 3.0672 4. 74.9 4.235 2.658 4. 75. 4.479 2.2223 4. 75.1 4.6783 1.7644 4. 75.2 4.831 1.289 4. 75.3 4.9355 0.80065 4. 75.4 4.9907 0.30434 4. 75.5 4.9962 -0.19501 4. 75.6 4.9518 -0.69241 4. 75.7 4.8581 -1.1829 4. 75.8 4.7158 -1.6616 4. 75.9 4.5266 -2.1237 4. 76. 4.2922 -2.5647 4. 76.1 4.0149 -2.98 4. 76.2 3.6976 -3.3656 4. 76.3 3.3435 -3.7177 4. 76.4 2.956 -4.0327 4. 76.5 2.539 -4.3074 4. 76.6 2.0966 -4.5392 4. 76.7 1.6334 -4.7257 4. 76.8 1.1538 -4.865 4. 76.9 0.6628 -4.9559 4. 77. 0.16514 -4.9973 4. 77.1 -0.33417 -4.9888 4. 77.2 -0.83014 -4.9306 4. 77.3 -1.3178 -4.8232 4. 77.4 -1.7924 -4.6677 4. 77.5 -2.249 -4.4656 4. 77.6 -2.6833 -4.219 4. 77.7 -3.0907 -3.9303 4. 77.8 -3.4674 -3.6024 4. 77.9 -3.8094 -3.2386 4. 78. -4.1135 -2.8424 4. 78.1 -4.3765 -2.4179 4. 78.2 -4.5959 -1.9693 4. 78.3 -4.7694 -1.501 4. 78.4 -4.8953 -1.0178 4. 78.5 -4.9724 -0.52442 4. 78.6 -4.9999 -0.025802 4. 78.7 -4.9776 0.47307 4. 78.8 -4.9056 0.96723 4. 78.9 -4.7846 1.4517 4. 79. -4.6159 1.9218 4. 79.1 -4.4012 2.3726 4. 79.2 -4.1426 2.7998 4. 79.3 -3.8426 3.1991 4. 79.4 -3.5044 3.5664 4. 79.5 -3.1311 3.8982 4. 79.6 -2.7267 4.1911 4. 79.7 -2.295 4.4422 4. 79.8 -1.8405 4.6489 4. 79.9 -1.3675 4.8093 4. 80. -0.88099 4.9218 4. 80.1 -0.38565 4.9851 4. 80.2 0.11355 4.9987 4. 80.3 0.6116 4.9625 4. 80.4 1.1036 4.8767 4. 80.5 1.5845 4.7423 4. 80.6 2.0497 4.5606 4. 80.7 2.4944 4.3334 4. 80.8 2.9142 4.063 4. 80.9 3.3049 3.752 4. 81. 3.6627 3.4036 4. 81.1 3.9839 3.0213 4. 81.2 4.2654 2.6088 4. 81.3 4.5044 2.1703 4. 81.4 4.6984 1.7102 4. 81.5 4.8456 1.233 4. 81.6 4.9444 0.74348 4. 81.7 4.9939 0.24656 4. 81.8 4.9936 -0.25281 2. 81.9 4.9435 -0.74967 4. 82. 4.844 -1.239 4. 82.1 4.6963 -1.7161 4. 82.2 4.5017 -2.176 4. 82.3 4.2622 -2.6142 4. 82.4 3.9802 -3.0263 4. 82.5 3.6584 -3.4082 4. 82.6 3.3002 -3.7561 4. 82.7 2.9091 -4.0666 4. 82.8 2.4889 -4.3365 4. 82.9 2.044 -4.5631 4. 83. 1.5786 -4.7443 4. 83.1 1.0975 -4.8781 4. 83.2 0.6054 -4.9632 4. 83.3 0.1073 -4.9988 4. 83.4 -0.39188 -4.9846 4. 83.5 -0.88714 -4.9207 4. 83.6 -1.3736 -4.8076 4. 83.7 -1.8463 -4.6466 4. 83.8 -2.3006 -4.4393 4. 83.9 -2.7319 -4.1877 4. 84. -3.136 -3.8943 4. 84.1 -3.5088 -3.562 4. 84.2 -3.8466 -3.1943 4. 84.3 -4.1461 -2.7946 4. 84.4 -4.4042 -2.3671 4. 84.5 -4.6183 -1.916 4. 84.6 -4.7864 -1.4457 4. 84.7 -4.9068 -0.96109 4. 84.8 -4.9782 -0.46684 4. 84.9 -4.9999 0.03206 4. 85. -4.9718 0.53064 4. 85.1 -4.894 1.0239 4. 85.2 -4.7675 1.507 4. 85.3 -4.5934 1.9751 4. 85.4 -4.3735 2.4234 4. 85.5 -4.1099 2.8476 4. 85.6 -3.8054 3.2433 4. 85.7 -3.4629 3.6067 4. 85.8 -3.0858 3.9342 4. 85.9 -2.678 4.2224 4. 86. -2.2435 4.4684 4. 86.1 -1.7865 4.6699 4. 86.2 -1.3118 4.8249 4. 86.3 -0.82397 4.9316 4. 86.4 -0.32793 4.9892 4. 86.5 0.17138 4.9971 4. 86.6 0.66899 4.955 4. 86.7 1.1599 4.8636 4. 86.8 1.6393 4.7236 4. 86.9 2.1023 4.5366 4. 87. 2.5443 4.3042 4. 87.1 2.961 4.029 4. 87.2 3.3481 3.7135 4. 87.3 3.7018 3.361 4. 87.4 4.0186 2.975 4. 87.5 4.2954 2.5593 4. 87.6 4.5292 2.1181 4. 87.7 4.7179 1.6557 4. 87.8 4.8595 1.1768 4. 87.9 4.9527 0.68621 4. 88. 4.9964 0.18876 4. 88.1 4.9903 -0.31058 4. 88.2 4.9345 -0.80682 4. 88.3 4.8294 -1.295 4. 88.4 4.6761 -1.7703 4. 88.5 4.4762 -2.2279 4. 88.6 4.2316 -2.6633 4. 88.7 3.9449 -3.0721 4. 88.8 3.6188 -3.4503 4. 88.9 3.2565 -3.7941 4. 89. 2.8618 -4.1 4. 89.1 2.4386 -4.365 4. 89.2 1.991 -4.5865 4. 89.3 1.5236 -4.7622 4. 89.4 1.0409 -4.8904 4. 89.5 0.54792 -4.9699 4. 89.6 0.049442 -4.9998 4. 89.7 -0.44953 -4.9798 4. 89.8 -0.94403 -4.9101 4. 89.9 -1.4291 -4.7914 4. 90. -1.8999 -4.625 4. 90.1 -2.3518 -4.4124 4. 90.2 -2.7802 -4.1558 4. 90.3 -3.1809 -3.8577 4. 90.4 -3.5498 -3.5212 4. 90.5 -3.8834 -3.1495 4. 90.6 -4.1782 -2.7465 4. 90.7 -4.4313 -2.316 4. 90.8 -4.6402 -1.8624 4. 90.9 -4.8028 -1.3903 4. 91. -4.9176 -0.90424 4. 91.1 -4.9832 -0.4092 4. 91.2 -4.9992 0.089918 4. 91.3 -4.9653 0.58814 4. 91.4 -4.8819 1.0805 4. 91.5 -4.7497 1.5621 4. 91.6 -4.5702 2.0281 4. 91.7 -4.3451 2.4738 4. 91.8 -4.0767 2.8949 4. 91.9 -3.7676 3.2871 4. 92. -3.4209 3.6466 4. 92.1 -3.0401 3.9696 4. 92.2 -2.629 4.2531 4. 92.3 -2.1916 4.4941 4. 92.4 -1.7324 4.6903 4. 92.5 -1.2559 4.8397 4. 92.6 -0.76685 4.9408 4. 92.7 -0.27017 4.9927 4. 92.8 0.2292 4.9947 4. 92.9 0.72629 4.947 4. 93. 1.2161 4.8498 4. 93.1 1.6938 4.7043 4. 93.2 2.1547 4.5119 4. 93.3 2.594 4.2745 4. 93.4 3.0074 3.9944 4. 93.5 3.3909 3.6745 4. 93.6 3.7405 3.3179 4. 93.7 4.0528 2.9283 4. 93.8 4.3247 2.5094 4. 93.9 4.5534 2.0655 4. 94. 4.7368 1.601 4. 94.1 4.8728 1.1205 4. 94.2 4.9603 0.62885 4. 94.3 4.9983 0.13092 4. 94.4 4.9864 -0.36831 4. 94.5 4.9248 -0.86387 4. 94.6 4.8141 -1.3508 4. 94.7 4.6553 -1.8243 4. 94.8 4.4501 -2.2796 4. 94.9 4.2005 -2.7121 4. 95. 3.9091 -3.1176 4. 95.1 3.5786 -3.492 4. 95.2 3.2124 -3.8315 4. 95.3 2.8142 -4.1328 4. 95.4 2.3879 -4.3929 4. 95.5 1.9378 -4.6092 4. 95.6 1.4684 -4.7795 4. 95.7 0.98428 -4.9022 4. 95.8 0.49037 -4.9759 4. 95.9 -0.0084204 -5. 4. 96. -0.50713 -4.9742 4. 96.1 -1.0008 -4.8988 4. 96.2 -1.4845 -4.7746 4. 96.3 -1.9533 -4.6027 4. 96.4 -2.4027 -4.3849 4. 96.5 -2.8281 -4.1233 4. 96.6 -3.2253 -3.8207 4. 96.7 -3.5903 -3.4799 4. 96.8 -3.9195 -3.1044 4. 96.9 -4.2097 -2.6979 4. 97. -4.4578 -2.2646 4. 97.1 -4.6614 -1.8086 4. 97.2 -4.8186 -1.3346 4. 97.3 -4.9277 -0.84727 4. 97.4 -4.9876 -0.35151 4. 97.5 -4.9978 0.14776 4. 97.6 -4.9582 0.64556 4. 97.7 -4.869 1.1369 4. 97.8 -4.7313 1.6169 4. 97.9 -4.5464 2.0808 4. 98. -4.3162 2.524 4. 98.1 -4.0429 2.9419 4. 98.2 -3.7293 3.3305 4. 98.3 -3.3785 3.6859 4. 98.4 -2.9939 4.0045 4. 98.5 -2.5796 4.2832 4. 98.6 -2.1394 4.5192 4. 98.7 -1.678 4.71 4. 98.8 -1.1998 4.8539 4. 98.9 -0.70962 4.9494 4. 99. -0.21238 4.9955 4. 99.1 0.28699 4.9918 4. 99.2 0.78349 4.9382 4. 99.3 1.2722 4.8355 4. 99.4 1.7482 4.6844 4. 99.5 2.2067 4.4867 4. 99.6 2.6433 4.2442 4. 99.7 3.0534 3.9594 4. 99.8 3.4332 3.635 4. 99.9 3.7786 3.2744 4. 100. 4.0864 2.8812 4. Gnucap System status iterations: op=0, dc=0, tran=4028, fourier=0, total=10080 transient timesteps: accepted=2010, rejected=14, total=2024 nodes: user=2, subckt=0, model=0, total=2 dctran density=50.0%, ac density=50.0% tests/==out/param.0.ckt.out000066400000000000000000000000611316501211100157540ustar00rootroot00000000000000' # v(1) 27. 3. tests/==out/param.0a.ckt.out000066400000000000000000000000611316501211100161150ustar00rootroot00000000000000' # v(1) 0. 3. tests/==out/param.1.ckt.out000066400000000000000000000001621316501211100157570ustar00rootroot00000000000000'parameter test _a= 1. _b= 2. _c= 3. _d= 4. # v(1) v(2) 27. 1. 0.57143 tests/==out/param.10.ckt.out000066400000000000000000000006241316501211100160420ustar00rootroot00000000000000'parameter function call test ".param a='sin(1)' " ".eval a " a= 0.841470984807898 ".param b=sin(1) " ".eval b " b= 0.841470984807898 ".param c=pow(2,2) " ".eval c " c= 4. ".param d=pow(sqrt(2+2),2) " ".eval d " d= 4. ".param e='3+c' " ".eval e " e= 7. ".param f='c+3' " ".eval f " f= 7. ".param g=c+3 " ".eval g " g= 7. ".param h=3+c " .param h=3+c ^ ? syntax error ".eval h " h= 3. ".end " tests/==out/param.11.ckt.out000066400000000000000000000002641316501211100160430ustar00rootroot00000000000000 # v(1) v(2) v(3) v(4) v(5) v(6) v(7) 27. 28.96G 28.96G 28.96G 34.531p 8.854p 1.p 1.p tests/==out/param.2.ckt.out000066400000000000000000000001561316501211100157630ustar00rootroot00000000000000'parameter test a= 1. b= 2. c= 3. d= 4. # v(1) v(2) 27. 1. 0.57143 tests/==out/param.2a.ckt.out000066400000000000000000000001561316501211100161240ustar00rootroot00000000000000'parameter test a= 1. b= 2. c= 3. d= 4. # v(1) v(2) 27. 1. 0.57143 tests/==out/param.2b.ckt.out000066400000000000000000000001561316501211100161250ustar00rootroot00000000000000'parameter test a= 1. b=a+1 c=a+b d=c+1 # v(1) v(2) 27. 1. 0.57143 tests/==out/param.3.ckt.out000066400000000000000000000001411316501211100157560ustar00rootroot00000000000000'parameter test with subckt # v(1) v(2) 27. 78. 83. tests/==out/param.4.ckt.out000066400000000000000000000001411316501211100157570ustar00rootroot00000000000000'parameter test with subckt # v(1) v(2) 27. 13. 83. tests/==out/param.5.ckt.out000066400000000000000000000001561316501211100157660ustar00rootroot00000000000000'parameter test a= 1. b= 2. c= 3. d= 4. # v(1) v(2) 27. 1. 0.57143 tests/==out/param.6.ckt.out000066400000000000000000000004311316501211100157630ustar00rootroot00000000000000'parameter test with subckt .subckt foo ( a b ) v1 ( a b ) zzz .ends foo x1 ( 1 0 ) foo zzz=a x2 ( 2 0 ) foo zzz=83 # v(1) v(2) 27. 13. 83. .subckt foo ( a b ) v1 ( a b ) zzz .ends foo x1 ( 1 0 ) foo zzz=a x2 ( 2 0 ) foo zzz=83 tests/==out/param.7.ckt.out000066400000000000000000000006071316501211100157710ustar00rootroot00000000000000'parameter test with subckt .subckt foo ( a b c ) v1 ( a b ) zzz v2 ( b c ) xxx .ends foo x1 ( 1 0 3 ) foo xxx=b zzz=a x2 ( 2 0 4 ) foo xxx=a zzz=83 # v(1) v(2) v(3) v(4) 27. 13. 83. -923. -13. .subckt foo ( a b c ) v1 ( a b ) zzz v2 ( b c ) xxx .ends foo x1 ( 1 0 3 ) foo xxx=b zzz=a x2 ( 2 0 4 ) foo xxx=a zzz=83 tests/==out/param.8.ckt.out000066400000000000000000000004021316501211100157630ustar00rootroot00000000000000'parameter test a= 1. b= 2. c= 3. parameter d not specified, using default # v(1) v(2) parameter d not specified, using default r2: short circuit r2: short circuit r2: short circuit r2: short circuit 27. 1. 0. tests/==out/param.9.ckt.out000066400000000000000000000002031316501211100157630ustar00rootroot00000000000000' parameter d not specified, using default # v(1) parameter d not specified, using default 27. 0. tests/==out/parse.1.ckt.out000066400000000000000000000022541316501211100157750ustar00rootroot00000000000000#parser args check e0 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e1 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e2 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e3 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e4 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e5 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e6 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e7 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e10 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e11 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e12 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e13 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e14 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e15 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e16 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e17 ( 5 0 2 0 ) posy( 1., 2. ) odd=1 e00 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e01 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e02 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e03 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e04 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e05 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e06 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e07 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e20 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e21 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e22 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e23 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e24 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e25 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e26 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 e27 ( 5 0 2 0 ) posy( 1., 2. ) odd=0 tests/==out/probe-hidden.gc.out000066400000000000000000000017061316501211100166750ustar00rootroot00000000000000#Time hidden(0) 0. 0. 0.01 0. 1. 0. 2. 0. #Time hidden(0) 0. 0. 0.01 0. 1. 0. 2. 0. #Time hidden(0) 0. 0. 1. 1. 2. 0. #Time hidden(0) 0. 0. 1. 10. 2. 10. #Time hidden(0) 0. 0. 0.001 0. 0.1009 0. 0.2008 0. 0.3007 0. 0.4006 0. 0.5005 0. 0.6004 0. 0.7003 0. 0.8002 0. 0.9001 0. 1. 0. 1.0999 0. 1.1998 0. 1.2997 0. 1.3996 0. 1.4995 0. 1.5994 0. 1.6993 0. 1.7992 0. 1.8991 0. 1.999 0. 2. 0. tests/==out/s_tr.1.ckt.out000066400000000000000000000075671316501211100156460ustar00rootroot00000000000000'c check v1 ( 1 0 ) DC pulse iv= 0. pv= 1. delay= 0. rise= 0.01 fall= 0.01 width= 1.K period= 1.K AC 1. r1 ( 1 2 ) 1. c2 ( 2 0 ) 1. #Time v(1) v(2) 0. 0. 0. 48.225n 4.8225u 233.f 222.41n 22.241u 2.59p 325.97n 32.597u 5.429p 487.44n 48.743u 11.996p 21.123u 0.0021123 22.309n 253.63u 0.025363 3.216u 0.0015005 0.15004 112.5u 0.0056046 0.56046 0.001567 0.01 0.99999 0.004982 0.015 0.99999 0.0099447 0.02 0.99999 0.014883 0.025 0.99999 0.019796 0.033333 0.99999 0.02793 0.1 0.99999 0.090644 0.2 0.99999 0.17725 0.3 0.99999 0.2556 0.4 0.99999 0.3265 0.5 0.99999 0.39064 0.6 0.99999 0.44867 0.7 1. 0.50118 0.8 1. 0.54869 0.9 1. 0.59167 1. 1. 0.63056 #Time v(1) v(2) 1. 1. 0.63056 1.001 1. 0.63093 1.1 1. 0.66574 1.2 1. 0.69758 1.3 1. 0.72638 1.4 1. 0.75244 1.5 1. 0.77601 1.6 1. 0.79735 1.7 1. 0.81665 1.8 1. 0.83411 1.9 1. 0.84991 2. 1. 0.8642 #Time v(1) v(2) 4. 1. 0.98165 4.1 1. 0.9834 4.2 1. 0.98498 4.3 1. 0.98641 4.4 1. 0.9877 4.5 1. 0.98888 4.6 1. 0.98994 4.7 1. 0.99089 4.8 1. 0.99176 4.9 1. 0.99255 5. 1. 0.99326 #Time v(1) v(2) 5. 1. 0.99326 5.001 1. 0.99326 5.101 1. 0.9939 5.2009 1. 0.99448 5.3009 1. 0.99501 5.4009 1. 0.99548 5.5008 1. 0.99591 5.6008 1. 0.9963 5.7008 1. 0.99666 5.8007 1. 0.99697 5.9007 1. 0.99726 6.0007 1. 0.99752 6.1006 1. 0.99776 6.2006 1. 0.99797 6.3006 1. 0.99816 6.4005 1. 0.99834 6.5005 1. 0.9985 6.6005 1. 0.99864 6.7004 1. 0.99877 6.8004 1. 0.99889 6.9004 1. 0.99899 7.0003 1. 0.99909 7.1003 1. 0.99918 7.2003 1. 0.99925 7.3002 1. 0.99933 7.4002 1. 0.99939 7.5002 1. 0.99945 7.6001 1. 0.9995 7.7001 1. 0.99955 7.8001 1. 0.99959 7.9 1. 0.99963 8. 1. 0.99967 8.1 1. 0.9997 8.2 1. 0.99973 8.3 1. 0.99975 8.4 1. 0.99978 8.5 1. 0.9998 8.6 1. 0.99982 8.7 1. 0.99983 8.8 1. 0.99985 8.9 1. 0.99986 9. 1. 0.99988 #Time v(1) v(2) 9. 1. 0.99988 9.001 1. 0.99988 9.1 1. 0.99989 9.2 1. 0.9999 9.3 1. 0.99991 9.4 1. 0.99992 9.5 1. 0.99993 9.6 1. 0.99993 9.7 1. 0.99994 9.8 1. 0.99994 9.9 1. 0.99995 10. 1. 0.99995 Gnucap System status iterations: op=0, dc=0, tran=34, fourier=0, total=499 transient timesteps: accepted=122, rejected=5, total=127 nodes: user=2, subckt=0, model=0, total=2 dctran density=100.0%, ac density=100.0% tests/==out/s_tr.2.gc.out000066400000000000000000000012731316501211100154430ustar00rootroot00000000000000"v1 (1 0) pulse (0 1) " ".print tran v(1) " ".tran 0 1 .1 " #Time v(1) 0. 0. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. "r1 (2 0) 1 " ".tran trace all " #Time v(1) 0. 0. 0.001 1. 0.002 1. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. ".end " tests/==out/s_tr.3.gc.out000066400000000000000000000012161316501211100154410ustar00rootroot00000000000000"v1 (1 0) pulse (0 1) " "r1 (2 0) 1 " ".print tran v(1) " ".tran 0 1 .1 " #Time v(1) 0. 0. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. ".del r1 " ".tran " #Time v(1) 0. 0. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. ".end " tests/==out/s_tr.4.gc.out000066400000000000000000000012031316501211100154360ustar00rootroot00000000000000"v1 (1 0) pulse (0 1) " "r1 (2 0) 1 " ".print tran v(1) " ".tran 0 1 .1 " #Time v(1) 0. 0. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. ".tran " #Time v(1) 1. 1. 1.1 1. 1.2 1. 1.3 1. 1.4 1. 1.5 1. 1.6 1. 1.7 1. 1.8 1. 1.9 1. 2. 1. ".end " tests/==out/s_tr.5.gc.out000066400000000000000000000012031316501211100154370ustar00rootroot00000000000000"v1 (1 0) pulse (0 1) " ".print tran v(1) " ".tran 0 1 .1 " #Time v(1) 0. 0. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. "r1 (2 0) 1 " ".tran " #Time v(1) 0. 0. 0.1 1. 0.2 1. 0.3 1. 0.4 1. 0.5 1. 0.6 1. 0.7 1. 0.8 1. 0.9 1. 1. 1. ".end " tests/==out/s_tr.6.gc.out000066400000000000000000000004761316501211100154530ustar00rootroot00000000000000"v1 (1 0) pulse (0 1) " ".print tran v(1) " ".tran 0 1 " #Time v(1) 0. 0. 0.01 1. 0.02 1. 1. 1. "r1 (2 0) 1 " ".tran " #Time v(1) 0. 0. 0.01 1. 0.02 1. 1. 1. ".end " tests/==out/s_tr.6r.gc.out000066400000000000000000000020421316501211100156240ustar00rootroot00000000000000"v1 (1 0) pulse (0 1) " ".print tran v(1) timef(v1) errort(v1) eventt(v1) dtr(v1) " ".tran 0 1 1 trace rejected " #Time v(1) timef(v1) errort(v1) eventt(v1) dtr(v1) 0. 0. Inf 0. 0. Inf 0.01 1. 0.02344 0.02344 0. 0.01344 0.02 1. Inf 0. 0. Inf 1. 1. Inf 0. 0. Inf "r1 (2 0) 1 " ".tran trace rejected " #Time v(1) timef(v1) errort(v1) eventt(v1) dtr(v1) 0. 0. Inf 0. 0. Inf 0.01 1. 0.02344 0.02344 0. 0.01344 0.02 1. Inf 0. 0. Inf 1. 1. Inf 0. 0. Inf ".status notime " Gnucap System status iterations: op=0, dc=0, tran=11, fourier=0, total=30 transient timesteps: accepted=8, rejected=0, total=8 nodes: user=2, subckt=0, model=0, total=2 dctran density=50.0%, ac density=50.0% ".end " tests/==out/s_tr.7.gc.out000066400000000000000000000006161316501211100154500ustar00rootroot00000000000000"v1 (1 0) pulse (0 1 .001 .0001) " "r1 (2 0) 1 " ".print tran v(1) " ".tran 0 1 " #Time v(1) 0. 0. 0.001 0. 0.0011 1. 0.0013718 1. 0.0016436 1. 0.0018602 1. 0.0020768 1. 1. 1. ".tran " #Time v(1) 1. 1. 1.01 1. 2. 1. ".end " tests/==out/sl.ckt.out000066400000000000000000000001461316501211100151400ustar00rootroot00000000000000nmos n gate cmosn: rsh - rs - rd conflict: using rsh cmosn: is - js conflict # 27. tests/==out/temp.1.gc.out000066400000000000000000000106731316501211100154440ustar00rootroot00000000000000"R1 1 0 TESTR(w=2, l=4) " ".print tran r(R1) temp(0) " ".print ac r(R1) temp(0) " ".print op r(R1) temp(0) " ".print dc r(R1) temp(0) " ".ac 1 " #Freq r(R1) temp(0) 1. 1.946 0. ".dc " # r(R1) temp(0) 0. 2.02 37. ".dc temp=400 " # r(R1) temp(0) 0. 2.746 400. ".ac 1 " #Freq r(R1) temp(0) 1. 2.746 400. ".tran 0 1 .5 temp=1342 " #Time r(R1) temp(0) 0. 4.63 1.342K 0.5 4.63 1.342K 1. 4.63 1.342K ".ac 1 " #Freq r(R1) temp(0) 1. 4.63 1.342K ".dc " # r(R1) temp(0) 0. 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".tran 2 " #Time r(R1) temp(0) 0. 2.02 37. 0.5 2.02 37. 1. 2.02 37. 1.5 2.02 37. 2. 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".dc 1000 " # r(R1) temp(0) 1.K 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".dc 0 1000 100 " # r(R1) temp(0) 0. 2.02 37. 100. 2.02 37. 200. 2.02 37. 300. 2.02 37. 400. 2.02 37. 500. 2.02 37. 600. 2.02 37. 700. 2.02 37. 800. 2.02 37. 900. 2.02 37. 1.K 2.02 37. ".ac 1 temp=10000 " #Freq r(R1) temp(0) 1. 21.946 10.K ".ac 1 " #Freq r(R1) temp(0) 1. 21.946 10.K ".dc " # r(R1) temp(0) 0. 2.02 37. 100. 2.02 37. 200. 2.02 37. 300. 2.02 37. 400. 2.02 37. 500. 2.02 37. 600. 2.02 37. 700. 2.02 37. 800. 2.02 37. 900. 2.02 37. 1.K 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".op " # r(R1) temp(0) 37. 2.02 37. ".op temp=400 " # r(R1) temp(0) 37. 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".tran 0 1 .5 temp=1342 " #Time r(R1) temp(0) 0. 4.63 1.342K 0.5 4.63 1.342K 1. 4.63 1.342K ".ac 1 " #Freq r(R1) temp(0) 1. 4.63 1.342K ".op " # r(R1) temp(0) 37. 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".tran 2 " #Time r(R1) temp(0) 0. 2.02 37. 0.5 2.02 37. 1. 2.02 37. 1.5 2.02 37. 2. 2.02 37. ".ac 1 " #Freq r(R1) temp(0) 1. 2.02 37. ".op 1000 " # r(R1) temp(0) 1.K 3.946 1.K ".ac 1 " #Freq r(R1) temp(0) 1. 3.946 1.K ".op 0 1000 100 " # r(R1) temp(0) 0. 1.946 0. 100. 2.146 100. 200. 2.346 200. 300. 2.546 300. 400. 2.746 400. 500. 2.946 500. 600. 3.146 600. 700. 3.346 700. 800. 3.546 800. 900. 3.746 900. 1.K 3.946 1.K ".ac 1 temp=10000 " #Freq r(R1) temp(0) 1. 21.946 10.K ".ac 1 " #Freq r(R1) temp(0) 1. 21.946 10.K ".op " # r(R1) temp(0) 0. 1.946 0. 100. 2.146 100. 200. 2.346 200. 300. 2.546 300. 400. 2.746 400. 500. 2.946 500. 600. 3.146 600. 700. 3.346 700. 800. 3.546 800. 900. 3.746 900. 1.K 3.946 1.K ".ac 1 " #Freq r(R1) temp(0) 1. 3.946 1.K ".end " tests/==out/tran_temp.gc.out000066400000000000000000000007761316501211100163340ustar00rootroot00000000000000#Time r(rtemp) temp(0) 0. 3. 2. 1. 3. 2. #Time r(rtemp) temp(0) 0. 2. 1. 1. 2. 1. #Time r(rtemp) temp(0) 0. 4. 3. 1. 4. 3. #Time r(rtemp) temp(0) 0. 2. 1. 1. 2. 1. #Time r(rtemp) temp(0) 0. 12. 11. 1. 12. 11. tests/==out/trcurve.ckt.out000066400000000000000000001377071316501211100162320ustar00rootroot00000000000000TRANSFER curve tracer, ig-spice # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) 0. 0. 0. 0. 0. 0. 0. 0.1 0. 0. 14.442p 7.0874n -14.442p 7.0886n 0.2 0. 0. 49.499p 7.9575n -49.499p 7.9534n 0.3 0. 0. 169.51p 8.0158n -169.51p 8.0174n 0.4 0. 0. 580.77p 8.088n -580.77p 8.0774n 0.5 0. 0. 1.9898n 8.1379n -1.9898n 8.1341n 0.6 0. 0. 6.815n 8.1934n -6.815n 8.188n 0.7 0. 0. 23.332n 8.2379n -23.332n 8.2396n 0.8 0. 0. 79.851n 8.2934n -79.851n 8.2891n 0.9 0. 0. 401.31n 0. -401.31n 8.3368n 1. 0. 0. 1.1045u 0. -1.1045u 8.3829n 1.1 0. 0. 2.1635u 0. -2.1635u 8.4275n 1.2 0. 0. 3.5838u 0. -3.5838u 8.4709n 1.3 0. 0. 5.3703u 0. -5.3703u 8.5132n 1.4 0. 0. 7.5273u 0. -7.5273u 8.5544n 1.5 0. 0. 10.059u 0. -10.059u 8.5946n 1.6 0. 0. 12.968u 0. -12.968u 8.634n 1.7 0. 0. 16.258u 0. -16.258u 8.6725n 1.8 0. 0. 19.93u 0. -19.93u 8.7103n 1.9 0. 0. 23.988u 0. -23.988u 8.7474n 2. 0. 0. 28.433u 0. -28.433u 8.7839n 2.1 0. 0. 33.266u 0. -33.266u 8.8197n 2.2 0. 0. 38.489u 0. -38.489u 8.855n 2.3 0. 0. 43.262u 0. -43.262u 8.8898n 2.4 0. 0. 48.106u 0. -48.106u 8.924n 2.5 0. 0. 53.171u 0. -53.171u 8.9578n 2.6 0. 0. 58.456u 0. -58.456u 8.9912n 2.7 0. 0. 63.957u 0. -63.957u 9.0242n 2.8 0. 0. 69.674u 0. -69.674u 9.0567n 2.9 0. 0. 75.604u 0. -75.604u 9.0889n 3. 0. 0. 81.747u 0. -81.747u 9.1207n 3.1 0. 0. 88.101u 0. -88.101u 9.1523n 3.2 0. 0. 94.664u 0. -94.664u 9.1834n 3.3 0. 0. 101.44u 0. -101.44u 9.2143n 3.4 0. 0. 108.42u 0. -108.42u 9.2449n 3.5 0. 0. 115.6u 0. -115.6u 9.2753n 3.6 0. 0. 123.u 0. -123.u 9.3053n 3.7 0. 0. 130.59u 0. -130.59u 9.3351n 3.8 0. 0. 138.4u 0. -138.4u 9.3647n 3.9 0. 0. 146.41u 0. -146.41u 9.3941n 4. 0. 0. 154.62u 0. -154.62u 9.4232n 4.1 0. 0. 163.03u 0. -163.03u 9.4521n 4.2 0. 0. 171.65u 0. -171.65u 9.4809n 4.3 0. 0. 180.48u 0. -180.48u 9.5094n 4.4 0. 0. 189.5u 0. -189.5u 9.5377n 4.5 0. 0. 198.74u 0. -198.74u 9.5659n 4.6 0. 0. 208.17u 0. -208.17u 9.5939n 4.7 0. 0. 217.81u 0. -217.81u 9.6217n 4.8 0. 0. 227.65u 0. -227.65u 9.6494n 4.9 0. 0. 237.69u 0. -237.69u 9.6769n 5. 0. 0. 247.94u 0. -247.94u 9.7043n 0. 0.5 0. -50.81E-18 0. 50.81E-18 0. 0.1 0.5 0. 171.37f 69.832n -171.37f 69.833n 0.2 0.5 0. 390.f 78.354n -390.f 78.351n 0.3 0.5 0. 803.15f 78.981n -803.15f 78.981n 0.4 0.5 0. 1.8829p 79.575n -1.8829p 79.575n 0.5 0.5 0. 5.2452p 80.141n -5.2452p 80.137n 0.6 0.5 0. 16.419p 80.68n -16.419p 80.673n 0.7 0.5 0. 54.317p 81.18n -54.317p 81.186n 0.8 0.5 0. 183.6p 81.679n -183.6p 81.679n 0.9 0.5 0. 625.35p 82.157n -625.35p 82.156n 1. 0.5 0. 2.1352n 82.623n -2.1352n 82.617n 1.1 0.5 0. 7.2954n 83.067n -7.2954n 83.064n 1.2 0.5 0. 24.93n 83.511n -24.93n 83.498n 1.3 0.5 0. 85.188n 83.933n -85.188n 83.922n 1.4 0.5 0. 428.63n 84.333n -428.63n 84.335n 1.5 0.5 0. 1.1575u 84.754n -1.1575u 84.739n 1.6 0.5 0. 2.2486u 85.154n -2.2486u 85.134n 1.7 0.5 0. 3.7078u 85.532n -3.7078u 85.521n 1.8 0.5 0. 5.5398u 85.887n -5.5398u 85.901n 1.9 0.5 0. 7.7494u 86.287n -7.7494u 86.274n 2. 0.5 0. 10.34u 86.642n -10.34u 86.641n 2.1 0.5 0. 13.316u 86.997n -13.316u 87.001n 2.2 0.5 0. 16.68u 87.352n -16.68u 87.356n 2.3 0.5 0. 20.434u 87.708n -20.434u 87.706n 2.4 0.5 0. 24.581u 88.063n -24.581u 88.051n 2.5 0.5 0. 29.123u 88.418n -29.123u 88.392n 2.6 0.5 0. 34.06u 88.729n -34.06u 88.728n 2.7 0.5 0. 39.394u 89.04n -39.394u 89.06n 2.8 0.5 0. 44.246u 89.395n -44.246u 89.388n 2.9 0.5 0. 49.191u 89.75n -49.191u 89.712n 3. 0.5 0. 54.363u 90.017n -54.363u 90.033n 3.1 0.5 0. 59.758u 90.328n -59.758u 90.35n 3.2 0.5 0. 65.375u 90.683n -65.375u 90.665n 3.3 0.5 0. 71.212u 90.994n -71.212u 90.976n 3.4 0.5 0. 77.268u 91.26n -77.268u 91.284n 3.5 0.5 0. 83.541u 91.616n -83.541u 91.59n 3.6 0.5 0. 90.03u 91.926n -90.03u 91.893n 3.7 0.5 0. 96.733u 92.237n -96.733u 92.194n 3.8 0.5 0. 103.65u 92.459n -103.65u 92.492n 3.9 0.5 0. 110.78u 92.815n -110.78u 92.788n 4. 0.5 0. 118.12u 93.126n -118.12u 93.082n 4.1 0.5 0. 125.68u 93.436n -125.68u 93.373n 4.2 0.5 0. 133.44u 93.703n -133.44u 93.663n 4.3 0.5 0. 141.41u 93.969n -141.41u 93.951n 4.4 0.5 0. 149.6u 94.236n -149.6u 94.236n 4.5 0.5 0. 157.99u 94.502n -157.99u 94.52n 4.6 0.5 0. 166.59u 94.946n -166.59u 94.803n 4.7 0.5 0. 175.41u 95.124n -175.41u 95.083n 4.8 0.5 0. 184.43u 95.39n -184.43u 95.362n 4.9 0.5 0. 193.66u 95.746n -193.66u 95.64n 5. 0.5 0. 203.09u 95.923n -203.09u 95.916n 0. 1. 0. -139.1E-18 -536.E-21 139.1E-18 -536.E-21 0.1 1. 0. 138.61f 687.79n -138.61f 687.79n 0.2 1. 0. 277.46f 771.8n -277.46f 771.8n 0.3 1. 0. 416.76f 778.03n -416.76f 778.03n 0.4 1. 0. 557.59f 783.91n -557.59f 783.91n 0.5 1. 0. 703.63f 789.5n -703.63f 789.5n 0.6 1. 0. 867.54f 794.85n -867.54f 794.84n 0.7 1. 0. 1.0925p 799.96n -1.0925p 799.97n 0.8 1. 0. 1.5263p 804.91n -1.5263p 804.91n 0.9 1. 0. 2.6733p 809.7n -2.6733p 809.68n 1. 1. 0. 6.2572p 814.32n -6.2572p 814.31n 1.1 1. 0. 18.165p 818.81n -18.165p 818.8n 1.2 1. 0. 58.503p 826.07n -58.503p 826.05n 1.3 1. 0. 195.94p 833.56n -195.94p 833.55n 1.4 1. 0. 664.96p 840.88n -664.96p 840.87n 1.5 1. 0. 2.2664n 848.01n -2.2664n 848.n 1.6 1. 0. 7.735n 854.98n -7.735n 854.98n 1.7 1. 0. 26.41n 861.82n -26.41n 861.81n 1.8 1. 0. 90.181n 868.53n -90.181n 868.5n 1.9 1. 0. 454.05n 875.06n -454.05n 875.06n 2. 1. 0. 1.2076u 881.49n -1.2076u 881.5n 2.1 1. 0. 2.3305u 887.87n -2.3305u 887.83n 2.2 1. 0. 3.8283u 894.08n -3.8283u 894.05n 2.3 1. 0. 5.7062u 900.17n -5.7062u 900.17n 2.4 1. 0. 7.969u 906.25n -7.969u 906.19n 2.5 1. 0. 10.621u 912.11n -10.621u 912.13n 2.6 1. 0. 13.665u 917.98n -13.665u 917.98n 2.7 1. 0. 17.104u 923.79n -17.104u 923.76n 2.8 1. 0. 20.942u 929.43n -20.942u 929.45n 2.9 1. 0. 25.18u 935.12n -25.18u 935.08n 3. 1. 0. 29.821u 940.63n -29.821u 940.64n 3.1 1. 0. 34.866u 946.18n -34.866u 946.13n 3.2 1. 0. 40.316u 951.55n -40.316u 951.56n 3.3 1. 0. 45.251u 956.97n -45.251u 956.93n 3.4 1. 0. 50.302u 962.3n -50.302u 962.25n 3.5 1. 0. 55.584u 967.54n -55.584u 967.51n 3.6 1. 0. 61.094u 972.69n -61.094u 972.72n 3.7 1. 0. 66.832u 977.88n -66.832u 977.88n 3.8 1. 0. 72.794u 982.99n -72.794u 982.99n 3.9 1. 0. 78.981u 988.05n -78.981u 988.06n 4. 1. 0. 85.389u 993.07n -85.389u 993.08n 4.1 1. 0. 92.018u 998.05n -92.018u 998.06n 4.2 1. 0. 98.868u 1.003u -98.868u 1.003u 4.3 1. 0. 105.94u 1.0078u -105.94u 1.0079u 4.4 1. 0. 113.22u 1.0128u -113.22u 1.0128u 4.5 1. 0. 120.73u 1.0176u -120.73u 1.0176u 4.6 1. 0. 128.45u 1.0224u -128.45u 1.0224u 4.7 1. 0. 136.38u 1.0271u -136.38u 1.0271u 4.8 1. 0. 144.53u 1.0319u -144.53u 1.0319u 4.9 1. 0. 152.9u 1.0366u -152.9u 1.0366u 5. 1. 0. 161.48u 1.0412u -161.48u 1.0412u 0. 1.5 0. -259.9E-18 -822.E-21 259.9E-18 -822.E-21 0.1 1.5 0. 138.41f 3.1893u -138.41f 3.1893u 0.2 1.5 0. 277.09f 5.6559u -277.09f 5.6559u 0.3 1.5 0. 415.76f 7.4127u -415.76f 7.4127u 0.4 1.5 0. 554.44f 8.4702u -554.44f 8.4702u 0.5 1.5 0. 693.14f 8.7643u -693.14f 8.7643u 0.6 1.5 0. 831.87f 8.8059u -831.87f 8.8059u 0.7 1.5 0. 970.74f 8.846u -970.74f 8.846u 0.8 1.5 0. 1.1101p 8.8846u -1.1101p 8.8846u 0.9 1.5 0. 1.2511p 8.9219u -1.2511p 8.9219u 1. 1.5 0. 1.3976p 8.9581u -1.3976p 8.9581u 1.1 1.5 0. 1.5631p 8.9933u -1.5631p 8.9933u 1.2 1.5 0. 1.7934p 9.0275u -1.7934p 9.0275u 1.3 1.5 0. 2.2449p 9.0609u -2.2449p 9.0609u 1.4 1.5 0. 3.451p 9.0936u -3.451p 9.0936u 1.5 1.5 0. 7.2332p 9.1255u -7.2332p 9.1255u 1.6 1.5 0. 19.807p 9.1569u -19.807p 9.1568u 1.7 1.5 0. 62.389p 9.1876u -62.389p 9.1876u 1.8 1.5 0. 207.4p 9.2177u -207.4p 9.2177u 1.9 1.5 0. 702.04p 9.2474u -702.04p 9.2474u 2. 1.5 0. 2.3902n 9.2766u -2.3902n 9.2765u 2.1 1.5 0. 8.1529n 9.3053u -8.1529n 9.3053u 2.2 1.5 0. 27.826n 9.3336u -27.826n 9.3336u 2.3 1.5 0. 94.989n 9.3614u -94.989n 9.3615u 2.4 1.5 0. 478.38n 9.389u -478.38n 9.389u 2.5 1.5 0. 1.2563u 9.4162u -1.2563u 9.4162u 2.6 1.5 0. 2.4107u 9.4431u -2.4107u 9.4431u 2.7 1.5 0. 3.9474u 9.4696u -3.9474u 9.4696u 2.8 1.5 0. 5.8719u 9.4959u -5.8719u 9.4959u 2.9 1.5 0. 8.1888u 9.5218u -8.1888u 9.5219u 3. 1.5 0. 10.902u 9.5476u -10.902u 9.5476u 3.1 1.5 0. 14.016u 9.5731u -14.016u 9.573u 3.2 1.5 0. 17.534u 9.5983u -17.534u 9.5983u 3.3 1.5 0. 21.458u 9.6233u -21.458u 9.6233u 3.4 1.5 0. 25.79u 9.6481u -25.79u 9.6481u 3.5 1.5 0. 30.534u 9.6726u -30.534u 9.6727u 3.6 1.5 0. 35.69u 9.697u -35.69u 9.697u 3.7 1.5 0. 41.259u 9.7213u -41.259u 9.7212u 3.8 1.5 0. 46.283u 9.7453u -46.283u 9.7453u 3.9 1.5 0. 51.443u 9.7692u -51.443u 9.7691u 4. 1.5 0. 56.839u 9.7928u -56.839u 9.7928u 4.1 1.5 0. 62.47u 9.8162u -62.47u 9.8163u 4.2 1.5 0. 68.333u 9.8397u -68.333u 9.8397u 4.3 1.5 0. 74.426u 9.863u -74.426u 9.8629u 4.4 1.5 0. 80.748u 9.886u -80.748u 9.886u 4.5 1.5 0. 87.297u 9.909u -87.297u 9.9089u 4.6 1.5 0. 94.073u 9.9318u -94.073u 9.9318u 4.7 1.5 0. 101.07u 9.9545u -101.07u 9.9545u 4.8 1.5 0. 108.3u 9.9771u -108.3u 9.9771u 4.9 1.5 0. 115.75u 9.9995u -115.75u 9.9995u 5. 1.5 0. 123.42u 10.022u -123.42u 10.022u 0. 2. 0. -417.8E-18 25.64E-18 417.8E-18 25.64E-18 0.1 2. 0. 138.26f 5.7046u -138.26f 5.7046u 0.2 2. 0. 276.94f 10.693u -276.94f 10.693u 0.3 2. 0. 415.62f 14.979u -415.62f 14.979u 0.4 2. 0. 554.29f 18.572u -554.29f 18.572u 0.5 2. 0. 692.97f 21.48u -692.97f 21.48u 0.6 2. 0. 831.65f 23.711u -831.65f 23.711u 0.7 2. 0. 970.33f 25.271u -970.33f 25.271u 0.8 2. 0. 1.109p 25.694u -1.109p 25.694u 0.9 2. 0. 1.2477p 25.771u -1.2477p 25.771u 1. 2. 0. 1.3864p 25.846u -1.3864p 25.846u 1.1 2. 0. 1.5251p 25.92u -1.5251p 25.92u 1.2 2. 0. 1.664p 25.991u -1.664p 25.991u 1.3 2. 0. 1.8034p 26.061u -1.8034p 26.061u 1.4 2. 0. 1.9445p 26.13u -1.9445p 26.13u 1.5 2. 0. 2.0915p 26.197u -2.0915p 26.197u 1.6 2. 0. 2.2584p 26.263u -2.2584p 26.263u 1.7 2. 0. 2.4936p 26.328u -2.4936p 26.328u 1.8 2. 0. 2.9613p 26.393u -2.9613p 26.393u 1.9 2. 0. 4.2225p 26.456u -4.2225p 26.456u 2. 2. 0. 8.1907p 26.518u -8.1907p 26.518u 2.1 2. 0. 21.396p 26.579u -21.396p 26.579u 2.2 2. 0. 66.118p 26.64u -66.118p 26.64u 2.3 2. 0. 218.4p 26.7u -218.4p 26.7u 2.4 2. 0. 737.76p 26.759u -737.76p 26.759u 2.5 2. 0. 2.5101n 26.818u -2.5101n 26.818u 2.6 2. 0. 8.5594n 26.876u -8.5594n 26.876u 2.7 2. 0. 29.209n 26.933u -29.209n 26.933u 2.8 2. 0. 99.703n 26.99u -99.703n 26.99u 2.9 2. 0. 502.08n 27.046u -502.08n 27.046u 3. 2. 0. 1.3042u 27.102u -1.3042u 27.102u 3.1 2. 0. 2.4904u 27.158u -2.4904u 27.158u 3.2 2. 0. 4.0667u 27.213u -4.0667u 27.213u 3.3 2. 0. 6.0385u 27.267u -6.0385u 27.267u 3.4 2. 0. 8.4108u 27.322u -8.4108u 27.322u 3.5 2. 0. 11.188u 27.376u -11.188u 27.376u 3.6 2. 0. 14.374u 27.429u -14.374u 27.429u 3.7 2. 0. 17.971u 27.482u -17.971u 27.482u 3.8 2. 0. 21.984u 27.535u -21.984u 27.535u 3.9 2. 0. 26.414u 27.588u -26.414u 27.588u 4. 2. 0. 31.264u 27.64u -31.264u 27.64u 4.1 2. 0. 36.535u 27.692u -36.535u 27.692u 4.2 2. 0. 42.228u 27.744u -42.228u 27.744u 4.3 2. 0. 47.345u 27.795u -47.345u 27.795u 4.4 2. 0. 52.619u 27.847u -52.619u 27.847u 4.5 2. 0. 58.134u 27.898u -58.134u 27.898u 4.6 2. 0. 63.89u 27.948u -63.89u 27.948u 4.7 2. 0. 69.882u 27.999u -69.882u 27.999u 4.8 2. 0. 76.111u 28.049u -76.111u 28.049u 4.9 2. 0. 82.575u 28.099u -82.575u 28.099u 5. 2. 0. 89.271u 28.149u -89.271u 28.149u 0. 2.5 0. -551.9E-18 89.83E-18 551.9E-18 89.83E-18 0.1 2.5 0. 138.13f 8.2126u -138.13f 8.2126u 0.2 2.5 0. 276.81f 15.716u -276.81f 15.716u 0.3 2.5 0. 415.48f 22.522u -415.48f 22.522u 0.4 2.5 0. 554.16f 28.643u -554.16f 28.643u 0.5 2.5 0. 692.84f 34.086u -692.84f 34.086u 0.6 2.5 0. 831.52f 38.858u -831.52f 38.858u 0.7 2.5 0. 970.2f 42.965u -970.2f 42.965u 0.8 2.5 0. 1.1089p 46.413u -1.1089p 46.413u 0.9 2.5 0. 1.2476p 49.204u -1.2476p 49.204u 1. 2.5 0. 1.3862p 50.951u -1.3862p 50.951u 1.1 2.5 0. 1.5249p 51.071u -1.5249p 51.071u 1.2 2.5 0. 1.6636p 51.188u -1.6636p 51.188u 1.3 2.5 0. 1.8023p 51.303u -1.8023p 51.303u 1.4 2.5 0. 1.941p 51.416u -1.941p 51.416u 1.5 2.5 0. 2.0797p 51.527u -2.0797p 51.527u 1.6 2.5 0. 2.2184p 51.637u -2.2184p 51.637u 1.7 2.5 0. 2.3573p 51.744u -2.3573p 51.744u 1.8 2.5 0. 2.4967p 51.851u -2.4967p 51.851u 1.9 2.5 0. 2.638p 51.955u -2.638p 51.955u 2. 2.5 0. 2.7853p 52.059u -2.7853p 52.059u 2.1 2.5 0. 2.9536p 52.161u -2.9536p 52.161u 2.2 2.5 0. 3.1933p 52.262u -3.1933p 52.262u 2.3 2.5 0. 3.6766p 52.363u -3.6766p 52.363u 2.4 2.5 0. 4.9905p 52.462u -4.9905p 52.462u 2.5 2.5 0. 9.1384p 52.56u -9.1384p 52.56u 2.6 2.5 0. 22.955p 52.657u -22.955p 52.657u 2.7 2.5 0. 69.762p 52.754u -69.762p 52.754u 2.8 2.5 0. 229.15p 52.85u -229.15p 52.85u 2.9 2.5 0. 772.78p 52.945u -772.78p 52.945u 3. 2.5 0. 2.628n 53.039u -2.628n 53.039u 3.1 2.5 0. 8.9604n 53.133u -8.9604n 53.133u 3.2 2.5 0. 30.578n 53.226u -30.578n 53.226u 3.3 2.5 0. 104.38n 53.319u -104.38n 53.319u 3.4 2.5 0. 525.48n 53.411u -525.48n 53.411u 3.5 2.5 0. 1.3519u 53.502u -1.3519u 53.502u 3.6 2.5 0. 2.5703u 53.593u -2.5703u 53.593u 3.7 2.5 0. 4.1869u 53.684u -4.1869u 53.684u 3.8 2.5 0. 6.2073u 53.774u -6.2073u 53.774u 3.9 2.5 0. 8.6364u 53.863u -8.6364u 53.863u 4. 2.5 0. 11.479u 53.953u -11.479u 53.953u 4.1 2.5 0. 14.739u 54.041u -14.739u 54.041u 4.2 2.5 0. 18.419u 54.13u -18.419u 54.13u 4.3 2.5 0. 22.524u 54.218u -22.524u 54.218u 4.4 2.5 0. 27.055u 54.306u -27.055u 54.306u 4.5 2.5 0. 32.014u 54.393u -32.014u 54.393u 4.6 2.5 0. 37.404u 54.48u -37.404u 54.48u 4.7 2.5 0. 43.226u 54.567u -43.226u 54.567u 4.8 2.5 0. 48.441u 54.654u -48.441u 54.654u 4.9 2.5 0. 53.834u 54.74u -53.834u 54.74u 5. 2.5 0. 59.473u 54.826u -59.473u 54.826u 0. 3. 0. -630.E-18 155.6E-18 630.E-18 155.6E-18 0.1 3. 0. 138.66f 10.713u -138.66f 10.713u 0.2 3. 0. 277.33f 20.723u -277.33f 20.723u 0.3 3. 0. 415.99f 30.044u -415.99f 30.044u 0.4 3. 0. 554.65f 38.684u -554.65f 38.684u 0.5 3. 0. 693.32f 46.654u -693.32f 46.654u 0.6 3. 0. 831.98f 53.959u -831.98f 53.959u 0.7 3. 0. 970.64f 60.607u -970.64f 60.607u 0.8 3. 0. 1.1093p 66.6u -1.1093p 66.6u 0.9 3. 0. 1.248p 71.945u -1.248p 71.945u 1. 3. 0. 1.3866p 76.644u -1.3866p 76.644u 1.1 3. 0. 1.5253p 80.701u -1.5253p 80.701u 1.2 3. 0. 1.664p 83.702u -1.664p 83.702u 1.3 3. 0. 1.8026p 83.868u -1.8026p 83.868u 1.4 3. 0. 1.9413p 84.032u -1.9413p 84.032u 1.5 3. 0. 2.08p 84.192u -2.08p 84.193u 1.6 3. 0. 2.2186p 84.351u -2.2186p 84.351u 1.7 3. 0. 2.3573p 84.507u -2.3573p 84.507u 1.8 3. 0. 2.4959p 84.662u -2.4959p 84.662u 1.9 3. 0. 2.6346p 84.815u -2.6346p 84.815u 2. 3. 0. 2.7733p 84.966u -2.7733p 84.966u 2.1 3. 0. 2.912p 85.115u -2.912p 85.115u 2.2 3. 0. 3.0509p 85.263u -3.0509p 85.263u 2.3 3. 0. 3.1904p 85.41u -3.1904p 85.41u 2.4 3. 0. 3.3317p 85.555u -3.3317p 85.555u 2.5 3. 0. 3.4794p 85.699u -3.4794p 85.699u 2.6 3. 0. 3.649p 85.843u -3.649p 85.843u 2.7 3. 0. 3.8931p 85.985u -3.8931p 85.985u 2.8 3. 0. 4.3915p 86.126u -4.3915p 86.126u 2.9 3. 0. 5.7571p 86.266u -5.7571p 86.266u 3. 3. 0. 10.081p 86.405u -10.081p 86.405u 3.1 3. 0. 24.5p 86.544u -24.5p 86.544u 3.2 3. 0. 73.368p 86.681u -73.368p 86.681u 3.3 3. 0. 239.81p 86.818u -239.81p 86.818u 3.4 3. 0. 807.55p 86.954u -807.55p 86.954u 3.5 3. 0. 2.7453n 87.09u -2.7453n 87.09u 3.6 3. 0. 9.3605n 87.225u -9.3605n 87.225u 3.7 3. 0. 31.947n 87.359u -31.947n 87.359u 3.8 3. 0. 109.07n 87.493u -109.07n 87.493u 3.9 3. 0. 548.8n 87.626u -548.8n 87.626u 4. 3. 0. 1.3999u 87.759u -1.3999u 87.759u 4.1 3. 0. 2.6511u 87.891u -2.6511u 87.891u 4.2 3. 0. 4.3089u 88.023u -4.3089u 88.023u 4.3 3. 0. 6.3791u 88.154u -6.3791u 88.154u 4.4 3. 0. 8.8668u 88.285u -8.8668u 88.285u 4.5 3. 0. 11.777u 88.416u -11.777u 88.416u 4.6 3. 0. 15.113u 88.546u -15.113u 88.546u 4.7 3. 0. 18.879u 88.676u -18.879u 88.676u 4.8 3. 0. 23.079u 88.805u -23.079u 88.805u 4.9 3. 0. 27.714u 88.934u -27.714u 88.934u 5. 3. 0. 32.788u 89.063u -32.788u 89.063u 0. 3.5 0. -3.934E-18 78.82E-18 3.934E-18 78.82E-18 0.1 3.5 0. 138.66f 12.767u -138.66f 12.767u 0.2 3.5 0. 277.33f 24.86u -277.33f 24.86u 0.3 3.5 0. 415.99f 36.29u -415.99f 36.29u 0.4 3.5 0. 554.65f 47.069u -554.65f 47.069u 0.5 3.5 0. 693.32f 57.203u -693.32f 57.203u 0.6 3.5 0. 831.98f 66.702u -831.98f 66.702u 0.7 3.5 0. 970.64f 75.569u -970.64f 75.569u 0.8 3.5 0. 1.1093p 83.811u -1.1093p 83.811u 0.9 3.5 0. 1.248p 91.431u -1.248p 91.431u 1. 3.5 0. 1.3866p 98.433u -1.3866p 98.433u 1.1 3.5 0. 1.5253p 104.82u -1.5253p 104.82u 1.2 3.5 0. 1.664p 110.59u -1.664p 110.59u 1.3 3.5 0. 1.8026p 115.76u -1.8026p 115.76u 1.4 3.5 0. 1.9413p 119.52u -1.9413p 119.52u 1.5 3.5 0. 2.08p 119.73u -2.08p 119.73u 1.6 3.5 0. 2.2186p 119.93u -2.2186p 119.93u 1.7 3.5 0. 2.3573p 120.13u -2.3573p 120.13u 1.8 3.5 0. 2.4959p 120.33u -2.4959p 120.33u 1.9 3.5 0. 2.6346p 120.52u -2.6346p 120.52u 2. 3.5 0. 2.7733p 120.72u -2.7733p 120.72u 2.1 3.5 0. 2.9119p 120.91u -2.9119p 120.91u 2.2 3.5 0. 3.0506p 121.1u -3.0506p 121.1u 2.3 3.5 0. 3.1893p 121.29u -3.1893p 121.29u 2.4 3.5 0. 3.3279p 121.47u -3.3279p 121.47u 2.5 3.5 0. 3.4666p 121.66u -3.4666p 121.66u 2.6 3.5 0. 3.6053p 121.84u -3.6053p 121.84u 2.7 3.5 0. 3.7443p 122.03u -3.7443p 122.03u 2.8 3.5 0. 3.8837p 122.21u -3.8837p 122.21u 2.9 3.5 0. 4.0252p 122.39u -4.0252p 122.39u 3. 3.5 0. 4.1733p 122.57u -4.1733p 122.57u 3.1 3.5 0. 4.3441p 122.75u -4.3441p 122.75u 3.2 3.5 0. 4.5926p 122.93u -4.5926p 122.93u 3.3 3.5 0. 5.1059p 123.11u -5.1059p 123.11u 3.4 3.5 0. 6.5227p 123.29u -6.5227p 123.29u 3.5 3.5 0. 11.022p 123.46u -11.022p 123.46u 3.6 3.5 0. 26.042p 123.64u -26.042p 123.64u 3.7 3.5 0. 76.967p 123.82u -76.967p 123.82u 3.8 3.5 0. 250.46p 123.99u -250.46p 123.99u 3.9 3.5 0. 842.38p 124.16u -842.38p 124.16u 4. 3.5 0. 2.863n 124.34u -2.863n 124.34u 4.1 3.5 0. 9.7626n 124.51u -9.7626n 124.51u 4.2 3.5 0. 33.324n 124.68u -33.324n 124.68u 4.3 3.5 0. 113.79n 124.86u -113.79n 124.86u 4.4 3.5 0. 572.22n 125.03u -572.22n 125.03u 4.5 3.5 0. 1.4483u 125.2u -1.4483u 125.2u 4.6 3.5 0. 2.7331u 125.37u -2.7331u 125.37u 4.7 3.5 0. 4.4333u 125.54u -4.4333u 125.54u 4.8 3.5 0. 6.5548u 125.71u -6.5548u 125.71u 4.9 3.5 0. 9.103u 125.88u -9.103u 125.88u 5. 3.5 0. 12.083u 126.05u -12.083u 126.05u 0. 4. 0. 81.E-21 -2.005E-18 -81.E-21 -2.005E-18 0.1 4. 0. 138.66f 14.727u -138.66f 14.727u 0.2 4. 0. 277.33f 28.804u -277.33f 28.804u 0.3 4. 0. 415.99f 42.245u -415.99f 42.245u 0.4 4. 0. 554.65f 55.059u -554.65f 55.059u 0.5 4. 0. 693.32f 67.254u -693.32f 67.254u 0.6 4. 0. 831.98f 78.837u -831.98f 78.837u 0.7 4. 0. 970.64f 89.814u -970.64f 89.814u 0.8 4. 0. 1.1093p 100.19u -1.1093p 100.19u 0.9 4. 0. 1.248p 109.97u -1.248p 109.97u 1. 4. 0. 1.3866p 119.15u -1.3866p 119.15u 1.1 4. 0. 1.5253p 127.74u -1.5253p 127.74u 1.2 4. 0. 1.664p 135.75u -1.664p 135.75u 1.3 4. 0. 1.8026p 143.16u -1.8026p 143.16u 1.4 4. 0. 1.9413p 150.u -1.9413p 150.u 1.5 4. 0. 2.08p 156.25u -2.08p 156.25u 1.6 4. 0. 2.2186p 159.54u -2.2186p 159.54u 1.7 4. 0. 2.3573p 159.78u -2.3573p 159.78u 1.8 4. 0. 2.4959p 160.03u -2.4959p 160.03u 1.9 4. 0. 2.6346p 160.28u -2.6346p 160.28u 2. 4. 0. 2.7733p 160.52u -2.7733p 160.52u 2.1 4. 0. 2.9119p 160.76u -2.9119p 160.76u 2.2 4. 0. 3.0506p 161.u -3.0506p 161.u 2.3 4. 0. 3.1893p 161.24u -3.1893p 161.24u 2.4 4. 0. 3.3279p 161.47u -3.3279p 161.47u 2.5 4. 0. 3.4666p 161.71u -3.4666p 161.71u 2.6 4. 0. 3.6053p 161.94u -3.6053p 161.94u 2.7 4. 0. 3.7439p 162.17u -3.7439p 162.17u 2.8 4. 0. 3.8826p 162.4u -3.8826p 162.4u 2.9 4. 0. 4.0213p 162.63u -4.0213p 162.63u 3. 4. 0. 4.1599p 162.86u -4.1599p 162.86u 3.1 4. 0. 4.2987p 163.09u -4.2987p 163.09u 3.2 4. 0. 4.4376p 163.31u -4.4376p 163.31u 3.3 4. 0. 4.5771p 163.54u -4.5771p 163.54u 3.4 4. 0. 4.7186p 163.76u -4.7186p 163.76u 3.5 4. 0. 4.8671p 163.98u -4.8671p 163.98u 3.6 4. 0. 5.0392p 164.21u -5.0392p 164.21u 3.7 4. 0. 5.2921p 164.43u -5.2921p 164.43u 3.8 4. 0. 5.8203p 164.65u -5.8203p 164.65u 3.9 4. 0. 7.2883p 164.87u -7.2883p 164.87u 4. 4. 0. 11.964p 165.09u -11.964p 165.09u 4.1 4. 0. 27.586p 165.31u -27.586p 165.31u 4.2 4. 0. 80.581p 165.53u -80.581p 165.53u 4.3 4. 0. 261.18p 165.75u -261.18p 165.75u 4.4 4. 0. 877.51p 165.97u -877.51p 165.97u 4.5 4. 0. 2.982n 166.19u -2.982n 166.19u 4.6 4. 0. 10.169n 166.4u -10.169n 166.4u 4.7 4. 0. 34.72n 166.62u -34.72n 166.62u 4.8 4. 0. 118.58n 166.84u -118.58n 166.84u 4.9 4. 0. 595.87n 167.05u -595.87n 167.05u 5. 4. 0. 1.4975u 167.27u -1.4975u 167.27u 0. 4.5 0. 47.E-21 154.E-21 -47.E-21 154.E-21 0.1 4.5 0. 138.66f 16.631u -138.66f 16.631u 0.2 4.5 0. 277.33f 32.635u -277.33f 32.635u 0.3 4.5 0. 415.99f 48.024u -415.99f 48.024u 0.4 4.5 0. 554.65f 62.807u -554.65f 62.807u 0.5 4.5 0. 693.32f 76.993u -693.32f 76.993u 0.6 4.5 0. 831.98f 90.587u -831.98f 90.587u 0.7 4.5 0. 970.64f 103.6u -970.64f 103.6u 0.8 4.5 0. 1.1093p 116.02u -1.1093p 116.02u 0.9 4.5 0. 1.248p 127.88u -1.248p 127.88u 1. 4.5 0. 1.3866p 139.15u -1.3866p 139.15u 1.1 4.5 0. 1.5253p 149.86u -1.5253p 149.86u 1.2 4.5 0. 1.664p 160.u -1.664p 160.u 1.3 4.5 0. 1.8026p 169.57u -1.8026p 169.57u 1.4 4.5 0. 1.9413p 178.58u -1.9413p 178.58u 1.5 4.5 0. 2.08p 187.02u -2.08p 187.02u 1.6 4.5 0. 2.2186p 194.91u -2.2186p 194.91u 1.7 4.5 0. 2.3573p 202.23u -2.3573p 202.23u 1.8 4.5 0. 2.4959p 203.22u -2.4959p 203.22u 1.9 4.5 0. 2.6346p 203.52u -2.6346p 203.52u 2. 4.5 0. 2.7733p 203.81u -2.7733p 203.81u 2.1 4.5 0. 2.9119p 204.1u -2.9119p 204.1u 2.2 4.5 0. 3.0506p 204.39u -3.0506p 204.39u 2.3 4.5 0. 3.1893p 204.68u -3.1893p 204.68u 2.4 4.5 0. 3.3279p 204.97u -3.3279p 204.97u 2.5 4.5 0. 3.4666p 205.25u -3.4666p 205.25u 2.6 4.5 0. 3.6053p 205.53u -3.6053p 205.53u 2.7 4.5 0. 3.7439p 205.82u -3.7439p 205.82u 2.8 4.5 0. 3.8826p 206.1u -3.8826p 206.1u 2.9 4.5 0. 4.0212p 206.38u -4.0212p 206.38u 3. 4.5 0. 4.1599p 206.65u -4.1599p 206.65u 3.1 4.5 0. 4.2986p 206.93u -4.2986p 206.93u 3.2 4.5 0. 4.4372p 207.21u -4.4372p 207.21u 3.3 4.5 0. 4.5759p 207.48u -4.5759p 207.48u 3.4 4.5 0. 4.7146p 207.75u -4.7146p 207.75u 3.5 4.5 0. 4.8533p 208.03u -4.8533p 208.03u 3.6 4.5 0. 4.992p 208.3u -4.992p 208.3u 3.7 4.5 0. 5.1309p 208.57u -5.1309p 208.57u 3.8 4.5 0. 5.2705p 208.84u -5.2705p 208.84u 3.9 4.5 0. 5.4121p 209.11u -5.4121p 209.11u 4. 4.5 0. 5.561p 209.38u -5.561p 209.38u 4.1 4.5 0. 5.7344p 209.65u -5.7344p 209.65u 4.2 4.5 0. 5.9916p 209.92u -5.9916p 209.92u 4.3 4.5 0. 6.5349p 210.19u -6.5349p 210.19u 4.4 4.5 0. 8.0545p 210.46u -8.0545p 210.46u 4.5 4.5 0. 12.907p 210.72u -12.907p 210.72u 4.6 4.5 0. 29.14p 210.99u -29.14p 210.99u 4.7 4.5 0. 84.231p 211.25u -84.231p 211.25u 4.8 4.5 0. 272.03p 211.52u -272.03p 211.52u 4.9 4.5 0. 913.13p 211.79u -913.13p 211.79u 5. 4.5 0. 3.1027n 212.05u -3.1027n 212.05u 0. 5. 0. 0. -73.E-21 0. -73.E-21 0.1 5. 0. 138.66f 18.49u -138.66f 18.49u 0.2 5. 0. 277.33f 36.371u -277.33f 36.371u 0.3 5. 0. 415.99f 53.656u -415.99f 53.656u 0.4 5. 0. 554.65f 70.354u -554.65f 70.354u 0.5 5. 0. 693.32f 86.473u -693.32f 86.473u 0.6 5. 0. 831.98f 102.02u -831.98f 102.02u 0.7 5. 0. 970.64f 117.u -970.64f 117.u 0.8 5. 0. 1.1093p 131.41u -1.1093p 131.41u 0.9 5. 0. 1.248p 145.27u -1.248p 145.27u 1. 5. 0. 1.3866p 158.57u -1.3866p 158.57u 1.1 5. 0. 1.5253p 171.32u -1.5253p 171.32u 1.2 5. 0. 1.664p 183.51u -1.664p 183.51u 1.3 5. 0. 1.8026p 195.16u -1.8026p 195.16u 1.4 5. 0. 1.9413p 206.27u -1.9413p 206.27u 1.5 5. 0. 2.08p 216.82u -2.08p 216.82u 1.6 5. 0. 2.2186p 226.84u -2.2186p 226.84u 1.7 5. 0. 2.3573p 236.31u -2.3573p 236.31u 1.8 5. 0. 2.4959p 245.24u -2.4959p 245.24u 1.9 5. 0. 2.6346p 249.69u -2.6346p 249.69u 2. 5. 0. 2.7733p 250.03u -2.7733p 250.03u 2.1 5. 0. 2.9119p 250.38u -2.9119p 250.38u 2.2 5. 0. 3.0506p 250.72u -3.0506p 250.72u 2.3 5. 0. 3.1893p 251.06u -3.1893p 251.06u 2.4 5. 0. 3.3279p 251.4u -3.3279p 251.4u 2.5 5. 0. 3.4666p 251.73u -3.4666p 251.74u 2.6 5. 0. 3.6053p 252.07u -3.6053p 252.07u 2.7 5. 0. 3.7439p 252.4u -3.7439p 252.4u 2.8 5. 0. 3.8826p 252.74u -3.8826p 252.74u 2.9 5. 0. 4.0212p 253.07u -4.0212p 253.07u 3. 5. 0. 4.1599p 253.4u -4.1599p 253.4u 3.1 5. 0. 4.2986p 253.72u -4.2986p 253.72u 3.2 5. 0. 4.4372p 254.05u -4.4372p 254.05u 3.3 5. 0. 4.5759p 254.38u -4.5759p 254.38u 3.4 5. 0. 4.7146p 254.7u -4.7146p 254.7u 3.5 5. 0. 4.8532p 255.03u -4.8532p 255.03u 3.6 5. 0. 4.9919p 255.35u -4.9919p 255.35u 3.7 5. 0. 5.1306p 255.67u -5.1306p 255.67u 3.8 5. 0. 5.2692p 256.u -5.2692p 256.u 3.9 5. 0. 5.4079p 256.32u -5.4079p 256.32u 4. 5. 0. 5.5466p 256.64u -5.5466p 256.64u 4.1 5. 0. 5.6853p 256.96u -5.6853p 256.96u 4.2 5. 0. 5.8242p 257.28u -5.8242p 257.28u 4.3 5. 0. 5.9638p 257.6u -5.9638p 257.6u 4.4 5. 0. 6.1056p 257.92u -6.1056p 257.92u 4.5 5. 0. 6.2548p 258.23u -6.2548p 258.23u 4.6 5. 0. 6.4295p 258.55u -6.4295p 258.55u 4.7 5. 0. 6.6912p 258.87u -6.6912p 258.87u 4.8 5. 0. 7.2497p 259.19u -7.2497p 259.19u 4.9 5. 0. 8.8217p 259.5u -8.8217p 259.5u 5. 5. 0. 13.855p 259.82u -13.855p 259.82u # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) 0. 0. 0. 247.94u 0. -247.94u 9.7043n 0.5 0.5 0. 203.09u 95.923n -203.09u 95.916n 1. 1. 0. 161.48u 1.0412u -161.48u 1.0412u 1.5 1.5 0. 123.42u 10.022u -123.42u 10.022u 2. 2. 0. 89.271u 28.149u -89.271u 28.149u 2.5 2.5 0. 59.473u 54.826u -59.473u 54.826u 3. 3. 0. 32.788u 89.063u -32.788u 89.063u 3.5 3.5 0. 12.083u 126.05u -12.083u 126.05u 4. 4. 0. 1.4975u 167.27u -1.4975u 167.27u 4.5 4.5 0. 3.1027n 212.05u -3.1027n 212.05u 5. 5. 0. 13.855p 259.82u -13.855p 259.82u 0. 0. -1. 240.2u 0. -240.2u 1.953n 0.5 0.5 -1. 195.43u 0. -195.43u 20.283n 1. 1. -1. 153.96u 211.83n -153.96u 211.83n 1.5 1.5 -1. 116.13u 3.2419u -116.13u 3.2418u 2. 2. -1. 82.335u 16.448u -82.335u 16.448u 2.5 2.5 -1. 53.07u 39.231u -53.07u 39.231u 3. 3. -1. 26.117u 70.515u -26.117u 70.515u 3.5 3.5 -1. 7.8608u 107.91u -7.8608u 107.91u 4. 4. -1. 233.97n 148.12u -233.97n 148.12u 4.5 4.5 -1. 352.41p 192.2u -352.41p 192.2u 5. 5. -1. 8.957p 239.5u -8.957p 239.5u 0. 0. -2. 233.31u 0. -233.31u 658.51p 0.5 0.5 -2. 188.74u 0. -188.74u 6.8725n 1. 1. -2. 147.53u 73.097n -147.53u 73.063n 1.5 1.5 -2. 110.05u 778.13n -110.05u 778.03n 2. 2. -2. 76.724u 9.5307u -76.724u 9.5307u 2.5 2.5 -2. 48.076u 28.757u -48.076u 28.757u 3. 3. -2. 21.498u 57.218u -21.498u 57.218u 3.5 3.5 -2. 5.2896u 93.56u -5.2896u 93.56u 4. 4. -2. 43.884n 133.09u -43.884n 133.09u 4.5 4.5 -2. 85.738p 176.34u -85.738p 176.34u 5. 5. -2. 9.8382p 223.02u -9.8382p 223.02u 0. 0. -3. 227.19u 0. -227.19u 284.23p 0.5 0.5 -3. 182.85u 0. -182.85u 2.9026n 1. 1. -3. 141.95u 0. -141.95u 31.089n 1.5 1.5 -3. 104.84u 334.58n -104.84u 334.5n 2. 2. -3. 71.993u 5.1769u -71.993u 5.1769u 2.5 2.5 -3. 43.13u 21.143u -43.13u 21.143u 3. 3. -3. 17.977u 46.942u -17.977u 46.942u 3.5 3.5 -3. 3.548u 81.204u -3.548u 81.204u 4. 4. -3. 13.641n 120.64u -13.641n 120.64u 4.5 4.5 -3. 33.864p 163.03u -33.864p 163.03u 5. 5. -3. 11.131p 209.06u -11.131p 209.06u 0. 0. -4. 221.67u 0. -221.67u 145.56p 0.5 0.5 -4. 177.58u 0. -177.58u 1.4058n 1. 1. -4. 136.99u 0. -136.99u 15.067n 1.5 1.5 -4. 100.27u 163.07n -100.27u 163.14n 2. 2. -4. 67.884u 2.4597u -67.884u 2.4597u 2.5 2.5 -4. 38.892u 15.419u -38.892u 15.418u 3. 3. -4. 15.162u 38.7u -15.162u 38.7u 3.5 3.5 -4. 2.3204u 70.959u -2.3204u 70.959u 4. 4. -4. 5.0272n 110.01u -5.0272n 110.01u 4.5 4.5 -4. 20.66p 151.53u -20.66p 151.53u 5. 5. -4. 12.493p 196.91u -12.493p 196.91u 0. 0. -5. 216.64u 0. -216.64u 86.092p 0.5 0.5 -5. 172.81u 0. -172.81u 751.18p 1. 1. -5. 132.52u 0. -132.52u 7.9962n 1.5 1.5 -5. 96.169u 86.953n -96.169u 86.918n 2. 2. -5. 64.243u 946.53n -64.243u 946.51n 2.5 2.5 -5. 35.27u 11.048u -35.27u 11.048u 3. 3. -5. 12.847u 31.942u -12.847u 31.942u 3.5 3.5 -5. 1.4464u 62.271u -1.4464u 62.271u 4. 4. -5. 2.0883n 100.48u -2.0883n 100.48u 4.5 4.5 -5. 17.193p 141.41u -17.193p 141.41u 5. 5. -5. 13.872p 186.13u -13.872p 186.13u tests/==out/trcurve2.ckt.out000066400000000000000000000152151316501211100163010ustar00rootroot00000000000000TRANSFER curve tracer, ig-spice # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) iter(0) 27. 1. 0. 163.28u 1.0417u -163.28u 1.0416u 5. # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) iter(0) 0. 0. 0. 0. 0. 0. 0. 3. 1. 0. 0. 1.1058u 0. -1.1058u 8.3819n 4. 2. 0. 0. 28.604u 0. -28.604u 8.7819n 4. 3. 0. 0. 82.398u 0. -82.398u 9.1178n 4. 4. 0. 0. 156.26u 0. -156.26u 9.4192n 4. 5. 0. 0. 251.26u 0. -251.26u 9.6993n 5. 0. 1. 0. 0. -8.E-21 0. -8.E-21 6. 1. 1. 0. 6.2573p 814.43n -6.2573p 814.43n 5. 2. 1. 0. 1.2091u 881.78n -1.2091u 881.79n 4. 3. 1. 0. 30.008u 940.94n -30.008u 940.96n 4. 4. 1. 0. 86.099u 993.38n -86.099u 993.43n 4. 5. 1. 0. 163.28u 1.0416u -163.28u 1.0416u 4. 0. 2. 0. 0. -4.E-21 0. -4.E-21 5. 1. 2. 0. 1.3867p 25.891u -1.3867p 25.891u 5. 2. 2. 0. 8.1909p 26.564u -8.1909p 26.564u 4. 3. 2. 0. 1.3059u 27.15u -1.3059u 27.15u 4. 4. 2. 0. 31.468u 27.69u -31.468u 27.69u 4. 5. 2. 0. 90.047u 28.201u -90.047u 28.201u 4. 0. 3. 0. 0. -59.E-21 0. -100.E-21 5. 1. 3. 0. 1.3866p 76.996u -1.3866p 76.996u 5. 2. 3. 0. 2.7733p 85.21u -2.7733p 85.21u 4. 3. 3. 0. 10.081p 86.656u -10.081p 86.656u 4. 4. 3. 0. 1.4018u 88.016u -1.4018u 88.016u 4. 5. 3. 0. 33.012u 89.319u -33.012u 89.319u 4. 0. 4. 0. 0. 1.968E-18 0. -147.E-21 5. 1. 4. 0. 1.3866p 119.97u -1.3866p 119.97u 5. 2. 4. 0. 2.7733p 161.04u -2.7733p 161.04u 4. 3. 4. 0. 4.1599p 163.39u -4.1599p 163.39u 4. 4. 4. 0. 11.964p 165.63u -11.964p 165.63u 4. 5. 4. 0. 1.4997u 167.82u -1.4997u 167.82u 4. 0. 5. 0. 0. 10.9E-18 0. -64.E-21 5. 1. 5. 0. 1.3866p 160.03u -1.3866p 160.03u 5. 2. 5. 0. 2.7733p 250.95u -2.7733p 250.95u 4. 3. 5. 0. 4.1599p 254.33u -4.1599p 254.33u 4. 4. 5. 0. 5.5466p 257.59u -5.5466p 257.59u 4. 5. 5. 0. 13.855p 260.79u -13.855p 260.79u 4. # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) iter(0) 0. 0. 0. 251.26u 0. -251.26u 9.6993n 6. 1. 1. 0. 163.28u 1.0417u -163.28u 1.0416u 4. 2. 2. 0. 90.047u 28.201u -90.047u 28.201u 4. 3. 3. 0. 33.012u 89.319u -33.012u 89.319u 4. 4. 4. 0. 1.4997u 167.83u -1.4997u 167.82u 4. 5. 5. 0. 13.855p 260.79u -13.855p 260.79u 5. 0. 0. -1. 243.38u 0. -243.38u 1.948n 8. 1. 1. -1. 155.64u 211.74n -155.64u 211.83n 4. 2. 2. -1. 83.024u 16.47u -83.024u 16.47u 5. 3. 3. -1. 26.273u 70.697u -26.273u 70.697u 4. 4. 4. -1. 234.1n 148.58u -234.1n 148.58u 4. 5. 5. -1. 8.957p 240.36u -8.957p 240.36u 5. 0. 0. -2. 236.35u 0. -236.35u 653.51p 8. 1. 1. -2. 149.11u 73.097n -149.11u 73.059n 4. 2. 2. -2. 77.344u 9.5404u -77.344u 9.5403u 4. 3. 3. -2. 21.613u 57.351u -21.613u 57.351u 4. 4. 4. -2. 43.887n 133.48u -43.887n 133.48u 4. 5. 5. -2. 9.8382p 223.79u -9.8382p 223.79u 4. 0. 0. -3. 230.11u 0. -230.11u 279.23p 7. 1. 1. -3. 143.43u 0. -143.43u 31.084n 4. 2. 2. -3. 72.557u 5.1807u -72.557u 5.1807u 4. 3. 3. -3. 18.064u 47.041u -18.064u 47.041u 4. 4. 4. -3. 13.641n 120.98u -13.641n 120.98u 4. 5. 5. -3. 11.131p 209.76u -11.131p 209.76u 4. 0. 0. -4. 224.48u 0. -224.48u 140.56p 7. 1. 1. -4. 138.4u 0. -138.4u 15.062n 4. 2. 2. -4. 68.402u 2.461u -68.402u 2.4609u 4. 3. 3. -4. 15.23u 38.774u -15.23u 38.774u 4. 4. 4. -4. 5.0272n 110.3u -5.0272n 110.3u 4. 5. 5. -4. 12.493p 197.55u -12.493p 197.55u 4. 0. 0. -5. 219.35u 0. -219.35u 81.092p 7. 1. 1. -5. 133.86u 0. -133.86u 7.9912n 4. 2. 2. -5. 64.721u 946.62n -64.721u 946.65n 4. 3. 3. -5. 12.899u 31.998u -12.899u 31.998u 5. 4. 4. -5. 2.0883n 100.77u -2.0883n 100.77u 4. 5. 5. -5. 13.872p 186.73u -13.872p 186.73u 4. tests/==out/trcurves.ckt.out000066400000000000000000000125301316501211100163770ustar00rootroot00000000000000TRANSFER curve tracer, ig-spice .DC VOUT 0 5 .1 VIN 0 5 .5 ^ ? what's this? # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) 0. 1. 0. 365.57u 746.34n -365.57u 746.29n # V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) 0. 0. 0. 549.69u 0. -549.69u 7.9196n 0.5 0.5 0. 455.26u 76.916n -455.26u 76.836n 1. 1. 0. 365.57u 746.34n -365.57u 746.29n 1.5 1.5 0. 281.64u 8.7728u -281.64u 8.7727u 2. 2. 0. 204.73u 26.98u -204.73u 26.98u 2.5 2.5 0. 136.38u 55.532u -136.38u 55.532u 3. 3. 0. 73.212u 94.59u -73.212u 94.59u 3.5 3.5 0. 25.729u 139.8u -25.729u 139.8u 4. 4. 0. 2.4272u 192.38u -2.4272u 192.38u 4.5 4.5 0. 4.4642n 252.6u -4.4642n 252.6u 5. 5. 0. 17.945p 320.2u -17.945p 320.2u 0. 0. -1. 526.56u 0. -526.56u 1.2161n 0.5 0.5 -1. 432.11u 0. -432.11u 12.394n 1. 1. -1. 342.62u 127.45n -342.62u 127.45n 1.5 1.5 -1. 259.22u 1.6291u -259.22u 1.6291u 2. 2. -1. 183.29u 13.005u -183.29u 13.005u 2.5 2.5 -1. 116.56u 35.368u -116.56u 35.367u 3. 3. -1. 53.378u 68.783u -53.378u 68.783u 3.5 3.5 -1. 13.746u 112.92u -13.746u 112.92u 4. 4. -1. 141.88n 162.43u -141.88n 162.43u 4.5 4.5 -1. 292.76p 219.93u -292.76p 219.93u 5. 5. -1. 8.8899p 285.14u -8.8899p 285.14u 0. 0. -2. 505.96u 0. -505.96u 329.49p 0.5 0.5 -2. 411.81u 0. -411.81u 3.3215n 1. 1. -2. 322.86u 0. -322.86u 34.752n 1.5 1.5 -2. 240.32u 364.95n -240.32u 364.91n 2. 2. -2. 165.7u 5.5208u -165.7u 5.5208u 2.5 2.5 -2. 97.795u 22.444u -97.795u 22.444u 3. 3. -2. 39.772u 50.801u -39.772u 50.801u 3.5 3.5 -2. 6.9912u 90.542u -6.9912u 90.542u 4. 4. -2. 21.263n 138.89u -21.263n 138.89u 4.5 4.5 -2. 49.253p 193.66u -49.253p 193.66u 5. 5. -2. 9.78p 256.4u -9.78p 256.4u 0. 0. -3. 487.36u 0. -487.36u 121.21p 0.5 0.5 -3. 393.64u 0. -393.64u 1.1328n 1. 1. -3. 305.37u 0. -305.37u 11.88n 1.5 1.5 -3. 223.82u 126.12n -223.82u 126.06n 2. 2. -3. 150.63u 1.6263u -150.63u 1.6262u 2.5 2.5 -3. 82.327u 13.652u -82.327u 13.652u 3. 3. -3. 29.632u 37.393u -29.632u 37.393u 3.5 3.5 -3. 3.0198u 72.793u -3.0198u 72.793u 4. 4. -3. 4.3677n 119.47u -4.3677n 119.47u 4.5 4.5 -3. 18.871p 171.58u -18.871p 171.58u 5. 5. -3. 11.107p 231.9u -11.107p 231.9u 0. 0. -4. 470.31u 0. -470.31u 58.162p 0.5 0.5 -4. 377.1u 0. -377.1u 452.9p 1. 1. -4. 289.58u 0. -289.58u 4.6778n 1.5 1.5 -4. 209.1u 0. -209.1u 49.896n 2. 2. -4. 137.38u 533.88n -137.38u 533.82n 2.5 2.5 -4. 69.514u 7.6444u -69.514u 7.6444u 3. 3. -4. 21.815u 27.119u -21.815u 27.119u 3.5 3.5 -4. 870.26n 58.472u -870.26n 58.472u 4. 4. -4. 1.0974n 101.58u -1.0974n 101.58u 4.5 4.5 -4. 14.365p 152.54u -14.365p 152.54u 5. 5. -4. 12.483p 210.5u -12.483p 210.5u 0. 0. -5. 454.5u 0. -454.5u 36.299p 0.5 0.5 -5. 361.85u 0. -361.85u 206.44p 1. 1. -5. 275.12u 0. -275.12u 2.0372n 1.5 1.5 -5. 195.74u 0. -195.74u 21.737n 2. 2. -5. 125.53u 233.68n -125.53u 233.7n 2.5 2.5 -5. 58.679u 3.6781u -58.679u 3.6781u 3. 3. -5. 15.706u 19.171u -15.706u 19.171u 3.5 3.5 -5. 181.65n 46.721u -181.65n 46.721u 4. 4. -5. 323.37p 86.212u -323.37p 86.212u 4.5 4.5 -5. 14.394p 135.86u -14.394p 135.86u 5. 5. -5. 13.867p 191.53u -13.867p 191.53u tests/README000066400000000000000000000034041316501211100130700ustar00rootroot00000000000000Here are circuits used for regressions. Some of these will also run on Spice and can be used for comparison. Most are designed to test partcular features in hopes of clearly identifying the defective module. Some are more general. You can run any ".ckt" file in batch mode by typing "gnucap -b name" from the shell. You can run them interactively by starting gnucap then "get name". Then play, change probes, rerun, change values, etc. The file "test" is a script to automate the testing. It takes 4 arguments, which all must be supplied. The diagnostics are poor to nonexistent. The arguments are: $0 "./test" (its name) $1 the path name of the executable version of gnucap being tested. $2 the prefix of all .ckt files to test. Probably, you want "", which tests everything. Otherwise, "d_mos" will test anything beginning with "d_mos". It does not use the usual globbing, although it should. $3 The directory to use for the results files. Running the script makes an output file for every input file. It will make the directory if it doesn't already exist. It will overwrite files in that directory without warning. $4 The directory to use for comparison. Usually this will be "==". It contains all of the reference results files. Example: ./test ../src/O/gnucap "" 0001 == .. places the results in 0001, and compares them to the old ones in "==". It creates a file ".diffs" in 0001 that contains the differences. Also, it prints a failure message to the console for any that don't match. If you don't get any such messages, but do get a list of all the files, all pass. Any differences should be investigated. It is normal to get a few minor differences due to differences in machine arithmetic. Any results that are significantly different indicate a problem. tests/ap_ctof.2.ckt000066400000000000000000000005601316501211100144660ustar00rootroot00000000000000' test file for ap_ctof.cc V1 1 0 1 R0102 1 2 -21.33t R0200 2 0 7.3g R0203 2 3 2.3k R0300 3 0 3.4f R0304 3 4 -3.4443323223p R0400 4 0 4534445.3n R0405 4 5 .23423u R0500 5 0 -.000000000004343m R0506 5 6 345345345Meg R0600 6 0 23.432mil R0607 6 7 4.55e-3 R0700 7 0 -344e28 R0708 7 8 0000004737e+77 R0800 8 0 -344e+28 R0809 8 9 +344e+28 R0900 9 0 foo .list *.status .end tests/ap_ctof.ckt000066400000000000000000000005471316501211100143330ustar00rootroot00000000000000' test file for ap_ctof.cc V1 1 0 1 R0102 1 2 -21.33t R0200 2 0 7.3g R0203 2 3 2.3k R0300 3 0 3.4f R0304 3 4 -3.4443323223p R0400 4 0 4534445.3n R0405 4 5 .23423u R0500 5 0 -.000000000004343m R0506 5 6 345345345Meg R0600 6 0 23.432mil R0607 6 7 4.55e-3 R0700 7 0 -344e28 R0708 7 8 0000004737e+77 R0800 8 0 -344e+28 R0809 8 9 +344e+28 R0900 9 0 foo .list .end tests/basic.ckt000066400000000000000000000002511316501211100137710ustar00rootroot00000000000000# test "basic" formatting v1 1 0 1 v2 2 0 10k v3 3 0 1e30 v4 4 0 .001 r4 4 0 10000k v5 5 0 1n r5 5 0 10000k .print op v(nodes) i(r4) i(r5) v(1) .op .op basic .list .end tests/bm_complex.1.ckt000066400000000000000000000002041316501211100151720ustar00rootroot00000000000000' V1 1 0 ac 1. R2 1 2 1. C3 2 0 complex( 0. 1. ) .print ac vm(2) vdb(2) vp(2) .ac 1p 1g dec .ac .1 .2 .005 .list .end tests/bm_complex.1a.ckt000066400000000000000000000002101316501211100153300ustar00rootroot00000000000000' V1 1 0 ac 1. R2 1 2 1. C3 2 0 complex( 0. 1. ) .op .print ac vm(2) vdb(2) vp(2) .ac 1p 1g dec .ac .1 .2 .005 .list .end tests/bm_complex.2.ckt000066400000000000000000000002021316501211100151710ustar00rootroot00000000000000' V1 1 0 ac 1. R2 1 2 1. C3 2 0 complex( 0. 1. .print ac vm(2) vdb(2) vp(2) .ac 1p 1g dec .ac .1 .2 .005 .list .end tests/bm_complex.3.ckt000066400000000000000000000002021316501211100151720ustar00rootroot00000000000000' V1 1 0 ac 1. R2 1 2 1. C3 2 0 complex 0. 1. ) .print ac vm(2) vdb(2) vp(2) .ac 1p 1g dec .ac .1 .2 .005 .list .end tests/bm_complex.4.ckt000066400000000000000000000002001316501211100151710ustar00rootroot00000000000000' V1 1 0 ac 1. R2 1 2 1. C3 2 0 complex 0. 1. .print ac vm(2) vdb(2) vp(2) .ac 1p 1g dec .ac .1 .2 .005 .list .end tests/bm_cond.1.ckt000066400000000000000000000001711316501211100144510ustar00rootroot00000000000000# conditional test v1 1 0 dc 1 ac 10 r1 1 2 ac 1k dc 2k r2 2 0 1k .print dc v 1 2 .print ac v 1 2 .dc .ac .dc .list .end tests/bm_cond.2.ckt000066400000000000000000000004061316501211100144530ustar00rootroot00000000000000'dctran test V1 1 0 dc generator(1) ac 1 L3 1 2 dc 1. ac 1. R4 2 0 dc 1. ac 1. R5 1 3 dc 1. ac 1. C6 3 0 dc 1. ac 1. .options short=1p .print tran iter(0) v(nodes) .tran 0 1 .1 .print ac v(nodes) .ac .001 10 decade .list .status notime .end tests/bm_cond.3.ckt000066400000000000000000000004401316501211100144520ustar00rootroot00000000000000'dctran test V1 1 0 dc generator(1) ac 1 L3 1 2 dc 1. ac 1. R4 2 0 dc 1. ac 1. R5 1 3 dc 1. ac 1. C6 3 0 dc 1. ac 1. .options short=1p .print tran iter(0) v(nodes) control(0) .tran 0 1 .1 trace rejected .print ac v(nodes) .ac .001 10 decade .list .status notime .end tests/bm_exp.1.ckt000066400000000000000000000002151316501211100143210ustar00rootroot00000000000000' exp test .option out=170 v1 1 0 exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n .print tran v 1 .tran 0 20n .05n .list .end tests/bm_exp.1p.ckt000066400000000000000000000002651316501211100145060ustar00rootroot00000000000000' exp test .option out=170 .param delay=10n v1 1 0 exp iv= 0. pv= 1. td1=delay/10 tau1=delay/2 td2=delay tau2=delay/2 .print tran v 1 .tran 0 'delay*2' 'delay/200' .list .end tests/bm_exp.2.ckt000066400000000000000000000002441316501211100143240ustar00rootroot00000000000000' exp test, periodic .option out=170 v1 1 0 exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n .print tran v 1 .tran 0 100n 1n .list .end tests/bm_exp.3.ckt000066400000000000000000000003171316501211100143260ustar00rootroot00000000000000' exp test, periodic .option out=170 v1 1 0 exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n .print tran v(1) next(v1) event(v1) control(0) .tran 0 100n 100n trace all .list .end tests/bm_exp.3p.ckt000066400000000000000000000003241316501211100145040ustar00rootroot00000000000000' exp test, periodic .option out=170 .param p=20n v1 1 0 exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p .print tran v(1) next(v1) event(v1) control(0) .tran 0 100n 100n trace all .list .end tests/bm_exp.4p.ckt000066400000000000000000000003671316501211100145140ustar00rootroot00000000000000' exp test, periodic .option out=170 list v1 1 0 exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p .print tran v(1) next(v1) event(v1) control(0) .param p=20n .tran 0 100n 100n trace all .param p=50n .tran trace all .list .end tests/bm_exp.5p.ckt000066400000000000000000000006201316501211100145050ustar00rootroot00000000000000' exp test, periodic .option out=170 list .param ppp=50n .subckt esource (a b) *v1 (a b) exp iv= 0. pv= 1. td1= 1.n tau1= 5.n td2= 10.n tau2= 5.n period= 20.n v1 (a b) exp iv= 0. pv= 1. td1=p/20 tau1=p/4 td2=p/2 tau2=p/4 period=p .ends x1 (1 0) esource p=ppp *x2 (2 0) esource p=20n .print tran v(1) .param ppp=20n .tran 0 100n 100n trace all .param ppp=50n .tran trace all .list .end tests/bm_fit.0.1.ckt000066400000000000000000000004421316501211100144470ustar00rootroot00000000000000# FIT mimicing PWL v1 1 0 dc 1 ac 1 r1 1 2 1k r2 2 0 1k e1 3 0 2 0 FIT (0,0 1,1 4,2 9,3 9,3 16,4 25,5) order=1 r3 3 0 10k g1 4 0 2 0 FIT (0,0 1,1 4,2 9,3 16,4 25,5) order=1 r4 4 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .end tests/bm_fit.1.1.ckt000066400000000000000000000004361316501211100144530ustar00rootroot00000000000000# FIT mimicing PWL v1 1 0 dc 1 ac 1 r1 1 2 1k r2 2 0 1k e1 3 0 2 0 FIT (0,0 1,1 4,2 9,3 16,4 25,5) order=1 r3 3 0 10k g1 4 0 2 0 FIT (0,0 1,1 4,2 9,3 16,4 25,5) order=1 r4 4 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .end tests/bm_fit.2.1.ckt000066400000000000000000000005651316501211100144570ustar00rootroot00000000000000# FIT as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 e3 7 0 2 1 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 e1 4 0 5 1 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_fit.2.2.ckt000066400000000000000000000006411316501211100144530ustar00rootroot00000000000000# FIT as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 below=0 e3 7 0 2 1 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 below=0 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 below=1.56984 e1 4 0 5 1 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 below=1.56984 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_fit.2.3.ckt000066400000000000000000000006311316501211100144530ustar00rootroot00000000000000# FIT as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 above=10 e3 7 0 2 1 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 above=10 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 above=.1 e1 4 0 5 1 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 above=.1 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_fit.2.4.ckt000066400000000000000000000007011316501211100144520ustar00rootroot00000000000000# FIT as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 above=10 below=100 e3 7 0 2 1 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=2 above=10 below=100 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 above=.1 below=100 e1 4 0 5 1 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=2 above=.1 below=100 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_fit.3.1.ckt000066400000000000000000000004061316501211100144520ustar00rootroot00000000000000# FIT as cubic v1 2 0 dc 1 ac 1 e1 3 0 2 0 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=3 r3 3 0 10k e2 4 0 2 0 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=3 r4 4 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 .5 .dc v1 1 1000 decade 5 .dc v1 16 68 4.5 .end tests/bm_fit.3.2.ckt000066400000000000000000000004261316501211100144550ustar00rootroot00000000000000# FIT as cubic v1 2 0 dc 1 ac 1 e1 3 0 2 0 FIT 0,0 1,1 4,2 9,3 16,4 25,5 order=3 below=0 r3 3 0 10k e2 4 0 2 0 FIT 0,0 1,1 2,4 3,9 4,16 5,25 order=3 above=0 r4 4 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 .5 .dc v1 1 1000 decade 5 .dc v1 16 68 4.5 .end tests/bm_fit.3.3.ckt000066400000000000000000000002761316501211100144610ustar00rootroot00000000000000# FIT, vsrc test, with BC mismatch at start v1 1 0 fit 1n,3 2n,3.5 3n,4 4n,4.5 5n,5 6n,5 7n,5 8n,5 9n,5 + order=3 below=0 above=0 .print tran v(nodes) .tran 0 10n .1n trace all .end tests/bm_generator.doc000066400000000000000000000000531316501211100153400ustar00rootroot00000000000000implicitly tested by d_logic* e_exp_time* tests/bm_poly.1.ckt000066400000000000000000000006461316501211100145200ustar00rootroot00000000000000# HSPICE style POLY(1) .width out=120 v1 1 0 dc 1 ac 1 e2 2 0 POLY(1) 1 0 10 0 0 0 r2 2 0 10k e3 3 0 POLY(1) 1 0 0 10 0 0 r3 3 0 10k e4 4 0 POLY(1) 1 0 0 0 10 0 r4 4 0 10k e5 5 0 POLY(1) 1 0 0 0 0 10 r5 5 0 10k e6 6 0 POLY(1) 1 0 0 10 r6 6 0 10k e7 7 0 1 0 10 r7 7 0 10k g8 8 0 POLY(1) 1 0 0 0 10 0 r8 8 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .end tests/bm_poly.2.ckt000066400000000000000000000010341316501211100145110ustar00rootroot00000000000000# HSPICE style POLY(1) .width out=120 v1 1 0 dc 1 ac 1 e2 2 0 POLY(1) 1 0 10 0 0 0 max=100 min=-200 r2 2 0 10k e3 3 0 POLY(1) 1 0 0 10 0 0 max=100 min=-200 r3 3 0 10k e4 4 0 POLY(1) 1 0 0 0 10 0 max=100 min=-200 r4 4 0 10k e5 5 0 POLY(1) 1 0 0 0 0 10 max=100 min=-200 abs r5 5 0 10k e6 6 0 POLY(1) 1 0 0 10 max=100 min=-200 r6 6 0 10k e7 7 0 1 0 10 r7 7 0 10k g8 8 0 POLY(1) 1 0 0 0 0 10 max=100 min=-200 r8 8 0 10k .list .print op v(nodes) i(g8) .op .print dc v(nodes) i(g8) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .end tests/bm_posy.1.ckt000066400000000000000000000001611316501211100145170ustar00rootroot00000000000000square root circuit?? v1 1 0 1. e1 2 0 1 0 posy (1. .5) .print dc v(1) v(2) .dc v1 -10 10 1 .end tests/bm_pulse.1.ckt000066400000000000000000000004521316501211100146600ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k Vin 1 0 generator( 1. ) C1 1 2 1.p Y1 2 3 pulse iv=20u pv=0 delay=500n period=1u Y2 3 0 pulse iv=0 pv=20u delay=500n period=1u C2 3 0 1.p ic=0. .gen freq=100k .print tran v(nodes) .tran 0 50u .1u .status notime .end tests/bm_pulse.1a.ckt000066400000000000000000000005001316501211100150130ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k Vin 1 0 generator( 1. ) C1 1 2 1.p Y1 2 3 pulse iv=20u pv=0 delay=500n period=1u width=500n Y2 3 0 pulse iv=0 pv=20u delay=500n period=1u width=500n C2 3 0 1.p ic=0. .gen freq=100k .print tran v(nodes) .tran 0 50u .1u .status notime .end tests/bm_pulse.2.ckt000066400000000000000000000004441316501211100146620ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k Vin 1 0 generator( 1. ) C1 1 2 1.p Y1 2 3 pulse iv=20u pv=0 delay=500n period=1u Y2 3 0 pulse iv=0 pv=20u delay=500n period=1u C2 3 0 1.p .gen freq=100k .print tran v(nodes) .tran 0 50u .1u .status notime .end tests/bm_pulse.2a.ckt000066400000000000000000000004721316501211100150240ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k Vin 1 0 generator( 1. ) C1 1 2 1.p Y1 2 3 pulse iv=20u pv=0 delay=500n period=1u width=500n Y2 3 0 pulse iv=0 pv=20u delay=500n period=1u width=500n C2 3 0 1.p .gen freq=100k .print tran v(nodes) .tran 0 50u .1u .status notime .end tests/bm_pulse.3.ckt000066400000000000000000000005011316501211100146550ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k Vin 1 0 generator( 1. ) C1 1 2 1.p Y1 2 3 pulse iv=20u pv=0 delay=500n period=1u Y2 3 0 pulse iv=0 pv=20u delay=500n period=1u C2 3 0 1.p ic=0. .gen freq=100k .print tran v(nodes) stepcause(0) .tran 0 50u .1u trace all .status notime .end tests/bm_pulse.3a.ckt000066400000000000000000000005271316501211100150260ustar00rootroot00000000000000'switch capacitor filter. Use tr 0 50u .1u. Gen freq 100k Vin 1 0 generator( 1. ) C1 1 2 1.p Y1 2 3 pulse iv=20u pv=0 delay=500n period=1u width=500n Y2 3 0 pulse iv=0 pv=20u delay=500n period=1u width=500n C2 3 0 1.p ic=0. .gen freq=100k .print tran v(nodes) stepcause(0) .tran 0 50u .1u trace all .status notime .end tests/bm_pulse.4.ckt000066400000000000000000000001461316501211100146630ustar00rootroot00000000000000* pulse test with 0 rise and fall time v1 (1 0) pulse (iv=0 pv=10) .print tran v(1) .tran 0 10 1 .end tests/bm_pulse.4a.ckt000066400000000000000000000001671316501211100150270ustar00rootroot00000000000000* pulse test with 0 rise and fall time v1 (1 0) pulse (iv=0 pv=10 width=0 period=0) .print tran v(1) .tran 0 10 1 .end tests/bm_pulse.4b.ckt000066400000000000000000000002711316501211100150240ustar00rootroot00000000000000* pulse test with 0 rise and fall time in subckt .subckt foo (1 2) v1 (1 2) pulse (iv=0 pv=10 width=0 period=0) .ends x1 (1 0) foo x2 (0 2) foo .print tran v(1) v(2) .tran 0 10 1 .end tests/bm_pulse.doc000066400000000000000000000000711316501211100145020ustar00rootroot00000000000000implicitly tested by cap and coil tests ans opamp-vf.ckt tests/bm_pwl.1.ckt000066400000000000000000000004221316501211100143270ustar00rootroot00000000000000# HSPICE style PWL v1 1 0 dc 1 ac 1 r1 1 2 1k r2 2 0 1k e1 3 0 PWL(1) 2 0 0,0 1,1 4,2 9,3 16,4 25,5 r3 3 0 10k g1 4 0 PWL(1) 2 0 0,0 1,1 4,2 9,3 16,4 25,5 r4 4 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .end tests/bm_pwl.2.ckt000066400000000000000000000003761316501211100143400ustar00rootroot00000000000000# HSPICE style PWL, out of order, bogus answers v1 1 0 dc 1 ac 1 r1 1 2 1k r2 2 0 1k e1 3 0 2 0 PWL(1) 0,0 1,1 4,2 9,3 160,4 25,5 r3 3 0 10k .list .print op v(1) v(2) v(3) .op .print dc v(nodes) .dc v1 -10 10 1 .dc v1 1 1000 decade 5 .dc v1 32 68 9 .end tests/bm_pwl.3.ckt000066400000000000000000000003171316501211100143340ustar00rootroot00000000000000# PWL sources v1 1 0 PWL 0,0 1,1 4,2 9,3 16,4 25,5 i1 2 0 PWL 0,0 1,-1 4,2 9,-3 16,4 25,-5 r4 2 0 10k .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 1 .print tran v(nodes) .tran 0 30 1 .end tests/bm_pwl.4.ckt000066400000000000000000000003471316501211100143400ustar00rootroot00000000000000' v1 1 0 1 e1 2 0 1 0 pwl(-5 -2 -3 0 0 0 4 1) e2 3 0 1 0 pwl(-5 -2 -3 0 -3 1 0 0 4 1) e3 4 0 1 0 pwl(-5 -2 -3 0 0 -3 4 5) 'e4 5 0 1 0 pwl(4 1 0 0 -3 0 -5 2) .option out=170 .print dc v(nodes) f(e*) ev(e*) .dc v1 -10 10 .5 .end tests/bm_pwl.5.ckt000066400000000000000000000002121316501211100143300ustar00rootroot00000000000000# PWL sources v1 1 0 PWL 0,0 1,1 4,2 9,0 16,4 25,0 .list .print tran v(1) next(v1) event(v1) .tran 0 30 30 trace all .status notime .end tests/bm_pwl.doc000066400000000000000000000000401316501211100141500ustar00rootroot00000000000000implicitly tested by d_switch* tests/bm_sffm.1.ckt000066400000000000000000000004361316501211100144650ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=.1 signal=1k V2 2 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=1 signal=1k V3 3 0 SIN freq=10k V4 4 0 SIN freq=1k .print tran v nodes .tran 0 .002 5u .list .end tests/bm_sffm.2.ckt000066400000000000000000000004551316501211100144670ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=2 signal=1k samples=0 V3 3 0 SIN freq=10k samples=0 V4 4 0 SIN freq=1k samples=0 .print tran v(nodes) next(v1) event(v1) next(v3) event(v3) .tran 0 .002 .002 trace all .list .status notime .end tests/bm_sffm.3.ckt000066400000000000000000000006701316501211100144670ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=.1 signal=1k nozero nopeak V2 2 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=1 signal=1k nozero nopeak V3 3 0 SIN freq=10k nozero nopeak V4 4 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=2.4 signal=1k nozero nopeak .print tran v nodes .tran 0 .002 5u .print fourier v(nodes) .fourier 5k 15k 1k .list .end tests/bm_sffm.4.ckt000066400000000000000000000006001316501211100144610ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=.1 signal=1k V2 2 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=1 signal=1k V3 3 0 SIN freq=10k V4 4 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=2.4 signal=1k .print tran v nodes .tran 0 .002 5u .print fourier v(nodes) .fourier 5k 15k 1k .list .end tests/bm_sffm.5.ckt000066400000000000000000000006131316501211100144660ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=.1 signal=1k V2 2 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=1 signal=1k V3 3 0 SIN freq=10k V4 4 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=2.4 signal=1k .print tran v nodes .tran 0 .002 5u .param x=4 .print fourier v(nodes) .fourier 5k 15k 1k .list .end tests/bm_sffm.6.ckt000066400000000000000000000005331316501211100144700ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=.1 signal=1k V2 2 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=1 signal=1k V3 3 0 SIN freq=10k V4 4 0 SFFM offset= 0. amplitude= 1. carrier=10k modindex=2.4 signal=1k .print fourier v(nodes) .fourier 5k 15k 1k .list .end tests/bm_sin.1.ckt000066400000000000000000000004111316501211100143140ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg delay= 0. damping= 0. V2 2 0 SIN offset= 0. amplitude= 1. frequency= 100meg delay=10n damping= 20meg .print tran v nodes .tran 0 100n .5n .list .status notime .end tests/bm_sin.2.ckt000066400000000000000000000003131316501211100143160ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg delay= 0. damping= 0. .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.3.ckt000066400000000000000000000002771316501211100143300ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg samples=10 .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.4.ckt000066400000000000000000000003031316501211100143170ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg samples=0 zero .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.5.ckt000066400000000000000000000003031316501211100143200ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg samples=0 peak .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.6.ckt000066400000000000000000000003101316501211100143170ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg samples=0 peak zero .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.7.ckt000066400000000000000000000003141316501211100143240ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg samples=5 peak=1 zero=1 .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.8.ckt000066400000000000000000000003251316501211100143270ustar00rootroot00000000000000' sin test .option out=170 V1 1 0 SIN offset= 0. amplitude= 1. frequency= 100meg samples=7 peak=1 zero=1 delay=1n .print tran v(1) next(v1) event(v1) .tran 0 20n 20n trace all .list .status notime .end tests/bm_sin.9.ckt000066400000000000000000000001541316501211100143300ustar00rootroot00000000000000' bd sin test v1 (1 0) sin zero peak 10 10 .print tran v(1) .tran 1e-4 1e-3 0 trace all .status notime .end tests/bm_sin.doc000066400000000000000000000002251316501211100141440ustar00rootroot00000000000000implicitly tested by: charge-cons.ckt charge-cons2.ckt charge-cons3.ckt opamp-ol-disto.ckt .. as voltage source only. needs testing as xfer element tests/bm_table.1.1.ckt000066400000000000000000000004101316501211100147500ustar00rootroot00000000000000# TABLE mimicing PWL v1 1 0 dc 1 ac 1 r1 1 2 1k r2 2 0 1k e1 3 0 2 0 t1 r3 3 0 10k g1 4 0 2 0 t1 r4 4 0 10k .model t1 table 0,0 1,1 4,2 9,3 16,4 25,5 order=1 .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .end tests/bm_table.2.1.ckt000066400000000000000000000005171316501211100147610ustar00rootroot00000000000000# TABLE as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 t1 e3 7 0 2 1 t1 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 t2 e1 4 0 5 1 t2 .model t1 table 0,0 1,1 2,4 3,9 4,16 5,25 order=2 .model t2 table 0,0 1,1 4,2 9,3 16,4 25,5 order=2 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_table.2.2.ckt000066400000000000000000000005461316501211100147640ustar00rootroot00000000000000# TABLE as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 t1 e3 7 0 2 1 t1 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 t2 e1 4 0 5 1 t2 .model t1 table 0,0 1,1 2,4 3,9 4,16 5,25 order=2 below=0 .model t2 table 0,0 1,1 4,2 9,3 16,4 25,5 order=2 below=1.56984 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_table.2.3.ckt000066400000000000000000000005371316501211100147650ustar00rootroot00000000000000# FIT as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 t1 e3 7 0 2 1 t1 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 t2 e1 4 0 5 1 t2 .model t1 table 0,0 1,1 2,4 3,9 4,16 5,25 order=2 above=10 .model t2 table 0,0 1,1 4,2 9,3 16,4 25,5 order=2 above=.1 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_table.2.4.ckt000066400000000000000000000005651316501211100147670ustar00rootroot00000000000000# TABLE as quadratic Vs 1 0 dc 1u v1 2 0 dc 1 ac 1 e2 6 0 2 0 t1 e3 7 0 2 1 t1 e0 5 0 2 0 posy(1,2) odd e1 3 0 5 0 t2 e1 4 0 5 1 t2 .model t1 table 0,0 1,1 2,4 3,9 4,16 5,25 order=2 above=10 below=100 .model t2 table 0,0 1,1 4,2 9,3 16,4 25,5 order=2 above=.1 below=100 .option out=120 .list .print op v(1 2 3 4 5 6 7) .op .print dc v(1 2 3 4 5 6 7) .dc v1 -10 10 .25 .end tests/bm_table.3.1.ckt000066400000000000000000000004461316501211100147630ustar00rootroot00000000000000# TABLE as cubic v1 2 0 dc 1 ac 1 e1 3 0 2 0 t1 r3 3 0 10k e2 4 0 2 0 t2 r4 4 0 10k .model t1 table 0,0 1,1 4,2 9,3 16,4 25,5 order=3 .model t2 table 0,0 1,1 2,4 3,9 4,16 5,25 order=3 .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 .5 .dc v1 1 1000 decade 5 .dc v1 16 68 4.5 .end tests/bm_table.3.2.ckt000066400000000000000000000004701316501211100147610ustar00rootroot00000000000000# TABLE as cubic v1 2 0 dc 1 ac 1 e1 3 0 2 0 t1 r3 3 0 10k e2 4 0 2 0 t2 r4 4 0 10k .model t1 table 0,0 1,1 4,2 9,3 16,4 25,5 order=3 below=0 .model t2 table 0,0 1,1 2,4 3,9 4,16 5,25 order=3 above=0 .list .print op v(nodes) .op .print dc v(nodes) .dc v1 -10 10 .5 .dc v1 1 1000 decade 5 .dc v1 16 68 4.5 .end tests/bm_table.3.3.ckt000066400000000000000000000003161316501211100147610ustar00rootroot00000000000000# FIT, vsrc test, with BC mismatch at start v1 1 0 t1 .model t1 table 1n,3 2n,3.5 3n,4 4n,4.5 5n,5 6n,5 7n,5 8n,5 9n,5 + order=3 below=0 above=0 .print tran v(nodes) .tran 0 10n .1n trace all .end tests/bm_table.error1.ckt000066400000000000000000000000521316501211100156650ustar00rootroot00000000000000 m1 3 2 0 0 foo .model foo table .op .end tests/bm_tanh.1.ckt000066400000000000000000000003361316501211100144630ustar00rootroot00000000000000'hyperbolic tangent test circuit v1 1 0 generator(1) e1 2 0 1 0 tanh 5 5 e2 3 0 1 0 tanh gain -5 limit 3 e3 4 0 1 0 tanh 4 3 .print dc v nodes .print ac v nodes .dc -2 2 .1 .ac .dc 1 .ac .dc 0 .ac .dc 1000 .ac .list .end tests/bm_tanh.2.ckt000066400000000000000000000007431316501211100144660ustar00rootroot00000000000000' V1 1 0 DC 1. E1 2 0 1 0 TANH gain= 100. limit= 0.01 .print dc v nodes .dc v1 -.00000001 .00000001 .000000001 .dc v1 -.0000001 .0000001 .00000001 .dc v1 -.000001 .000001 .0000001 .dc v1 -.00001 .00001 .000001 .dc v1 -.0001 .0001 .00001 .dc v1 -.001 .001 .0001 .dc v1 -.01 .01 .001 .dc v1 -.1 .1 .01 .dc v1 -1 1 .1 .dc v1 -10 10 1 .dc v1 -100 100 10 .dc v1 -1000 1000 100 .dc v1 -10k 10k 1k .dc v1 -100k 100k 10k .dc v1 -1000k 1000k 100k .dc v1 -10000k 10000k 1000k .end tests/bmm_cap.1.ckt000066400000000000000000000004431316501211100144500ustar00rootroot00000000000000# semiconductor "capacitor" test v1 1 0 dc 2 ac 1 tran pwl (0,0 1.999999n,0 2.000001n,1) r1 1 2 1k c2 2 0 t1 (w=2u l=1u) .model t1 c cj=5 .print op v(nodes) c(c2) .print tran v(nodes) .print ac v(nodes) vp(2) vdb(2) .op .tran 0 20n 2n .ac 15.9meg .ac 1meg 1g dec 3 .list .status notime .end tests/bmm_cap.2.ckt000066400000000000000000000004531316501211100144520ustar00rootroot00000000000000# semiconductor "capacitor" test v1 1 0 dc 2 ac 1 tran pwl (0,0 1.999999n,0 2.000001n,1) r1 1 2 1k c2 2 0 t1 (w=2u l=1u) .model t1 c cj=5 cjsw=1u .print op v(nodes) c(c2) .print tran v(nodes) .print ac v(nodes) vp(2) vdb(2) .op .tran 0 20n 2n .ac 15.9meg .ac 1meg 1g dec 3 .list .status notime .end tests/bmm_cap.3.ckt000066400000000000000000000004361316501211100144540ustar00rootroot00000000000000# semiconductor "capacitor" test v1 1 0 dc 2 ac 1 tran pwl (0,0 1.999999n,0 2.000001n,1) r1 1 2 1k c2 2 0 t1 (w=2u l=1u) .model t1 d .print op v(nodes) c(c2) .print tran v(nodes) .print ac v(nodes) vp(2) vdb(2) .op .tran 0 20n 2n .ac 15.9meg .ac 1meg 1g dec 3 .list .status notime .end tests/bmm_cap.4.ckt000066400000000000000000000004551316501211100144560ustar00rootroot00000000000000# semiconductor "capacitor" test v1 1 0 dc 2 ac 1 tran pwl (0,0 1.999999n,0 2.000001n,1) r1 1 2 1k c2 2 0 t1 (w=2u l=1u) .model t1 c cj=5 .print op v(nodes) c(c2) .print tran v(nodes) .print ac v(nodes) vp(2) vdb(2) .op .tran 0 20n 2n trace all .ac 15.9meg .ac 1meg 1g dec 3 .list .status notime .end tests/bmm_cap.5.ckt000066400000000000000000000005031316501211100144510ustar00rootroot00000000000000# semiconductor "capacitor" test v1 1 0 dc 2 ac 1 tran pwl (0,0 1.999999n,0 2.000001n,1) r1 1 2 1k c2 2 0 t1 (w=2u l=1u) .model t1 c cj=5 .print op v(nodes) c(c2) .print tran v(nodes) .print ac v(nodes) vp(2) vdb(2) .option numdgt=9 .op .tran 0 20n 2n trace rejected .ac 15.9meg .ac 1meg 1g dec 3 .list .status notime .end tests/bmm_res.1.ckt000066400000000000000000000002441316501211100144750ustar00rootroot00000000000000# semiconductor "resistor" test v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=2u l=1u) .model t1 r rsh=1k .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.1p.ckt000066400000000000000000000002671316501211100146620ustar00rootroot00000000000000# semiconductor "resistor" test .param pw=2u pl=1u v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=pw l=pl) .model t1 r rsh=1k .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.2.ckt000066400000000000000000000002631316501211100144770ustar00rootroot00000000000000# semiconductor "resistor" test v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=2u l=1u temp=37) .model t1 r rsh=1k tc1=.1 .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.2p.ckt000066400000000000000000000003141316501211100146540ustar00rootroot00000000000000# semiconductor "resistor" test .param pw=2u pl=1u pt=37 v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=pw l=pl temp=pt) .model t1 r rsh=1k tc1=.1 .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.3.ckt000066400000000000000000000002641316501211100145010ustar00rootroot00000000000000# semiconductor "resistor" test v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=2u l=1u temp=37) .model t1 r rsh=1k tc2=.01 .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.3p.ckt000066400000000000000000000003151316501211100146560ustar00rootroot00000000000000# semiconductor "resistor" test .param pw=2u pl=1u pt=37 v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=pw l=pl temp=pt) .model t1 r rsh=1k tc2=.01 .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.4.ckt000066400000000000000000000002561316501211100145030ustar00rootroot00000000000000# semiconductor "resistor" test v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=2u l=1u) .model t1 r rsh=1k narrow=1u .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.4p.ckt000066400000000000000000000003011316501211100146520ustar00rootroot00000000000000# semiconductor "resistor" test .param pw=2u pl=1u v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (w=pw l=pl) .model t1 r rsh=1k narrow=1u .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.5.ckt000066400000000000000000000002371316501211100145030ustar00rootroot00000000000000# semiconductor "resistor" test v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (l=1u) .model t1 r rsh=1k .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/bmm_res.5p.ckt000066400000000000000000000002541316501211100146620ustar00rootroot00000000000000# semiconductor "resistor" test .param pl=1u v1 1 0 dc 2 ac 5 r1 1 2 1k r2 2 0 t1 (l=pl) .model t1 r rsh=1k .print op v(nodes) r(r*) .print ac v(nodes) .op .ac .list .end tests/c.ckt000066400000000000000000000013651316501211100131410ustar00rootroot00000000000000This is the title *this is a comment VIN 12 0 AC .5 EIN 0 9 12 0 1 M1 3 9 10 11 MOD1 W=59U L=10U M2 4 12 10 11 MOD1 W=59U L=10U M3 3 3 1 1 MOD2 W=8U L=10U M4 4 3 1 1 MOD2 W=8U L=10U M5 10 8 11 11 MOD1 W=51U L=10U M6 5 4 1 1 MOD2 W=39U L=10U M7 5 8 11 11 MOD1 W=949U L=10U M8 8 8 11 11 MOD1 W=56U L=10U IREF 1 8 10U *M9 8 8 7 1 MOD2 W=10U L=10U *M10 7 7 6 1 MOD2 W=11U L=10U *M11 6 6 1 1 MOD2 W=10U L=10U .MODEL MOD1 NMOS Level=2 VTO=1.0 KP=17U GAMMA=1.3 LAMBDA=0.01 PHI=0.7 .MODEL MOD2 PMOS Level=2 VTO=-1.0 KP=8U GAMMA=0.6 LAMBDA=0.02 PHI=0.6 CC 4 5 6PF VCC 1 0 DC +5 VSS 11 0 DC -5 *.AC DEC 10 1HZ 20M *.plot ac vdb(5) vp(5) *>.options out=200 vmin=-5.5 vmax=5.5 dampstrategy=2 *>.print op v(1 3 4 5 8 9 10 11 12) .op trace iterations *>.stat notime .END tests/c_attach.1.gc000066400000000000000000000000471316501211100144300ustar00rootroot00000000000000 help load load help unload unload end tests/c_delete.2.ckt000066400000000000000000000005661316501211100146250ustar00rootroot00000000000000' a test of the delete command Y1 1 0 0 Y2 2 0 0 Y3 3 0 0 Y4 4 0 0 Y5 5 0 0 V1 1 0 1 R1 1 2 1 R2 2 0 1 R31 2 3 1 R32 3 0 2 L 3 4 5 C1 4 0 5 C2 4 5 5 C3 5 0 2 .option trace .print op v(nodes) .list .op .delete Q3 .list .op .delete M* .list .op .delete L .list .op .delete R3* .list .op .delete L* .list .op .delete c* .list .op .delete r2 .list .op .delete r* .list .op .end tests/c_delete.3.ckt000066400000000000000000000003731316501211100146220ustar00rootroot00000000000000' a test of the delete command Y1 1 0 0 Y2 2 0 0 Y3 3 0 0 Y4 4 0 0 Y5 5 0 0 V1 1 0 1 R1 1 2 1 R2 2 0 1 R31 2 3 1 R32 3 0 2 L 3 4 5 C1 4 0 5 C2 4 5 5 C3 5 0 2 .option trace .print op v(nodes) .list .op .delete Q3 M* L R3* L* c* c2 r2 r* .list .op .end tests/c_delete.4.ckt000066400000000000000000000004261316501211100146220ustar00rootroot00000000000000' test delete in subckts .subckt aa (a b c) r1 (a b) 1 r2 (b 0) 1 r3 (b c) 1 x1 (a b) bb .subckt bb (1 2) r1 (1 2) 1k .ends bb .ends aa x1 (1 2 3) aa v1 (1 0) dc 1 .list .print op v(nodes) .op .delete r2.bb .list .delete r2.aa .list .delete r1.bb .list .delete r*.aa .list .end tests/c_delete.5.ckt000066400000000000000000000004261316501211100146230ustar00rootroot00000000000000' test delete in subckts .subckt aa (a b c) r1 (a b) 1 r2 (b 0) 1 r3 (b c) 1 x1 (a b) bb .ends aa .subckt bb (1 2) r1 (1 2) 1k .ends bb x1 (1 2 3) aa v1 (1 0) dc 1 .list .print op v(nodes) .op .delete r2.bb .list .delete r2.aa .list .delete r1.bb .list .delete r*.aa .list .end tests/c_delete.6.ckt000066400000000000000000000004161316501211100146230ustar00rootroot00000000000000' test delete in subckts .subckt aa (a b c) r1 (a b) 1 r2 (b 0) 1 r3 (b c) 1 x1 (a b) bb .ends aa .subckt bb (1 2) r1 (1 2) 1k .ends bb x1 (1 2 3) aa v1 (1 0) dc 1 .list .print op v(nodes) .op .delete r1.x1 .op .list .delete r1.aa .op .list .delete r1.v1 .list .op .end tests/c_delete.7.ckt000066400000000000000000000004161316501211100146240ustar00rootroot00000000000000' test delete in subckts .subckt aa (a b c) r1 (a b) 1 r2 (b 0) 1 r3 (b c) 1 x1 (a b) bb .ends aa .subckt bb (1 2) r1 (1 2) 1k .ends bb x1 (1 2 3) aa v1 (1 0) dc 1 .list .print op v(nodes) .op .delete x1.r1 .op .list .delete aa.r1 .op .list .delete r1.v1 .list .op .end tests/c_delete.ckt000066400000000000000000000004371316501211100144620ustar00rootroot00000000000000' a test of the delete command V1 1 0 1 R1 1 2 1 R2 2 0 1 R31 2 3 1 R32 3 0 2 L 3 4 5 C1 4 0 5 C2 4 5 5 C3 5 0 2 .option trace .print op v(nodes) .list .op .delete L .list .op .delete R3* .list .op .delete L* .list .op .delete c* .list .op .delete r2 .list .op .delete r* .list .op .end tests/c_eval.1.ckt000066400000000000000000000003561316501211100143060ustar00rootroot00000000000000* unknown parameter check .param x='3+a+1+1' .eval x .eval 3+a+1+1 .eval a+b .eval 2+a+b+3 .eval a+2+b+3 .eval a+2+3+b .eval 2+a+3+b .param a=2 .eval x .eval 3+a+1+1 .eval a+b .eval 2+a+b+3 .eval a+2+b+3 .eval a+2+3+b .eval 2+a+3+b .end tests/c_genrat.1.ckt000066400000000000000000000004231316501211100146320ustar00rootroot00000000000000' c_genrat -- generator transnient test .generator max=7 min=-5 rise=3 fall=2 width=10 delay=2 offset=100 init=2 period=20 .generator v1 (1 0) generator(1) v2 (2 0) generator(2) .print op v(nodes) .print tran v(nodes) .op .tran 0 50 50 trace all .tran 0 50 .5 trace all .end tests/c_getckt.ckt000066400000000000000000000000531316501211100144730ustar00rootroot00000000000000 .get d_cccs.1.ckt .print ac v(1) .ac .end tests/c_help.1.ckt000066400000000000000000000002321316501211100143000ustar00rootroot00000000000000#help .help .help help .help fregegiirei .help help_error_test_with_no_help .help ? .help help ? .help help dasd .help help subtopic .help help test .end tests/c_lib.1.ckt000066400000000000000000000003101316501211100141130ustar00rootroot00000000000000'lib test .lib test1 r1 (1 2) 1 .endl test1 .lib test2 v1 (1 0) 1 .lib c_lib.1.ckt test1 r2 (2 0) 1 .endl r3 (2 3) 10k r4 (3 0) 10k .lib c_lib.1.ckt test2 .print op v(nodes) v2(r3) .op .list .end tests/c_list.ckt000066400000000000000000000003101316501211100141610ustar00rootroot00000000000000'play with the list command V1 1 0 generator(1) L3 1 2 1. R4 2 0 1. R5 1 3 .97 C6 3 0 1. .option trace .list .list r* .list l3 r5 .list l3 - r5 .list l3 - .list l3 .list c6 - .end tests/c_measure.1.ckt000066400000000000000000000026301316501211100150150ustar00rootroot00000000000000''''' R1 1 2 1 C1 2 0 {cap*10} Vv1 1 0 dc=0 ac=0 pulse(2 0 0 100p 100p 400p 1n) s1 0 0 1 0 s01 .model s01 sw vt="svt*1.3" s2 0 0 1 0 s02 .model s02 sw vt="svt*0.9" .param cap=100f .param svt=1 .store tran v(2) v(1) .print tran v(1) control(0) eventtime(s?) nexttime(C*) eventtime(C*) nexttime(V*) eventtime(V*) dt(C1) .tran 0 2n 100p trace all .param vol2=vmax*0.8 .param vol1=vmax*0.2 .param midpoint={(vol1+vol2)/2} .param frequency={1/(t4-t3)} .measure vmax=max(probe="v(1)" end=900p begin=0) .measure t1=cross(probe="v(1)" end=1n cross=1.3 rise) .measure t2=cross(probe="v(1)" end=1n cross=.9 fall) .exp vol2 .exp vol1 .exp vmax .exp midpoint .measure t3=cross(probe="v(1)" end=1n cross=midpoint rise) .measure t4=cross(probe="v(1)" begin=t3 cross=midpoint rise) .measure t5=cross(probe="v(1)" begin=t3 cross={(vol1+vol2)/2} rise) .measure tmin=min(probe="v(1)" end=1n arg) .measure vmin=min(probe="v(1)" end=1n begin=0) .measure slew=slewrate(probe="v(1)" initial={vmax*0.2} final={vmax*0.8} expression) .exp slew .measure slew=slewrate(probe="v(1)" initial={vmax*0.2} final={vmax*0.8} expression last) .exp slew .measure slew=slewrate(probe="v(1)" initial={vmax*0.2} final={vmax*0.8}) .exp frequency .measure t4=cross(probe="v(1)" cross=midpoint rise) .measure t3=cross(probe="v(1)" cross=midpoint rise last) .exp frequency .measure tvmax = max(probe="v(1)" arg) .measure tvmax = max(probe="v(1)" last arg) .end tests/c_measure.1s.ckt000066400000000000000000000026161316501211100152040ustar00rootroot00000000000000''''' R1 1 2 1 C1 2 0 {cap*10} Vv1 1 0 dc=0 ac=0 pulse(2 0 0 100p 100p 400p 1n) s1 0 0 1 0 s01 .model s01 sw vt="svt*1.3" s2 0 0 1 0 s02 .model s02 sw vt="svt*0.9" .param cap=100f .param svt=1 .store tran v(2) v(1) .print tran v(1) control(0) eventtime(s?) nexttime(C*) eventtime(C*) nexttime(V*) eventtime(V*) dt(C1) .tran 0 2n 100p .param vol2=vmax*0.8 .param vol1=vmax*0.2 .param midpoint={(vol1+vol2)/2} .param frequency={1/(t4-t3)} .measure vmax=max(probe="v(1)" end=900p begin=0) .measure t1=cross(probe="v(1)" end=1n cross=1.3 rise) .measure t2=cross(probe="v(1)" end=1n cross=.9 fall) .exp vol2 .exp vol1 .exp vmax .exp midpoint .measure t3=cross(probe="v(1)" end=1n cross=midpoint rise) .measure t4=cross(probe="v(1)" begin=t3 cross=midpoint rise) .measure t5=cross(probe="v(1)" begin=t3 cross={(vol1+vol2)/2} rise) .measure tmin=min(probe="v(1)" end=1n arg) .measure vmin=min(probe="v(1)" end=1n begin=0) .measure slew=slewrate(probe="v(1)" initial={vmax*0.2} final={vmax*0.8} expression) .exp slew .measure slew=slewrate(probe="v(1)" initial={vmax*0.2} final={vmax*0.8} expression last) .exp slew .measure slew=slewrate(probe="v(1)" initial={vmax*0.2} final={vmax*0.8}) .exp frequency .measure t4=cross(probe="v(1)" cross=midpoint rise) .measure t3=cross(probe="v(1)" cross=midpoint rise last) .exp frequency .measure tvmax = max(probe="v(1)" arg) .measure tvmax = max(probe="v(1)" last arg) .end tests/c_measure.2.ckt000066400000000000000000000005121316501211100150130ustar00rootroot00000000000000'measures V1 (1 0) sin(freq=1k ampl=1 peak zero) .print tran v(1) .store tran v(1) .tran 0 .003 .0001 trace all .measure a1=integral("v(1)") .measure m1=mean("v(1)") .measure r1=rms("v(1)") .measure a2=integral("v(1)", begin=0 end=.0015) .measure m2=mean("v(1)", begin=0 end=.0015) .measure r2=rms("v(1)", begin=0 end=.0015) .end tests/c_measure.2s.ckt000066400000000000000000000005001316501211100151730ustar00rootroot00000000000000'measures V1 (1 0) sin(freq=1k ampl=1 peak zero) .print tran v(1) .store tran v(1) .tran 0 .003 .0001 .measure a1=integral("v(1)") .measure m1=mean("v(1)") .measure r1=rms("v(1)") .measure a2=integral("v(1)", begin=0 end=.0015) .measure m2=mean("v(1)", begin=0 end=.0015) .measure r2=rms("v(1)", begin=0 end=.0015) .end tests/c_modify.ckt000066400000000000000000000003201316501211100144760ustar00rootroot00000000000000' a test of the fault and modify commands V1 1 0 1 R1 1 2 1 R2 2 0 1 .option trace .print op v(nodes) .op .fault R1=10 .op .modify R2=10 .op .fault R2=100 .op .fault V1=.001 .op .list .unfault .list .op .end tests/c_sim.1.ckt.bad000066400000000000000000000003251316501211100146700ustar00rootroot00000000000000'c check v1 1 0 dc pulse(0 1 0 .01 .01 1k 1k) ac 1 r1 1 2 1 c2 2 0 1 .list .print tran v(1) v(2) .tran .1 1 0 trace all .tran trace all .tran .1 10 9 .unfreeze .tran trace all .tran trace all .status notime .end tests/cc.ckt000066400000000000000000000013571316501211100133050ustar00rootroot00000000000000This is the title *this is a comment VIN 12 0 AC .5 EIN 0 9 12 0 1 M1 3 9 10 11 MOD1 w=59U l=10U M2 4 12 10 11 MOD1 w=59U l=10U M3 3 3 1 1 MOD2 w=8U l=10U M4 4 3 1 1 MOD2 w=8U l=10U M5 10 8 11 11 MOD1 w=51U l=10U M6 5 4 1 1 MOD2 w=39U l=10U M7 5 8 11 11 MOD1 w=949U l=10U M8 8 8 11 11 MOD1 w=56U l=10U IREF 1 8 10U *M9 8 8 7 1 MOD2 w=10U l=10U *M10 7 7 6 1 MOD2 w=11U l=10U *M11 6 6 1 1 MOD2 w=10U l=10U .MODEL mod1 nmos Level=2 VTO=1.0 KP=17U GAMMA=1.3 LAMBDA=0.01 PHI=0.7 .MODEL mod2 pmos Level=2 VTO=-1.0 KP=8U GAMMA=0.6 LAMBDA=0.02 PHI=0.6 CC 4 5 6PF VCC 1 0 DC +5 VSS 11 0 DC -5 *.AC DEC 10 1HZ 20M *.plot ac vdb(5) vp(5) .options out=200 vmin=-5.5 vmax=5.5 dampstrategy=2 .print op v(1 3 4 5 8 9 10 11 12) .op trace iterations .stat notime .END tests/charge-cons.ckt000066400000000000000000000011511316501211100151010ustar00rootroot00000000000000' Vin 1 0 sin( 1. 1. 10.Meg 0. 0. ) R1 1 0 1.Meg R2 2 0 10meg C1 1 2 1.p M1 0 2 0 0 m l= 50.u w= 50.u nrd= 1. nrs= 1. .model m nmos ( level=2 kp= 20.u phi= 0.6 cbd= 4.5f cbs= 4.5f is= 10.f + pb= 0.8 cgso= 1.5n cgdo= 1.5n cgbo= 0. rsh= 0. mj= 0.5 cjsw= 0. + mjsw= 0.33 tox= 110.n nsub= 2.2E+15 nss= 32.G nfs= 0. tpg=1 xj= 2.95u + ld= 2.4485u uo= 575. ucrit= 49.K uexp= 0.1 neff= 1. fc= 0.5 delta= 0. +) .options limpts=1000 outwidth=80 .print op v nodes .print tran v(1) v(2) .plot tran v(1)(-2,2) v(2)(-2,2) .op .tran 10n 5000n 0 .list .status notime .end tests/charge-cons2.ckt000066400000000000000000000011411316501211100151620ustar00rootroot00000000000000' Vin 1 0 sin( 1. 1. 10.Meg 0. 0. ) Vbias 3 0 1 R1 1 0 1.Meg R2 2 0 10meg C1 1 2 1.p M1 3 2 0 0 m l= 50.u w= 50.u nrd= 1. nrs= 1. .model m nmos ( level=2 kp= 20.u phi= 0.6 cbd= 4.5f cbs= 4.5f is= 10.f + pb= 0.8 cgso= 1.5n cgdo= 1.5n cgbo= 0. rsh= 0. mj= 0.5 cjsw= 0. + mjsw= 0.33 tox= 110.n nsub= 2.2E+15 nss= 32.G nfs= 0. tpg=1 xj= 2.95u + ld= 2.4485u uo= 575. ucrit= 49.K uexp= 0.1 neff= 1. fc= 0.5 delta= 0. +) .options limpts=2000 itl5=10000 outwidth=80 .print op v(1,2,3) .plot tran v(1)(-2,2) v(2)(-2,2) .op .tran 10n 5000n 0 .stat notime .end tests/charge-cons3.ckt000066400000000000000000000011521316501211100151650ustar00rootroot00000000000000' Vin 1 0 sin( 1. 1. 10.Meg 0. 0. ) Vbias 3 0 1 R1 1 0 1.Meg R2 2 0 10meg C1 1 2 1.p M1 3 2 0 0 m l= 50.u w= 50.u nrd= 1. nrs= 1. .model m nmos ( level=2 kp= 20.u phi= 0.6 cbd= 4.5f cbs= 4.5f is= 10.f + pb= 0.8 cgso= 1.5n cgdo= 1.5n cgbo= 0. rsh= 0. mj= 0.5 cjsw= 0. + mjsw= 0.33 tox= 110.n nsub= 2.2E+15 nss= 32.G nfs= 0. tpg=1 xj= 2.95u + ld= 2.4485u uo= 575. ucrit= 49.K uexp= 0.1 neff= 1. fc= 0.5 delta= 0. +) .options limpts=2000 itl5=10000 nobypass outwidth=80 .print op v(1,2,3) .plot tran v(1)(-2,2) v(2)(-2,2) .op .tran 10n 5000n 0 .stat notime .end tests/current.ckt000066400000000000000000000001631316501211100143740ustar00rootroot00000000000000a current source I1 1 0 dc 1.2 ac 1 R1 1 0 1. .print op v(1) .op .print ac vm(1) vp(1) .ac dec 1 1 10 .end tests/d_.doc000066400000000000000000000001211316501211100132520ustar00rootroot00000000000000These files are supposed to test all except unload, clone, and copy constructor. tests/d_bjt-diffpair-ccs.ckt000066400000000000000000000011701316501211100163230ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *>.opt rstray cstray outwidth=80 *.tf v(5) vin vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50 ccs=2pf) *>.print op v(nodes) .op .plot tran v(4) v(5) *>.plot tran v(4)(-4,12) v(5)(-4,12) .tran 10ns 280ns .plot ac vm(5) vp(5) *>.plot ac vm(5)(0,100) vp(5)(-180,180) .ac dec 3 1k 10ghz .op .ac dec 3 1k 10ghz .end tests/d_bjt-diffpair-cjc.ckt000066400000000000000000000011701316501211100163120ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *>.opt rstray cstray outwidth=80 *.tf v(5) vin vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50 cjc=1pf) *>.print op v(nodes) .op .plot tran v(4) v(5) *>.plot tran v(4)(-4,12) v(5)(-4,12) .tran 10ns 280ns .plot ac vm(5) vp(5) *>.plot ac vm(5)(0,100) vp(5)(-180,180) .ac dec 3 1k 10ghz .op .ac dec 3 1k 10ghz .end tests/d_bjt-diffpair-dc.ckt000066400000000000000000000022641316501211100161460ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *>.opt rstray cstray outwidth=80 *.tf v(5) vin *.dc vin -0.25 0.25 0.005 *.ac dec 10 1 10ghz vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf) *>.print op v(1,2,3,4,5,6,7,8,9) *>.op *>.print op vb(q*) *>.op *>.print op vbi(q*) *>.op *>.print op i(v*) *>.op *>.print op ic(q*) *>.op *>.print op ice(q*) *>.op *>.print op ib(q*) *>.op *>.print op ipi(q*) *>.op *>.print op imu(q*) *>.op *>.print op ie(q*) *>.op *>.print op vbe(q*) *>.op *>.print op vbei(q*) *>.op *>.print op vbc(q*) *>.op *>.print op vbci(q*) *>.op *>.print op gm(q*) *>.op *>.print op gpi(q*) *>.op *>.print op gmu(q*) *>.op *>.print op gx(q*) *>.op *>.print op go(q*) *>.op *>.print op cpi(q*) *>.op *>.print op cmu(q*) *>.op *>.print op cbx(q*) *>.op *>.print op ccs(q*) *>.op *>.print op i(r*) *>.op *>.print op p(r*) *>.op *>.print op i(v*) *>.op *>.print op p(v*) .op .end tests/d_bjt-diffpair-nocap.ckt000066400000000000000000000026241316501211100166600ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *>.opt rstray outwidth=80 *.tf v(5) vin *.dc vin -0.25 0.25 0.005 vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50) .print dc v(4) v(5) .plot dc v(5) *>.print op v(1,2,3,4,5,6,7,8,9) *>.op *>.print op vb(q*) *>.op *>.print op vbi(q*) *>.op *>.print op i(v*) *>.op *>.print op ic(q*) *>.op *>.print op ice(q*) *>.op *>.print op ib(q*) *>.op *>.print op ipi(q*) *>.op *>.print op imu(q*) *>.op *>.print op ie(q*) *>.op *>.print op vbe(q*) *>.op *>.print op vbei(q*) *>.op *>.print op vbc(q*) *>.op *>.print op vbci(q*) *>.op *>.print op gm(q*) *>.op *>.print op gpi(q*) *>.op *>.print op gmu(q*) *>.op *>.print op gx(q*) *>.op *>.print op go(q*) *>.op *>.print op cpi(q*) *>.op *>.print op cmu(q*) *>.op *>.print op cbx(q*) *>.op *>.print op ccs(q*) *>.op *>.print op i(r*) *>.op *>.print op p(r*) *>.op *>.print op i(v*) *>.op *>.print op p(v*) .op *>.print tran v(4) v(5) .plot tran v(5) *>.plot tran v(4)(-4,12) v(5)(-4,12) .tran 10ns 280ns .plot ac vm(5) vp(5) *>.plot ac vm(5)(0,100) vp(5)(-180,180) *>.ac dec 3 1k 10ghz *>.print op v(?) .op *>.plot ac vm(5)(0,100) vp(5)(-180,180) .ac dec 3 1k 10ghz .end tests/d_bjt-diffpair-tf.ckt000066400000000000000000000017251316501211100161720ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *.opt acct list node lvlcod=2 itermin=0 reltol=.01 abstol=1u vntol=.01 *>.opt rstray cstray method=euler phase=radians outwidth=80 .option method=gear *.tf v(5) vin vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 eprobe 10 0 1 0 33 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50 tf=4ns ptf=0) .plot dc v(4)(-4,12) v(5)(-4,12) .dc vin -0.2 0.2 0.01 .plot tran v(10) v(5) *>.print tran qbe(q*) *>.tran 10ns 300ns *>.print tran cpi(q*) *>.tran 10ns 300ns *>.print tran vbe(q*) *>.tran 10ns 300ns *>.plot tran v(5)(2,10) .tran 10ns 300ns *>.print op cpi(q*) .op .print ac vm(5) vp(5) *>.ac dec 5 10k 1ghz .plot ac vm(5) .plot ac vp(5) *>.plot ac vm(5)(0,100) vp(5)(-2,2) .ac dec 5 10k 1ghz .status notime .end tests/d_bjt-diffpair-tr.ckt000066400000000000000000000015641316501211100162070ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *.opt acct list node lvlcod=2 itermin=0 reltol=.01 abstol=1u vntol=.01 *>.opt rstray cstray method=euler outwidth=80 .option method=gear order=1 *.tf v(5) vin *.dc vin -0.25 0.25 0.005 vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50 tr=.4) *>.print tran v(4) v(5) *>.print op ccs(q*) .op .plot tran v(5) *>.print tran qbc(q*) *>.tran 5ns 500ns *>.print tran cmu(q*) *>.tran 5ns 500ns *>.print tran vbc(q*) *>.tran 5ns 500ns *>.plot tran v(5)(2,10) .tran 5ns 500ns .plot ac vm(5) vp(5) *>.plot ac vm(5)(0,100) vp(5)(-180,180) .ac dec 5 1k 10ghz .status notime .end tests/d_bjt-diffpair-tran.ckt000066400000000000000000000013121316501211100165150ustar00rootroot00000000000000difpair ckt - simple differential pair * modified from Spice-3 examples *>.opt rstray cstray outwidth=80 *.tf v(5) vin *.dc vin -0.25 0.25 0.005 *.ac dec 10 1 10ghz vin 1 0 sin(0 0.1 5meg) ac 1 dc 0 vcc 8 0 12 vee 9 0 -12 q1 4 2 6 0 qnl q2 5 3 6 0 qnl rs1 1 2 1k rs2 3 0 1k rc1 4 8 10k rc2 5 8 10k q3 6 7 9 0 qnl q4 7 7 9 0 qnl rbias 7 8 20k *.model qnl npn(bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf *+ va=50) .model qnl npn(bf=80 rb=100 va=50 ccs=20pf) *>.print tran v(4) v(5) *>.print op v(?) .op .plot tran v(4) v(5) *>.plot tran v(4)(0,8) v(5)(0,8) .tran 10ns 500ns *>.print tran qcs(q*) *>.tran 10ns 300ns *>.print tran ccs(q*) *>.tran 10ns 300ns *>.print tran vcs(q*) *>.tran 10ns 300ns .end tests/d_bjt-pnp.ckt000066400000000000000000000007171316501211100145740ustar00rootroot00000000000000' bjt test .model foo pnp vcc 1 0 dc -30 rb1 1 2 27k rb2 2 0 1.6k rc 3 1 10k re 4 0 1k q1 3 2 4 0 foo *>.width out=80 *>.list *>.print op v(nodes) *>.op trace iter .op *>.print op ice(q1) ipi(q1) imu(q1) iceo(q1) ipio(q1) imuo(q1) .op *>.print op ic(q1) ib(q1) ie(q1) vbe(q1) vbc(q1) .op *>.print op gm(q1) gpi(q1) gmu(q1) gx(q1) go(q1) .op *>.print op cpi(q1) cmu(q1) cbx(q1) ccs(q1) .op *>.print op i(r*) .op *>.print op p(r*) .op *>.print op i(vcc) p(vcc) .op tests/d_bjt-rca3040.ckt000066400000000000000000000034231316501211100150500ustar00rootroot00000000000000rca3040 ckt - rca 3040 wideband amplifier * modified from Spice-3 examples * * The transient analysis shows higher gain (at 50 mHz) on Gnucap than Spice. * This is due to differences in step control. Gnucap uses significantly * smaller time steps for this circuit than Spice does, leading to * supposedly improved accuracy. There is also a significant difference * with the "method". Stiffly stable methods give significantly lower * gain at that frequency. vin 1 0 sin(0 0.1 50meg 0.5ns) ac 1 vcc 2 0 15.0 vee 3 0 -15.0 rs1 30 1 1k rs2 31 0 1k r1 5 3 4.8k r2 6 3 4.8k r3 9 3 811 r4 8 3 2.17k r5 8 0 820 r6 2 14 1.32k r7 2 12 4.5k r8 2 15 1.32k r9 16 0 5.25k r10 17 0 5.25k q1 2 30 5 0 qnl q2 2 31 6 0 qnl q3 10 5 7 0 qnl q4 11 6 7 0 qnl q5 14 12 10 0 qnl q6 15 12 11 0 qnl q7 12 12 13 0 qnl q8 13 13 0 0 qnl q9 7 8 9 0 qnl q10 2 15 16 0 qnl q11 2 14 17 0 qnl .model qnl npn bf=80 rb=100 ccs=2pf tf=0.3ns tr=6ns cje=3pf cjc=2pf va 50 *>.width out=80 *>.option rstray *>.print op v(1) v(2) v(3) v(5) v(6) v(7) v(8) v(9) v(10) v(11) v(12) v(13) v(14) v(15) v(16) v(17) v(30) v(31) .op .plot ac vdb(17) vdb(16) *>.plot ac vdb(17)(-100,100) vdb(16)(-100,100) .ac dec 5 1Meg 10ghz .plot dc v(17) v(16) *>.plot dc v(17)(-20,20) v(16)(-20,20) .dc vin -0.2 0.2 0.02 .plot tran v(17) v(16) *>.plot tran v(17)(2,10) v(16)(2,10) .tran 2.0ns 50ns .end tests/d_bjt-rtlinv.ckt000066400000000000000000000011051316501211100153050ustar00rootroot00000000000000rtlinv ckt - cascaded rtl inverters * modified from Spice-3 examples .width out=80 *>.option rstray vcc 6 0 5 vin 1 0 pulse(0 5 2ns 2ns 2ns 80ns) rb1 1 2 10k rc1 6 3 1k q1 3 2 0 0 qnd rb2 3 4 10k q2 5 4 0 0 qnd rc2 6 5 1k .model qnd npn(bf=50 rb=70 rc=40 ccs=2pf tf=0.1ns tr=10ns cje=0.9pf + cjc=1.5pf pc=0.85 va=50) *>.print op v 1 2 3 4 5 6 .op *.print dc v(3) v(5) .plot dc v(3) v(5) *>.plot dc v(3)(-2,6) v(5)(-2,6) .dc vin 0.0 2.5 0.05 *.print tran v(3) v(5) *.plot tran v(3) v(5) v(1) .plot tran v(3) v(5) v(1) *>.plot tran v(3)(-2,6) v(5)(-2,6) .tran 5ns 200ns .end tests/d_bjt-schmitt-bypass.ckt000066400000000000000000000013031316501211100167410ustar00rootroot00000000000000schmitt ckt - ecl compatible schmitt trigger * modified from Spice-3 examples vin 1 0 pulse(-1.6 -1.2 10ns 400ns 400ns 100ns 10000ns) vee 8 0 -5 rin 1 2 50 rc1 0 3 50 r1 3 5 185 r2 5 8 760 rc2 0 6 100 re 4 8 260 rth1 7 8 125 rth2 7 0 85 cload 7 0 5pf q1 3 2 4 0 qstd off=1 q2 6 5 4 0 qstd q3 0 6 7 0 qstd q4 0 6 7 0 qstd .model qstd npn(is=1.0e-16 bf=50 br=0.1 rb=50 rc=10 tf=0.12ns tr=5ns + cje=0.4pf pe=0.8 me=0.4 cjc=0.5pf pc=0.8 mc=0.333 ccs=1pf va=50) *>.option bypass outwidth=80 .op .print tran v(1) v(3) v(5) v(6) *>.tran 20ns 1000ns .plot tran v(3) v(5) v(6) v(1) *>.plot tran v(3)(-2,0) v(5)(-2,0) *>.tran 20ns 1000ns *>.plot tran v(6)(-2,0) v(1)(-2,0) .tran 20ns 1000ns *>.status notime .end tests/d_bjt-schmitt-nobypass.ckt000066400000000000000000000013051316501211100173000ustar00rootroot00000000000000schmitt ckt - ecl compatible schmitt trigger * modified from Spice-3 examples vin 1 0 pulse(-1.6 -1.2 10ns 400ns 400ns 100ns 10000ns) vee 8 0 -5 rin 1 2 50 rc1 0 3 50 r1 3 5 185 r2 5 8 760 rc2 0 6 100 re 4 8 260 rth1 7 8 125 rth2 7 0 85 cload 7 0 5pf q1 3 2 4 0 qstd off=1 q2 6 5 4 0 qstd q3 0 6 7 0 qstd q4 0 6 7 0 qstd .model qstd npn(is=1.0e-16 bf=50 br=0.1 rb=50 rc=10 tf=0.12ns tr=5ns + cje=0.4pf pe=0.8 me=0.4 cjc=0.5pf pc=0.8 mc=0.333 ccs=1pf va=50) *>.option nobypass outwidth=80 .op .print tran v(1) v(3) v(5) v(6) *>.tran 20ns 1000ns .plot tran v(3) v(5) v(6) v(1) *>.plot tran v(3)(-2,0) v(5)(-2,0) *>.tran 20ns 1000ns *>.plot tran v(6)(-2,0) v(1)(-2,0) .tran 20ns 1000ns *>.status notime .end tests/d_bjt.2.ckt000066400000000000000000000007141316501211100141360ustar00rootroot00000000000000' bjt test .model foo npn vcc 1 0 dc 30 rb1 1 2 27k rb2 2 0 1.6k rc 3 1 10k re 4 0 1k q1 3 2 4 foo *>.width out=80 *>.list *>.print op v(nodes) *>.op trace iter .op *>.print op ice(q1) ipi(q1) imu(q1) iceo(q1) ipio(q1) imuo(q1) .op *>.print op ic(q1) ib(q1) ie(q1) vbe(q1) vbc(q1) .op *>.print op gm(q1) gpi(q1) gmu(q1) gx(q1) go(q1) .op *>.print op cpi(q1) cmu(q1) cbx(q1) ccs(q1) .op *>.print op i(r*) .op *>.print op p(r*) .op *>.print op i(vcc) p(vcc) .op tests/d_bjt.ckt000066400000000000000000000007161316501211100140000ustar00rootroot00000000000000' bjt test .model foo npn vcc 1 0 dc 30 rb1 1 2 27k rb2 2 0 1.6k rc 3 1 10k re 4 0 1k q1 3 2 4 0 foo *>.width out=80 *>.list *>.print op v(nodes) *>.op trace iter .op *>.print op ice(q1) ipi(q1) imu(q1) iceo(q1) ipio(q1) imuo(q1) .op *>.print op ic(q1) ib(q1) ie(q1) vbe(q1) vbc(q1) .op *>.print op gm(q1) gpi(q1) gmu(q1) gx(q1) go(q1) .op *>.print op cpi(q1) cmu(q1) cbx(q1) ccs(q1) .op *>.print op i(r*) .op *>.print op p(r*) .op *>.print op i(vcc) p(vcc) .op tests/d_bjt.error1.ckt000066400000000000000000000000441316501211100152030ustar00rootroot00000000000000 q1 1 2 0 foo .model foo d .op .end tests/d_cap.1.ckt000066400000000000000000000002401316501211100141130ustar00rootroot00000000000000'c check v1 1 0 dc pulse(0 1 0 .01 .01 1k 1k) ac 1 r1 1 2 1 c2 2 0 1 .list .print tran v(1) v(2) *.tran .1 1 0 .tran 1 10 0 *.tran 10 100 0 .status notime .end tests/d_cap.2.ckt000066400000000000000000000002431316501211100141170ustar00rootroot00000000000000'c check v1 1 0 pulse(0 1 0 .01 .01 1k 1k) ac 1 r1 1 2 100 c2 2 0 .01 .list .print tran v(1) v(2) *.tran .1 1 0 .tran 1 10 0 1 *.tran 10 100 0 .status notime .end tests/d_cap.3.ckt000066400000000000000000000003241316501211100141200ustar00rootroot00000000000000'LC Oscillator Accuracy test C1 1 0 1 L1 1 0 1 I1 1 0 pulse 1 0 0 62.831853071795862 62.831853071795862 .width out=80 .print tran v(1) .tran 0 80 .1 .plot tran v(1)(-40m,40m) .tran 0 80 .1 .status notime .end tests/d_cap.3a.ckt000066400000000000000000000003461316501211100142650ustar00rootroot00000000000000'LC Oscillator Accuracy test C1 1 0 1 L1 1 0 1 I1 1 0 pulse 1 0 0 62.831853071795862 62.831853071795862 .width out=80 .print tran v(1) .tran 0 80 1 trace all .plot tran v(1)(-40m,40m) .tran 0 80 1 trace all .status notime .end tests/d_cap.4.ckt000066400000000000000000000004311316501211100141200ustar00rootroot00000000000000'c check .option short=1u v1 1 0 pulse(0 1 0 .0001 .0001 1k 1k) ac 1 r1 1 2 .1 c2 2 0 .1 .list .print tran v(1) v(2) timef(c2) dtr(c2) dt(c2) .tran .001 .01 0 .tran .01 .10 0 .tran .1 1 0 .tran 1 10 0 trace all .option reltol=.0001 .tran 1 10 0 trace rejected .status notime .end tests/d_cap.5.ckt000066400000000000000000000003061316501211100141220ustar00rootroot00000000000000'c check .option short=.1u v1 1 0 pulse(0 1 0 .0001 .0001 1k 1k) ac 1 r1 1 2 .01 c2 2 0 1 .list .print tran v(1) v(2) .tran .001 .01 0 .tran .01 .10 0 .tran .1 1 0 .tran 1 10 0 .status notime .end tests/d_cap.6.ckt000066400000000000000000000003061316501211100141230ustar00rootroot00000000000000'c check .option short=10u v1 1 0 pulse(0 1 0 .0001 .0001 1k 1k) ac 1 r1 1 2 1 c2 2 0 .01 .list .print tran v(1) v(2) .tran .001 .01 0 .tran .01 .10 0 .tran .1 1 0 .tran 1 10 0 .status notime .end tests/d_cap.doc000066400000000000000000000001211316501211100137360ustar00rootroot00000000000000These tests are incomplete, maybe even unnecessary. For more tests, do them all. tests/d_cap.ic1.ckt000066400000000000000000000002011316501211100144240ustar00rootroot00000000000000' cap with initial condition, ignored because I didn't say "uic" c1 1 0 1 ic=3 r1 1 0 1 .list .print tran v(1) .tran 1 10 0 .end tests/d_cap.ic2.ckt000066400000000000000000000001601316501211100144310ustar00rootroot00000000000000' cap with initial condition c1 1 0 1 ic=3 r1 1 0 1 .list .print tran v(1) .tran 1 10 0 uic .status notime .end tests/d_cap.ic4.ckt000066400000000000000000000003611316501211100144360ustar00rootroot00000000000000' cap with initial condition c1 1 0 1 ic=3 r1 1 0 1 c2 2 0 1 ic=3 I2 2 0 0 c3 3 0 1 ic=3 I3 3 0 1 c4 4 0 1 ic=3 c4a 4 0 1 c5 5 0 1 ic=3 c5a 5 0 1 I5 5 0 1 .list .print tran v(1) v(2) v(3) v(4) v(5) .tran 1 10 0 uic .tran .status notime .end tests/d_cccs.1.ckt000066400000000000000000000010121316501211100142610ustar00rootroot00000000000000# cccs test, with element probes (forces full eval) i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 * sense the voltage source (0 volts) i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 f2 5 0 v2 8 rf2 5 0 10 * sense a live voltage source v7 6 0 dc 11 ac 11 rv7 6 0 10 f7 7 0 v7 8 rf7 7 0 10 .list .width out=132 .print op v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .op .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .tran .05 .1 0 .print ac v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .ac oct 1 1k 2k .end tests/d_cccs.2.ckt000066400000000000000000000015771316501211100143020ustar00rootroot00000000000000# cccs test i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 # sense the voltage source (0 volts) i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 f2 5 0 v2 8 rf2 5 0 10 # sense the resistor i3 6 0 dc 11 ac 11 ri3 7 0 10 v3 6 7 0 f3 8 0 ri3 8 rf3 8 0 10 # sense the current source i4 9 0 dc 11 ac 11 ri4 10 0 10 v4 9 10 0 f4 11 0 i4 8 rf4 11 0 10 # sense a conductance i5 12 0 dc 11 ac 11 yi5 13 0 10 v5 12 13 0 f5 14 0 yi5 8 rf5 14 0 10 # sense a vccs (not really) v6 15 0 dc 1.1 ac 1.1 g6 16 0 15 0 10 yi6 17 0 10 v6 16 17 0 f6 18 0 yi6 8 rf6 18 0 10 #f6b 23 0 g6 -8 #rf6b 23 0 10 # sense a live voltage source v7 19 0 dc 11 ac 11 rv7 19 0 10 f7 20 0 v7 8 rf7 20 0 10 # sense the resistor in series v8 21 0 dc 11 ac 11 rv8 21 0 10 f8 22 0 rv8 8 rf8 22 0 10 .opt out 170 .print op v(nodes) i(v7) i(v8) .op .print tran v(nodes) i(v7) i(v8) .tran 0 .1 .05 .print ac v(nodes) i(v7) i(v8) .ac 1k .end tests/d_cccs.3.ckt000066400000000000000000000007561316501211100143010ustar00rootroot00000000000000# cccs test forward reference i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 * sense the voltage source (0 volts) f2 5 0 v2 8 rf2 5 0 10 i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 * sense a live voltage source f7 7 0 v7 8 rf7 7 0 10 v7 6 0 dc 11 ac 11 rv7 6 0 10 .width out=132 .print op v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .op .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .tran .05 .1 0 .print ac v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .ac oct 1 1k 2k .end tests/d_cccs.4.ckt000066400000000000000000000007651316501211100143020ustar00rootroot00000000000000# cccs test ref to device that does not exist i1 1 0 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 * sense the voltage source (0 volts) f2 5 0 v3 8 rf2 5 0 10 i2 3 0 11 ac 11 ri2 4 0 10 v2 3 4 0 * sense a live voltage source f7 7 0 v7 8 rf7 7 0 10 v7 6 0 11 ac 11 rv7 6 0 10 .width out=132 .print op v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .op .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .tran .05 .1 0 .print ac v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .ac oct 1 1k 2k .end tests/d_cccs.5.ckt000066400000000000000000000015601316501211100142750ustar00rootroot00000000000000# cccs test i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 # sense the voltage source (0 volts) i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 f2 5 0 v2 8 rf2 5 0 10 # sense the resistor i3 6 0 dc 11 ac 11 ri3 7 0 10 v3 6 7 0 f3 8 0 ri3 8 rf3 8 0 10 # sense the current source i4 9 0 dc 11 ac 11 ri4 10 0 10 v4 9 10 0 f4 11 0 i4 8 rf4 11 0 10 # sense a conductance i5 12 0 dc 11 ac 11 yi5 13 0 10 v5 12 13 0 f5 14 0 yi5 8 rf5 14 0 10 # sense a vccs v6 15 0 dc 1.1 ac 1.1 g6 16 0 15 0 10 yi6 17 0 10 v6 16 17 0 f6 18 0 yi6 8 rf6 18 0 10 f6b 23 0 g6 -8 rf6b 23 0 10 # sense a live voltage source v7 19 0 dc 11 ac 11 rv7 19 0 10 f7 20 0 v7 8 rf7 20 0 10 # sense the resistor in series v8 21 0 dc 11 ac 11 rv8 21 0 10 f8 22 0 rv8 8 rf8 22 0 10 .opt out 170 .print op v(nodes) i(v7) i(v8) .op .print tran v(nodes) i(v7) i(v8) .tran 0 .1 .05 .print ac v(nodes) i(v7) i(v8) .ac 1k .end tests/d_cccs.6.ckt000066400000000000000000000010231316501211100142700ustar00rootroot00000000000000# cccs test forward reference i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 * sense the voltage source (0 volts) f2 5 0 v2 8 rf2 5 0 10 i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 11 * sense a live voltage source f7 7 0 v7 8 rf7 7 0 10 v7 6 0 dc 11 ac 11 rv7 6 0 10 .width out=132 .print op v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .op .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .tran .05 .1 0 .print ac v(1) v(2) v(3) v(4) v(5) v(6) v(7) f(f2) f(f7) .ac oct 1 1k 2k .delete v2 v2 3 4 0 .op .tran .ac .end tests/d_ccvs.1.ckt000066400000000000000000000012311316501211100143070ustar00rootroot00000000000000* ccvs test .options nopage .width out=132 i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 * sense the voltage source (0 volts) i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 h2 5 0 v2 8 rh2 5 0 10 * sense a live voltage source v7 6 0 dc 11 ac 11 rv7 6 0 10 h7 7 0 v7 8 rh7 7 0 10 .width out=132 .print op v(1) v(2) v(3) v(4) v(5) v(6) v(7) .op .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran .05 .1 0 .print ac v(1) v(2) v(3) v(4) v(5) v(6) v(7) .ac oct 1 1k 2k .end * sense a live voltage source v7 19 0 11 ac 11 rv7 19 0 10 h7 20 0 v7 8 rh7 20 0 10 .print op v(nodes) i(v7) .op .print tran v(nodes) i(v7) .tran 0 .1 .05 .print ac v(nodes) i(v7) .ac 1k .end tests/d_ccvs.2.ckt000066400000000000000000000015241316501211100143150ustar00rootroot00000000000000# cccs test i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 # sense the voltage source (0 volts) i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 h2 5 0 v2 8 rh2 5 0 10 # sense the resistor i3 6 0 dc 11 ac 11 ri3 7 0 10 v3 6 7 0 h3 8 0 ri3 8 rh3 8 0 10 # sense the current source i4 9 0 dc 11 ac 11 ri4 10 0 10 v4 9 10 0 h4 11 0 i4 8 rh4 11 0 10 # sense a conductance i5 12 0 dc 11 ac 11 yi5 13 0 10 v5 12 13 0 h5 14 0 yi5 8 rh5 14 0 10 # sense a vccs v6 15 0 dc 1.1 ac 1.1 g6 16 0 15 0 10 yi6 17 0 10 v6 16 17 0 h6 18 0 yi6 8 rh6 18 0 10 # sense a live voltage source v7 19 0 dc 11 ac 11 rv7 19 0 10 h7 20 0 v7 8 rh7 20 0 10 # sense the resistor in series v8 21 0 dc 11 ac 11 rv8 21 0 10 h8 22 0 rv8 8 rh8 22 0 10 .opt out 170 .print op v(nodes) i(v7) i(v8) .op .print tran v(nodes) i(v7) i(v8) .tran 0 .1 .05 .print ac v(nodes) i(v7) i(v8) .ac 1k .end tests/d_ccvs.3.ckt000066400000000000000000000017641316501211100143240ustar00rootroot00000000000000# cccs test i1 1 0 dc 11 ac 11 ri1 1 0 10 e1 2 0 1 0 8 re1 2 0 10 # sense the voltage source (0 volts) i2 3 0 dc 11 ac 11 ri2 4 0 10 v2 3 4 0 h2 5 0 v2 8 rh2 5 0 10 # sense the resistor i3 6 0 dc 11 ac 11 ri3 7 0 10 v3 6 7 0 h3 8 0 ri3 8 rh3 8 0 10 # sense the current source i4 9 0 dc 11 ac 11 ri4 10 0 10 v4 9 10 0 h4 11 0 i4 8 rh4 11 0 10 # sense a conductance i5 12 0 dc 11 ac 11 yi5 13 0 10 v5 12 13 0 h5 14 0 yi5 8 rh5 14 0 10 # sense a vccs v6 15 0 dc 1.1 ac 1.1 g6 16 0 15 0 10 yi6 17 0 10 v6 16 17 0 h6 18 0 yi6 8 rh6 18 0 10 # sense a live voltage source v7 19 0 dc 11 ac 11 rv7 19 0 10 h7 20 0 v7 8 rh7 20 0 10 # sense the resistor in series v8 21 0 dc 11 ac 11 rv8 21 0 10 h8 22 0 rv8 8 rh8 22 0 10 # sense a vcvs v9 23 0 dc 1.1 ac 1.1 e9 24 0 23 0 10 re9 24 0 10 h9a 25 0 e9 10 rh9a 25 0 10 h9b 26 0 re9 10 rh9b 26 0 10 .opt out 160 .print op v(nodes) i(v7) i(v8) i(e9) i(re9) .op .print tran v(nodes) i(v7) i(v8) i(e9) i(re9) .tran 0 .1 .05 .print ac v(nodes) i(v7) i(v8) i(e9) i(re9) .ac 1k .end tests/d_coil.1.ckt000066400000000000000000000011341316501211100143010ustar00rootroot00000000000000Mutual inductance test circuit v1 1 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a 1 2 22 k1 l1a l1b .75 l1a 2 0 .56 l1b 3 0 .79 r1b 3 0 75 v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 22 l2a 5 6 .061151326 l2b 6 0 .498848674 l2c 6 7 .291151326 r2b 7 0 75 v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 22 l3a 10 0 .56 l3b 11 0 .79 e3a 9 10 11 0 .631454018 e3b 12 11 10 0 .890801204 r3b 12 0 75 .options nopage .list .width out=132 .print ac v(2) v(3) v(5) v(7) v(9) v(12) .ac dec 2 .1 1k .print tran v(2) v(3) v(5) v(7) v(9) v(12) .tran .001 .01 0 .0001 .list .status notime .end tests/d_coil.1a.ckt000066400000000000000000000011341316501211100144420ustar00rootroot00000000000000Mutual inductance test circuit v1 1 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a 1 2 22 l1a 2 0 .56 l1b 3 0 .79 k1 l1a l1b .75 r1b 3 0 75 v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 22 l2a 5 6 .061151326 l2b 6 0 .498848674 l2c 6 7 .291151326 r2b 7 0 75 v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 22 l3a 10 0 .56 l3b 11 0 .79 e3a 9 10 11 0 .631454018 e3b 12 11 10 0 .890801204 r3b 12 0 75 .options nopage .list .width out=132 .print ac v(2) v(3) v(5) v(7) v(9) v(12) .ac dec 2 .1 1k .print tran v(2) v(3) v(5) v(7) v(9) v(12) .tran .001 .01 0 .0001 .list .status notime .end tests/d_coil.1b.ckt000066400000000000000000000014241316501211100144450ustar00rootroot00000000000000Mutual inductance test circuit .param L1 = .56 .param L2 = .79 .param K12 = .75 .param Rsource = 22 .param Rload = 75 .param M12 = 'K12*sqrt(L1*L2)' .eval M12 .eval M12/L2 .eval M12/L1 v1 1 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a 1 2 'Rsource' k1 l1a l1b 'K12' l1a 2 0 'L1' l1b 3 0 'L2' r1b 3 0 'Rload' v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 'Rsource' l2a 5 6 'L1-M12' l2b 6 0 'M12' l2c 6 7 'L2-M12' r2b 7 0 'Rload' v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 'Rsource' l3a 10 0 'L1' l3b 11 0 'L2' e3a 9 10 11 0 'M12/L2' e3b 12 11 10 0 'M12/L1' r3b 12 0 'Rload' .options nopage .list .width out=132 .print ac v(2) v(3) v(5) v(7) v(9) v(12) .ac dec 2 .1 1k .print tran v(2) v(3) v(5) v(7) v(9) v(12) .tran .001 .01 0 .0001 .list .status notime .end tests/d_coil.1c.ckt000066400000000000000000000025251316501211100144510ustar00rootroot00000000000000Mutual inductance test circuit .param L1 = .56 .param L2 = .79 .param K12 = .75 .param Rsource = 22 .param Rload = 75 * using 'k' pseudo element .subckt trans2a (a1 a2 b1 b2) k1 (l1 l2) {K12} l1 (a1 a2) {L1} l2 (b1 b2) {L2} .ends * T model, requires a common terminal .subckt trans2b (a com b) .param M12 = {K12*sqrt(L1*L2)} l2a (a 6) {L1-M12} l2b (6 com) {M12} l2c (6 b) {L2-M12} .ends * series model, using VCVS .subckt trans2c (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l3a (10 a2) {L1} l3b (11 b2) {L2} e3a (a1 10 11 b2) {M12/L2} e3b (b1 11 10 a2) {M12/L1} .ends * parallel model, using CCCS .subckt trans2d (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l1 (a1 a2) {(1-K12*K12)*L1} l2 (b1 b2) {(1-K12*K12)*L2} f1 a1 a2 l2 {-M12/L1} f2 b1 b2 l1 {-M12/L2} .ends v1 (1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a (1 2) {Rsource} x1 (2 0 3 0) trans2a L1=L1 L2=L2 K12=K12 r1b (3 0) {Rload} v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 {Rsource} x2 5 0 7 0 trans2d L1=L1 L2=L2 K12=K12 r2b 7 0 {Rload} v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 {Rsource} x3 9 0 12 0 trans2c L1=L1 L2=L2 K12=K12 r3b 12 0 {Rload} .options nopage .list .width out=132 .print ac v(2) v(3) v(5) v(7) v(9) v(12) .ac dec 2 .1 1k .print tran v(2) v(3) v(5) v(7) v(9) v(12) .tran .001 .01 0 .0001 .list .status notime .end tests/d_coil.1d.ckt000066400000000000000000000036371316501211100144570ustar00rootroot00000000000000Mutual inductance test circuit .param L1 = .56 .param L2 = .79 .param K12 = .75 .param Rsource = 22 .param Rload = 75 * using 'k' pseudo element .subckt trans2a (a1 a2 b1 b2) k1 (l1 l2) {K12} l1 (a1 a2) {L1} l2 (b1 b2) {L2} .ends * T model, requires a common terminal .subckt trans2b (a com b) .param M12 = {K12*sqrt(L1*L2)} l2a (a 6) {L1-M12} l2b (6 com) {M12} l2c (6 b) {L2-M12} .ends * series model, using VCVS .subckt trans2c (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l3a (10 a2) {L1} l3b (11 b2) {L2} e3a (a1 10 11 b2) {M12/L2} e3b (b1 11 10 a2) {M12/L1} .ends * parallel model, using CCCS .subckt trans2d (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l1 (a1 a2) {(1-K12*K12)*L1} l2 (b1 b2) {(1-K12*K12)*L2} f1 a1 a2 l2 {-M12/L1} f2 b1 b2 l1 {-M12/L2} .ends * parallel model, using CCCS, split apart .subckt trans2e (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l1 (a1 a2) {L1} l2 (b1 b2) {L2} l1m (a1 a2) {(1/(K12*K12)-1)*L1} l2m (b1 b2) {(1/(K12*K12)-1)*L2} f1 a1 a2 l2 {-(M12/L1)} f2 b1 b2 l1 {-(M12/L2)} f1m a1 a2 l2m {-(M12/L1)} f2m b1 b2 l1m {-(M12/L2)} .ends * nullor model .subckt trans2f (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} r1l1 (a1 0) 1 r2l1 (a1 a3) -1 r3l1 (a3 a2) 1 r4l1 (a2 0) -1 r1l2 (b1 0) 1 r2l2 (b1 b3) -1 r3l2 (b3 b2) 1 r4l2 (b2 0) -1 c1 (a3 0) {-L1-M12} c2 (b3 0) {-L2-M12} c3 (a3 b3) {M12} .ends v1 (1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a (1 2) {Rsource} x1 (2 0 3 0) trans2a L1=L1 L2=L2 K12=K12 r1b (3 0) {Rload} v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 {Rsource} x2 5 0 7 0 trans2f L1=L1 L2=L2 K12=K12 r2b 7 0 {Rload} v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 {Rsource} x3 9 0 12 0 trans2e L1=L1 L2=L2 K12=K12 r3b 12 0 {Rload} .options nopage .list .width out=132 .print ac v(2) v(3) v(5) v(7) v(9) v(12) .ac dec 2 .1 1k .print tran v(2) v(3) v(5) v(7) v(9) v(12) .tran .001 .01 0 .0001 .list .status notime .end tests/d_coil.1e.ckt000066400000000000000000000042351316501211100144530ustar00rootroot00000000000000Mutual inductance test circuit .param L1 = .56 .param L2 = .79 .param K12 = .75 .param Rsource = 22 .param Rload = 75 * using 'k' pseudo element .subckt trans2a (a1 a2 b1 b2) k1 (l1 l2) {K12} l1 (a1 a2) {L1} l2 (b1 b2) {L2} .ends * T model, requires a common terminal .subckt trans2b (a com b) .param M12 = {K12*sqrt(L1*L2)} l2a (a 6) {L1-M12} l2b (6 com) {M12} l2c (6 b) {L2-M12} .ends * series model, using VCVS .subckt trans2c (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l3a (10 a2) {L1} l3b (11 b2) {L2} e3a (a1 10 11 b2) {M12/L2} e3b (b1 11 10 a2) {M12/L1} .ends * parallel model, using CCCS .subckt trans2d (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l1 (a1 a2) {(1-K12*K12)*L1} l2 (b1 b2) {(1-K12*K12)*L2} f1 a1 a2 l2 {-M12/L1} f2 b1 b2 l1 {-M12/L2} .ends * parallel model, using CCCS, split apart .subckt trans2e (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} l1 (a1 a2) {L1} l2 (b1 b2) {L2} l1m (a1 a2) {(1/(K12*K12)-1)*L1} l2m (b1 b2) {(1/(K12*K12)-1)*L2} f1 a1 a2 l2 {-(M12/L1)} f2 b1 b2 l1 {-(M12/L2)} f1m a1 a2 l2m {-(M12/L1)} f2m b1 b2 l1m {-(M12/L2)} .ends * nullor model .subckt trans2f (a1 a2 b1 b2) .param M12 = {K12*sqrt(L1*L2)} r1l1 (a1 0) 1 r2l1 (a1 a3) -1 r3l1 (a3 a2) 1 r4l1 (a2 0) -1 r1l2 (b1 0) 1 r2l2 (b1 b3) -1 r3l2 (b3 b2) 1 r4l2 (b2 0) -1 c1 (a3 0) {-L1} c2 (b3 0) {-L2} c1m (a3 0) {-M12} c2m (b3 0) {-M12} c3 (a3 b3) {M12} .ends v1 (1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a (1 2) {Rsource} x1 (2 0 3 0) trans2a L1=L1 L2=L2 K12=K12 r1b (3 0) {Rload} v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 {Rsource} x2 5 0 7 0 trans2f L1=L1 L2=L2 K12=K12 r2b 7 0 {Rload} v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 {Rsource} x3 9 0 12 0 trans2c L1=L1 L2=L2 K12=K12 r3b 12 0 {Rload} .options nopage numdgt=6 .width out=200 .print ac v(1) v(2) v(3) v(5) v(7) v(9) v(12) .ac dec 2 .1 100k .print ac vp(1) vp(2) vp(3) vp(5) vp(7) vp(9) vp(12) .ac dec 2 .1 100k .print tran v(1) v(2) v(3) v(5) v(7) v(9) v(12) *.print tran iof(x2.c*) iof(x1.l*) iof(x1.k*) fiof(x1.k*) riof(x1.k*) *.print tran y(x2.c*) y(x1.l*) y(x1.k*) fy(x1.k*) ry(x1.k*) .tran .001 .01 0 trace rejected .status notime .end tests/d_coil.2.ckt000066400000000000000000000015721316501211100143100ustar00rootroot00000000000000Mutual inductance test circuit -- lo-z drive v1 1 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a 1 2 1 k1 l1a l1b .75 l1a 2 0 .56 l1b 3 0 .79 r1b 3 0 75 v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 1 l2a 5 6 .061151326 l2b 6 0 .498848674 l2c 6 7 .291151326 r2b 7 0 75 v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 1 l3a 10 0 .56 l3b 11 0 .79 e3a 9 10 11 0 .631454018 e3b 12 11 10 0 .890801204 r3b 12 0 75 v4 13 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 R4a 13 14 1 l4a 14 0 .245 l4b 15 0 .345625 #vp4a 14 16 0 #vp4b 15 17 0 f4a 14 0 l4b -.890801204 f4b 15 0 l4a -.631454018 r4b 15 0 75 .options nopage .width out=170 .print ac v(2) v(3) v(5) v(7) v(9) v(12) v(14) v(15) .ac dec 2 .1 1k .print ac vp(2) vp(3) vp(5) vp(7) vp(9) vp(12) vp(14) vp(15) .ac dec 2 .1 1k .print tran v(2) v(3) v(5) v(7) v(9) v(12) v(14) v(15) .tran .001 .01 0 .0001 .status notime .end tests/d_coil.3.ckt000066400000000000000000000014601316501211100143050ustar00rootroot00000000000000Mutual inductance test circuit -- lo-z drive v1 1 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r1a 1 2 1 k1 l1a l1b .75 l1a 2 0 .56 l1b 3 0 .79 r1b 3 0 75 v2 4 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r2a 4 5 1 l2a 5 6 .061151326 l2b 6 0 .498848674 l2c 6 7 .291151326 r2b 7 0 75 v3 8 0 pulse(0 1 .002 .002 .002 .002 .01) ac 1 r3a 8 9 1 l3a 10 0 .56 l3b 11 0 .79 e3a 9 10 11 0 .631454018 e3b 12 11 10 0 .890801204 r3b 12 0 75 .options nopage .width out=170 .print ac v(4) v(2) v(3) v(5) v(7) v(9) v(12) i(r1a) i(r2a) i(r3a) i(l1a) i(l2a) i(l3a) .ac dec 2 .1 1k .print ac vp(4) vp(2) vp(3) vp(5) vp(7) vp(9) vp(12) ip(r1a) ip(r2a) ip(r3a) ip(l1a) ip(l2a) ip(l3a) .ac dec 2 .1 1k .print tran v(4) v(2) v(3) v(5) v(7) v(9) v(12) i(r1a) i(r2a) i(r3a) i(l1a) i(l2a) i(l3a) .tran .001 .01 0 .0001 .status notime .end tests/d_coil.4.ckt000066400000000000000000000002761316501211100143120ustar00rootroot00000000000000'inductance check, no tolerance V1 1 0 dc 1 ac 1 L3 1 2 1. R4 2 0 1. R5 1 3 1. C6 3 0 1. .print dc v(3) .print ac v(3) .dc v1 1 10 1 .ac dec 10 .1 10 .status notime .end tests/d_coil.5.ckt000066400000000000000000000005441316501211100143110ustar00rootroot00000000000000'inductance check, no tolerance V1 1 0 dc 1 ac 1 pulse iv=0,pv=1,rise=1,fall=1 L3 1 2 1. R4 2 0 1. R5 1 3 1. C6 3 0 1. E1 4 0 3 0 1. rspice 4 0 1g G1 5 0 3 0 1. Rg 5 0 1. .op .print ac vm(2) vm(3) vm(4) vm(5) vp(2) vp(3) vp(4) vp(5) .ac dec 1 .1 1 .print tran v(2) v(3) v(4) v(5) .tran 1 10 0 .list .status notime .end tests/d_coil.5.spice000066400000000000000000000004731316501211100146340ustar00rootroot00000000000000'inductance check, no tolerance V1 1 0 dc 1 ac 1 pulse(0 1) L3 1 2 1. R4 2 0 1. R5 1 3 1. C6 3 0 1. E1 4 0 3 0 1. rspice 4 0 1g G1 5 0 3 0 1. Rg 5 0 1. .op .print ac vm(2) vm(3) vm(4) vm(5) vp(2) vp(3) vp(4) vp(5) .ac dec 1 .1 1 .print tran v(2) v(3) v(4) v(5) .tran 1 10 0 .end tests/d_coil.error1.ckt000066400000000000000000000001131316501211100153470ustar00rootroot00000000000000# coil errors r1 1 0 1 r2 2 0 1 k1 r1 r2 .9 .print ac v(nodes) .ac 1k .end tests/d_coil.error2.ckt000066400000000000000000000001131316501211100153500ustar00rootroot00000000000000# coil errors l1 1 0 1 r2 2 0 1 k1 r1 r2 .9 .print ac v(nodes) .ac 1k .end tests/d_coil.error3.ckt000066400000000000000000000001131316501211100153510ustar00rootroot00000000000000# coil errors l1 1 0 1 r2 2 0 1 k1 l1 r2 .9 .print ac v(nodes) .ac 1k .end tests/d_coil.error4.ckt000066400000000000000000000001231316501211100153530ustar00rootroot00000000000000# coil errors l1 1 0 1 l2 2 0 tanh(1,1) k1 l1 l2 .9 .print ac v(nodes) .ac 1k .end tests/d_coil.error5.ckt000066400000000000000000000001331316501211100153550ustar00rootroot00000000000000# coil errors l1 1 0 tanh(1,1) l2 2 0 tanh(1,1) k1 l1 l2 .9 .print ac v(nodes) .ac 1k .end tests/d_coil.m3.ckt000066400000000000000000000052511316501211100144640ustar00rootroot00000000000000Mutual inductance test circuit .param L1 = .56 .param L2 = .79 .param L3 = .58 .param K12 = .75 .param K23 = .54 .param K13 = .66 .param Rsource = 22 .param Rload1 = 75 .param Rload2 = 90 * using 'k' pseudo element .subckt trans3a (a1 a2 b1 b2 c1 c2) k1 (l1 l2) {K12} k2 (l2 l3) {K23} k3 (l1 l3) {K13} l1 (a1 a2) {L1} l2 (b1 b2) {L2} l3 (c1 c2) {L3} .ends .subckt trans3ss (a1 a2 b1 b2 c1 c2) .param M12 = {K12*sqrt(L1*L2)} l1 (a3 a2) {L1} l2 (b3 b2) {L2} l3 (c3 c2) {L3} e21 (a1 a3 b3 b2) {M12/L2} e12 (b1 b3 a3 a2) {M12/L1} e13 (c1 c3 a3 a2) {M13/L1} .ends * series model, using VCVS .subckt trans3b (a1 a2 b1 b2 c1 c2) .param M12 = {K12*sqrt(L1*L2)} .param M23 = {K23*sqrt(L2*L3)} .param M13 = {K13*sqrt(L1*L3)} l1 (a3 a2) {L1} l2 (b3 b2) {L2} l3 (c3 c2) {L3} e21 (a4 a3 b3 b2) {M12/L2} e31 (a1 a4 c3 c2) {M13/L3} e12 (b4 b3 a3 a2) {M12/L1} e32 (b1 b4 c3 c2) {M23/L3} e13 (c4 c3 a3 a2) {M13/L1} e23 (c1 c4 b3 b2) {M23/L2} .ends * nullor model .subckt trans3c (a1 a2 b1 b2 c1 c2) .param M12 = {K12*sqrt(L1*L2)} .param M23 = {K23*sqrt(L2*L3)} .param M13 = {K13*sqrt(L1*L3)} r1l1 (a1 0) 1 r2l1 (a1 a3) -1 r3l1 (a3 a2) 1 r4l1 (a2 0) -1 r1l2 (b1 0) 1 r2l2 (b1 b3) -1 r3l2 (b3 b2) 1 r4l2 (b2 0) -1 r1l3 (c1 0) 1 r2l3 (c1 c3) -1 r3l3 (c3 c2) 1 r4l3 (c2 0) -1 c1 (a3 0) {-L1-M12-M13} c2 (b3 0) {-L2-M12-M23} c3 (c3 0) {-L3-M13-M23} c12 (a3 b3) {M12} c23 (b3 c3) {M23} c13 (a3 c3) {M13} .ends va1 (a1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 ra1 (a1 a2) {Rsource} xa1 (a2 0 a3 0 a4 0) trans3a L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 ra2 (a3 0) {Rload1} ra3 (a4 0) {Rload2} vb1 (b1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rb1 (b1 b2) {Rsource} xb1 (b2 0 b3 0 b4 0) trans3b L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 rb2 (b3 0) {Rload1} rb3 (b4 0) {Rload2} vc1 (c1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rc1 (c1 c2) {Rsource} xc1 (c2 0 c3 0 c4 0) trans3c L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 rc2 (c3 0) {Rload1} rc3 (c4 0) {Rload2} vd1 (d1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rd1 (d1 d2) {Rsource} xd1 (d2 0 d3 0 d4 0) trans3b L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 rd2 (d3 0) {Rload1} rd3 (d4 0) {Rload2} .options nopage .width out=200 .print ac vm(a2) vm(a3) vm(a4) vm(b2) vm(b3) vm(b4) vm(c2) vm(c3) vm(c4) vm(d2) vm(d3) vm(d4) .ac dec 2 .1 1k .print ac vp(a2) vp(a3) vp(a4) vp(b2) vp(b3) vp(b4) vp(c2) vp(c3) vp(c4) vp(d2) vp(d3) vp(d4) .ac dec 2 .1 1k .print tran v(a2) v(a3) v(a4) v(b2) v(b3) v(b4) v(c2) v(c3) v(c4) v(d2) v(d3) v(d4) .tran .001 .01 0 .0001 .status notime .end tests/d_coil.m3a.ckt000066400000000000000000000024511316501211100146240ustar00rootroot00000000000000Mutual inductance test circuit *param L1 = .56 *param L2 = .79 *param L3 = .58 *param K12 = .75 *param K23 = .54 *param K13 = .66 *param Rsource = 22 *param Rload1 = 75 *param Rload2 = 90 * using 'k' pseudo element .subckt trans3a (a1 a2 b1 b2 c1 c2) k1 (l1 l2) .75 k2 (l2 l3) .54 k3 (l1 l3) .66 l1 (a1 a2) .56 l2 (b1 b2) .79 l3 (c1 c2) .58 .ends * series model, using VCVS .subckt trans3b (a1 a2 b1 b2 c1 c2) **param M12 = 'K12*sqrt(L1*L2)'0.49885 **param M23 = 'K23*sqrt(L2*L3)'0.36553 **param M13 = 'K13*sqrt(L1*L3)'0.37614 l1 (a3 a2) .56 l2 (b3 b2) .79 l3 (c3 c2) .58 e21 (a4 a3 b3 b2) .63145 e31 (a1 a4 c3 c2) .64852 e12 (b4 b3 a3 a2) .89080 e32 (b1 b4 c3 c2) .63022 e13 (c4 c3 a3 a2) .67168 e23 (c1 c4 b3 b2) .46269 .ends va1 (a1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 ra1 (a1 a2) 22 xa1 (a2 0 a3 0 a4 0) trans3a ra2 (a3 0) 75 ra3 (a4 0) 90 vb1 (b1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rb1 (b1 b2) 22 xb1 (b2 0 b3 0 b4 0) trans3b rb2 (b3 0) 75 rb3 (b4 0) 90 .options nopage .width out=200 .print ac vm(a2) vm(a3) vm(a4) vm(b2) vm(b3) vm(b4) .ac dec 2 .1 1k .print ac vp(a2) vp(a3) vp(a4) vp(b2) vp(b3) vp(b4) .ac dec 2 .1 1k .print tran v(a2) v(a3) v(a4) v(b2) v(b3) v(b4) .tran .001 .01 0 .end tests/d_coil.m3r.ckt000066400000000000000000000052511316501211100146460ustar00rootroot00000000000000Mutual inductance test circuit .param L1 = .56 .param L2 = .79 .param L3 = .58 .param K12 = .75 .param K23 = .54 .param K13 = .66 .param Rsource = 22 .param Rload1 = 75 .param Rload2 = 90 * using 'k' pseudo element .subckt trans3a (a1 a2 b1 b2 c1 c2) k1 (l2 l1) {K12} k2 (l3 l2) {K23} k3 (l1 l3) {K13} l1 (a1 a2) {L1} l2 (b1 b2) {L2} l3 (c1 c2) {L3} .ends .subckt trans3ss (a1 a2 b1 b2 c1 c2) .param M12 = {K12*sqrt(L1*L2)} l1 (a3 a2) {L1} l2 (b3 b2) {L2} l3 (c3 c2) {L3} e21 (a1 a3 b3 b2) {M12/L2} e12 (b1 b3 a3 a2) {M12/L1} e13 (c1 c3 a3 a2) {M13/L1} .ends * series model, using VCVS .subckt trans3b (a1 a2 b1 b2 c1 c2) .param M12 = {K12*sqrt(L1*L2)} .param M23 = {K23*sqrt(L2*L3)} .param M13 = {K13*sqrt(L1*L3)} l1 (a3 a2) {L1} l2 (b3 b2) {L2} l3 (c3 c2) {L3} e21 (a4 a3 b3 b2) {M12/L2} e31 (a1 a4 c3 c2) {M13/L3} e12 (b4 b3 a3 a2) {M12/L1} e32 (b1 b4 c3 c2) {M23/L3} e13 (c4 c3 a3 a2) {M13/L1} e23 (c1 c4 b3 b2) {M23/L2} .ends * nullor model .subckt trans3c (a1 a2 b1 b2 c1 c2) .param M12 = {K12*sqrt(L1*L2)} .param M23 = {K23*sqrt(L2*L3)} .param M13 = {K13*sqrt(L1*L3)} r1l1 (a1 0) 1 r2l1 (a1 a3) -1 r3l1 (a3 a2) 1 r4l1 (a2 0) -1 r1l2 (b1 0) 1 r2l2 (b1 b3) -1 r3l2 (b3 b2) 1 r4l2 (b2 0) -1 r1l3 (c1 0) 1 r2l3 (c1 c3) -1 r3l3 (c3 c2) 1 r4l3 (c2 0) -1 c1 (a3 0) {-L1-M12-M13} c2 (b3 0) {-L2-M12-M23} c3 (c3 0) {-L3-M13-M23} c12 (a3 b3) {M12} c23 (b3 c3) {M23} c13 (a3 c3) {M13} .ends va1 (a1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 ra1 (a2 a1) {Rsource} xa1 (0 a2 0 a3 0 a4) trans3a L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 ra2 (0 a3) {Rload1} ra3 (0 a4) {Rload2} vb1 (b1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rb1 (b2 b1) {Rsource} xb1 (0 b2 0 b3 0 b4) trans3b L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 rb2 (0 b3) {Rload1} rb3 (0 b4) {Rload2} vc1 (c1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rc1 (c2 c1) {Rsource} xc1 (0 c2 0 c3 0 c4) trans3c L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 rc2 (0 c3) {Rload1} rc3 (0 c4) {Rload2} vd1 (d1 0) pulse(0 1 .002 .002 .002 .002 .01) ac 1 rd1 (d2 d1) {Rsource} xd1 (0 d2 0 d3 0 d4) trans3b L1=L1 L2=L2 L3=L3 K12=K12 K23=K23 K13=K13 rd2 (0 d3) {Rload1} rd3 (0 d4) {Rload2} .options nopage .width out=200 .print ac vm(a2) vm(a3) vm(a4) vm(b2) vm(b3) vm(b4) vm(c2) vm(c3) vm(c4) vm(d2) vm(d3) vm(d4) .ac dec 2 .1 1k .print ac vp(a2) vp(a3) vp(a4) vp(b2) vp(b3) vp(b4) vp(c2) vp(c3) vp(c4) vp(d2) vp(d3) vp(d4) .ac dec 2 .1 1k .print tran v(a2) v(a3) v(a4) v(b2) v(b3) v(b4) v(c2) v(c3) v(c4) v(d2) v(d3) v(d4) .tran .001 .01 0 .0001 .status notime .end tests/d_diode.1.ckt000066400000000000000000000007741316501211100144500ustar00rootroot00000000000000simple diode test V1 1 0 10. AC 1 R1 1 2 100.K D1 2 0 ddd area=1 .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 bv= 50 ibv= 0.001 ) *>.list *>.print op v(1) v(2) i(v1) *>.print op + i(r1) id(d1) vd(d1) req(d1) cd(d1) z(d1) zraw(d1) gd(d1) z(2) .op .print dc v(1) v(2) i(v1) *>.print dc + i(r1) id(d1) vd(d1) req(d1) cd(d1) z(d1) zraw(d1) gd(d1) z(2) iter(0) .dc v1 -10 10 2 *>.stat notime *>.op *>.stat notime .end tests/d_diode.10.ckt000066400000000000000000000001631316501211100145200ustar00rootroot00000000000000' i1 (0 1) dc 1 d1 (1 0) my_diode .model my_diode d .probe op v(1) .op .delete my_diode .model my_diode d .op .end tests/d_diode.10a.ckt000066400000000000000000000002051316501211100146560ustar00rootroot00000000000000' i1 (0 1) dc 1 d1 (1 0) my_diode .model my_diode d is=2e-14 .probe op v(1) .op .delete my_diode .model my_diode d is=1e-14 .op .end tests/d_diode.11.ckt000066400000000000000000000005761316501211100145310ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 50.K D1 2 0 ddd 1. R1 1 3 50.K D2 3 0 dddd 1. .model ddd d ( is= 10.f rs= 10k n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .model dddd d ( is= 10.f rs= 1k n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) .op .end tests/d_diode.11a.ckt000066400000000000000000000006331316501211100146640ustar00rootroot00000000000000simple diode test .param aa=10k .param bb=aa/10 V1 1 0 10. R1 1 2 50.K D1 2 0 ddd 1. R1 1 3 50.K D2 3 0 dddd 1. .model ddd d ( is= 10.f rs= aa n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .model dddd d ( is= 10.f rs= bb n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) .op .end tests/d_diode.11b.ckt000066400000000000000000000006361316501211100146700ustar00rootroot00000000000000simple diode test .param aa=10k .param bb=aa/10 V1 1 0 10. R1 1 2 50.K D1 2 0 ddd 1. R1 1 3 50.K D2 3 0 dddd 1. .model ddd d ( is= 10.f rs= aa n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .model dddd d ( is= 10.f rs= aa/10 n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) .op .end tests/d_diode.11c.ckt000066400000000000000000000007101316501211100146620ustar00rootroot00000000000000simple diode test .param aa=10k .param bb=aa/10 .param one=1 .param ten='(2+3)*4*.5' V1 1 0 10. R1 1 2 50.K D1 2 0 ddd 1. R1 1 3 50.K D2 3 0 dddd 1. .model ddd d ( is= 10.f rs= 10k n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .model dddd d ( is= 10.f rs= '10k/ten' n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) .op .end tests/d_diode.11d.ckt000066400000000000000000000006361316501211100146720ustar00rootroot00000000000000simple diode test .param aa=10k .param bb=aa/10 .model ddd d ( is= 10.f rs= aa n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .model dddd d ( is= 10.f rs= aa/10 n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) V1 1 0 10. R1 1 2 50.K D1 2 0 ddd 1. R1 1 3 50.K D2 3 0 dddd 1. .print op v(nodes) .op .end tests/d_diode.12.ckt000066400000000000000000000014231316501211100145220ustar00rootroot00000000000000simple diode test V1 1 0 sin(ampl=10, freq=10meg) DC -10. AC 1 R1 1 2 100.K D1 2 0 ddd area= 1. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 bv= 50 ibv= 0.001 ) *>.list *>.print op v(1) v(2) i(v1) *>.print op + i(r1) id(d1) vd(d1) req(d1) cd(d1) z(d1) zraw(d1) gd(d1) z(2) .print dc v(1) v(2) i(v1) *>.print dc + i(r1) id(d1) vd(d1) req(d1) cd(d1) z(d1) zraw(d1) gd(d1) z(2) iter(0) .print ac vr(2) vi(2) .plot tran v(2) *>.plot tran v(1)(-10,10) v(2)(-10,10) *>.op trace iter .ac dec 1 10 1g .dc v1 -10 0 2 .ac dec 1 10 1g *>.width out=100 .tran 5n 195n 0 .ac dec 1 10 1g .tran 5n 165n 0 .ac dec 1 10 1g .tran 5n 135n 0 .ac dec 1 10 1g .tran 5n 125n 0 .ac dec 1 10 1g *>.stat notime .end tests/d_diode.2.ckt000066400000000000000000000003341316501211100144410ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 50.K D1 2 0 ddd 1. .model ddd d ( is= 10.f rs= 10k n= 1. tt= 0. cjo= 0. vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .print op v(1 2) .op .end tests/d_diode.3.ckt000066400000000000000000000007411316501211100144440ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd 1. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 gparallel=1e-5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.4.ckt000066400000000000000000000007211316501211100144430ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd 2. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.5.ckt000066400000000000000000000007261316501211100144510ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd area=2. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.6.ckt000066400000000000000000000007231316501211100144470ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd m=2. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.7.ckt000066400000000000000000000007301316501211100144460ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd area=2 m=2 .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.8.ckt000066400000000000000000000007261316501211100144540ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd area=4. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.9.ckt000066400000000000000000000007231316501211100144520ustar00rootroot00000000000000simple diode test V1 1 0 10. R1 1 2 100.K D1 2 0 ddd m=4. .model ddd d ( is= 10.f rs= 0. n= 1. tt= 0. cjo= 1.p vj= 1. m= 0.5 + eg= 1.11 xti= 3. kf= 0. af= 1. fc= 0.5 ) .list .print op v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) .op .print dc v(1) v(2) i(v1) i(r1) id(d1) vd(d1) req(d1) cap(d1) z(d1) zraw(d1) y(d1) z(2) iter(0) .dc v1 -10 10 2 .stat notime .dc v1 9.999 10.001 .001 .op .stat notime .end tests/d_diode.doc000066400000000000000000000004111316501211100142610ustar00rootroot00000000000000more testing in d_mos, d_logic, opamp 1. basic test 3. unnamed area=1, gparallel 4. unnamed area=2 5. named area=2 6. m=2 7. m=2 area=2 8. area=4 9. m=4 10. delete test 11. rs=10k, rs=1k 11a. params 11b. params 11c. params, big expressions 12. ac/tran interactiontests/d_diode.error1.ckt000066400000000000000000000000431316501211100155070ustar00rootroot00000000000000 d1 1 0 foo .model foo sw .op .end tests/d_logic.1.ckt000066400000000000000000000024111316501211100144470ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv U4 4 0 8 8 3 mos inv U5 5 0 8 8 4 mos inv U6 6 0 8 8 5 mos inv U7 7 0 8 8 6 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .option mode=mixed vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 .stat notime .end tests/d_logic.2.ckt000066400000000000000000000024121316501211100144510ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv U4 4 0 8 8 3 mos inv U5 5 0 8 8 4 mos inv U6 6 0 8 8 5 mos inv U7 7 0 8 8 6 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .option mode=analog vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 .stat notime .end tests/d_logic.3.ckt000066400000000000000000000024131316501211100144530ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv U4 4 0 8 8 3 mos inv U5 5 0 8 8 4 mos inv U6 6 0 8 8 5 mos inv U7 7 0 8 8 6 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .option mode=digital vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 .stat notime .end tests/d_logic.4.ckt000066400000000000000000000010701316501211100144520ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv U4 4 0 8 8 3 mos inv U5 5 0 8 8 4 mos inv U6 6 0 8 8 5 mos inv U7 7 0 8 8 6 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .option mode=mixed vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 .stat notime .end tests/d_logic.5.ckt000066400000000000000000000010711316501211100144540ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv U4 4 0 8 8 3 mos inv U5 5 0 8 8 4 mos inv U6 6 0 8 8 5 mos inv U7 7 0 8 8 6 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .option mode=analog vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 .stat notime .end tests/d_logic.6.ckt000066400000000000000000000011001316501211100144460ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv U4 4 0 8 8 3 mos inv U5 5 0 8 8 4 mos inv U6 6 0 8 8 5 mos inv U7 7 0 8 8 6 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .option mode=digital vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 watch .stat notime .end tests/d_logic.7.ckt000066400000000000000000000011061316501211100144550ustar00rootroot00000000000000'6 inverters as gates .gen freq=1 offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U7 7 0 8 8 6 mos inv U6 6 0 8 8 5 mos inv U5 5 0 8 8 4 mos inv U4 4 0 8 8 3 mos inv U3 3 0 8 8 2 mos inv U2 2 0 8 8 1 mos inv .model mos logic ( delay= 1n rise= 1n fall= 1n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 5. mf= 5. over=10k vmax= 5. vmin= 0. ) .option mode=digital vmax=5.1 vmin=-.1 .print op v(1 2 3 4 5 6 7 8) logic(1 2 3 4 5 6 7 8) .op '.option trace '.print tran v(nodes) l(nodes) '.tran 0 10 .05 watch .list .stat notime .end tests/d_logic.error1.ckt000066400000000000000000000000601316501211100155170ustar00rootroot00000000000000 u1 1 2 3 4 5 mos nand .model mos nmos .op .end tests/d_logic_nand-dc.ckt000066400000000000000000000002551316501211100157000ustar00rootroot00000000000000* nor-test V2 1 0 10V V1 4 0 10V U2 2 0 4 4 3 5 CMOS NOR V3 5 0 10V U1 3 0 4 4 1 2 CMOS NOR .model CMOS LOGIC .print dc V(V2) V(V3) V(U1) V(U2) logic(u*) .dc V2 0 10 2 .END tests/d_logic_tr_ab1.ckt000066400000000000000000000023621316501211100155450ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 1n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=analog diodeflags=4 bypass picky method=euler transits=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_ab2.ckt000066400000000000000000000024361316501211100155500ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 1n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=analog diodeflags=4 bypass picky method=euler transits=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_an1.ckt000066400000000000000000000023561316501211100155640ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 1n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=analog diodeflags=4 nobypass method=euler transits=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_an2.ckt000066400000000000000000000024321316501211100155600ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 1n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=analog diodeflags=4 nobypass method=euler transits=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_db1.ckt000066400000000000000000000023561316501211100155530ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=digital diodeflags=4 bypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_db2.ckt000066400000000000000000000024321316501211100155470ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=digital diodeflags=4 bypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_dn1.ckt000066400000000000000000000023601316501211100155620ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=digital diodeflags=4 nobypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_dn2.ckt000066400000000000000000000024341316501211100155650ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=digital diodeflags=4 nobypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mb1a.ckt000066400000000000000000000023561316501211100157250ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.6 thl= 0.4 mr= 200000. mf= 200000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 bypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mb1b.ckt000066400000000000000000000023541316501211100157240ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 bypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mb2a.ckt000066400000000000000000000024321316501211100157210ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.6 thl= 0.4 mr= 200000. mf= 200000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 bypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mb2b.ckt000066400000000000000000000024301316501211100157200ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 bypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mn1a.ckt000066400000000000000000000023601316501211100157340ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.6 thl= 0.4 mr= 200000. mf= 200000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 nobypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mn1b.ckt000066400000000000000000000023561316501211100157420ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 nobypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mn2a.ckt000066400000000000000000000024341316501211100157370ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.6 thl= 0.4 mr= 200000. mf= 200000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 nobypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_logic_tr_mn2b.ckt000066400000000000000000000024321316501211100157360ustar00rootroot00000000000000'1 inverters as gates .gen freq=1k offset=2.5 init=2.5 ampl=2.5 Vdd 8 0 dc 5. V1 1 0 generator( 1. ) U2 2 0 8 8 1 mos inv U3 3 0 8 8 2 mos inv .model mos logic ( delay= 100n rise= 100n fall= 100n rs= 100. rw= 1.G + thh= 0.75 thl= 0.25 mr= 2000. mf= 2000. over=10k vmax= 5. vmin= 0. ) .subckt mosinv1 2 4 1 5 3 M1 2 3 4 4 nmos l= 100.u w= 100.u nrd= 1. nrs= 1. M2 2 3 1 1 pmos l= 100.u w= 100.u nrd= 1. nrs= 1. .ends *+ends mosinv1 .model nmos nmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .model pmos pmos ( level=2 vto= 0. gamma= 0. phi= 0.6 is= 10.E-15 pb= 0.8 + cgso= 0. cgdo= 0. cgbo= 0. rsh= 0. cj= 0. mj= 0.5 cjsw= 0. mjsw= 0.33 + tox= 100.n nfs= 0. tpg=1 ld= 0. uo= 600. neff= 1. fc= 0.5 delta= 0. +) *+(* vfb=-0.6 * kp= 20.71886u ) .options itl4=50 mode=mixed diodeflags=4 nobypass method=euler transit=4 .print op v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .op .print tran v(1) l(1) v(2) l(2) v(3) l(3) iter(0) control(0) .alarm tran control(0)(1,9) .tran 0 .01 50u trace rejected .stat notime .end tests/d_macro.1.ckt000066400000000000000000000003721316501211100144570ustar00rootroot00000000000000' V1 2 0 1. X1 2 1 3 zzz X2 2 4 5 zzz .macro zzz 1 2 4 R1 1 2 1. R2 2 0 1. R3 2 3 1. R4 3 0 1. r5 3 4 1 r6 4 0 1 .eom zzz .width out=160 .print op v(nodes) .op .print op + v(r1.x1) v(r?.x1) v(r2.x?) .op .print .list .end tests/d_mos.error1.ckt000066400000000000000000000000461316501211100152240ustar00rootroot00000000000000 m1 3 2 0 0 foo .model foo d .op .end tests/d_mos.error2.ckt000066400000000000000000000000461316501211100152250ustar00rootroot00000000000000 m1 3 2 0 0 foo .model foo r .op .end tests/d_mos.error3.ckt000066400000000000000000000000521316501211100152230ustar00rootroot00000000000000 m1 3 2 0 0 foo .model foo dsdaf .op .end tests/d_mos.error4.ckt000066400000000000000000000000471316501211100152300ustar00rootroot00000000000000 m1 3 2 0 0 foo .model foo sw .op .end tests/d_mos1.bin1.ckt000066400000000000000000000014401316501211100147230ustar00rootroot00000000000000.title mos1 inverter .width out=150 .options itl4=40 .model nmos.1 nmos level=1 vto=0.7 lmin=1e-6 lmax=2e-6 .model pmos.1 pmos level=1 vto=-0.7 lmin=1e-6 lmax=2e-6 .model nmos.2 nmos level=1 vto=0.7 lmin=2e-6 lmax=4e-6 .model pmos.2 pmos level=1 vto=-0.7 lmin=2e-6 lmax=4e-6 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos1.bin2.ckt000066400000000000000000000014421316501211100147260ustar00rootroot00000000000000.title mos1 inverter .width out=150 .options itl4=40 .model nmos.2 nmos level=1 vto=0.6 lmin=1e-6 lmax=2e-6 .model pmos.2 pmos level=1 vto=-0.6 lmin=1e-6 lmax=2e-6 .model nmos.1 nmos level=1 vto=0.7 lmin=.5e-6 lmax=1e-6 .model pmos.1 pmos level=1 vto=-0.7 lmin=.5e-6 lmax=1e-6 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos1.bin3.ckt000066400000000000000000000014421316501211100147270ustar00rootroot00000000000000.title mos1 inverter .width out=150 .options itl4=40 .model nmos.2 nmos level=1 vto=0.5 lmin=1e-6 lmax=2e-6 .model pmos.2 pmos level=1 vto=-0.5 lmin=1e-6 lmax=2e-6 .model nmos.1 nmos level=1 vto=0.7 lmin=.5e-6 lmax=1e-6 .model pmos.1 pmos level=1 vto=-0.7 lmin=.5e-6 lmax=1e-6 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos1.inv1.ckt000066400000000000000000000012051316501211100147460ustar00rootroot00000000000000.title mos1 inverter .width out=150 .options itl4=40 .model nmos nmos level=1 vto=0.7 .model pmos pmos level=1 vto=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos1.inv2.ckt000066400000000000000000000012271316501211100147530ustar00rootroot00000000000000.title mos1 inverter .width out=150 .options itl4=40 .model nmos nmos level=1 vto=0.7 .model pmos pmos level=1 vto=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .option nocstray .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos1.inv3.ckt000066400000000000000000000012271316501211100147540ustar00rootroot00000000000000.title mos1 inverter .option nocstray .width out=150 .options itl4=40 .model nmos nmos level=1 vto=0.7 .model pmos pmos level=1 vto=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos1.lin1.ckt000066400000000000000000000022361316501211100147410ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .width out=80 .list .end tests/d_mos1.lin1.late.ckt000066400000000000000000000022121316501211100156570ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 lambda=.01 level=1) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.lin1.none.ckt000066400000000000000000000022001316501211100156660ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.lin1.spice000066400000000000000000000012601316501211100152570ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K *.print op v(1) v(2) v(3) v(4) iter(0) .op .print dc v(1) v(2) v(3) v(4) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.lin2.ckt000066400000000000000000000022511316501211100147370ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, short channel Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 900.n w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.lin3.ckt000066400000000000000000000022271316501211100147430ustar00rootroot00000000000000nmos n gate, linear, lambda not specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.lin4.ckt000066400000000000000000000022271316501211100147440ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, vmax specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.lin5.ckt000066400000000000000000000022341316501211100147430ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, source tied to substrate Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos1.n+1.ckt000066400000000000000000000006041316501211100144640ustar00rootroot00000000000000nmos same gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=1 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. tpg=1. xj=1.E-15 ld=0. uo=600. + kf=0. af=1. fc=0.5) *+( vto=34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos1.n-1.ckt000066400000000000000000000006051316501211100144670ustar00rootroot00000000000000nmos opp gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=1 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + kf=0. af=1. fc=0.5) *+( vto=35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos1.n0.ckt000066400000000000000000000006031316501211100144070ustar00rootroot00000000000000nmos al gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=1 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. tpg=0. xj=1.E-15 ld=0. uo=600. + kf=0. af=1. fc=0.5) *+( vto=33.35443 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos1.nand1.ckt000066400000000000000000000012711316501211100150750ustar00rootroot00000000000000.title na2 .model nmos nmos level=1 vto=0.7 .model pmos pmos level=1 vto=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op Cgs(Mp1.XI10) Cgd(Mp1.XI10) Cgb(Mp1.XI10) .op .print op Cgs(Mp2.XI10) Cgd(Mp2.XI10) Cgb(Mp2.XI10) .op .print op Cgs(Mn1.XI10) Cgd(Mn1.XI10) Cgb(Mn1.XI10) .op .print op Cgs(Mn2.XI10) Cgd(Mn2.XI10) Cgb(Mn2.XI10) .op .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos1.nand2.ckt000066400000000000000000000012711316501211100150760ustar00rootroot00000000000000.title na2 .SUBCKT nand2 2 3 1 4 11 .model nmos nmos level=1 vto=0.7 .model pmos pmos level=1 vto=-0.7 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op Cgs(Mp1.XI10) Cgd(Mp1.XI10) Cgb(Mp1.XI10) .op .print op Cgs(Mp2.XI10) Cgd(Mp2.XI10) Cgb(Mp2.XI10) .op .print op Cgs(Mn1.XI10) Cgd(Mn1.XI10) Cgb(Mn1.XI10) .op .print op Cgs(Mn2.XI10) Cgd(Mn2.XI10) Cgb(Mn2.XI10) .op .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos1.nand3.ckt000066400000000000000000000013071316501211100150770ustar00rootroot00000000000000.title na2 .model nmos nmos level=1 vto=0.7 .model pmos pmos level=1 vto=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op Cgs(Mp1.XI10) Cgd(Mp1.XI10) Cgb(Mp1.XI10) .op .print op Cgs(Mp2.XI10) Cgd(Mp2.XI10) Cgb(Mp2.XI10) .op .print op Cgs(Mn1.XI10) Cgd(Mn1.XI10) Cgb(Mn1.XI10) .op .print op Cgs(Mn2.XI10) Cgd(Mn2.XI10) Cgb(Mn2.XI10) .op .option chgtol=1f trtol=1 .print tran v(2) v(4) v(5) iter(0) .tran 0 10n .stat notime .end tests/d_mos1.p+1.ckt000066400000000000000000000006051316501211100144670ustar00rootroot00000000000000pmos same gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=1 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. tpg=1. xj=1.E-15 ld=0. uo=600. + kf=0. af=1. fc=0.5) *+( vto=-34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos1.p-1.ckt000066400000000000000000000006061316501211100144720ustar00rootroot00000000000000pmos opp gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=1 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + kf=0. af=1. fc=0.5) *+( vto=-35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos1.p0.ckt000066400000000000000000000006041316501211100144120ustar00rootroot00000000000000pmos al gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=1 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. tpg=0. xj=1.E-15 ld=0. uo=600. + kf=0. af=1. fc=0.5) *+( vto=-34.56952 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos1.plin.ckt000066400000000000000000000021101316501211100150270ustar00rootroot00000000000000pmos p gate Vgs 1 0 -3.236734 M1 2 1 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 1.234875 .model cmosp pmos ( level=1 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos1.psat1.ckt000066400000000000000000000021411316501211100151210ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=1 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) iter(0) .op trace iter .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) .op .print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) .op .print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) .op .print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos1.psat2.ckt000066400000000000000000000021221316501211100151210ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=1 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=0 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) iter(0) .op trace iter .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) .op .print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) .op .print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) .op .print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos1.psat3.ckt000066400000000000000000000021221316501211100151220ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=1 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) .print op v(nodes) iter(0) .op trace iter .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) .op .print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) .op .print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) .op .print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos1.sat1.ckt000066400000000000000000000022631316501211100147460ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos1.sat2.ckt000066400000000000000000000024031316501211100147430ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos1.sat2.spice000066400000000000000000000011441316501211100152660ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .op .end tests/d_mos1.sat3.ckt000066400000000000000000000023351316501211100147500ustar00rootroot00000000000000nmos n gate, saturated, is/js default M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos1.sat4.ckt000066400000000000000000000024221316501211100147460ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), +body M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos1.sat5.ckt000066400000000000000000000024051316501211100147500ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), no bulk source M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos1.sat6.ckt000066400000000000000000000024201316501211100147460ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) no bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos1.sat7.ckt000066400000000000000000000020201316501211100147430ustar00rootroot00000000000000nmos n gate M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos1.sts.ckt000066400000000000000000000021311316501211100147010ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos1.zero.ckt000066400000000000000000000026271316501211100150610ustar00rootroot00000000000000nmos n gate, vds = 0 Vgs 5 0 pwl (0,0 1n,0 2n,4 1,4) DC 3.236734 AC 1 Rg 5 1 1meg M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 100k Vbs 4 0 0 .model cmosn nmos ( level=1 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 ld= 265.073n uo= 503.521 + kf= 0. af= 1. fc= 0.5 ) .options temp=27 tnom=27 *>.print op v(2) v(3) gds(m1) vdsat(m1) von(m1) *>.op trace iter *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print ac v(5) vr(1) vi(1) .ac dec 1 1k 1g *>.print op gds(m1) cgs(m1) iter(0) *>.op 0 100 25 *>.ac dec 1 1k 1g .print tran v(5) v(1) .tran 1n 30n 0 *>.ac dec 1 1k 1g .end tests/d_mos2.inv1.ckt000066400000000000000000000012031316501211100147450ustar00rootroot00000000000000.title mos2 inverter .width out=150 .model nmos nmos level=2 vto=0.7 .model pmos pmos level=2 vto=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.6k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.6k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .status notime .end tests/d_mos2.lin1.ckt000066400000000000000000000023711316501211100147420ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .width out=80 .list .end tests/d_mos2.lin1.late.ckt000066400000000000000000000023421316501211100156640ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 level=2 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.lin1r.ckt000066400000000000000000000023461316501211100151260ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.lin1z.ckt000066400000000000000000000023421316501211100151320ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.lin2.ckt000066400000000000000000000024041316501211100147400ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, short channel Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 900.n w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.lin3.ckt000066400000000000000000000023621316501211100147440ustar00rootroot00000000000000nmos n gate, linear, lambda not specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.lin4.ckt000066400000000000000000000024011316501211100147370ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, vmax specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 vmax= 55.9035K) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.lin5.ckt000066400000000000000000000023671316501211100147530ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, source tied to substrate Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos2.n+1.ckt000066400000000000000000000007011316501211100144630ustar00rootroot00000000000000nmos same gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=2 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=1. xj=1.E-15 ld=0. uo=600. + ucrit=10.K uexp=0. utra=0. vmax=0. neff=1. kf=0. af=1. fc=0.5 + delta=0.) *+( vto=34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos2.n-1.ckt000066400000000000000000000007021316501211100144660ustar00rootroot00000000000000nmos opp gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=2 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + ucrit=10.K uexp=0. utra=0. vmax=0. neff=1. kf=0. af=1. fc=0.5 + delta=0.) *+( vto=35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos2.n0.ckt000066400000000000000000000007001316501211100144060ustar00rootroot00000000000000nmos al gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=2 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=0. xj=1.E-15 ld=0. uo=600. + ucrit=10.K uexp=0. utra=0. vmax=0. neff=1. kf=0. af=1. fc=0.5 + delta=0.) *+( vto=33.35443 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos2.nand1.ckt000066400000000000000000000013111316501211100150710ustar00rootroot00000000000000.title na2 .model nmos nmos level=2 vto=0.7 .model pmos pmos level=2 vto=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 100k .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op Cgs(Mp1.XI10) Cgd(Mp1.XI10) Cgb(Mp1.XI10) .op .print op Cgs(Mp2.XI10) Cgd(Mp2.XI10) Cgb(Mp2.XI10) .op .print op Cgs(Mn1.XI10) Cgd(Mn1.XI10) Cgb(Mn1.XI10) .op .print op Cgs(Mn2.XI10) Cgd(Mn2.XI10) Cgb(Mn2.XI10) .op .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos2.p+1.ckt000066400000000000000000000007021316501211100144660ustar00rootroot00000000000000pmos same gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=2 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=1. xj=1.E-15 ld=0. uo=600. + ucrit=10.K uexp=0. utra=0. vmax=0. neff=1. kf=0. af=1. fc=0.5 + delta=0.) *+( vto=-34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos2.p-1.ckt000066400000000000000000000007031316501211100144710ustar00rootroot00000000000000pmos opp gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=2 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + ucrit=10.K uexp=0. utra=0. vmax=0. neff=1. kf=0. af=1. fc=0.5 + delta=0.) *+( vto=-35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos2.p0.ckt000066400000000000000000000007011316501211100144110ustar00rootroot00000000000000pmos al gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=2 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=0. xj=1.E-15 ld=0. uo=600. + ucrit=10.K uexp=0. utra=0. vmax=0. neff=1. kf=0. af=1. fc=0.5 + delta=0.) *+( vto=-34.56952 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos2.plin.ckt000066400000000000000000000022431316501211100150370ustar00rootroot00000000000000pmos p gate Vgs 1 0 -3.236734 M1 2 1 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 1.234875 .model cmosp pmos ( level=2 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos2.psat1.ckt000066400000000000000000000023411316501211100151240ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=2 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos2.psat2.ckt000066400000000000000000000023231316501211100151250ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=2 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=0 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos2.psat3.ckt000066400000000000000000000023231316501211100151260ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=2 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos2.sat1.ckt000066400000000000000000000023411316501211100147440ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) .print op v(nodes) iter(0) .op trace iter .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) .op .print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) .op .print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) .op .print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos2.sat2.ckt000066400000000000000000000025371316501211100147540ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos2.sat3.ckt000066400000000000000000000024711316501211100147520ustar00rootroot00000000000000nmos n gate, saturated, is/js default M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos2.sat4.ckt000066400000000000000000000025561316501211100147570ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), +body M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos2.sat5.ckt000066400000000000000000000025411316501211100147520ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), no bulk source M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos2.sat6.ckt000066400000000000000000000025541316501211100147570ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) no bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos2.sat7.ckt000066400000000000000000000021731316501211100147550ustar00rootroot00000000000000nmos n gate M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 vmax= 55.9035K) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos2.sts.ckt000066400000000000000000000022641316501211100147110ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos2.zero.ckt000066400000000000000000000026451316501211100150620ustar00rootroot00000000000000nmos n gate, vds = 0 Vgs 5 0 DC 3.236734 AC 1 Rg 5 1 1meg M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 100k Vbs 4 0 0 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) .options temp=27 tnom=27 *>.print op v(2) v(3) gds(m1) vdsat(m1) von(m1) *>.op trace iter *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print ac v(5) vr(1) vi(1) .ac dec 1 1k 1g *>.print op gds(m1) cgs(m1) iter(0) *>.op 0 100 25 *>.ac dec 1 1k 1g .end tests/d_mos3.inv1.ckt000066400000000000000000000012031316501211100147460ustar00rootroot00000000000000.title mos3 inverter .width out=150 .model nmos nmos level=3 vto=0.7 .model pmos pmos level=3 vto=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.6k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.6k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .status notime .end tests/d_mos3.lin1.ckt000066400000000000000000000023751316501211100147470ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2) *+(* vfb=-0.4241892 ) * vmax= 55.9035K *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .width out=80 *>.list .end tests/d_mos3.lin1r.ckt000066400000000000000000000023151316501211100151230ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos3.lin1z.ckt000066400000000000000000000023111316501211100151270ustar00rootroot00000000000000nmos n gate, linear, lambda specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 lambda=.01) *+(* vfb=-0.4241892 ) * vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos3.lin2.ckt000066400000000000000000000023541316501211100147450ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, short channel Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 900.n w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos3.lin3.ckt000066400000000000000000000023321316501211100147420ustar00rootroot00000000000000nmos n gate, linear, lambda not specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos3.lin4.ckt000066400000000000000000000023521316501211100147450ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, vmax specified Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 vmax= 55.9035K) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos3.lin5.ckt000066400000000000000000000023371316501211100147510ustar00rootroot00000000000000nmos n gate, linear, lambda not specified, source tied to substrate Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos3.n+1.ckt000066400000000000000000000006701316501211100144710ustar00rootroot00000000000000nmos same gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos3.n-1.ckt000066400000000000000000000006711316501211100144740ustar00rootroot00000000000000nmos opp gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos3.n0.ckt000066400000000000000000000006671316501211100144230ustar00rootroot00000000000000nmos al gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=0. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=33.35443 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos3.nand1.ckt000066400000000000000000000013111316501211100150720ustar00rootroot00000000000000.title na2 .model nmos nmos level=3 vto=0.7 .model pmos pmos level=3 vto=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 100k .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op Cgs(Mp1.XI10) Cgd(Mp1.XI10) Cgb(Mp1.XI10) .op .print op Cgs(Mp2.XI10) Cgd(Mp2.XI10) Cgb(Mp2.XI10) .op .print op Cgs(Mn1.XI10) Cgd(Mn1.XI10) Cgb(Mn1.XI10) .op .print op Cgs(Mn2.XI10) Cgd(Mn2.XI10) Cgb(Mn2.XI10) .op .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos3.p+1.ckt000066400000000000000000000006711316501211100144740ustar00rootroot00000000000000pmos same gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=-34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos3.p-1.ckt000066400000000000000000000006721316501211100144770ustar00rootroot00000000000000pmos opp gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=-35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos3.p0.ckt000066400000000000000000000006701316501211100144170ustar00rootroot00000000000000pmos al gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=0. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=-34.56952 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos3.plin.ckt000066400000000000000000000022131316501211100150350ustar00rootroot00000000000000pmos p gate Vgs 1 0 -3.236734 M1 2 1 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 1.234875 .model cmosp pmos ( level=3 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos3.psat1.ckt000066400000000000000000000023221316501211100151240ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=3 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos3.psat2.ckt000066400000000000000000000023041316501211100151250ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=3 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=0 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos3.psat3.ckt000066400000000000000000000023041316501211100151260ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=3 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos3.sat000.ckt000066400000000000000000000013011316501211100150770ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 2.2 Rds 2 3 1 Vbs 4 0 0. .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .options trace .print op v(nodes) iter(0) .op .end tests/d_mos3.sat007.ckt000066400000000000000000000012501316501211100151110ustar00rootroot00000000000000nmos n gate M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 vmax= 55.9035K) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .options trace .print op v(nodes) iter(0) gm(m1) gds(m1) gmb(m1) .op .end tests/d_mos3.sat1.ckt000066400000000000000000000022271316501211100147500ustar00rootroot00000000000000nmos n gate, saturated, isat of bulk diode == 0 M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos3.sat2.ckt000066400000000000000000000025071316501211100147520ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) default bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos3.sat3.ckt000066400000000000000000000024411316501211100147500ustar00rootroot00000000000000nmos n gate, saturated, is/js default M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos3.sat4.ckt000066400000000000000000000025261316501211100147550ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), +body M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos3.sat5.ckt000066400000000000000000000025111316501211100147500ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value), no bulk source M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos3.sat6.ckt000066400000000000000000000025241316501211100147550ustar00rootroot00000000000000nmos n gate, saturated, js specified (unreasonable value) no bulk cap M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. as=81p ad=81p Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 10 tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print op v(ddb.m1) i(ddb.m1) p(ddb.m1) cap(ddb.m1) r(ddb.m1) region(ddb.m1) .op .print op v(dsb.m1) i(dsb.m1) p(dsb.m1) cap(dsb.m1) r(dsb.m1) region(dsb.m1) .op .end tests/d_mos3.sat7.ckt000066400000000000000000000021441316501211100147540ustar00rootroot00000000000000nmos n gate M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 vmax= 55.9035K) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos3.sts.ckt000066400000000000000000000022341316501211100147070ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos3.sts000.ckt000066400000000000000000000013111316501211100151220ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .options trace .print op v(nodes) iter(0) .op .end tests/d_mos3.zero.ckt000066400000000000000000000026261316501211100150620ustar00rootroot00000000000000nmos n gate, vds = 0 Vgs 5 0 DC 3.236734 AC 1 Rg 5 1 1meg M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 100k Vbs 4 0 0 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) .options temp=27 tnom=27 *>.print op v(2) v(3) gds(m1) vdsat(m1) von(m1) *>.op trace iter *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print ac v(5) vr(1) vi(1) .ac dec 1 1k 1g *>.print op gds(m1) cgs(m1) iter(0) *>.op 0 100 25 *>.ac dec 1 1k 1g .end tests/d_mos4.1.ckt000066400000000000000000000065571316501211100142530ustar00rootroot00000000000000Test of MOS BSIM1 implementation; DC transfer curve ****************************************************************** MN1 13 2 0 4 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN2 23 2 0 5 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN3 33 2 0 6 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN4 43 2 0 7 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN5 53 2 0 8 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U VDS 3 0 0.05 VGS 2 0 0 V1 3 13 0 V2 3 23 0 V3 3 33 0 V4 3 43 0 V5 3 53 0 VBS1 4 0 0 VBS2 5 0 -1 VBS3 6 0 -2 VBS4 7 0 -3 VBS5 8 0 -4 *************************************************************** .MODEL NMOS NMOS + LEVEL = 4.00000E+000 + TOX = 3.00000E-002 + VDD = 5.00000E+000 + TEMP = 2.70000E+001 + DL = 7.97991E-001 + DW = 4.77402E-001 + VFB = -1.0087E+000 + PHI = 7.96434E-001 + K1 = 1.31191E+000 + K2 = 1.46640E-001 + ETA = -1.0027E-003 + MUZ = 5.34334E+002 + U0 = 4.38497E-002 + U1 = -5.7332E-002 + X2E = -7.6911E-004 + X3E = 7.86777E-004 + X2MZ = 8.25434E+000 + MUS = 5.40612E+002 + X2MS = -1.2992E+001 + X3MS = -9.4035E+000 + X2U0 = 1.06821E-003 + X2U1 = -1.9209E-002 + X3U1 = 7.76925E-003 + LVFB = -2.1402E-001 + WVFB = 3.44354E-001 + LK1 = 3.23395E-001 + WK1 = -5.7698E-001 + LK2 = 1.68585E-001 + WK2 = -1.8796E-001 + LETA = -9.4847E-003 + WETA = 1.47316E-002 + LU0 = 6.38105E-002 + WU0 = -6.1053E-002 + LU1 = 1.01174E+000 + WU1 = 1.62706E-002 + LX2E = 9.62411E-003 + WX2E = -3.7951E-003 + LX3E = 7.35448E-004 + WX3E = -1.7796E-003 + LX2MZ = -2.4197E+001 + WX2MZ = 1.95696E+001 + LMUS = 6.21401E+002 + WMUS = -1.9190E+002 + LX2MS = -6.4900E+001 + WX2MS = 4.29043E+001 + LX3MS = 1.18239E+002 + WX3MS = -2.9747E+001 + LX2U0 = -8.0958E-003 + WX2U0 = 4.03379E-003 + LX2U1 = -7.4573E-002 + WX2U1 = 1.47520E-002 + LX3U1 = -1.0940E-001 + WX3U1 = -8.3353E-003 + N0 = 1.55 + NB = 0.09 + ND = 0.0 + LN0 = 0.0 + WN0 = 0.0 + LNB = 0.0 + WNB = 0.0 + LND = 0.0 + WND = 0.0 + CGDO = 2.70000E-010 + CGSO = 2.70000E-010 + CGBO = 1.40000E-010 + XPART = 1.2 + RSH = 35.0 + CJ = 2.75E-4 + CJSW = 1.90E-10 + JS = 1.0E-8 + PB = 0.7 + PBSW = 0.8 + MJ = 0.5 + MJSW = 0.33 + WDF = 0.0 ***** ***** .OPTIONS LIMPTS=5000 rstray .PRINT DC I(V1) I(V2) I(V3) I(V4) I(V5) .DC VGS 0 5 0.2 *.PLOT DC I(V1) I(V2) I(V3) I(V4) I(V5) *.OPTIONS LIMPTS=501 ACCT *VGS 2 0 PWL(0 0 5 5) *.TRAN 0 5 0.01 *.PRINT TRAN I(V1) I(V2) I(V3) I(V4) I(V5) ***** MODEL PARAMETERS TEMP2 ******************** .END tests/d_mos4.2.ckt000066400000000000000000000065551316501211100142520ustar00rootroot00000000000000Test of MOS BSIM1 implementation; DC transfer curve ****************************************************************** MN1 13 2 0 4 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN2 23 2 0 5 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN3 33 2 0 6 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN4 43 2 0 7 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN5 53 2 0 8 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U VDS 3 0 0.05 VGS 2 0 0 V1 3 13 0 V2 3 23 0 V3 3 33 0 V4 3 43 0 V5 3 53 0 VBS1 4 0 0 VBS2 5 0 -1 VBS3 6 0 -2 VBS4 7 0 -3 VBS5 8 0 -4 *************************************************************** .MODEL NMOS NMOS + LEVEL = 4.00000E+000 + TOX = 3.00000E-002 + VDD = 5.00000E+000 + TEMP = 2.70000E+001 + DL = 7.97991E-001 + DW = 4.77402E-001 + VFB = -1.0087E+000 + PHI = 7.96434E-001 + K1 = 1.31191E+000 + K2 = 1.46640E-001 + ETA = -1.0027E-003 + MUZ = 5.34334E+002 + U0 = 4.38497E-002 + U1 = -5.7332E-002 + X2E = -7.6911E-004 + X3E = 7.86777E-004 + X2MZ = 8.25434E+000 + MUS = 5.40612E+002 + X2MS = -1.2992E+001 + X3MS = -9.4035E+000 + X2U0 = 1.06821E-003 + X2U1 = -1.9209E-002 + X3U1 = 7.76925E-003 + LVFB = -2.1402E-001 + WVFB = 3.44354E-001 + LK1 = 3.23395E-001 + WK1 = -5.7698E-001 + LK2 = 1.68585E-001 + WK2 = -1.8796E-001 + LETA = -9.4847E-003 + WETA = 1.47316E-002 + LU0 = 6.38105E-002 + WU0 = -6.1053E-002 + LU1 = 1.01174E+000 + WU1 = 1.62706E-002 + LX2E = 9.62411E-003 + WX2E = -3.7951E-003 + LX3E = 7.35448E-004 + WX3E = -1.7796E-003 + LX2MZ = -2.4197E+001 + WX2MZ = 1.95696E+001 + LMUS = 6.21401E+002 + WMUS = -1.9190E+002 + LX2MS = -6.4900E+001 + WX2MS = 4.29043E+001 + LX3MS = 1.18239E+002 + WX3MS = -2.9747E+001 + LX2U0 = -8.0958E-003 + WX2U0 = 4.03379E-003 + LX2U1 = -7.4573E-002 + WX2U1 = 1.47520E-002 + LX3U1 = -1.0940E-001 + WX3U1 = -8.3353E-003 + N0 = 1.55 + NB = 0.09 + ND = 0.0 + LN0 = 0.0 + WN0 = 0.0 + LNB = 0.0 + WNB = 0.0 + LND = 0.0 + WND = 0.0 + CGDO = 2.70000E-010 + CGSO = 2.70000E-010 + CGBO = 1.40000E-010 + XPART = 0 + RSH = 35.0 + CJ = 2.75E-4 + CJSW = 1.90E-10 + JS = 1.0E-8 + PB = 0.7 + PBSW = 0.8 + MJ = 0.5 + MJSW = 0.33 + WDF = 0.0 ***** ***** .OPTIONS LIMPTS=5000 rstray .PRINT DC I(V1) I(V2) I(V3) I(V4) I(V5) .DC VGS 0 5 0.2 *.PLOT DC I(V1) I(V2) I(V3) I(V4) I(V5) *.OPTIONS LIMPTS=501 ACCT *VGS 2 0 PWL(0 0 5 5) *.TRAN 0 5 0.01 *.PRINT TRAN I(V1) I(V2) I(V3) I(V4) I(V5) ***** MODEL PARAMETERS TEMP2 ******************** .END tests/d_mos4.3.ckt000066400000000000000000000065551316501211100142530ustar00rootroot00000000000000Test of MOS BSIM1 implementation; DC transfer curve ****************************************************************** MN1 13 2 0 4 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN2 23 2 0 5 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN3 33 2 0 6 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN4 43 2 0 7 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN5 53 2 0 8 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U VDS 3 0 0.05 VGS 2 0 0 V1 3 13 0 V2 3 23 0 V3 3 33 0 V4 3 43 0 V5 3 53 0 VBS1 4 0 0 VBS2 5 0 -1 VBS3 6 0 -2 VBS4 7 0 -3 VBS5 8 0 -4 *************************************************************** .MODEL NMOS NMOS + LEVEL = 4.00000E+000 + TOX = 3.00000E-002 + VDD = 4.00000E+000 + TEMP = 2.70000E+001 + DL = 7.97991E-001 + DW = 4.77402E-001 + VFB = -1.0087E+000 + PHI = 7.96434E-001 + K1 = 1.31191E+000 + K2 = 1.46640E-001 + ETA = -1.0027E-003 + MUZ = 5.34334E+002 + U0 = 4.38497E-002 + U1 = -5.7332E-002 + X2E = -7.6911E-004 + X3E = 7.86777E-004 + X2MZ = 8.25434E+000 + MUS = 5.40612E+002 + X2MS = -1.2992E+001 + X3MS = -9.4035E+000 + X2U0 = 1.06821E-003 + X2U1 = -1.9209E-002 + X3U1 = 7.76925E-003 + LVFB = -2.1402E-001 + WVFB = 3.44354E-001 + LK1 = 3.23395E-001 + WK1 = -5.7698E-001 + LK2 = 1.68585E-001 + WK2 = -1.8796E-001 + LETA = -9.4847E-003 + WETA = 1.47316E-002 + LU0 = 6.38105E-002 + WU0 = -6.1053E-002 + LU1 = 1.01174E+000 + WU1 = 1.62706E-002 + LX2E = 9.62411E-003 + WX2E = -3.7951E-003 + LX3E = 7.35448E-004 + WX3E = -1.7796E-003 + LX2MZ = -2.4197E+001 + WX2MZ = 1.95696E+001 + LMUS = 6.21401E+002 + WMUS = -1.9190E+002 + LX2MS = -6.4900E+001 + WX2MS = 4.29043E+001 + LX3MS = 1.18239E+002 + WX3MS = -2.9747E+001 + LX2U0 = -8.0958E-003 + WX2U0 = 4.03379E-003 + LX2U1 = -7.4573E-002 + WX2U1 = 1.47520E-002 + LX3U1 = -1.0940E-001 + WX3U1 = -8.3353E-003 + N0 = 1.55 + NB = 0.09 + ND = 0.0 + LN0 = 0.0 + WN0 = 0.0 + LNB = 0.0 + WNB = 0.0 + LND = 0.0 + WND = 0.0 + CGDO = 2.70000E-010 + CGSO = 2.70000E-010 + CGBO = 1.40000E-010 + XPART = 0 + RSH = 35.0 + CJ = 2.75E-4 + CJSW = 1.90E-10 + JS = 1.0E-8 + PB = 0.7 + PBSW = 0.8 + MJ = 0.5 + MJSW = 0.33 + WDF = 0.0 ***** ***** .OPTIONS LIMPTS=5000 rstray .PRINT DC I(V1) I(V2) I(V3) I(V4) I(V5) .DC VGS 0 5 0.2 *.PLOT DC I(V1) I(V2) I(V3) I(V4) I(V5) *.OPTIONS LIMPTS=501 ACCT *VGS 2 0 PWL(0 0 5 5) *.TRAN 0 5 0.01 *.PRINT TRAN I(V1) I(V2) I(V3) I(V4) I(V5) ***** MODEL PARAMETERS TEMP2 ******************** .END tests/d_mos49.nand1.ckt000066400000000000000000000015041316501211100151700ustar00rootroot00000000000000.title na2 .model nmos nmos level=8 vth0=0.7 .model pmos pmos level=8 vth0=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 1000meg .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op region(Ddb.Mp1.XI10) region(Ddb.Mp2.XI10) region(Ddb.Mn1.XI10) region(Ddb.Mn2.XI10) region(Dsb.Mn1.XI10) .op trace iter .print op V(Ddb.Mp1.XI10) V(Ddb.Mp2.XI10) V(Ddb.Mn1.XI10) V(Ddb.Mn2.XI10) V(Dsb.Mn1.XI10) .op trace iter .print op I(Ddb.Mp1.XI10) I(Ddb.Mp2.XI10) I(Ddb.Mn1.XI10) I(Ddb.Mn2.XI10) I(Dsb.Mn1.XI10) .op trace iter .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos5.1.ckt000066400000000000000000000065551316501211100142520ustar00rootroot00000000000000Test of MOS BSIM2 implementation; DC transfer curve ****************************************************************** MN1 13 2 0 4 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN2 23 2 0 5 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN3 33 2 0 6 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN4 43 2 0 7 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U MN5 53 2 0 8 NMOS L=10U W=50.0U AD=100P AS=100P PD=40U PS=40U VDS 3 0 0.05 VGS 2 0 0 V1 3 13 0 V2 3 23 0 V3 3 33 0 V4 3 43 0 V5 3 53 0 VBS1 4 0 0 VBS2 5 0 -1 VBS3 6 0 -2 VBS4 7 0 -3 VBS5 8 0 -4 * This file contains the BSIM2 process file parameters as they should * be input to the .model card of spice3c1. .model nmos nmos level=5 + vfb = -0.7919 lvfb = -0.0266 wvfb = 0.0000 + phi = 0.8039 lphi = 0.0042 wphi = 0.0000 + k1 = 0.7286 lk1 = 0.0309 wk1 = 0.0000 + k2 = -0.0506 lk2 = 0.0786 wk2 = 0.0000 + mu0 = 453.2926 dl = 0.1553 dw = 0.0000 + mu0b = -5.4925 lmu0b = -1.9192 wmu0b = 0.0000 + mus0 = 781.7117 lmus0 = 25.2769 wmus0 = 0.0000 + musb = 25.5724 lmusb = -10.0060 wmusb = 0.0000 + mu20 = 0.9390 lmu20 = -0.0840 wmu20 = 0.0000 + mu2b = 0.0753 lmu2b = -0.0148 wmu2b = 0.0000 + mu2g = 0.1804 lmu2g = 0.0181 wmu2g = 0.0000 + mu30 = 44.9689 lmu30 = -0.0933 wmu30 = 0.0000 + mu3b = 0.5871 lmu3b = 1.0793 wmu3b = 0.0000 + mu3g = -11.6723 lmu3g = 0.6804 wmu3g = 0.0000 + mu40 = 0.2682 lmu40 = 2.3969 wmu40 = 0.0000 + mu4b = -0.3179 lmu4b = 0.1264 wmu4b = 0.0000 + mu4g = -0.2654 lmu4g = -0.5702 wmu4g = 0.0000 + ua0 = 0.0441 lua0 = 0.2283 wua0 = 0.0000 + uab = -0.0045 luab = -0.0105 wuab = 0.0000 + ub0 = 0.0125 lub0 = -0.0051 wub0 = 0.0000 + ubb = -0.0015 lubb = 0.0010 wubb = 0.0000 + u10 = 0.1262 lu10 = 0.5563 wu10 = 0.0000 + u1d = -0.2967 lu1d = -0.0062 wu1d = 0.0000 + u1b = 0.0960 lu1b = -0.0345 wu1b = 0.0000 + eta0 = -0.0373 leta0 = 0.0271 weta0 = 0.0000 + etab = 0.0004 letab = -0.0041 wetab = 0.0000 + n0 = 0.8032 ln0 = 0.1734 wn0 = 0.0000 + nd = 0.0105 lnd = -0.0091 wnd = 0.0000 + nb = 0.5978 lnb = -0.1638 wnb = 0.0000 + vof0 = 1.4977 lvof0 = -0.1766 wvof0 = 0.0000 + vofd = 0.1795 lvofd = -0.1247 wvofd = 0.0000 + vofb = 0.8368 lvofb = -0.3432 wvofb = 0.0000 + ai0 = 32.0150 lai0 = 8.2816 wai0 = 0.0000 + aib = -19.5396 laib = 4.9347 waib = 0.0000 + bi0 = 37.6044 lbi0 = -1.8713 wbi0 = 0.0000 + bib = -2.5109 lbib = 0.7903 wbib = 0.0000 + vghigh = 0.2342 lvghigh = -0.0007 wvghigh = 0.0000 + vglow = -0.1023 lvglow = 0.0038 wvglow = 0.0000 + tox = 0.0150 temp = 27 vdd = 5.0 vgg = 5.0 vbb = -3.0 + cgdo = 1.0e-10 cgso = 1.0e-10 cgbo = 2.5e-11 + xpart = 0 + rsh = 0 cj = 0.0002 cjsw = 1.0e-10 + js = 5e-5 pb = 0.7 pbsw = 0.8 + mj = 0.5 mjsw = 0.33 wdf = 0 + dell = 0 ***** ***** *************************************************************** .PRINT DC I(V1) I(V2) I(V3) I(V4) I(V5) .DC VGS 0 5 0.2 *.PLOT DC I(V1) I(V2) I(V3) I(V4) I(V5) *.OPTIONS LIMPTS=501 ACCT *VGS 2 0 PWL(0 0 5 5) *.TRAN 0 5 0.01 *.PRINT TRAN I(V1) I(V2) I(V3) I(V4) I(V5) ***** MODEL PARAMETERS TEMP2 ******************** .END tests/d_mos6.inv1.ckt000066400000000000000000000011641316501211100147570ustar00rootroot00000000000000.title mos6 inverter .width out=150 .model nmos nmos level=6 vto=0.7 .model pmos pmos level=6 vto=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 2.1k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 2.1k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .end tests/d_mos6.lin1.ckt000066400000000000000000000014511316501211100147440ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) i(rds) .dc vgs -10 10 1 .end tests/d_mos6.lin1.spice000066400000000000000000000004301316501211100152620ustar00rootroot00000000000000nmos n gate, linear, lambda specified .width out=90 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.lin1r.ckt000066400000000000000000000014521316501211100151270ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) i(rds) .dc vgs -10 10 1 .end tests/d_mos6.lin1r.spice000066400000000000000000000004071316501211100154500ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.lin1z.ckt000066400000000000000000000014461316501211100151420ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) i(rds) .dc vgs -10 10 1 .end tests/d_mos6.lin1z.spice000066400000000000000000000004031316501211100154540ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.lin2.ckt000066400000000000000000000014241316501211100147450ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) i(rds) .dc vgs -10 10 1 .end tests/d_mos6.lin2.spice000066400000000000000000000004031316501211100152630ustar00rootroot00000000000000nmos n gate, linear, lambda specified .width out=90 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.lin2r.ckt000066400000000000000000000014251316501211100151300ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -0.01 Rds 2 3 1. .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) i(rds) .dc vgs -10 10 1 .end tests/d_mos6.lin2r.spice000066400000000000000000000003621316501211100154510ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -0.01 Rds 2 3 1. .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.lin2z.ckt000066400000000000000000000014211316501211100151340ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 1. .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) i(rds) .dc vgs -10 10 1 .end tests/d_mos6.lin2z.spice000066400000000000000000000003561316501211100154640ustar00rootroot00000000000000nmos n gate, linear .width out=90 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 1. .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.n+1.ckt000066400000000000000000000006701316501211100144740ustar00rootroot00000000000000nmos same gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos6.n-1.ckt000066400000000000000000000006711316501211100144770ustar00rootroot00000000000000nmos opp gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos6.n0.ckt000066400000000000000000000006671316501211100144260ustar00rootroot00000000000000nmos al gate Vgs 1 0 1. M1 2 1 0 0 nnn l=9.u w=9.u Vds 2 0 1. .model nnn nmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=0. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=33.35443 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos6.nand1.ckt000066400000000000000000000012711316501211100151020ustar00rootroot00000000000000.title na2 .model nmos nmos level=6 vto=0.7 .model pmos pmos level=6 vto=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op Cgs(Mp1.XI10) Cgd(Mp1.XI10) Cgb(Mp1.XI10) .op .print op Cgs(Mp2.XI10) Cgd(Mp2.XI10) Cgb(Mp2.XI10) .op .print op Cgs(Mn1.XI10) Cgd(Mn1.XI10) Cgb(Mn1.XI10) .op .print op Cgs(Mn2.XI10) Cgd(Mn2.XI10) Cgb(Mn2.XI10) .op .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos6.p+1.ckt000066400000000000000000000006711316501211100144770ustar00rootroot00000000000000pmos same gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=-34.4098 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos6.p-1.ckt000066400000000000000000000006721316501211100145020ustar00rootroot00000000000000pmos opp gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=-1. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=-35.52488 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos6.p0.ckt000066400000000000000000000006701316501211100144220ustar00rootroot00000000000000pmos al gate Vgs 1 0 -1. M1 2 1 0 0 ppp l=9.u w=9.u Vds 2 0 -1. .model ppp pmos ( level=3 lambda=0. rd=0. rs=0. cbd=0. cbs=0. is=10.E-15 + pb=0.8 cgso=0. cgdo=0. cgbo=0. rsh=0. mj=0.5 cjsw=0. mjsw=0.33 js=0. + tox=100.n nsub=4.E+18 nss=0. nfs=0. tpg=0. xj=1.E-15 ld=0. uo=600. + vmax=0. kf=0. af=1. fc=0.5 + delta=0. theta=0. eta=0. kappa=0.2) *+( vto=-34.56952 kp=20.71886u gamma=33.36995 phi=1.005362 cj=0.006441622) .op .end tests/d_mos6.plin.ckt000066400000000000000000000022131316501211100150400ustar00rootroot00000000000000pmos p gate Vgs 1 0 -3.236734 M1 2 1 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 1.234875 .model cmosp pmos ( level=3 vto=-0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.psat1.ckt000066400000000000000000000021621316501211100151310ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=6 vto=-0.844345 kc= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 ld= 265.073n uo= 503.521 fc= 0.5 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos6.psat2.ckt000066400000000000000000000021441316501211100151320ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=6 kc= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=0 ld= 265.073n uo= 503.521 fc= 0.5 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos6.psat3.ckt000066400000000000000000000021441316501211100151330ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=6 kc= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + tpg=1 ld= 265.073n uo= 503.521 fc= 0.5 ) *>.print op v(nodes) iter(0) *>.op trace iter *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) is(m1) ig(m1) ib(m1) ibd(m1) ibs(m1) *>.op *>.print op vgs(m1) vds(m1) vbs(m1) vbd(m1) von(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) gbd(m1) gbs(m1) *>.op *>.print op cbd(m1) cbs(m1) cgs(m1) cgd(m1) cgb(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op qgs(m1) qgd(m1) qgb(m1) qbd(m1) qbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) vth(m1) vgst(m1) .op .end tests/d_mos6.sat1.ckt000066400000000000000000000013221316501211100147460ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat1.spice000066400000000000000000000002661316501211100152760ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .op .end tests/d_mos6.sat1r.ckt000066400000000000000000000013221316501211100151300ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat1r.spice000066400000000000000000000002661316501211100154600ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .op .end tests/d_mos6.sat1s.ckt000066400000000000000000000013221316501211100151310ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat1s.spice000066400000000000000000000002661316501211100154610ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7) .op .end tests/d_mos6.sat1v.ckt000066400000000000000000000013311316501211100151340ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7 vto=.7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat1v.spice000066400000000000000000000002751316501211100154640ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos (level=6 tox=1e-7 vto=.7) .op .end tests/d_mos6.sat2.ckt000066400000000000000000000012751316501211100147560ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat2.spice000066400000000000000000000002411316501211100152700ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos (level=6 tox=1e-7) .op .end tests/d_mos6.sat2r.ckt000066400000000000000000000012751316501211100151400ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat2r.spice000066400000000000000000000002411316501211100154520ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K .model cmosn nmos (level=6 tox=1e-7) .op .end tests/d_mos6.sat3.ckt000066400000000000000000000012721316501211100147540ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 10 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat3.spice000066400000000000000000000003171316501211100152750ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 10 .model cmosn nmos (level=6 tox=1e-7) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .end tests/d_mos6.sat3r.ckt000066400000000000000000000012721316501211100151360ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 10 .model cmosn nmos (level=6 tox=1e-7) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) is(m1) ig(m1) ib(m1) ibs(m1) ibd(m1) .op .print op vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gmb(m1) gm(m1) gds(m1) gbd(m1) gbs(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sat3r.spice000066400000000000000000000002361316501211100154570ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 0 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 10 .model cmosn nmos (level=6 tox=1e-7) .op .end tests/d_mos6.sts.ckt000066400000000000000000000022341316501211100147120ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos6.sts000.ckt000066400000000000000000000013111316501211100151250ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=3 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0. pb= 0.7 cgso= 218.971p + cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 cjsw= 527.2p + mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 nss= 1.E+12 + nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + kf= 0. af= 1. + fc= 0.5 delta= 0.36745 theta= 0. eta= 0. kappa= 0.2 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .options trace .print op v(nodes) iter(0) .op .end tests/d_mos6.zero.ckt000066400000000000000000000024701316501211100150620ustar00rootroot00000000000000nmos n gate, vds = 0 Vgs 5 0 DC 3.236734 AC 1 Rg 5 1 1meg M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 100k Vbs 4 0 0 .model cmosn nmos ( level=6 vto= 0.844345 kc= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 tpg=1 ld= 265.073n uo= 503.521 + fc= 0.5 ) .options temp=27 tnom=27 *>.print op v(2) v(3) gds(m1) vdsat(m1) von(m1) *>.op trace iter *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op cqgs(m1) cqgd(m1) cqgb(m1) cqbd(m1) cqbs(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print ac v(5) vr(1) vi(1) .ac dec 1 1k 1g *>.print op gds(m1) cgs(m1) iter(0) *>.op 0 100 25 *>.ac dec 1 1k 1g .end tests/d_mos7.alpha.ckt000066400000000000000000000014301316501211100151640ustar00rootroot00000000000000nmos bsim3, linear, vbs=-123.. Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=7 alpha0=1e-6) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .width out=80 .list .end tests/d_mos7.inv1.ckt000066400000000000000000000012051316501211100147540ustar00rootroot00000000000000.title mos7 inverter .width out=150 .model nmos nmos level=7 vth0=0.7 .model pmos pmos level=7 vth0=-0.7 Mp1 3 2 1 1 PMOS W=8e-6 L=600e-9 Mn1 3 2 0 0 NMOS W=8e-6 L=600e-9 Mp2 4 2 1 1 PMOS W=8e-6 L=600e-9 Mn2 4 2 0 0 NMOS W=8e-6 L=600e-9 R2 4 0 10k Mp3 5 2 1 1 PMOS W=8e-6 L=600e-9 Mn3 5 2 0 0 NMOS W=8e-6 L=600e-9 C3 5 0 1p Mp4 6 2 1 1 PMOS W=8e-6 L=600e-9 R4 6 0 5.8k Mn5 7 2 0 0 NMOS W=8e-6 L=600e-9 R5 7 1 5.8k vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) .dc vin 0 5 .25 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) .tran 0.1n 5n .status notime .end tests/d_mos7.lin1.ckt000066400000000000000000000014151316501211100147450ustar00rootroot00000000000000nmos bsim3, linear, vbs=-123.. Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 -1.234875 .model cmosn nmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .width out=80 .list .end tests/d_mos7.lin2.ckt000066400000000000000000000013631316501211100147500ustar00rootroot00000000000000nmos bsim3, linear, vbs=0 Vgs 1 0 3.236734 M1 2 1 0 0 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. .model cmosn nmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .print dc v(1) v(2) v(3) i(vds) .dc vgs -10 10 1 .width out=80 .list .end tests/d_mos7.nand1.ckt000066400000000000000000000015041316501211100151020ustar00rootroot00000000000000.title na2 .model nmos nmos level=7 vth0=0.7 .model pmos pmos level=7 vth0=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 1000meg .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op region(Ddb.Mp1.XI10) region(Ddb.Mp2.XI10) region(Ddb.Mn1.XI10) region(Ddb.Mn2.XI10) region(Dsb.Mn1.XI10) .op trace iter .print op V(Ddb.Mp1.XI10) V(Ddb.Mp2.XI10) V(Ddb.Mn1.XI10) V(Ddb.Mn2.XI10) V(Dsb.Mn1.XI10) .op trace iter .print op I(Ddb.Mp1.XI10) I(Ddb.Mp2.XI10) I(Ddb.Mn1.XI10) I(Ddb.Mn2.XI10) I(Dsb.Mn1.XI10) .op trace iter .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos7.nand1.nobypass.ckt000066400000000000000000000015371316501211100167450ustar00rootroot00000000000000.title na2 .option noincmode nobypass .model nmos nmos level=7 vth0=0.7 .model pmos pmos level=7 vth0=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 1000meg .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op region(Ddb.Mp1.XI10) region(Ddb.Mp2.XI10) region(Ddb.Mn1.XI10) region(Ddb.Mn2.XI10) region(Dsb.Mn1.XI10) .op trace iter .print op V(Ddb.Mp1.XI10) V(Ddb.Mp2.XI10) V(Ddb.Mn1.XI10) V(Ddb.Mn2.XI10) V(Dsb.Mn1.XI10) .op trace iter .print op I(Ddb.Mp1.XI10) I(Ddb.Mp2.XI10) I(Ddb.Mn1.XI10) I(Ddb.Mn2.XI10) I(Dsb.Mn1.XI10) .op trace iter .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos7.plin.ckt000066400000000000000000000012651316501211100150470ustar00rootroot00000000000000pmos p gate Vgs 1 0 -3.236734 M1 2 1 0 4 cmosp l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 0.01 Rds 2 3 1. Vbs 4 0 1.234875 .model cmosp pmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos7.psat.ckt000066400000000000000000000012331316501211100150470ustar00rootroot00000000000000pmos p gate M1 2 2 0 4 cmosp l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 -5. Rds 2 3 100.K Vbs 4 0 0. .model cmosp pmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos7.sat1.ckt000066400000000000000000000012461316501211100147540ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 0. .model cmosn nmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos7.sat2.ckt000066400000000000000000000012551316501211100147550ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos7.sat3.ckt000066400000000000000000000012711316501211100147540ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=7 alpha0=.001) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos7.sts.ckt000066400000000000000000000013051316501211100147110ustar00rootroot00000000000000nmos n gate, sub-threshold Vgs 1 0 0.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos7.zero.ckt000066400000000000000000000012661316501211100150650ustar00rootroot00000000000000nmos n gate, vds = 0 Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 0 Rds 2 3 100k Vbs 4 0 0 .model cmosn nmos ( level=7 ) .print op v(nodes) iter(0) .op .print op i(v*) ps(v*) .op .print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) .op .print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) .op .print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) .op .print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) .op .print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) .op .print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) .op .print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) .op .print op vd(m1) vg(m1) vb(m1) vs(m1) .op .end tests/d_mos8.nand1.ckt000066400000000000000000000015041316501211100151030ustar00rootroot00000000000000.title na2 .model nmos nmos level=8 vth0=0.7 .model pmos pmos level=8 vth0=-0.7 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 1000meg .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op region(Ddb.Mp1.XI10) region(Ddb.Mp2.XI10) region(Ddb.Mn1.XI10) region(Ddb.Mn2.XI10) region(Dsb.Mn1.XI10) .op trace iter .print op V(Ddb.Mp1.XI10) V(Ddb.Mp2.XI10) V(Ddb.Mn1.XI10) V(Ddb.Mn2.XI10) V(Dsb.Mn1.XI10) .op trace iter .print op I(Ddb.Mp1.XI10) I(Ddb.Mp2.XI10) I(Ddb.Mn1.XI10) I(Ddb.Mn2.XI10) I(Dsb.Mn1.XI10) .op trace iter .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos8.sat2.ckt000066400000000000000000000015351316501211100147570ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=8 ) *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) *>.op *>.print op idbcpoly(m1) idb(m1) gdbds(m1) gdbgs(m1) gdbbs(m1) *>.op *>.print op isbcpoly(m1) isb(m1) gsbsd(m1) gsbgd(m1) gsbbd(m1) .op .end tests/d_mos8.sat3.ckt000066400000000000000000000015511316501211100147560ustar00rootroot00000000000000nmos n gate, saturated M1 2 2 0 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=8 alpha0=.001) *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) *>.op *>.print op idbcpoly(m1) idb(m1) gdbds(m1) gdbgs(m1) gdbbs(m1) *>.op *>.print op isbcpoly(m1) isb(m1) gsbsd(m1) gsbgd(m1) gsbbd(m1) .op .end tests/d_mos8.sat4.ckt000066400000000000000000000015511316501211100147570ustar00rootroot00000000000000nmos n gate, saturated M1 0 2 2 4 cmosn l= .9u w= .9u nrd= 1. nrs= 1. Vds 3 0 5. Rds 2 3 100.K Vbs 4 0 -1.234875 .model cmosn nmos ( level=8 alpha0=.001) *>.print op v(nodes) iter(0) *>.op *>.print op i(v*) ps(v*) *>.op *>.print op id(m1) vgs(m1) vds(m1) vbs(m1) vth(m1) vdsat(m1) *>.op *>.print op gm(m1) gds(m1) gmb(m1) cbd(m1) cbs(m1) *>.op *>.print op cgsovl(m1) cgdovl(m1) cgbovl(m1) cgate(m1) region(m1) *>.op *>.print op cgs(m1) cgd(m1) cgb(m1) vgst(m1) von(m1) *>.op *>.print op cgst(m1) cgdt(m1) cgbt(m1) is(m1) ig(m1) ib(m1) *>.op *>.print op p(m1) pd(m1) ps(m1) ids(m1) idstray(m1) iderror(m1) *>.op *>.print op vdm(m1) vgm(m1) vbm(m1) vsm(m1) *>.op *>.print op vd(m1) vg(m1) vb(m1) vs(m1) *>.op *>.print op idbcpoly(m1) idb(m1) gdbds(m1) gdbgs(m1) gdbbs(m1) *>.op *>.print op isbcpoly(m1) isb(m1) gsbsd(m1) gsbgd(m1) gsbbd(m1) .op .end tests/d_mos8c2.nand1.ckt000066400000000000000000000015261316501211100153340ustar00rootroot00000000000000.title na2 .model nmos nmos level=8 vth0=0.7 capmod=2 .model pmos pmos level=8 vth0=-0.7 capmod=2 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 1000meg .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op region(Ddb.Mp1.XI10) region(Ddb.Mp2.XI10) region(Ddb.Mn1.XI10) region(Ddb.Mn2.XI10) region(Dsb.Mn1.XI10) .op trace iter .print op V(Ddb.Mp1.XI10) V(Ddb.Mp2.XI10) V(Ddb.Mn1.XI10) V(Ddb.Mn2.XI10) V(Dsb.Mn1.XI10) .op trace iter .print op I(Ddb.Mp1.XI10) I(Ddb.Mp2.XI10) I(Ddb.Mn1.XI10) I(Ddb.Mn2.XI10) I(Dsb.Mn1.XI10) .op trace iter .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_mos8c2.nand1.nobypass.ckt000066400000000000000000000015611316501211100171700ustar00rootroot00000000000000.title na2 .option noincmode nobypass .model nmos nmos level=8 vth0=0.7 capmod=2 .model pmos pmos level=8 vth0=-0.7 capmod=2 .SUBCKT nand2 2 3 1 4 11 Mp1 4 2 1 1 PMOS W=8e-6 L=600e-9 Mp2 4 3 1 1 PMOS W=8e-6 L=600e-9 Mn1 4 2 11 0 NMOS W=8e-6 L=600e-9 Mn2 11 3 0 0 NMOS W=8e-6 L=600e-9 Rleak 11 0 1000meg .ENDS XI10 2 2 1 4 5 nand2 C1 4 0 1p vdd 1 0 5 vin 2 0 PWL (0 0, 1n 0, 3n 5, 10n 5, 12n 0, 20n 0) .print op v(nodes) z(5) iter(0) .op trace iter .print op region(Ddb.Mp1.XI10) region(Ddb.Mp2.XI10) region(Ddb.Mn1.XI10) region(Ddb.Mn2.XI10) region(Dsb.Mn1.XI10) .op trace iter .print op V(Ddb.Mp1.XI10) V(Ddb.Mp2.XI10) V(Ddb.Mn1.XI10) V(Ddb.Mn2.XI10) V(Dsb.Mn1.XI10) .op trace iter .print op I(Ddb.Mp1.XI10) I(Ddb.Mp2.XI10) I(Ddb.Mn1.XI10) I(Ddb.Mn2.XI10) I(Dsb.Mn1.XI10) .op trace iter .print tran v(2) v(4) v(5) iter(0) .tran 0.1n 10n trace all .stat notime .end tests/d_subckt.1.ckt000066400000000000000000000003741316501211100146530ustar00rootroot00000000000000' V1 2 0 1. X1 2 1 3 zzz X2 2 4 5 zzz .subckt zzz 1 2 4 R1 1 2 1. R2 2 0 1. R3 2 3 1. R4 3 0 1. r5 3 4 1 r6 4 0 1 .ends zzz .width out=160 .print op v(nodes) .op .print op + v(r1.x1) v(r?.x1) v(r2.x?) .op .print .list .end tests/d_subckt.2.ckt000066400000000000000000000004561316501211100146550ustar00rootroot00000000000000' V1 1 0 dc 1. ac 9 X1 1 2 3 4 5 6 7 8 9 zzzz .subckt zzzz 9 8 7 6 5 4 3 2 1 R1 1 0 1. R2 1 2 1. R3 2 3 1. R4 3 4 1. R5 4 5 1. R6 5 6 1. R7 6 7 1. R8 7 8 1. R9 8 9 1. R10 9 0 1. .ends .print op v nodes .op .print ac v nodes .ac 1k .end tests/d_subckt.3.ckt000066400000000000000000000006431316501211100146540ustar00rootroot00000000000000' V1 1 0 dc 1. ac 9 X1 1 2 3 4 5 6 7 8 9 wwww .subckt wwww 1 2 3 4 5 6 7 8 9 X3 1 2 3 4 5 6 7 8 9 zzzz .ends wwww *+ends wwww .subckt zzzz 9 8 7 6 5 4 3 2 1 R1 1 0 1. R2 1 2 1. R3 2 3 1. R4 3 4 1. R5 4 5 1. R6 5 6 1. R7 6 7 1. R8 7 8 1. R9 8 9 1. R10 9 0 1. .ends zzzz *+ends zzzz .print op v nodes .op .print ac v nodes .ac 1k .end tests/d_subckt.4.ckt000066400000000000000000000003061316501211100146510ustar00rootroot00000000000000' test delete in subckts .subckt aa (a b c) r1 (a b) 1 r2 (b 0) 1 r3 (b c) 1 x1 (a b) bb .subckt bb (1 2) r1 (1 2) 1k .ends bb .ends aa x1 (1 2 3) aa v1 (1 0) dc 1 .list .print op v(nodes) .op .end tests/d_subckt.5.ckt000066400000000000000000000003211316501211100146470ustar00rootroot00000000000000' test nested subckts .option trace .subckt aa (a b c) .subckt bb (1 2) r1 (1 2) 1k .ends bb r1 (a b) 1 r2 (b 0) 1 r3 (b c) 1 xh (a b) bb .ends aa x1 (1 2 3) aa v1 (1 0) dc 1 .list .print op v(nodes) .op .end tests/d_subckt.6.ckt000066400000000000000000000003011316501211100146460ustar00rootroot00000000000000' .subckt xx (1 2) Rx (1 2) {R} .ends V1 (1 0) dc 10 R1 (1 2) 10k X1 (2 0) xx R=10k R2 (1 3) 10k m=2 X2 (3 0) xx R=5k R3 (1 4) 10k X3 (4 0) xx R=20k m=2 *>.print op v(nodes) .op *>.list .end tests/d_subckt.7.ckt000066400000000000000000000007241316501211100146600ustar00rootroot00000000000000* subckt, param, diode test .model md1 d .model md2 d is=1e-12 .model md3 d is=1e-9 i1 (0 1) 1 d1 (1 0) md1 i2 (0 2) 1 d2 (2 0) md2 i3 (0 3) 1 d3 (3 0) md3 .subckt foo (a k) .param a=1 .model dio d is={isat} d1 (a k) dio area={a} .ends i4 (0 4) 1 x4 (4 0) foo i5 (0 5) 1 x5 (5 0) foo isat=1e-12 i6 (0 6) 1 x6 (6 0) foo isat=1e-9 i7 (0 7) 1 x7 (7 0) foo a=1000 isat=1e-12 i8 (0 8) 1 d8 (8 0) md2 area=1000 i9 (0 9) 1 x9 (9 0) foo a=100 .print op v(nodes) .op .end tests/d_subckt.8.ckt000066400000000000000000000011041316501211100146520ustar00rootroot00000000000000* subckt, param, diode test .model md1 d is=1e-12 .model md2 d is=is .model md3 d is=1e-9 .param is = 1e-12 .param area = 1000 i1 (0 1) 1 d1 (1 0) md1 i2 (0 2) 1 d2 (2 0) md2 i3 (0 3) 1 d3 (3 0) md3 .subckt foo (a k) .param a=1 .param isat=1e-15 .model dio d is={isat} d1 (a k) dio area={a} .ends i4 (0 4) 1 x4 (4 0) foo isat=1e-12 i5 (0 5) 1 x5 (5 0) foo isat=is i6 (0 6) 1 x6 (6 0) foo isat=1e-9 i7 (0 7) 1 x7 (7 0) foo a=area isat=is i8 (0 8) 1 d8 (8 0) md2 area=area i9 (0 9) 1 x9 (9 0) foo a=1 isat=1e-12 .print op v(nodes) .op .param is=1e-9 .op .param area=1 .op .end tests/d_subckt.doc000066400000000000000000000000351316501211100144720ustar00rootroot00000000000000See d_logic* for most tests. tests/d_subckt.error1.ckt000066400000000000000000000000311316501211100157130ustar00rootroot00000000000000 x1 (a b c) foo .op .end tests/d_subckt.error2.ckt000066400000000000000000000000461316501211100157220ustar00rootroot00000000000000 .model foo d x1 (a b c) foo .op .end tests/d_subckt.error3.ckt000066400000000000000000000001231316501211100157170ustar00rootroot00000000000000 .subckt foo (1 2 3 4) e1 (1 2 3 4) 1 .ends v1 (1 0) 1 x1 (1 2) foo .op .list .end tests/d_switch.c0.ckt000066400000000000000000000001751316501211100150220ustar00rootroot00000000000000 v1 2 0 sin freq=1k r1 2 0 1k w3 1 0 v1 foo r3 1 3 1k v3 3 0 dc 1 .model foo csw .probe tran v(nodes) .tran 0 .002 100u .end tests/d_switch.c1.ckt000066400000000000000000000010741316501211100150220ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Vsig sss Vsig 7 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=170 .list .print dc v(nodes) ev(w*) i(?sig) i(?probe) .print tran v(nodes) ev(w*) i(?sig) i(?probe) .print ac v(nodes) ev(w*) i(?sig) i(?probe) .dc Vsig -5 5 1 loop .ac 1k .tran 0 25 1 .ac 1k .list .status notime .end tests/d_switch.c1.inc.ckt000066400000000000000000000011361316501211100155710ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Vsig sss Vsig 7 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=999 .list .print dc v(nodes) ev(w*) i(?sig) i(?probe) .print ac v(nodes) ev(w*) i(?sig) i(?probe) .print tran v(w*) ev(w*) i(?sig) i(?probe) timef(w*) in(w*) control(0) .dc Vsig -5 5 1 loop .ac 1k .tran 0 25 1 trace all .ac 1k .list .status notime .end tests/d_switch.c1.noinc.ckt000066400000000000000000000012041316501211100161220ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Vsig sss Vsig 7 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=999 .option noincmode nobypass nolubypass .list .print dc v(nodes) ev(w*) i(?sig) i(?probe) .print ac v(nodes) ev(w*) i(?sig) i(?probe) .print tran v(w*) ev(w*) i(?sig) i(?probe) timef(w*) in(w*) control(0) .dc Vsig -5 5 1 loop .ac 1k .tran 0 25 1 trace all .ac 1k .list .status notime .end tests/d_switch.c1a.ckt000066400000000000000000000011521316501211100151600ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Vsig sss Vsig 7 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=170 .list .print dc v(2,4,6,7,8) ev(w*) i(?sig) i(?probe) iter(0) .print tran v(2,4,6,7,8) ev(w*) i(?sig) i(?probe) iter(0) .print ac v(2,4,6,7,8) ev(w*) i(?sig) i(?probe) iter(0) .dc Vsig -5 5 1 loop .ac 1k .tran 0 25 1 trace iter .ac 1k .list .status notime .end tests/d_switch.c1r.ckt000066400000000000000000000010671316501211100152060ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Vsig sss Vsig 7 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=170 .list .print dc v(nodes) ev(w*) i(?sig) i(?probe) .print tran v(nodes) ev(w*) i(?sig) i(?probe) .print ac v(nodes) ev(w*) i(?sig) i(?probe) .dc Vsig -5 5 1 loop .ac 1k .tran 0 9 1 .tran .tran .ac 1k .list .end tests/d_switch.c2.ckt000066400000000000000000000010761316501211100150250ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Isig sss Isig 7 0 pwl( 0. 0. 5. -.005 15. .005 25. -.005 ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=170 .list .print dc v(nodes) ev(w*) i(?sig) i(?probe) .print tran v(nodes) ev(w*) i(?sig) i(?probe) .print ac v(nodes) ev(w*) i(?sig) i(?probe) .dc Isig .005 -.005 -.001 loop .ac 1k .tran 0 25 1 .ac 1k .list .end tests/d_switch.c2a.ckt000066400000000000000000000012121316501211100151560ustar00rootroot00000000000000' .option nobypass V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Isig sss Isig 7 0 pwl( 0. 0. 5. -.005 15. .005 25. -.005 ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=170 .list .print dc v(2,4,6,7,8) ev(w*) i(?sig) i(?probe) iter(0) .print tran v(2,4,6,7,8) ev(w*) i(?sig) i(?probe) iter(0) .print ac v(2,4,6,7,8) ev(w*) i(?sig) i(?probe) iter(0) .dc Isig .005 -.005 -.001 loop .ac 1k .tran 0 25 1 trace iter .ac 1k .list .stat notime .end tests/d_switch.c2r.ckt000066400000000000000000000011101316501211100151740ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K W1 2 0 Rprobe sss V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Isig sss Isig 7 0 pwl( 0. 0. 5. -.005 15. .005 25. -.005 ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .width out=170 .list .print dc v(nodes) ev(w*) i(?sig) i(?probe) .print tran v(nodes) ev(w*) i(?sig) i(?probe) .print ac v(nodes) ev(w*) i(?sig) i(?probe) .dc Isig .005 -.005 -.001 loop .ac 1k .tran 0 9 1 .tran .tran .ac 1k .list .end tests/d_switch.c3.ckt000066400000000000000000000007061316501211100150250ustar00rootroot00000000000000' V2 3 0 dc 1. ac 1. R2 3 4 1.K W2 4 0 Vprobe sss V3 5 0 dc 1. ac 1. R3 5 6 1.K W3 6 0 Vsig sss Vsig 7 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) Rprobe 7 8 1k Vprobe 8 0 0 .model sss csw ( it= 0. ih= .002 ron= 1.K roff= 1.E+12 ) .print dc v(3) v(4) v(5) v(6) v(7) v(8) .print tran v(3) v(4) v(5) v(6) v(7) v(8) .print ac v(3) v(4) v(5) v(6) v(7) v(8) .dc Vsig -5 5 1 loop .ac 1k .tran 0 25 1 .ac 1k .end tests/d_switch.error1.ckt000066400000000000000000000000461316501211100157270ustar00rootroot00000000000000 s3 1 0 2 0 foo .model foo d .op .end tests/d_switch.error2.ckt000066400000000000000000000000721316501211100157270ustar00rootroot00000000000000 v1 2 0 sin freq=1k s3 1 0 v1 foo .model foo csw .op .end tests/d_switch.error3.ckt000066400000000000000000000002211316501211100157240ustar00rootroot00000000000000 v1 2 0 sin freq=1k d1 0 2 dd w3 1 0 d1 foo r3 1 3 1k v3 3 0 dc 1 .model foo csw .model dd d .probe tran v(nodes) iter(0) .tran 0 .002 100u .end tests/d_switch.nro.1.ckt000066400000000000000000000014321316501211100154520ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) *>.store tran v(1) .option method=trap .tran 10e-6 200e-6 uic trace all *>.measure t2=cross("v(1)" cross=2 fall last) *>.measure t1=cross("v(1)" cross=2 fall last before=t2) *>.measure t0=cross("v(1)" cross=2 fall last before=t1) *>.measure tmin0=min("v(1)" arg last after=t0 before=t1) *>.measure tmin1=min("v(1)" arg last after=t1 before=t2) *>.measure tmax1=max("v(1)" arg last before=t1 after=t0) *>.param falltime=tmin1-tmax1 *>.param risetime=tmax1-tmin0 *>.param dt=t2-t1 *>.eval falltime *>.eval risetime *>.eval dt *>.status notime .END tests/d_switch.nro.1e.ckt000066400000000000000000000014331316501211100156200ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) *>.store tran v(1) .option method=euler .tran 10e-6 200e-6 uic trace all *>.measure t2=cross("v(1)" cross=2 fall last) *>.measure t1=cross("v(1)" cross=2 fall last before=t2) *>.measure t0=cross("v(1)" cross=2 fall last before=t1) *>.measure tmin0=min("v(1)" arg last after=t0 before=t1) *>.measure tmin1=min("v(1)" arg last after=t1 before=t2) *>.measure tmax1=max("v(1)" arg last before=t1 after=t0) *>.param falltime=tmin1-tmax1 *>.param risetime=tmax1-tmin0 *>.param dt=t2-t1 *>.eval falltime *>.eval risetime *>.eval dt *>.status notime .END tests/d_switch.nro.1g.ckt000066400000000000000000000014321316501211100156210ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) *>.store tran v(1) .option method=gear .tran 10e-6 200e-6 uic trace all *>.measure t2=cross("v(1)" cross=2 fall last) *>.measure t1=cross("v(1)" cross=2 fall last before=t2) *>.measure t0=cross("v(1)" cross=2 fall last before=t1) *>.measure tmin0=min("v(1)" arg last after=t0 before=t1) *>.measure tmin1=min("v(1)" arg last after=t1 before=t2) *>.measure tmax1=max("v(1)" arg last before=t1 after=t0) *>.param falltime=tmin1-tmax1 *>.param risetime=tmax1-tmin0 *>.param dt=t2-t1 *>.eval falltime *>.eval risetime *>.eval dt *>.status notime .END tests/d_switch.nro.1gr.ckt000066400000000000000000000005541316501211100160070ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) *>.store tran v(1) .option numdgt=7 .option method=gear .tran 10e-6 200e-6 uic trace rejected *>.status notime .END tests/d_switch.nro.2.auto.ckt000066400000000000000000000005211316501211100164200ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) .option method=trap noincmode nolubypass nobypass .tran 200e-6 uic *>.status notime .END tests/d_switch.nro.2.ckt000066400000000000000000000005411316501211100154530ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) .option method=trap noincmode nolubypass nobypass .tran 10e-6 200e-6 uic trace all *>.status notime .END tests/d_switch.nro.3.ckt000066400000000000000000000005071316501211100154560ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) .option method=trap itl6=0 .tran 10e-6 200e-6 trace all *>.status notime .END tests/d_switch.nro.3h.ckt000066400000000000000000000005261316501211100156270ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) i(I1) i(C1) .option method=trap itl6=1000 .tran 10e-6 200e-6 trace all *>.status notime .END tests/d_switch.nro.4.ckt000066400000000000000000000005101316501211100154510ustar00rootroot00000000000000* switch as negative resistance oscillator * Spice netlister for gnetlist SW1 1 0 1 0 SWITCH1 C1 1 0 1n I1 0 1 100u .MODEL SWITCH1 SW VT=2.5 VH=2.475 RON=1 ROFF=10MEG .print tran V(1) *>.print tran + r(SW1) iter(0) input(sw1) timef(sw1) control(0) .option method=trap itl6=0 .tran 10e-6 200e-6 trace iter *>.status notime .END tests/d_switch.v.ckt000066400000000000000000000004771316501211100147720ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K S1 2 0 3 0 sss V2 3 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) .model sss sw ( vt= 0. vh= 2. ron= 1.K roff= 1.E+12 ) .print dc v(nodes) ev(s1) .print tran v(nodes) ev(s1) .print ac v(nodes) ev(s1) .dc v2 -5 5 1 loop .ac 1k .tran 0 25 1 .ac 1k .list .end tests/d_switch.vr.ckt000066400000000000000000000005111316501211100151410ustar00rootroot00000000000000' V1 1 0 dc 1. ac 1. R1 1 2 1.K S1 2 0 3 0 sss V2 3 0 pwl( 0. 0. 5. 5. 15. -5. 25. 5. ) .model sss sw ( vt= 0. vh= 2. ron= 1.K roff= 1.E+12 ) .print dc v(nodes) ev(s1) .print tran v(nodes) ev(s1) .print ac v(nodes) ev(s1) .dc v2 -5 5 1 loop .ac 1k .tran 0 9 1 .tran .tran .ac 1k .list .end tests/d_tcap.1.ckt000066400000000000000000000004061316501211100143030ustar00rootroot00000000000000' V1 1 0 SIN offset= 0. amplitude= 1. frequency= 1. delay= 0. + damping= 0. C1 1 0 1. F1 2 0 C1 1. R1 2 0 1. R2 3 0 1. .tcap C2 3 0 1 0 1. .print tran v nodes .tran 0 1 .1 .option trtol=1 reltol=.00001 .tran 0 1 .1 .status notime .end tests/d_tcap.2.ckt000066400000000000000000000005261316501211100143070ustar00rootroot00000000000000' V1 1 0 SIN offset= 0. amplitude= 1. frequency= 1. delay= 0. + damping= 0. C1 1 0 1. F1 2 0 C1 1. R1 2 0 1. R2 3 0 1. .tcap C2 3 0 1 0 1. .option out=170 .print tran v(nodes) q(c*) dq(c*) dqdt(c*) i(c*) timef(c*) .tran 0 1 .1 trace all .option trtol=1 reltol=.00001 .tran 0 1 .1 trace rejected .status notime .end tests/d_tcap.3.ckt000066400000000000000000000004321316501211100143040ustar00rootroot00000000000000' V1 1 0 SIN offset= 0. amplitude= 1. frequency= 1. delay= 0. + damping= 0. C1 1 0 1. F1 2 0 C1 1. R1 2 0 1. R2 3 0 1. .tcap C2 3 0 1 0 1. .print tran v nodes .tran 0 1 .1 trace all .option trtol=1 reltol=.00001 .tran 0 1 .1 trace all .status notime .end tests/d_tcap.4.ckt000066400000000000000000000004441316501211100143100ustar00rootroot00000000000000' V1 1 0 SIN offset= 0. amplitude= 1. frequency= 1. delay= 0. + damping= 0. C1 1 0 1. F1 2 0 C1 1. R1 2 0 1. R2 3 0 1. .tcap C2 3 0 1 0 1. .print tran v nodes .tran 0 1 .1 trace rejected .option trtol=1 reltol=.00001 .tran 0 1 .1 trace rejected .status notime .end tests/d_tcap.5.ckt000066400000000000000000000004001316501211100143010ustar00rootroot00000000000000' V1 1 0 SIN offset= 0. amplitude= 1. frequency= 1. delay= 0. + damping= 0. C1 1 0 1. F1 2 0 C1 1. R1 2 0 1. R2 3 0 1. .tcap C2 3 0 1 0 1. .print tran v nodes .tran 0 1 .option trtol=1 reltol=.00001 .tran 0 1 .status notime .end tests/d_trln.ac.ckt000066400000000000000000000011321316501211100145530ustar00rootroot00000000000000#Transmission lines .width out=160 V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print ac v nodes # nominal-z drive .ac 0 40meg 2meg # very lo-z drive .modify R?s=.1 .ac # slightly lo-z drive .modify R?s=25 .ac # hi-z drive .modify R?s=100 .ac .stat notime .end tests/d_trln.tr.100.im.ckt000066400000000000000000000013061316501211100155230ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print tran v nodes # nominal-z drive .tran 0 100n 5n trace all # very lo-z drive .modify R?s=.1 .tr 0 300n 5n trace all # slightly lo-z drive .modify R?s=25 .tr 0 300n 5n trace all # hi-z drive .modify R?s=100 .tr 0 100n 5n trace all .tr 600n 5n trace all .stat notime .end tests/d_trln.tr.100.nim.ckt000066400000000000000000000013251316501211100157020ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n .opt noincmode V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print tran v nodes # nominal-z drive .tran 0 100n 5n trace all # very lo-z drive .modify R?s=.1 .tr 0 300n 5n trace all # slightly lo-z drive .modify R?s=25 .tr 0 300n 5n trace all # hi-z drive .modify R?s=100 .tr 0 100n 5n trace all .tr 600n 5n trace all .stat notime .end tests/d_trln.tr.300.im.ckt000066400000000000000000000013061316501211100155250ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print tran v nodes # nominal-z drive .tran 0 100n 5n trace all # very lo-z drive .modify R?s=.1 .tr 0 300n 5n trace all # slightly lo-z drive .modify R?s=25 .tr 0 300n 5n trace all # hi-z drive .modify R?s=100 .tr 0 300n 5n trace all .tr 600n 5n trace all .stat notime .end tests/d_trln.tr.300.nim.ckt000066400000000000000000000013251316501211100157040ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n .opt noincmode V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print tran v nodes # nominal-z drive .tran 0 100n 5n trace all # very lo-z drive .modify R?s=.1 .tr 0 300n 5n trace all # slightly lo-z drive .modify R?s=25 .tr 0 300n 5n trace all # hi-z drive .modify R?s=100 .tr 0 300n 5n trace all .tr 600n 5n trace all .stat notime .end tests/d_trln.tr.im.ckt000066400000000000000000000012601316501211100152230ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print tran v nodes # nominal-z drive .tran 0 100n 5n trace all # very lo-z drive .modify R?s=.1 .tr 0 300n 5n trace all # slightly lo-z drive .modify R?s=25 .tr 0 300n 5n trace all # hi-z drive .modify R?s=100 .tr 0 600n 5n trace all .stat notime .end tests/d_trln.tr.m.ckt000066400000000000000000000007371316501211100150620ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # really 2 in parallel R2s 1 21 50 T2a 21 0 22 0 z=100 f=10meg nl=.25 T2b 21 0 22 0 z=100 f=10meg nl=.25 R2l 22 0 50 # n=2 R3s 1 31 50 T3 31 0 32 0 z=100 f=10meg nl=.25 m=2 R3l 32 0 50 # not R4s 1 41 50 T4 41 0 42 0 z=100 f=10meg nl=.25 R4l 42 0 50 .list .print tran v(nodes) # nominal-z drive .tran 0 100n 5n trace all .stat notime .end tests/d_trln.tr.nim.ckt000066400000000000000000000012771316501211100154110ustar00rootroot00000000000000#Transmission lines .width out=160 .gen delay=25n .opt noincmode V1 1 0 gen(1) # matched R1s 1 11 50 T1 11 0 12 0 z=50 f=10meg nl=.25 R1l 12 0 50 # open stub R2s 1 21 50 T2 21 0 22 0 z=50 f=10meg nl=.25 R2l 22 0 1e99 # shorted stub R3s 1 31 50 T3 31 0 32 0 z=50 f=10meg nl=.25 R3l 32 0 .001 # lo-z load R4s 1 41 50 T4 41 0 42 0 z=50 f=10meg nl=.25 R4l 42 0 25 # hi-z load R5s 1 51 50 T5 51 0 52 0 z=50 f=10meg nl=.25 R5l 52 0 100 .list .print tran v nodes # nominal-z drive .tran 0 100n 5n trace all # very lo-z drive .modify R?s=.1 .tr 0 300n 5n trace all # slightly lo-z drive .modify R?s=25 .tr 0 300n 5n trace all # hi-z drive .modify R?s=100 .tr 0 600n 5n trace all .stat notime .end tests/d_vccap.1.ckt000066400000000000000000000003341316501211100144500ustar00rootroot00000000000000' V1 1 0 GENERATOR R1 1 2 1.Meg C1 2 0 1.u Vc2 3 0 1. R2 1 4 1.Meg .vccap C2 4 0 3 0 1.u Vc3 5 0 2. R3 1 6 .5Meg .vccap C3 6 0 5 0 1.u .print tran v(nodes) .tran 0 1 .1 .status notime .end tests/d_vccap.2.ckt000066400000000000000000000004231316501211100144500ustar00rootroot00000000000000' V1 1 0 GENERATOR R1 1 2 1.Meg C1 2 0 1.u Vc2 3 0 1. R2 1 4 1.Meg .vccap C2 4 0 3 0 1.u Vc3 5 0 2. R3 1 6 .5Meg .vccap C3 6 0 5 0 1.u .option out=170 .print tran v(nodes) q(c*) dq(c*) dqdt(c*) i(c*) timef(c*) .tran 0 1 .1 .status notime .end tests/d_vcg.1.ckt000066400000000000000000000005221316501211100141320ustar00rootroot00000000000000' V1 1 0 dc 1 ac 1 R1 1 2 10k Yl1 2 0 100u Vc2 3 0 1. R2 1 4 10k .vcg Rv2 4 0 3 0 100u Vc3 5 0 2. R3 1 6 5k .vcg Rv3 6 0 5 0 100u .print op v(2,3,4,5,6) iter(0) .op trace iter .delete Vc3 Vc3 5 0 sin freq=1k ampl=1 offset=1 .modify R3=10k .print tran v(2,3,4,5,6) iter(0) .tran 0 .001 .0001 trace iter .end tests/d_vcg.2.ckt000066400000000000000000000004271316501211100141370ustar00rootroot00000000000000' .vsource Vcc 1 0 dc 10 ac 0 .vsource Vin 2 0 sin freq=1k ampl=.1 offset=1 ac .2 .vcg Mamp 1 0 2 0 .001 .print op v(v*) i(V*) iter(0) .op .print tran v(v*) i(V*) iter(0) .tran 0 .001 .00005 .print ac v(v*) i(V*) .ac 1k .print ac vp(v*) ip(V*) .ac 1k .end tests/d_vcg.3.ckt000066400000000000000000000004701316501211100141360ustar00rootroot00000000000000' .vsource Vcc 1 0 dc 10 ac 0 .vsource Vin 2 0 sin freq=1k ampl=.1 offset=1 ac .2 .vcg Mamp 1 0 2 0 .001 .print op v(v*) i(V*) i(Mamp) iter(0) .op .print tran v(v*) i(V*) i(Mamp) iter(0) .tran 0 .001 .00005 .print ac v(v*) i(V*) i(Mamp) .ac 1k .print ac vp(v*) ip(V*) ip(Mamp) .ac 1k .end tests/d_vcg.4.ckt000066400000000000000000000005751316501211100141450ustar00rootroot00000000000000' V1 1 0 dc 1 ac 1 R1 1 2 10k Yl1 2 0 100u Vc2 3 0 1. R2 1 4 10k .vcg Rv2 4 0 3 0 100u Vc3 5 0 2. R3 1 6 5k .vcg Rv3 6 0 5 0 100u .print op v(2,3,4,5,6) iter(0) .op .print ac v(nodes) .ac 1k .print ac vp(nodes) .ac 1k .delete Vc3 Vc3 5 0 dc sin freq=1k ampl=1 offset=1 ac 0 .modify R3=10k .print tran v(2,3,4,5,6) iter(0) .tran 0 .001 .0001 .end tests/d_vcg.5.ckt000066400000000000000000000005061316501211100141400ustar00rootroot00000000000000' .vsource Vcc 1 0 dc 10 ac 0 .vsource Vin 2 0 sin freq=1k ampl=.1 offset=1 ac .2 .vcg Mamp 1 0 2 0 complex(.001 .001) .print op v(v*) i(V*) i(Mamp) iter(0) .op .print tran v(v*) i(V*) i(Mamp) iter(0) .tran 0 .001 .00005 .print ac v(v*) i(V*) i(Mamp) .ac 1k .print ac vp(v*) ip(V*) ip(Mamp) .ac 1k .end tests/d_vcr.1.ckt000066400000000000000000000005201316501211100141430ustar00rootroot00000000000000' V1 1 0 dc 1 ac 1 R1 1 2 10k Rl1 2 0 10k Vc2 3 0 1. R2 1 4 10k .vcr Rv2 4 0 3 0 10k Vc3 5 0 2. R3 1 6 20k .vcr Rv3 6 0 5 0 10k .print op v(2,3,4,5,6) iter(0) .op trace iter .delete Vc3 Vc3 5 0 sin freq=1k ampl=1 offset=1 .modify R3=10k .print tran v(2,3,4,5,6) iter(0) .tran 0 .001 .0001 trace iter .end tests/d_vcr.2.ckt000066400000000000000000000005161316501211100141510ustar00rootroot00000000000000' V1 1 0 dc 1 ac 1 R1 1 2 10k Rl1 2 0 10k Vc2 3 0 1. R2 1 4 10k Gv2 4 0 vcr 3 0 10k Vc3 5 0 2. R3 1 6 20k Gv3 6 0 5 0 vcr 10k .print op v(2,3,4,5,6) iter(0) .op trace iter .delete Vc3 Vc3 5 0 sin freq=1k ampl=1 offset=1 .modify R3=10k .print tran v(2,3,4,5,6) iter(0) .tran 0 .001 .0001 trace iter .end tests/d_vcr.3.ckt000066400000000000000000000004551316501211100141540ustar00rootroot00000000000000' .vsource Vcc 1 0 dc 20 ac 0 .isource Iload 1 2 dc .001 ac 0 .vsource Vin 3 0 sin freq=1k ampl=.1 offset=1 ac .2 .vcr Mamp 2 0 3 0 10k .print op v(nodes) iter(0) .op .print tran v(nodes) iter(0) .tran 0 .001 .00005 .print ac v(nodes) .ac 1k .print ac vp(nodes) .ac 1k .end tests/d_vcr.4.ckt000066400000000000000000000005711316501211100141540ustar00rootroot00000000000000' V1 1 0 dc 1 ac 1 R1 1 2 10k Rl1 2 0 10k Vc2 3 0 1. R2 1 4 10k .vcr Rv2 4 0 3 0 10k Vc3 5 0 2. R3 1 6 20k .vcr Rv3 6 0 5 0 10k .print op v(2,3,4,5,6) iter(0) .op .print ac v(nodes) .ac 1k .print ac vp(nodes) .ac 1k .delete Vc3 Vc3 5 0 sin freq=1k ampl=1 offset=1 ac 0 .modify R3=10k .print tran v(2,3,4,5,6) iter(0) .tran 0 .001 .0001 .end tests/d_vcr.5.ckt000066400000000000000000000004761316501211100141610ustar00rootroot00000000000000' .vsource Vcc 1 0 dc 20 ac 0 .isource Iload 1 2 dc .001 ac 0 .vsource Vin 3 0 sin freq=1k ampl=.1 offset=1 ac .2 .vcr Mamp 2 0 3 0 complex (7071, 7071) .print op v(nodes) iter(0) .op .print tran v(nodes) iter(0) .tran 0 .001 .00005 .print ac v(nodes) .ac 1k .print ac vp(nodes) .ac 1k .end tests/d_vcvs.1.ckt000066400000000000000000000006341316501211100143400ustar00rootroot00000000000000# voltage source test v1 1 0 1 ac 1 r1 1 2 1k r2 2 0 1k e1 3 0 2 0 4. r3 3 0 1k g1 4 0 2 0 4. r3 4 0 1k .list .print op v(1) v(2) v(3) v(4) .op .print op vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) .op .print op vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) .op .print ac v(1) v(2) v(3) v(4) .ac 1k .print ac vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) .ac 1k .print ac vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) .ac 1k .end tests/d_vcvs.2.ckt000066400000000000000000000006341316501211100143410ustar00rootroot00000000000000# voltage source test v1 0 1 1 ac 1 r1 1 2 1k r2 0 2 1k e1 0 3 0 2 4. r3 0 3 1k g1 0 4 0 2 4. r3 0 4 1k .list .print op v(1) v(2) v(3) v(4) .op .print op vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) .op .print op vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) .op .print ac v(1) v(2) v(3) v(4) .ac 1k .print ac vo(e1) vin(e1) i(e1) p(e1) pd(e1) ps(e1) .ac 1k .print ac vo(v1) vin(v1) i(v1) p(v1) pd(v1) ps(v1) .ac 1k .end tests/d_vs.1.gc000066400000000000000000000002101316501211100136050ustar00rootroot00000000000000' spectre v1 (1 0) vsource dc=2 v2 (0 2) vsource dc=5 v3 (3 4) vsource dc=3 v4 (4 0) vsource dc=9 - list - print op v(nodes) - op - end tests/dc_temp.gc000066400000000000000000000010301316501211100141270ustar00rootroot00000000000000spice .options temp=1 rtemp1 2 0 t1 (w=1 l=1) .model t1 r tnom=0 rsh=1 tc2=0 tc1=1 * skipping L= .model t2 r tnom=0 tc1=10 rtemp2 2 0 t1 (l=2 w=1) rtemp3 2 0 t2 (.5) .list .print dc r(rtemp*) temp(0) .store dc r(rtemp*) temp(0) .list .dc temp=2 .dc .dc temp=3 .measure rt1 at(probe="r(rtemp1)") .measure rt2 at(probe="r(rtemp2)") .measure rt3 at(probe="r(rtemp3)") .dc .dc dtemp=10 .options temperature=20 .dc dtemp=0 .measure rt1 at(probe="r(rtemp1)") .measure rt2 at(probe="r(rtemp2)") .measure rt3 at(probe="r(rtemp3)") .end tests/dcsweep.ckt000066400000000000000000000002351316501211100143440ustar00rootroot00000000000000' dc sweep test v1 1 0 1 v2 2 0 dc 1 v3 3 0 ac 1 r1 1 0 100k r2 2 0 100k r3 3 0 100k .print dc v(1) v(2) v(3) .dc v1 -2 2 1 .dc v2 -2 2 1 .dc v3 -2 2 1 .end tests/e_ccsrc.1.ckt000066400000000000000000000004621316501211100144540ustar00rootroot00000000000000# HSPICE style PWL v1 1 0 dc 1 ac 1 r1 1 2 1.3 r2 2 0 .7 h1 3 0 ccvs PWL R2 0,0 1,1 4,2 9,3 16,4 25,5 r3 3 0 10k f1 4 0 cccs PWL R2 0,0 1,1 4,2 9,3 16,4 25,5 r4 4 0 10k .opt out=170 .list .print op v(nodes) i(r2) .op .print dc v(nodes) i(r2) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .list .end tests/e_ccsrc.2.ckt000066400000000000000000000004621316501211100144550ustar00rootroot00000000000000# HSPICE style PWL v1 1 0 dc 1 ac 1 r1 1 2 1.3 r2 2 0 .7 h1 3 0 R2 ccvs PWL 0,0 1,1 4,2 9,3 16,4 25,5 r3 3 0 10k f1 4 0 R2 cccs PWL 0,0 1,1 4,2 9,3 16,4 25,5 r4 4 0 10k .opt out=170 .list .print op i(r2) v(nodes) .op .print dc i(r2) v(nodes) .dc v1 -10 10 1 .dc v1 1 100 decade 5 .dc v1 32 68 9 .list .end tests/e_node_probes.ckt000066400000000000000000000003421316501211100155140ustar00rootroot00000000000000'matrix probe test v1 (1 0) 1 r1 (1 2) 1 r2 (2 0) 1 .print op v(nodes) .op .print op mdy(nodes) .op .print op mdz(nodes) .op .print op zero(nodes) .op .print op ndz(nodes) .op .print op pdz(nodes) .op .print op nan(nodes) .op tests/e_storag.1.ckt000066400000000000000000000002021316501211100146460ustar00rootroot00000000000000' truncation error test test v1 1 0 sin freq=1 ampl=1 c1 1 0 1 .print tran v(1) i(c1) .tran 0 1 .05 trace all .status notime .end tests/eq3-1153.ckt000066400000000000000000000042301316501211100137700ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 dc 1 ac 1 x1 1 2 eq32 .subckt eq32 1 3 x1 1 2 eq16 x2 2 3 eq16 .ends eq32 .subckt eq16 1 5 x1 1 2 eq4 x2 2 3 eq4 x3 3 4 eq4 x4 4 5 eq4 .ends eq16 .subckt eq4 1 5 x1 1 2 eq x2 2 3 eq x3 3 4 eq x4 4 5 eq .ends eq4 .subckt eq 31 37 R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 0 32 33 10.K E3 37 0 35 36 10.K .ends eq .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .end tests/eq3-1153.fg.ckt000066400000000000000000000042661316501211100143740ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 dc 1 ac 1 x1 1 2 0 eq32 .subckt eq32 1 3 g x1 1 2 g eq16 x2 2 3 g eq16 .ends eq32 .subckt eq16 1 5 g x1 1 2 g eq4 x2 2 3 g eq4 x3 3 4 g eq4 x4 4 5 g eq4 .ends eq16 .subckt eq4 1 5 g x1 1 2 g eq x2 2 3 g eq x3 3 4 g eq x4 4 5 g eq .ends eq4 .subckt eq 31 37 g R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 g 475.K R2 6 g 536.K R3 9 g 549.K R4 12 g 499.K R5 15 g 464.K R6 18 g 475.K R7 21 g 523.K R8 24 g 475.K R9 27 g 412.K R10 30 g 422.K G5a 2 g 3 g -.000416666 R11 2 g 2.4K G5b 5 g 6 g -.000416666 R12 5 g 2.4K G6a 8 g 9 g -.000454545 R13 8 g 2.2K G6b 11 g 12 g -.000454545 R14 11 g 2.2K G7a 14 g 15 g -.000454545 R15 14 g 2.2K G7b 17 g 18 g -.000454545 R16 17 g 2.2K G8a 20 g 21 g -.000454545 R17 20 g 2.2K G8b 23 g 24 g -.000454545 R18 23 g 2.2K G9a 26 g 27 g -.000416666 R19 26 g 2.4K G9b 29 g 30 g -.000416666 R20 29 g 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 g 32 33 10.K E3 37 g 35 36 10.K .ends eq .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .end tests/eq3-1153.fg2.ckt000066400000000000000000000043011316501211100144440ustar00rootroot00000000000000A 1153 node circuit Vgnd g 0 0 Vin 1 g dc 1 ac 1 x1 1 2 g eq32 .subckt eq32 1 3 g x1 1 2 g eq16 x2 2 3 g eq16 .ends eq32 .subckt eq16 1 5 g x1 1 2 g eq4 x2 2 3 g eq4 x3 3 4 g eq4 x4 4 5 g eq4 .ends eq16 .subckt eq4 1 5 g x1 1 2 g eq x2 2 3 g eq x3 3 4 g eq x4 4 5 g eq .ends eq4 .subckt eq 31 37 g R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 g 475.K R2 6 g 536.K R3 9 g 549.K R4 12 g 499.K R5 15 g 464.K R6 18 g 475.K R7 21 g 523.K R8 24 g 475.K R9 27 g 412.K R10 30 g 422.K G5a 2 g 3 g -.000416666 R11 2 g 2.4K G5b 5 g 6 g -.000416666 R12 5 g 2.4K G6a 8 g 9 g -.000454545 R13 8 g 2.2K G6b 11 g 12 g -.000454545 R14 11 g 2.2K G7a 14 g 15 g -.000454545 R15 14 g 2.2K G7b 17 g 18 g -.000454545 R16 17 g 2.2K G8a 20 g 21 g -.000454545 R17 20 g 2.2K G8b 23 g 24 g -.000454545 R18 23 g 2.2K G9a 26 g 27 g -.000416666 R19 26 g 2.4K G9b 29 g 30 g -.000416666 R20 29 g 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 g 32 33 10.K E3 37 g 35 36 10.K .ends eq .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .end tests/eq3-1153.forward.ckt000066400000000000000000000042561316501211100154430ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 dc 1 ac 1 x1 1 2 eq32 .subckt eq32 1 3 x1 1 2 eq16 x2 2 3 eq16 .ends eq32 .subckt eq16 1 5 x1 1 2 eq4 x2 2 3 eq4 x3 3 4 eq4 x4 4 5 eq4 .ends eq16 .subckt eq4 1 5 x1 1 2 eq x2 2 3 eq x3 3 4 eq x4 4 5 eq .ends eq4 .subckt eq 31 37 R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 0 32 33 10.K E3 37 0 35 36 10.K .ends eq .option order=forward .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .end tests/eq3-1153.reverse.ckt000066400000000000000000000042561316501211100154520ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 dc 1 ac 1 x1 1 2 eq32 .subckt eq32 1 3 x1 1 2 eq16 x2 2 3 eq16 .ends eq32 .subckt eq16 1 5 x1 1 2 eq4 x2 2 3 eq4 x3 3 4 eq4 x4 4 5 eq4 .ends eq16 .subckt eq4 1 5 x1 1 2 eq x2 2 3 eq x3 3 4 eq x4 4 5 eq .ends eq4 .subckt eq 31 37 R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 0 32 33 10.K E3 37 0 35 36 10.K .ends eq .option order=reverse .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .end tests/eq3-1153.tr-b.ckt000066400000000000000000000043121316501211100146340ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 sin (0 1 1k) dc 1 ac 1 x1 1 2 eq32 .subckt eq32 1 3 x1 1 2 eq16 x2 2 3 eq16 .ends eq32 .subckt eq16 1 5 x1 1 2 eq4 x2 2 3 eq4 x3 3 4 eq4 x4 4 5 eq4 .ends eq16 .subckt eq4 1 5 x1 1 2 eq x2 2 3 eq x3 3 4 eq x4 4 5 eq .ends eq4 .subckt eq 31 37 R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 0 32 33 10.K E3 37 0 35 36 10.K .ends eq .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .print tran v(2) .tran .00005 .001 0 .end tests/eq3-1153.tr-nb.ckt000066400000000000000000000043371316501211100150210ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 dc 1 ac 1 tran sin freq=1k x1 1 2 eq32 .subckt eq32 1 3 x1 1 2 eq16 x2 2 3 eq16 .ends eq32 .subckt eq16 1 5 x1 1 2 eq4 x2 2 3 eq4 x3 3 4 eq4 x4 4 5 eq4 .ends eq16 .subckt eq4 1 5 x1 1 2 eq x2 2 3 eq x3 3 4 eq x4 4 5 eq .ends eq4 .subckt eq 31 37 R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 0 32 33 10.K E3 37 0 35 36 10.K .ends eq .option nobypass .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .print tran v(2) .tran 0 .001 .00005 .end tests/eq3-1153.tr-ni.ckt000066400000000000000000000043511316501211100150240ustar00rootroot00000000000000A 1153 node circuit Vin 1 0 dc 1 ac 1 tran sin freq=1k x1 1 2 eq32 .subckt eq32 1 3 x1 1 2 eq16 x2 2 3 eq16 .ends eq32 .subckt eq16 1 5 x1 1 2 eq4 x2 2 3 eq4 x3 3 4 eq4 x4 4 5 eq4 .ends eq16 .subckt eq4 1 5 x1 1 2 eq x2 2 3 eq x3 3 4 eq x4 4 5 eq .ends eq4 .subckt eq 31 37 R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p E2 34 0 32 33 10.K E3 37 0 35 36 10.K .ends eq .option nobypass noincmode .print op iter(0) v(1) v(2) .print dc v(2) .print ac vm(2) vdb(2) vp(2) .dc Vin 1 10 1 .ac oct 1 31.25 16000 .print tran v(2) .tran 0 .001 .00005 .end tests/eqb1.ckt000066400000000000000000000036141316501211100135460ustar00rootroot00000000000000Graphic equalizer -- boost 1k R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 100.K R106b 33 16 1 R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p Vin 31 0 dc 1 ac 1 E2 34 0 32 33 10.K E3 37 0 35 36 10.K .print ac vdb(37) vdb(31) vdb(34) .ac oct 2 31.25 32k .end tests/eqboost.ckt000066400000000000000000000036151316501211100143730ustar00rootroot00000000000000Graphic equalizer -- boost 1k R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 100.K R106b 33 16 1 R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p Vin 31 0 dc 1 ac 1 E2 34 0 32 33 10.K E3 37 0 35 36 10.K .print ac vdb(37) vdb(31) vdb(34) .ac oct 10 31.25 32k .end tests/eqflat.ckt000066400000000000000000000036501316501211100141720ustar00rootroot00000000000000Graphic equalizer -- all bands flat, modify test R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p Vin 31 0 dc 1 ac 1 E2 34 0 32 33 10.K E3 37 0 35 36 10.K .print ac vdb(37) vdb(31) vdb(34) .ac oct 10 31.25 32k .list .end tests/eqmodify.ckt000066400000000000000000000037111316501211100145310ustar00rootroot00000000000000Graphic equalizer -- all bands flat, modify test R101a 35 1 50.K R101b 36 1 50.K R102a 32 4 50.K R102b 33 4 50.K R103a 35 7 50.K R103b 36 7 50.K R104a 32 10 50.K R104b 33 10 50.K R105a 35 13 50.K R105b 36 13 50.K R106a 32 16 50.K R106b 33 16 50.K R107a 35 19 50.K R107b 36 19 50.K R108a 32 22 50.K R108b 33 22 50.K R109a 35 25 50.K R109b 36 25 50.K R110a 32 28 50.K R110b 33 28 50.K C1 1 2 1.5u C2 4 5 748.n C3 7 8 408.n C4 10 11 206.n C5 13 14 100.n C6 16 17 50.9n C7 19 20 25.3n C8 22 23 12.7n C9 25 26 5.9n C10 28 29 2.95n C11 2 3 15.n C12 5 6 6.8n C13 8 9 3.3n C14 11 12 1.8n C15 14 15 1.n C16 17 18 470.p C17 20 21 220.p C18 23 24 120.p C19 26 27 68.p C20 29 30 33.p R1 3 0 475.K R2 6 0 536.K R3 9 0 549.K R4 12 0 499.K R5 15 0 464.K R6 18 0 475.K R7 21 0 523.K R8 24 0 475.K R9 27 0 412.K R10 30 0 422.K G5a 2 0 3 0 -.000416666 R11 2 0 2.4K G5b 5 0 6 0 -.000416666 R12 5 0 2.4K G6a 8 0 9 0 -.000454545 R13 8 0 2.2K G6b 11 0 12 0 -.000454545 R14 11 0 2.2K G7a 14 0 15 0 -.000454545 R15 14 0 2.2K G7b 17 0 18 0 -.000454545 R16 17 0 2.2K G8a 20 0 21 0 -.000454545 R17 20 0 2.2K G8b 23 0 24 0 -.000454545 R18 23 0 2.2K G9a 26 0 27 0 -.000416666 R19 26 0 2.4K G9b 29 0 30 0 -.000416666 R20 29 0 2.4K R29 31 32 9.1K R30 33 34 9.1K R31 34 35 9.1K R32 36 37 9.1K C25 31 32 150.p C26 33 34 150.p C27 34 35 150.p C28 36 37 150.p Vin 31 0 dc 1 ac 1 E2 34 0 32 33 10.K E3 37 0 35 36 10.K .print ac vdb(37) vdb(31) vdb(34) .ac oct 10 31.25 32k .modify R106a=100k .modify R106b=1 .ac .end tests/l.ckt000066400000000000000000000005141316501211100131450ustar00rootroot00000000000000'inductance check, no tolerance V1 1 0 generator(1) L3 1 2 1. R4 2 0 1. R5 1 3 .97 C6 3 0 1. .options short=1p .width out=170 .list .print tran iter(0) v(nodes) z(c6) zraw(c6) z(3) .fanout .fanout 2 .tran 0 1 .1 .print ac v(2) v(3) vp(2) vp(3) z(c6) zraw(c6) z(3) .ac .001 10 decade 2 .list .status notime .end tests/l2.ckt000066400000000000000000000005151316501211100132300ustar00rootroot00000000000000'inductance check, no tolerance V1 1 0 generator(1) L3 1 2 1. R4 2 0 1. R5 1 3 .97 C6 3 0 1. .options short=1p .width out=170 .list .print tran iter(0) v(nodes) z(c6) zraw(c6) z(3) .fanout .fanout 2 .tran 0 1 .1 .print ac v(2) v(3) vp(2) vp(3) z(c6) zraw(c6) z(3) .ac .001 10 decade 2 .list .status notime .end tests/lang_spectre.1.gc000066400000000000000000000016141316501211100153310ustar00rootroot00000000000000 simulator lang=spectre model zz npn bf=150 subckt dumb_resistor (a b) //parameters r=10k R1 (a b) resistor r=r ends subckt foo (vcc in out) - parameters z=10k parameters r Rc (c vcc) resistor r=z q1 (c b e) zz off=1 Re (e 0) dumb_resistor r=abs(-z)/10 Rb1 (b vcc) resistor r=100k Rb2 (b 0) dumb_resistor r=r Cin (b in) capacitor c=1u Cout (c out) capacitor c=1u Rin (in 0) resistor r=100k Rout (out 0) resistor r=100k ends X1 (V_cc amp_in out) foo r=10k Rin1 (in amp_in) resistor r=10*(1-gain) Rin2 (amp_in 0) resistor r=10*gain simulator lang=spice insensitive=no Vin (in 0) vsource ac .2 Vcc (V_cc 0) vsource dc=20. .simulator lang=spectre parameters gain=.5 - list - probe op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) - op - probe ac v(V_cc) v(in) v(amp_in) v(out) - ac 1k Rload (out 0) resistor r=100k - op - ac - end tests/lang_spectre.2.gc000066400000000000000000000016211316501211100153300ustar00rootroot00000000000000 simulator lang=spectre model zz npn bf=150 subckt dumb_resistor (a b) //parameters r=10k R1 (a b) resistor r=r ends subckt foo (vcc in out) boo parameters z=10k parameters r Rc c vcc resistor r=z q1 c b e zz off=1 Re (e 0 vcc) dumb_resistor r=abs(-z)/10 Rb1 (b vcc) resistor r=100k Rb2 (b 0) dumb_resistor r=r Cin (b in vcc) capacitor c=1u Cout (c) capacitor c=1u Rin in 0 vcc resistor r=100k Rout out resistor r=100k ends X1 (V_cc amp_in out) foo r=10k Rin1 (in amp_in) resistor r=10*(1-gain) Rin2 (amp_in 0) resistor r=10*gain simulator lang=spice insensitive=no Vin (in 0) vsource ac .2 Vcc (V_cc 0) vsource dc=20. .simulator lang=spectre parameters gain=.5 - list - probe op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) - op - probe ac v(V_cc) v(in) v(amp_in) v(out) - ac 1k Rload (out 0) resistor r=100k - op - ac - end tests/lang_spice.1.gc000066400000000000000000000012241316501211100147640ustar00rootroot00000000000000 simulator lang=spice .model zz npn bf=150 .subckt dumb_resistor (a b) .param r=10k R1 (a b) 'r' .ends .subckt foo (vcc in out) .param Z=10k .param r Rc (c vcc) 'z' q1 (c b e) Zz off=1 XRe (e 0) dumb_resistor r='abs(-z)/10' Rb1 (b vcc) '100k' XRb2 (b 0) dumb_resistor r=r Cin (b in) 1u Cout (c out) 1u Rin (in 0) 100k Rout (out 0) 100k .ends X1 (V_cc amp_in out) foo r=10k Rin1 (in amp_in) '10*(1-gain)' Rin2 (amp_in 0) '10*gain' Vcc (V_CC 0) dc 20 Vin (in 0) ac .2 .param gain=.5 .list .print op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) .op .print ac v(V_cc) v(in) v(amp_in) v(out) .ac 1k Rload (out 0) 100k .op .ac .end tests/lang_verilog.1.gc000066400000000000000000000020531316501211100153310ustar00rootroot00000000000000 simulator lang=verilog paramset zz npn;\ .bf=150;\ endparamset module dumb_resistor (a b); parameter real r=10k; resistor #(r) R1 (a b); endmodule module foo (vcc in out); parameter real z=10k; parameter real r; resistor #(.r(z)) Rc (.p(c), .n(vcc)); zz #(.off(1)) q1 (.b(b), .c(c), .e(e)); dumb_resistor #(.r(abs(-z)/10) Re (e 0); resistor #(.r(100k)) Rb1 (b vcc); dumb_resistor #(.r(r)) Rb2 (b 0); capacitor #(.c(1u)) Cin (b in); capacitor #(.c(1u)) Cout (c out); resistor #(.r(100k)) Rin (in 0); resistor #(.r(100k)) Rout (out 0); endmodule foo #(.r(10k)) X1 (V_cc amp_in out); resistor #(.r(10*(1-gain))) Rin1 (in amp_in); resistor #(.r(10*gain)) Rin2 (amp_in 0); simulator lang=spice insensitive=no Vcc (V_cc 0) dc 20 Vin (in 0) ac .2 .simulator lang=verilog parameter gain=.5; list print op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) op print ac v(V_cc) v(in) v(amp_in) v(out) ac 1k resistor #(100k) Rload (out 0); op ac end tests/lang_verilog.1a.gc000066400000000000000000000020511316501211100154700ustar00rootroot00000000000000 simulator lang=verilog paramset zz npn; .bf=150; endparamset module dumb_resistor (a b); parameter real r=10k; resistor #(r) R1 (a b); endmodule module foo (vcc in out); parameter real z=10k; parameter real r; resistor #(.r(z)) Rc (.p(c), .n(vcc)); zz #(.off(1)) q1 (.b(b), .c(c), .e(e)); dumb_resistor #(.r(abs(-z)/10) Re (e 0); resistor #(.r(100k)) Rb1 (b vcc); dumb_resistor #(.r(r)) Rb2 (b 0); capacitor #(.c(1u)) Cin (b in); capacitor #(.c(1u)) Cout (c out); resistor #(.r(100k)) Rin (in 0); resistor #(.r(100k)) Rout (out 0); endmodule foo #(.r(10k)) X1 (V_cc amp_in out); resistor #(.r(10*(1-gain))) Rin1 (in amp_in); resistor #(.r(10*gain)) Rin2 (amp_in 0); simulator lang=spice insensitive=no Vcc (V_cc 0) dc 20 Vin (in 0) ac .2 .simulator lang=verilog parameter gain=.5; list print op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) op print ac v(V_cc) v(in) v(amp_in) v(out) ac 1k resistor #(100k) Rload (out 0); op ac end tests/lang_verilog.2.gc000066400000000000000000000020551316501211100153340ustar00rootroot00000000000000 simulator lang=verilog paramset zz npn;\ .bf=150;\ endparamset module dumb_resistor (a b); parameter real r=10k; resistor #(r) R1 (a b); endmodule module foo (vcc in out); parameter real z=10k; parameter real r; resistor #(.r(z)) Rc (.p(c), .n(vcc)); zz #(.off(1)) q1 (.b(b), .c(c), .e(e)); dumb_resistor #(.r(abs(-z)/10) Re (e 0); resistor #(.r(100k)) Rb1 (b vcc); dumb_resistor #(.r(r)) Rb2 (b 0); capacitor #(.c(1u)) Cin (b in vcc); capacitor #(.c(1u)) Cout (c); resistor #(.r(100k)) Rin (in 0 vcc); resistor #(.r(100k)) Rout (out); endmodule foo #(.r(10k)) X1 (V_cc amp_in out); resistor #(.r(10*(1-gain))) Rin1 (in amp_in); resistor #(.r(10*gain)) Rin2 (amp_in 0); simulator lang=spice insensitive=no Vcc (V_cc 0) dc 20 Vin (in 0) ac .2 .simulator lang=verilog parameter gain=.5; list print op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) op print ac v(V_cc) v(in) v(amp_in) v(out) ac 1k resistor #(100k) Rload (out 0); op ac end tests/lang_verilog.3.gc000066400000000000000000000022611316501211100153340ustar00rootroot00000000000000 simulator lang=verilog paramset zz npn;\ .bf=150;\ endparamset module dumb_resistor (a b); parameter real r=10k; resistor #(r) R1 (a b); endmodule module foo (vcc in out); parameter real z=10k; parameter real r; resistor #(.r(z)) Rc (.p(c), .n(vcc)); zz #(.off(1)) q1 (.b(b), .c(c), .e(e)); dumb_resistor #(.r(abs(-z)/10) Re (e 0); resistor #(.r(100k)) Rb1 (b vcc); dumb_resistor #(.r(r)) Rb2 (b 0); capacitor #(.c(1u)) Cin (b in); capacitor #(.c(1u)) Cout (c out); resistor #(.r(100k)) Rin (in 0); resistor #(.r(100k)) Rout (out 0); endmodule foo #(.r(10k)) X1 (V_cc amp_in out); resistor #(.r(10*(1-gain))) Rin1 (in amp_in); resistor #(.r(10*gain)) Rin2 (amp_in 0); simulator lang=spice insensitive=no Vcc (V_cc 0) dc 20 Vin (in 0) ac .2 .simulator lang=verilog parameter gain=.5; list print op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) op print ac v(V_cc) v(in) v(amp_in) v(out) ac 1k resistor #(10k) Rprobe (prb out); resistor #(10k) Rpl (prb 0); resistor #(100k) Rload (out 0); op ac print op v(V_cc) v(in) v(out) iter(0) vc(X1.q1) vce(X1.q1) v(prb) op end tests/ll.ckt000066400000000000000000000005571316501211100133300ustar00rootroot00000000000000'trunc error check V1 1 0 generator(1) L3 1 2 .1 R4 2 0 1. R5 1 3 1. C6 3 0 .1 .options short=1p trtol=7 reltol=.001 .width out=170 .list .print tran iter(0) v(nodes) z(c6) zraw(c6) z(3) control(0) .fanout .fanout 2 .tran 0 .1 .01 trace rejected .print ac v(2) v(3) vp(2) vp(3) z(c6) zraw(c6) z(3) .ac .001 100 decade 2 .list .status notime .end tests/ll1.ckt000066400000000000000000000005661316501211100134110ustar00rootroot00000000000000'trunc error check V1 1 0 generator(1) L3 1 2 .1 R4 2 0 1. R5 1 3 1. C6 3 0 .1 .options short=1p trtol=7 reltol=.001 .width out=170 .list .print tran iter(0) v(nodes) i(L3) i(R4) control(0) .fanout .fanout 2 .tran 0 .1 .01 trace rejected .print ac v(nodes) vp(nodes) i(L3) i(R4) ip(L3) ip(R4) -v(1) vp(1) .ac .001 100 decade 2 .list .status notime .end tests/lll.ckt000066400000000000000000000006441316501211100135010ustar00rootroot00000000000000'trunc error check V1 1 0 ac 1 pwl (0 0 1p 1) L3 1 2 .1 R4 2 0 1. R5 1 3 1. C6 3 0 .1 .options short=1p trtol=7 reltol=.001 method=gear .width out=170 .list .print tran iter(0) v(nodes) z(c6) zraw(c6) z(3) control(0) timef(C6) timef(L3) dt(C6) dtr(C6) .tran 0 .1 .01 trace rejected *.tran .01 .1 0 .print ac v(2) v(3) vp(2) vp(3) z(c6) zraw(c6) z(3) .ac .001 100 decade 2 .list .status notime .end tests/llll.ckt000066400000000000000000000006021316501211100136470ustar00rootroot00000000000000'trunc error check V1 1 0 generator(1) L3 1 2 .1 R4 2 0 1. R5 1 3 1. C6 3 0 .1 .options short=1p trtol=7 reltol=.001 .width out=170 .list .print tran iter(0) v(nodes) z(c6) zraw(c6) z(3) control(0) timef(C6) timef(L3) .fanout .fanout 2 .tran 0 1 .01 trace rejected .print ac v(2) v(3) vp(2) vp(3) z(c6) zraw(c6) z(3) .ac .001 100 decade 2 .list .status notime .end tests/m_expression.1.ckt000066400000000000000000000014161316501211100155660ustar00rootroot00000000000000# expression test .option list .param a=9 .eval a .param b=-8 .eval b .param c={3*8} .eval c .param d={3+8} .eval d .param e={3-8} .eval e .param f={3/8} .eval f .param a1={3==8} .eval a1 .param b1={3!=8} .eval b1 .param c1={3<8} .eval c1 .param d1={3>8} .eval d1 .param e1={3<=8} .eval e1 .param f1={3>=8} .eval f1 .param g1={3||8} .eval g1 .param h1={3&&8} .eval h1 .param a2={3==3} .eval a2 .param b2={3!=3} .eval b2 .param c2={3<3} .eval c2 .param d2={3>3} .eval d2 .param e2={3<=3} .eval e2 .param f2={3>=3} .eval f2 .param g2={3||3} .eval g2 .param h2={3&&3} .eval h2 .param j1={0||0} .eval j1 .param j2={0||1} .eval j2 .param j3={1||0} .eval j3 .param j4={1||1} .eval j4 .param k1={0&&0} .eval k1 .param k2={0&&1} .eval k2 .param k3={1&&0} .eval k3 .param k4={1&&1} .eval k4 tests/m_expression.2.ckt000066400000000000000000000005651316501211100155730ustar00rootroot00000000000000# expression test .option list .param a={2+3*4} .eval a .param b={(2+3)*4} .eval b .param c={2+(3*4)} .eval c .param d={2+(-3*4)} .eval d .param e={2+(+3*4)} .eval e .param f={2+(!3*4)} .eval f .param g={abs(-3)} .eval g .param h={abs(4-2)} .eval h .param i={abs(2-4)} .eval i .param j={pow(3,2)} .eval j .param k={pow(3,-2)} .eval k .param l={pow(abs(3),abs(-2))} .eval l tests/m_expression.3.ckt000066400000000000000000000003731316501211100155710ustar00rootroot00000000000000# expression test -- eval .option list .eval (1+3) .eval exp(1) .eval exp(1-1) .eval exp(-1) .eval exp(-1)*exp(1) .eval exp(2) .eval log(2) .eval exp(log(2)) .eval log(exp(2)) .eval log(exp(abs(-2))) .eval pow(abs(-3), abs(-2)) .eval na() .eval na(3) tests/m_expression.error.1.ckt000066400000000000000000000000401316501211100167060ustar00rootroot00000000000000# expression error .eval foo(3) tests/named_nodes.ckt000066400000000000000000000002331316501211100151640ustar00rootroot00000000000000'named nodes test .option namednodes .subckt foo q w R1 (q w) 1k .ends X1 (2 0) foo X2 (n1 2) foo V1 (n1 0) DC 1 .print op v(nodes) .op .list .fanout .end tests/ngspice000066400000000000000000000006051316501211100135630ustar00rootroot00000000000000NGspice requires a real title. A blank line won't do. .model zz npn bf=150 .subckt foo (vcc in out) q1 (c b e 0) zz Rc (c vcc) 10k Re (e 0) 1k Rb1 (b vcc) 100k Rb2 (b 0) 10k Cin (b in) 1u Cout (c out) 1u Rin (in 0) 100k Rout (out 0) 100k .ends Vcc (V_cc 0) dc 20 Vin (in 0) ac .1 X1 (V_cc in out) foo *>.print op v(nodes) vbc(q1.*) .op .print ac v(in) v(out) .ac dec 1 1k 10k .end tests/nmos100.1.ckt000066400000000000000000000155511316501211100142550ustar00rootroot00000000000000100 cascaded NMOS inverters md1 3 2 0 0 modeld w=10u l=2u ml1 1 1 3 0 modell w=2u l=2u md2 4 3 0 0 modeld w=10u l=2u ml2 1 1 4 0 modell w=2u l=2u md3 5 4 0 0 modeld w=10u l=2u ml3 1 1 5 0 modell w=2u l=2u md4 6 5 0 0 modeld w=10u l=2u ml4 1 1 6 0 modell w=2u l=2u md5 7 6 0 0 modeld w=10u l=2u ml5 1 1 7 0 modell w=2u l=2u md6 8 7 0 0 modeld w=10u l=2u ml6 1 1 8 0 modell w=2u l=2u md7 9 8 0 0 modeld w=10u l=2u ml7 1 1 9 0 modell w=2u l=2u md8 10 9 0 0 modeld w=10u l=2u ml8 1 1 10 0 modell w=2u l=2u md9 11 10 0 0 modeld w=10u l=2u ml9 1 1 11 0 modell w=2u l=2u md10 12 11 0 0 modeld w=10u l=2u ml10 1 1 12 0 modell w=2u l=2u md11 13 12 0 0 modeld w=10u l=2u ml11 1 1 13 0 modell w=2u l=2u md12 14 13 0 0 modeld w=10u l=2u ml12 1 1 14 0 modell w=2u l=2u md13 15 14 0 0 modeld w=10u l=2u ml13 1 1 15 0 modell w=2u l=2u md14 16 15 0 0 modeld w=10u l=2u ml14 1 1 16 0 modell w=2u l=2u md15 17 16 0 0 modeld w=10u l=2u ml15 1 1 17 0 modell w=2u l=2u md16 18 17 0 0 modeld w=10u l=2u ml16 1 1 18 0 modell w=2u l=2u md17 19 18 0 0 modeld w=10u l=2u ml17 1 1 19 0 modell w=2u l=2u md18 20 19 0 0 modeld w=10u l=2u ml18 1 1 20 0 modell w=2u l=2u md19 21 20 0 0 modeld w=10u l=2u ml19 1 1 21 0 modell w=2u l=2u md20 22 21 0 0 modeld w=10u l=2u ml20 1 1 22 0 modell w=2u l=2u md21 23 22 0 0 modeld w=10u l=2u ml21 1 1 23 0 modell w=2u l=2u md22 24 23 0 0 modeld w=10u l=2u ml22 1 1 24 0 modell w=2u l=2u md23 25 24 0 0 modeld w=10u l=2u ml23 1 1 25 0 modell w=2u l=2u md24 26 25 0 0 modeld w=10u l=2u ml24 1 1 26 0 modell w=2u l=2u md25 27 26 0 0 modeld w=10u l=2u ml25 1 1 27 0 modell w=2u l=2u md26 28 27 0 0 modeld w=10u l=2u ml26 1 1 28 0 modell w=2u l=2u md27 29 28 0 0 modeld w=10u l=2u ml27 1 1 29 0 modell w=2u l=2u md28 30 29 0 0 modeld w=10u l=2u ml28 1 1 30 0 modell w=2u l=2u md29 31 30 0 0 modeld w=10u l=2u ml29 1 1 31 0 modell w=2u l=2u md30 32 31 0 0 modeld w=10u l=2u ml30 1 1 32 0 modell w=2u l=2u md31 33 32 0 0 modeld w=10u l=2u ml31 1 1 33 0 modell w=2u l=2u md32 34 33 0 0 modeld w=10u l=2u ml32 1 1 34 0 modell w=2u l=2u md33 35 34 0 0 modeld w=10u l=2u ml33 1 1 35 0 modell w=2u l=2u md34 36 35 0 0 modeld w=10u l=2u ml34 1 1 36 0 modell w=2u l=2u md35 37 36 0 0 modeld w=10u l=2u ml35 1 1 37 0 modell w=2u l=2u md36 38 37 0 0 modeld w=10u l=2u ml36 1 1 38 0 modell w=2u l=2u md37 39 38 0 0 modeld w=10u l=2u ml37 1 1 39 0 modell w=2u l=2u md38 40 39 0 0 modeld w=10u l=2u ml38 1 1 40 0 modell w=2u l=2u md39 41 40 0 0 modeld w=10u l=2u ml39 1 1 41 0 modell w=2u l=2u md40 42 41 0 0 modeld w=10u l=2u ml40 1 1 42 0 modell w=2u l=2u md41 43 42 0 0 modeld w=10u l=2u ml41 1 1 43 0 modell w=2u l=2u md42 44 43 0 0 modeld w=10u l=2u ml42 1 1 44 0 modell w=2u l=2u md43 45 44 0 0 modeld w=10u l=2u ml43 1 1 45 0 modell w=2u l=2u md44 46 45 0 0 modeld w=10u l=2u ml44 1 1 46 0 modell w=2u l=2u md45 47 46 0 0 modeld w=10u l=2u ml45 1 1 47 0 modell w=2u l=2u md46 48 47 0 0 modeld w=10u l=2u ml46 1 1 48 0 modell w=2u l=2u md47 49 48 0 0 modeld w=10u l=2u ml47 1 1 49 0 modell w=2u l=2u md48 50 49 0 0 modeld w=10u l=2u ml48 1 1 50 0 modell w=2u l=2u md49 51 50 0 0 modeld w=10u l=2u ml49 1 1 51 0 modell w=2u l=2u md50 52 51 0 0 modeld w=10u l=2u ml50 1 1 52 0 modell w=2u l=2u md51 53 52 0 0 modeld w=10u l=2u ml51 1 1 53 0 modell w=2u l=2u md52 54 53 0 0 modeld w=10u l=2u ml52 1 1 54 0 modell w=2u l=2u md53 55 54 0 0 modeld w=10u l=2u ml53 1 1 55 0 modell w=2u l=2u md54 56 55 0 0 modeld w=10u l=2u ml54 1 1 56 0 modell w=2u l=2u md55 57 56 0 0 modeld w=10u l=2u ml55 1 1 57 0 modell w=2u l=2u md56 58 57 0 0 modeld w=10u l=2u ml56 1 1 58 0 modell w=2u l=2u md57 59 58 0 0 modeld w=10u l=2u ml57 1 1 59 0 modell w=2u l=2u md58 60 59 0 0 modeld w=10u l=2u ml58 1 1 60 0 modell w=2u l=2u md59 61 60 0 0 modeld w=10u l=2u ml59 1 1 61 0 modell w=2u l=2u md60 62 61 0 0 modeld w=10u l=2u ml60 1 1 62 0 modell w=2u l=2u md61 63 62 0 0 modeld w=10u l=2u ml61 1 1 63 0 modell w=2u l=2u md62 64 63 0 0 modeld w=10u l=2u ml62 1 1 64 0 modell w=2u l=2u md63 65 64 0 0 modeld w=10u l=2u ml63 1 1 65 0 modell w=2u l=2u md64 66 65 0 0 modeld w=10u l=2u ml64 1 1 66 0 modell w=2u l=2u md65 67 66 0 0 modeld w=10u l=2u ml65 1 1 67 0 modell w=2u l=2u md66 68 67 0 0 modeld w=10u l=2u ml66 1 1 68 0 modell w=2u l=2u md67 69 68 0 0 modeld w=10u l=2u ml67 1 1 69 0 modell w=2u l=2u md68 70 69 0 0 modeld w=10u l=2u ml68 1 1 70 0 modell w=2u l=2u md69 71 70 0 0 modeld w=10u l=2u ml69 1 1 71 0 modell w=2u l=2u md70 72 71 0 0 modeld w=10u l=2u ml70 1 1 72 0 modell w=2u l=2u md71 73 72 0 0 modeld w=10u l=2u ml71 1 1 73 0 modell w=2u l=2u md72 74 73 0 0 modeld w=10u l=2u ml72 1 1 74 0 modell w=2u l=2u md73 75 74 0 0 modeld w=10u l=2u ml73 1 1 75 0 modell w=2u l=2u md74 76 75 0 0 modeld w=10u l=2u ml74 1 1 76 0 modell w=2u l=2u md75 77 76 0 0 modeld w=10u l=2u ml75 1 1 77 0 modell w=2u l=2u md76 78 77 0 0 modeld w=10u l=2u ml76 1 1 78 0 modell w=2u l=2u md77 79 78 0 0 modeld w=10u l=2u ml77 1 1 79 0 modell w=2u l=2u md78 80 79 0 0 modeld w=10u l=2u ml78 1 1 80 0 modell w=2u l=2u md79 81 80 0 0 modeld w=10u l=2u ml79 1 1 81 0 modell w=2u l=2u md80 82 81 0 0 modeld w=10u l=2u ml80 1 1 82 0 modell w=2u l=2u md81 83 82 0 0 modeld w=10u l=2u ml81 1 1 83 0 modell w=2u l=2u md82 84 83 0 0 modeld w=10u l=2u ml82 1 1 84 0 modell w=2u l=2u md83 85 84 0 0 modeld w=10u l=2u ml83 1 1 85 0 modell w=2u l=2u md84 86 85 0 0 modeld w=10u l=2u ml84 1 1 86 0 modell w=2u l=2u md85 87 86 0 0 modeld w=10u l=2u ml85 1 1 87 0 modell w=2u l=2u md86 88 87 0 0 modeld w=10u l=2u ml86 1 1 88 0 modell w=2u l=2u md87 89 88 0 0 modeld w=10u l=2u ml87 1 1 89 0 modell w=2u l=2u md88 90 89 0 0 modeld w=10u l=2u ml88 1 1 90 0 modell w=2u l=2u md89 91 90 0 0 modeld w=10u l=2u ml89 1 1 91 0 modell w=2u l=2u md90 92 91 0 0 modeld w=10u l=2u ml90 1 1 92 0 modell w=2u l=2u md91 93 92 0 0 modeld w=10u l=2u ml91 1 1 93 0 modell w=2u l=2u md92 94 93 0 0 modeld w=10u l=2u ml92 1 1 94 0 modell w=2u l=2u md93 95 94 0 0 modeld w=10u l=2u ml93 1 1 95 0 modell w=2u l=2u md94 96 95 0 0 modeld w=10u l=2u ml94 1 1 96 0 modell w=2u l=2u md95 97 96 0 0 modeld w=10u l=2u ml95 1 1 97 0 modell w=2u l=2u md96 98 97 0 0 modeld w=10u l=2u ml96 1 1 98 0 modell w=2u l=2u md97 99 98 0 0 modeld w=10u l=2u ml97 1 1 99 0 modell w=2u l=2u md98 100 99 0 0 modeld w=10u l=2u ml98 1 1 100 0 modell w=2u l=2u md99 101 100 0 0 modeld w=10u l=2u ml99 1 1 101 0 modell w=2u l=2u md100 102 101 0 0 modeld w=10u l=2u ml100 1 1 102 0 modell w=2u l=2u vdd 1 0 5 vin 2 0 .8 .MODEL MODELD NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .MODEL MODELL NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .width out=80 .PRINT OP iter(0) V(nodes) .op .end tests/nmos100.ckt000066400000000000000000000156231316501211100141160ustar00rootroot00000000000000100 cascaded NMOS inverters md1 3 2 0 0 modeld w=10u l=2u ml1 1 1 3 0 modell w=2u l=2u md2 4 3 0 0 modeld w=10u l=2u ml2 1 1 4 0 modell w=2u l=2u md3 5 4 0 0 modeld w=10u l=2u ml3 1 1 5 0 modell w=2u l=2u md4 6 5 0 0 modeld w=10u l=2u ml4 1 1 6 0 modell w=2u l=2u md5 7 6 0 0 modeld w=10u l=2u ml5 1 1 7 0 modell w=2u l=2u md6 8 7 0 0 modeld w=10u l=2u ml6 1 1 8 0 modell w=2u l=2u md7 9 8 0 0 modeld w=10u l=2u ml7 1 1 9 0 modell w=2u l=2u md8 10 9 0 0 modeld w=10u l=2u ml8 1 1 10 0 modell w=2u l=2u md9 11 10 0 0 modeld w=10u l=2u ml9 1 1 11 0 modell w=2u l=2u md10 12 11 0 0 modeld w=10u l=2u ml10 1 1 12 0 modell w=2u l=2u md11 13 12 0 0 modeld w=10u l=2u ml11 1 1 13 0 modell w=2u l=2u md12 14 13 0 0 modeld w=10u l=2u ml12 1 1 14 0 modell w=2u l=2u md13 15 14 0 0 modeld w=10u l=2u ml13 1 1 15 0 modell w=2u l=2u md14 16 15 0 0 modeld w=10u l=2u ml14 1 1 16 0 modell w=2u l=2u md15 17 16 0 0 modeld w=10u l=2u ml15 1 1 17 0 modell w=2u l=2u md16 18 17 0 0 modeld w=10u l=2u ml16 1 1 18 0 modell w=2u l=2u md17 19 18 0 0 modeld w=10u l=2u ml17 1 1 19 0 modell w=2u l=2u md18 20 19 0 0 modeld w=10u l=2u ml18 1 1 20 0 modell w=2u l=2u md19 21 20 0 0 modeld w=10u l=2u ml19 1 1 21 0 modell w=2u l=2u md20 22 21 0 0 modeld w=10u l=2u ml20 1 1 22 0 modell w=2u l=2u md21 23 22 0 0 modeld w=10u l=2u ml21 1 1 23 0 modell w=2u l=2u md22 24 23 0 0 modeld w=10u l=2u ml22 1 1 24 0 modell w=2u l=2u md23 25 24 0 0 modeld w=10u l=2u ml23 1 1 25 0 modell w=2u l=2u md24 26 25 0 0 modeld w=10u l=2u ml24 1 1 26 0 modell w=2u l=2u md25 27 26 0 0 modeld w=10u l=2u ml25 1 1 27 0 modell w=2u l=2u md26 28 27 0 0 modeld w=10u l=2u ml26 1 1 28 0 modell w=2u l=2u md27 29 28 0 0 modeld w=10u l=2u ml27 1 1 29 0 modell w=2u l=2u md28 30 29 0 0 modeld w=10u l=2u ml28 1 1 30 0 modell w=2u l=2u md29 31 30 0 0 modeld w=10u l=2u ml29 1 1 31 0 modell w=2u l=2u md30 32 31 0 0 modeld w=10u l=2u ml30 1 1 32 0 modell w=2u l=2u md31 33 32 0 0 modeld w=10u l=2u ml31 1 1 33 0 modell w=2u l=2u md32 34 33 0 0 modeld w=10u l=2u ml32 1 1 34 0 modell w=2u l=2u md33 35 34 0 0 modeld w=10u l=2u ml33 1 1 35 0 modell w=2u l=2u md34 36 35 0 0 modeld w=10u l=2u ml34 1 1 36 0 modell w=2u l=2u md35 37 36 0 0 modeld w=10u l=2u ml35 1 1 37 0 modell w=2u l=2u md36 38 37 0 0 modeld w=10u l=2u ml36 1 1 38 0 modell w=2u l=2u md37 39 38 0 0 modeld w=10u l=2u ml37 1 1 39 0 modell w=2u l=2u md38 40 39 0 0 modeld w=10u l=2u ml38 1 1 40 0 modell w=2u l=2u md39 41 40 0 0 modeld w=10u l=2u ml39 1 1 41 0 modell w=2u l=2u md40 42 41 0 0 modeld w=10u l=2u ml40 1 1 42 0 modell w=2u l=2u md41 43 42 0 0 modeld w=10u l=2u ml41 1 1 43 0 modell w=2u l=2u md42 44 43 0 0 modeld w=10u l=2u ml42 1 1 44 0 modell w=2u l=2u md43 45 44 0 0 modeld w=10u l=2u ml43 1 1 45 0 modell w=2u l=2u md44 46 45 0 0 modeld w=10u l=2u ml44 1 1 46 0 modell w=2u l=2u md45 47 46 0 0 modeld w=10u l=2u ml45 1 1 47 0 modell w=2u l=2u md46 48 47 0 0 modeld w=10u l=2u ml46 1 1 48 0 modell w=2u l=2u md47 49 48 0 0 modeld w=10u l=2u ml47 1 1 49 0 modell w=2u l=2u md48 50 49 0 0 modeld w=10u l=2u ml48 1 1 50 0 modell w=2u l=2u md49 51 50 0 0 modeld w=10u l=2u ml49 1 1 51 0 modell w=2u l=2u md50 52 51 0 0 modeld w=10u l=2u ml50 1 1 52 0 modell w=2u l=2u md51 53 52 0 0 modeld w=10u l=2u ml51 1 1 53 0 modell w=2u l=2u md52 54 53 0 0 modeld w=10u l=2u ml52 1 1 54 0 modell w=2u l=2u md53 55 54 0 0 modeld w=10u l=2u ml53 1 1 55 0 modell w=2u l=2u md54 56 55 0 0 modeld w=10u l=2u ml54 1 1 56 0 modell w=2u l=2u md55 57 56 0 0 modeld w=10u l=2u ml55 1 1 57 0 modell w=2u l=2u md56 58 57 0 0 modeld w=10u l=2u ml56 1 1 58 0 modell w=2u l=2u md57 59 58 0 0 modeld w=10u l=2u ml57 1 1 59 0 modell w=2u l=2u md58 60 59 0 0 modeld w=10u l=2u ml58 1 1 60 0 modell w=2u l=2u md59 61 60 0 0 modeld w=10u l=2u ml59 1 1 61 0 modell w=2u l=2u md60 62 61 0 0 modeld w=10u l=2u ml60 1 1 62 0 modell w=2u l=2u md61 63 62 0 0 modeld w=10u l=2u ml61 1 1 63 0 modell w=2u l=2u md62 64 63 0 0 modeld w=10u l=2u ml62 1 1 64 0 modell w=2u l=2u md63 65 64 0 0 modeld w=10u l=2u ml63 1 1 65 0 modell w=2u l=2u md64 66 65 0 0 modeld w=10u l=2u ml64 1 1 66 0 modell w=2u l=2u md65 67 66 0 0 modeld w=10u l=2u ml65 1 1 67 0 modell w=2u l=2u md66 68 67 0 0 modeld w=10u l=2u ml66 1 1 68 0 modell w=2u l=2u md67 69 68 0 0 modeld w=10u l=2u ml67 1 1 69 0 modell w=2u l=2u md68 70 69 0 0 modeld w=10u l=2u ml68 1 1 70 0 modell w=2u l=2u md69 71 70 0 0 modeld w=10u l=2u ml69 1 1 71 0 modell w=2u l=2u md70 72 71 0 0 modeld w=10u l=2u ml70 1 1 72 0 modell w=2u l=2u md71 73 72 0 0 modeld w=10u l=2u ml71 1 1 73 0 modell w=2u l=2u md72 74 73 0 0 modeld w=10u l=2u ml72 1 1 74 0 modell w=2u l=2u md73 75 74 0 0 modeld w=10u l=2u ml73 1 1 75 0 modell w=2u l=2u md74 76 75 0 0 modeld w=10u l=2u ml74 1 1 76 0 modell w=2u l=2u md75 77 76 0 0 modeld w=10u l=2u ml75 1 1 77 0 modell w=2u l=2u md76 78 77 0 0 modeld w=10u l=2u ml76 1 1 78 0 modell w=2u l=2u md77 79 78 0 0 modeld w=10u l=2u ml77 1 1 79 0 modell w=2u l=2u md78 80 79 0 0 modeld w=10u l=2u ml78 1 1 80 0 modell w=2u l=2u md79 81 80 0 0 modeld w=10u l=2u ml79 1 1 81 0 modell w=2u l=2u md80 82 81 0 0 modeld w=10u l=2u ml80 1 1 82 0 modell w=2u l=2u md81 83 82 0 0 modeld w=10u l=2u ml81 1 1 83 0 modell w=2u l=2u md82 84 83 0 0 modeld w=10u l=2u ml82 1 1 84 0 modell w=2u l=2u md83 85 84 0 0 modeld w=10u l=2u ml83 1 1 85 0 modell w=2u l=2u md84 86 85 0 0 modeld w=10u l=2u ml84 1 1 86 0 modell w=2u l=2u md85 87 86 0 0 modeld w=10u l=2u ml85 1 1 87 0 modell w=2u l=2u md86 88 87 0 0 modeld w=10u l=2u ml86 1 1 88 0 modell w=2u l=2u md87 89 88 0 0 modeld w=10u l=2u ml87 1 1 89 0 modell w=2u l=2u md88 90 89 0 0 modeld w=10u l=2u ml88 1 1 90 0 modell w=2u l=2u md89 91 90 0 0 modeld w=10u l=2u ml89 1 1 91 0 modell w=2u l=2u md90 92 91 0 0 modeld w=10u l=2u ml90 1 1 92 0 modell w=2u l=2u md91 93 92 0 0 modeld w=10u l=2u ml91 1 1 93 0 modell w=2u l=2u md92 94 93 0 0 modeld w=10u l=2u ml92 1 1 94 0 modell w=2u l=2u md93 95 94 0 0 modeld w=10u l=2u ml93 1 1 95 0 modell w=2u l=2u md94 96 95 0 0 modeld w=10u l=2u ml94 1 1 96 0 modell w=2u l=2u md95 97 96 0 0 modeld w=10u l=2u ml95 1 1 97 0 modell w=2u l=2u md96 98 97 0 0 modeld w=10u l=2u ml96 1 1 98 0 modell w=2u l=2u md97 99 98 0 0 modeld w=10u l=2u ml97 1 1 99 0 modell w=2u l=2u md98 100 99 0 0 modeld w=10u l=2u ml98 1 1 100 0 modell w=2u l=2u md99 101 100 0 0 modeld w=10u l=2u ml99 1 1 101 0 modell w=2u l=2u md100 102 101 0 0 modeld w=10u l=2u ml100 1 1 102 0 modell w=2u l=2u vdd 1 0 5 vin 2 0 .8 .MODEL MODELD NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .MODEL MODELL NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .width out=80 .PRINT OP iter(0) V(nodes) .option vmin=-.1 short=1u dampstrategy=10 .op .end tests/nmos15.ckt000066400000000000000000000023611316501211100140360ustar00rootroot0000000000000015 cascaded NMOS inverters md1 3 2 0 0 modeld w=10u l=2u ml1 1 1 3 0 modell w=2u l=2u md2 4 3 0 0 modeld w=10u l=2u ml2 1 1 4 0 modell w=2u l=2u md3 5 4 0 0 modeld w=10u l=2u ml3 1 1 5 0 modell w=2u l=2u md4 6 5 0 0 modeld w=10u l=2u ml4 1 1 6 0 modell w=2u l=2u md5 7 6 0 0 modeld w=10u l=2u ml5 1 1 7 0 modell w=2u l=2u md6 8 7 0 0 modeld w=10u l=2u ml6 1 1 8 0 modell w=2u l=2u md7 9 8 0 0 modeld w=10u l=2u ml7 1 1 9 0 modell w=2u l=2u md8 10 9 0 0 modeld w=10u l=2u ml8 1 1 10 0 modell w=2u l=2u md9 11 10 0 0 modeld w=10u l=2u ml9 1 1 11 0 modell w=2u l=2u md10 12 11 0 0 modeld w=10u l=2u ml10 1 1 12 0 modell w=2u l=2u md11 13 12 0 0 modeld w=10u l=2u ml11 1 1 13 0 modell w=2u l=2u md12 14 13 0 0 modeld w=10u l=2u ml12 1 1 14 0 modell w=2u l=2u md13 15 14 0 0 modeld w=10u l=2u ml13 1 1 15 0 modell w=2u l=2u md14 16 15 0 0 modeld w=10u l=2u ml14 1 1 16 0 modell w=2u l=2u md15 17 16 0 0 modeld w=10u l=2u ml15 1 1 17 0 modell w=2u l=2u vdd 1 0 5 vin 2 0 .8 .MODEL MODELD NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .MODEL MODELL NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .width out=80 .PRINT OP iter(0) V(nodes) .op .options noacct .op .stat notime .list .end tests/nmos15a.ckt000066400000000000000000000024151316501211100141770ustar00rootroot0000000000000015 cascaded NMOS inverters .param process=2u .param l=process .param wd=process*5 .param wl=process md1 3 2 0 0 modeld w=wd l=l ml1 1 1 3 0 modell w=wl l=l md2 4 3 0 0 modeld w=wd l=l ml2 1 1 4 0 modell w=wl l=l md3 5 4 0 0 modeld w=wd l=l ml3 1 1 5 0 modell w=wl l=l md4 6 5 0 0 modeld w=wd l=l ml4 1 1 6 0 modell w=wl l=l md5 7 6 0 0 modeld w=wd l=l ml5 1 1 7 0 modell w=wl l=l md6 8 7 0 0 modeld w=wd l=l ml6 1 1 8 0 modell w=wl l=l md7 9 8 0 0 modeld w=wd l=l ml7 1 1 9 0 modell w=wl l=l md8 10 9 0 0 modeld w=wd l=l ml8 1 1 10 0 modell w=wl l=l md9 11 10 0 0 modeld w=wd l=l ml9 1 1 11 0 modell w=wl l=l md10 12 11 0 0 modeld w=wd l=l ml10 1 1 12 0 modell w=wl l=l md11 13 12 0 0 modeld w=wd l=l ml11 1 1 13 0 modell w=wl l=l md12 14 13 0 0 modeld w=wd l=l ml12 1 1 14 0 modell w=wl l=l md13 15 14 0 0 modeld w=wd l=l ml13 1 1 15 0 modell w=wl l=l md14 16 15 0 0 modeld w=wd l=l ml14 1 1 16 0 modell w=wl l=l md15 17 16 0 0 modeld w=wd l=l ml15 1 1 17 0 modell w=wl l=l vdd 1 0 5 vin 2 0 .8 .MODEL MODELD NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .MODEL MODELL NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .width out=80 .PRINT OP iter(0) V(nodes) .op .options noacct .op .stat notime .list .end tests/nmp100.ckt000066400000000000000000000207651316501211100137370ustar00rootroot00000000000000100 cascaded NMOS inverters vd1 2 0 5 md1 3 1 0 0 modeld w=10u l=2u ml1 2 2 3 0 modell w=2u l=2u vd2 4 0 5 md2 5 3 0 0 modeld w=10u l=2u ml2 4 4 5 0 modell w=2u l=2u vd3 6 0 5 md3 7 5 0 0 modeld w=10u l=2u ml3 6 6 7 0 modell w=2u l=2u vd4 8 0 5 md4 9 7 0 0 modeld w=10u l=2u ml4 8 8 9 0 modell w=2u l=2u vd5 10 0 5 md5 11 9 0 0 modeld w=10u l=2u ml5 10 10 11 0 modell w=2u l=2u vd6 12 0 5 md6 13 11 0 0 modeld w=10u l=2u ml6 12 12 13 0 modell w=2u l=2u vd7 14 0 5 md7 15 13 0 0 modeld w=10u l=2u ml7 14 14 15 0 modell w=2u l=2u vd8 16 0 5 md8 17 15 0 0 modeld w=10u l=2u ml8 16 16 17 0 modell w=2u l=2u vd9 18 0 5 md9 19 17 0 0 modeld w=10u l=2u ml9 18 18 19 0 modell w=2u l=2u vd10 20 0 5 md10 21 19 0 0 modeld w=10u l=2u ml10 20 20 21 0 modell w=2u l=2u vd11 22 0 5 md11 23 21 0 0 modeld w=10u l=2u ml11 22 22 23 0 modell w=2u l=2u vd12 24 0 5 md12 25 23 0 0 modeld w=10u l=2u ml12 24 24 25 0 modell w=2u l=2u vd13 26 0 5 md13 27 25 0 0 modeld w=10u l=2u ml13 26 26 27 0 modell w=2u l=2u vd14 28 0 5 md14 29 27 0 0 modeld w=10u l=2u ml14 28 28 29 0 modell w=2u l=2u vd15 30 0 5 md15 31 29 0 0 modeld w=10u l=2u ml15 30 30 31 0 modell w=2u l=2u vd16 32 0 5 md16 33 31 0 0 modeld w=10u l=2u ml16 32 32 33 0 modell w=2u l=2u vd17 34 0 5 md17 35 33 0 0 modeld w=10u l=2u ml17 34 34 35 0 modell w=2u l=2u vd18 36 0 5 md18 37 35 0 0 modeld w=10u l=2u ml18 36 36 37 0 modell w=2u l=2u vd19 38 0 5 md19 39 37 0 0 modeld w=10u l=2u ml19 38 38 39 0 modell w=2u l=2u vd20 40 0 5 md20 41 39 0 0 modeld w=10u l=2u ml20 40 40 41 0 modell w=2u l=2u vd21 42 0 5 md21 43 41 0 0 modeld w=10u l=2u ml21 42 42 43 0 modell w=2u l=2u vd22 44 0 5 md22 45 43 0 0 modeld w=10u l=2u ml22 44 44 45 0 modell w=2u l=2u vd23 46 0 5 md23 47 45 0 0 modeld w=10u l=2u ml23 46 46 47 0 modell w=2u l=2u vd24 48 0 5 md24 49 47 0 0 modeld w=10u l=2u ml24 48 48 49 0 modell w=2u l=2u vd25 50 0 5 md25 51 49 0 0 modeld w=10u l=2u ml25 50 50 51 0 modell w=2u l=2u vd26 52 0 5 md26 53 51 0 0 modeld w=10u l=2u ml26 52 52 53 0 modell w=2u l=2u vd27 54 0 5 md27 55 53 0 0 modeld w=10u l=2u ml27 54 54 55 0 modell w=2u l=2u vd28 56 0 5 md28 57 55 0 0 modeld w=10u l=2u ml28 56 56 57 0 modell w=2u l=2u vd29 58 0 5 md29 59 57 0 0 modeld w=10u l=2u ml29 58 58 59 0 modell w=2u l=2u vd30 60 0 5 md30 61 59 0 0 modeld w=10u l=2u ml30 60 60 61 0 modell w=2u l=2u vd31 62 0 5 md31 63 61 0 0 modeld w=10u l=2u ml31 62 62 63 0 modell w=2u l=2u vd32 64 0 5 md32 65 63 0 0 modeld w=10u l=2u ml32 64 64 65 0 modell w=2u l=2u vd33 66 0 5 md33 67 65 0 0 modeld w=10u l=2u ml33 66 66 67 0 modell w=2u l=2u vd34 68 0 5 md34 69 67 0 0 modeld w=10u l=2u ml34 68 68 69 0 modell w=2u l=2u vd35 70 0 5 md35 71 69 0 0 modeld w=10u l=2u ml35 70 70 71 0 modell w=2u l=2u vd36 72 0 5 md36 73 71 0 0 modeld w=10u l=2u ml36 72 72 73 0 modell w=2u l=2u vd37 74 0 5 md37 75 73 0 0 modeld w=10u l=2u ml37 74 74 75 0 modell w=2u l=2u vd38 76 0 5 md38 77 75 0 0 modeld w=10u l=2u ml38 76 76 77 0 modell w=2u l=2u vd39 78 0 5 md39 79 77 0 0 modeld w=10u l=2u ml39 78 78 79 0 modell w=2u l=2u vd40 80 0 5 md40 81 79 0 0 modeld w=10u l=2u ml40 80 80 81 0 modell w=2u l=2u vd41 82 0 5 md41 83 81 0 0 modeld w=10u l=2u ml41 82 82 83 0 modell w=2u l=2u vd42 84 0 5 md42 85 83 0 0 modeld w=10u l=2u ml42 84 84 85 0 modell w=2u l=2u vd43 86 0 5 md43 87 85 0 0 modeld w=10u l=2u ml43 86 86 87 0 modell w=2u l=2u vd44 88 0 5 md44 89 87 0 0 modeld w=10u l=2u ml44 88 88 89 0 modell w=2u l=2u vd45 90 0 5 md45 91 89 0 0 modeld w=10u l=2u ml45 90 90 91 0 modell w=2u l=2u vd46 92 0 5 md46 93 91 0 0 modeld w=10u l=2u ml46 92 92 93 0 modell w=2u l=2u vd47 94 0 5 md47 95 93 0 0 modeld w=10u l=2u ml47 94 94 95 0 modell w=2u l=2u vd48 96 0 5 md48 97 95 0 0 modeld w=10u l=2u ml48 96 96 97 0 modell w=2u l=2u vd49 98 0 5 md49 99 97 0 0 modeld w=10u l=2u ml49 98 98 99 0 modell w=2u l=2u vd50 100 0 5 md50 101 99 0 0 modeld w=10u l=2u ml50 100 100 101 0 modell w=2u l=2u vd51 102 0 5 md51 103 101 0 0 modeld w=10u l=2u ml51 102 102 103 0 modell w=2u l=2u vd52 104 0 5 md52 105 103 0 0 modeld w=10u l=2u ml52 104 104 105 0 modell w=2u l=2u vd53 106 0 5 md53 107 105 0 0 modeld w=10u l=2u ml53 106 106 107 0 modell w=2u l=2u vd54 108 0 5 md54 109 107 0 0 modeld w=10u l=2u ml54 108 108 109 0 modell w=2u l=2u vd55 110 0 5 md55 111 109 0 0 modeld w=10u l=2u ml55 110 110 111 0 modell w=2u l=2u vd56 112 0 5 md56 113 111 0 0 modeld w=10u l=2u ml56 112 112 113 0 modell w=2u l=2u vd57 114 0 5 md57 115 113 0 0 modeld w=10u l=2u ml57 114 114 115 0 modell w=2u l=2u vd58 116 0 5 md58 117 115 0 0 modeld w=10u l=2u ml58 116 116 117 0 modell w=2u l=2u vd59 118 0 5 md59 119 117 0 0 modeld w=10u l=2u ml59 118 118 119 0 modell w=2u l=2u vd60 120 0 5 md60 121 119 0 0 modeld w=10u l=2u ml60 120 120 121 0 modell w=2u l=2u vd61 122 0 5 md61 123 121 0 0 modeld w=10u l=2u ml61 122 122 123 0 modell w=2u l=2u vd62 124 0 5 md62 125 123 0 0 modeld w=10u l=2u ml62 124 124 125 0 modell w=2u l=2u vd63 126 0 5 md63 127 125 0 0 modeld w=10u l=2u ml63 126 126 127 0 modell w=2u l=2u vd64 128 0 5 md64 129 127 0 0 modeld w=10u l=2u ml64 128 128 129 0 modell w=2u l=2u vd65 130 0 5 md65 131 129 0 0 modeld w=10u l=2u ml65 130 130 131 0 modell w=2u l=2u vd66 132 0 5 md66 133 131 0 0 modeld w=10u l=2u ml66 132 132 133 0 modell w=2u l=2u vd67 134 0 5 md67 135 133 0 0 modeld w=10u l=2u ml67 134 134 135 0 modell w=2u l=2u vd68 136 0 5 md68 137 135 0 0 modeld w=10u l=2u ml68 136 136 137 0 modell w=2u l=2u vd69 138 0 5 md69 139 137 0 0 modeld w=10u l=2u ml69 138 138 139 0 modell w=2u l=2u vd70 140 0 5 md70 141 139 0 0 modeld w=10u l=2u ml70 140 140 141 0 modell w=2u l=2u vd71 142 0 5 md71 143 141 0 0 modeld w=10u l=2u ml71 142 142 143 0 modell w=2u l=2u vd72 144 0 5 md72 145 143 0 0 modeld w=10u l=2u ml72 144 144 145 0 modell w=2u l=2u vd73 146 0 5 md73 147 145 0 0 modeld w=10u l=2u ml73 146 146 147 0 modell w=2u l=2u vd74 148 0 5 md74 149 147 0 0 modeld w=10u l=2u ml74 148 148 149 0 modell w=2u l=2u vd75 150 0 5 md75 151 149 0 0 modeld w=10u l=2u ml75 150 150 151 0 modell w=2u l=2u vd76 152 0 5 md76 153 151 0 0 modeld w=10u l=2u ml76 152 152 153 0 modell w=2u l=2u vd77 154 0 5 md77 155 153 0 0 modeld w=10u l=2u ml77 154 154 155 0 modell w=2u l=2u vd78 156 0 5 md78 157 155 0 0 modeld w=10u l=2u ml78 156 156 157 0 modell w=2u l=2u vd79 158 0 5 md79 159 157 0 0 modeld w=10u l=2u ml79 158 158 159 0 modell w=2u l=2u vd80 160 0 5 md80 161 159 0 0 modeld w=10u l=2u ml80 160 160 161 0 modell w=2u l=2u vd81 162 0 5 md81 163 161 0 0 modeld w=10u l=2u ml81 162 162 163 0 modell w=2u l=2u vd82 164 0 5 md82 165 163 0 0 modeld w=10u l=2u ml82 164 164 165 0 modell w=2u l=2u vd83 166 0 5 md83 167 165 0 0 modeld w=10u l=2u ml83 166 166 167 0 modell w=2u l=2u vd84 168 0 5 md84 169 167 0 0 modeld w=10u l=2u ml84 168 168 169 0 modell w=2u l=2u vd85 170 0 5 md85 171 169 0 0 modeld w=10u l=2u ml85 170 170 171 0 modell w=2u l=2u vd86 172 0 5 md86 173 171 0 0 modeld w=10u l=2u ml86 172 172 173 0 modell w=2u l=2u vd87 174 0 5 md87 175 173 0 0 modeld w=10u l=2u ml87 174 174 175 0 modell w=2u l=2u vd88 176 0 5 md88 177 175 0 0 modeld w=10u l=2u ml88 176 176 177 0 modell w=2u l=2u vd89 178 0 5 md89 179 177 0 0 modeld w=10u l=2u ml89 178 178 179 0 modell w=2u l=2u vd90 180 0 5 md90 181 179 0 0 modeld w=10u l=2u ml90 180 180 181 0 modell w=2u l=2u vd91 182 0 5 md91 183 181 0 0 modeld w=10u l=2u ml91 182 182 183 0 modell w=2u l=2u vd92 184 0 5 md92 185 183 0 0 modeld w=10u l=2u ml92 184 184 185 0 modell w=2u l=2u vd93 186 0 5 md93 187 185 0 0 modeld w=10u l=2u ml93 186 186 187 0 modell w=2u l=2u vd94 188 0 5 md94 189 187 0 0 modeld w=10u l=2u ml94 188 188 189 0 modell w=2u l=2u vd95 190 0 5 md95 191 189 0 0 modeld w=10u l=2u ml95 190 190 191 0 modell w=2u l=2u vd96 192 0 5 md96 193 191 0 0 modeld w=10u l=2u ml96 192 192 193 0 modell w=2u l=2u vd97 194 0 5 md97 195 193 0 0 modeld w=10u l=2u ml97 194 194 195 0 modell w=2u l=2u vd98 196 0 5 md98 197 195 0 0 modeld w=10u l=2u ml98 196 196 197 0 modell w=2u l=2u vd99 198 0 5 md99 199 197 0 0 modeld w=10u l=2u ml99 198 198 199 0 modell w=2u l=2u vd100 200 0 5 md100 201 199 0 0 modeld w=10u l=2u ml100 200 200 201 0 modell w=2u l=2u vin 1 0 .8 .MODEL MODELD NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .MODEL MODELL NMOS (level=2 KP=28U VTO=0.7 LAMBDA=0.01 GAMMA=0.9 PHI=0.5) .width out=80 .PRINT OP iter(0) V(nodes) .op .end tests/nobypass000066400000000000000000000000221316501211100137620ustar00rootroot00000000000000 .option nobypass tests/nolubypass000066400000000000000000000000241316501211100143250ustar00rootroot00000000000000 .option nolubypass tests/nothing.ckt000066400000000000000000000000261316501211100143560ustar00rootroot00000000000000'nothing .status .end tests/opamp-ol-disto.2.ckt000066400000000000000000000040151316501211100157160ustar00rootroot000000000000002 stage op-amp open loop 02/16/88 * m1 3 2 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p rl 6 0 10meg * vin 1 0 sin(0 .5 1k 0 0) ac=.5 ein 0 2 1 0 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .print op iter(0) v(1,2,3,4,5,6,7,8,9) .op * .plot ac vdb(6) (0,80) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop *.print disto hd2 hd3 sim2 dim2 dim3 *.disto rl * .plot dc v(6) (-4,4) .dc vin -500u 500u 20u *dc start stop stepsize * * Try this in Spice. Compare to the AC analysis above. (same sweep parameters) * It uses the last step in the DC analysis as the bias point. *.ac * * Try this in Spice. *.plot dc cgs(m7)(5f 7f) *.dc * .print tran v(vin) v(6) .tran 0 .001 31.25u .print fourier v(vin) v(6) .fourier 0 10k 1k .status notime .end tests/opamp-ol-disto.ckt000066400000000000000000000040441316501211100155600ustar00rootroot000000000000002 stage op-amp open loop 02/16/88 * m1 3 2 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p rl 6 0 10meg * vin 1 0 sin(0 .5 1k 0 0) ac=.5 ein 0 2 1 0 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .print op iter(0) v(1,2,3,4,5,6,7,8,9) .op * .plot ac vdb(6) (0,80) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop *.print disto hd2 hd3 sim2 dim2 dim3 *.disto rl * .plot dc v(6) (-4,4) .dc vin -500u 500u 20u *dc start stop stepsize * * Try this in Spice. Compare to the AC analysis above. (same sweep parameters) * It uses the last step in the DC analysis as the bias point. *.ac * * Try this in Spice. *.plot dc cgs(m7)(5f 7f) *.dc * .print tran v(vin) v(6) .option dampstrategy=1 .tran 0 .001 31.25u .print fourier v(vin) v(6) .fourier 0 10k 1k .status notime .end tests/opamp-ol.ckt000066400000000000000000000035301316501211100144370ustar00rootroot000000000000002 stage op-amp open loop 02/16/88 * m1 3 2 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p * vin 1 0 dc=0 ac=.5 ein 0 2 1 0 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .print op iter(0) v(1 2 3 4 5 6 7 8 9) .op * .plot ac vdb(6) (0,80) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop * .plot dc v(6) (-4,4) .dc vin -500u 500u 20u *dc start stop stepsize * * Try this in Spice. Compare to the AC analysis above. (same sweep parameters) * It uses the last step in the DC analysis as the bias point. .ac * * Try this in Spice. .plot dc cgs(m7)(5f 7f) .dc * .end tests/opamp-vf.1.ckt000066400000000000000000000034641316501211100146050ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * m1 3 6 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p * vin 1 0 pulse(-1.0 1.0 200u 1u 1u 300u 600u) ac 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .options dampstrategy=11 .options trsteporder=1 .options .print op iter(0) v(1 3 4 5 6 7 8 9) .op * .plot ac vdb(6) (-90,30) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop * .plot dc v(6) (-4,4) .dc vin -5 5 .2 *dc start stop stepsize * .plot tran v(6) (-4,4) .tran 10u 1000u 0 *tran step stop start .stat notime .end tests/opamp-vf.1d.ckt000066400000000000000000000034631316501211100147500ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * m1 3 6 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p * vin 1 0 pulse(-1.0 1.0 200u 1u 1u 300u 600u) ac 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .options dampstrategy=0 .options trsteporder=1 .options .print op iter(0) v(1 3 4 5 6 7 8 9) .op * .plot ac vdb(6) (-90,30) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop * .plot dc v(6) (-4,4) .dc vin -5 5 .2 *dc start stop stepsize * .plot tran v(6) (-4,4) .tran 10u 1000u 0 *tran step stop start .stat notime .end tests/opamp-vf.2.ckt000066400000000000000000000034641316501211100146060ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * m1 3 6 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p * vin 1 0 pulse(-1.0 1.0 200u 1u 1u 300u 600u) ac 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .options dampstrategy=11 .options trsteporder=2 .options .print op iter(0) v(1 3 4 5 6 7 8 9) .op * .plot ac vdb(6) (-90,30) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop * .plot dc v(6) (-4,4) .dc vin -5 5 .2 *dc start stop stepsize * .plot tran v(6) (-4,4) .tran 10u 1000u 0 *tran step stop start .stat notime .end tests/opamp-vf.3.ckt000066400000000000000000000034641316501211100146070ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * m1 3 6 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p * vin 1 0 pulse(-1.0 1.0 200u 1u 1u 300u 600u) ac 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .options dampstrategy=11 .options trsteporder=3 .options .print op iter(0) v(1 3 4 5 6 7 8 9) .op * .plot ac vdb(6) (-90,30) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop * .plot dc v(6) (-4,4) .dc vin -5 5 .2 *dc start stop stepsize * .plot tran v(6) (-4,4) .tran 10u 1000u 0 *tran step stop start .stat notime .end tests/opamp-vf.ckt000066400000000000000000000034351316501211100144440ustar00rootroot000000000000002 stage op-amp, conected as voltage follower 02/16/88 * m1 3 6 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m2 4 1 5 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m3 3 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m4 4 3 9 9 cmosp w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m5 5 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m6 6 4 9 9 cmosp w=9u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m7 6 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 m8 7 7 8 8 cmosn w=5u l=5u ad=45p as=45p pd=28u ps=28u nrd=1.8 nrs=1.8 cc 4 6 5.0p ib 9 7 .36u vdd 9 0 2.5 vss 8 0 -2.5 cl 6 0 20p * vin 1 0 pulse(-1.0 1.0 200u 1u 1u 300u 600u) ac 1 * .model cmosn nmos (level=2 ld=0.265073u tox=418.0e-10 + nsub=1.53142e+16 vto=0.844345 kp=4.15964e-05 gamma=0.863074 + phi=0.6 uo=503.521 uexp=0.163917 ucrit=161166 + delta=1e-06 vmax=55903.5 xj=0.400000u lambda=0.01 + nfs=3.5934e+12 neff=1.001 nss=1e+12 tpg=1.000000 + rsh=29.3 cgdo=2.18971e-10 cgso=2.18971e-10 + cj=0.0003844 mj=0.488400 cjsw=5.272e-10 mjsw=0.300200 pb=0.700000) .model cmosp pmos (level=2 ld=0.299878u tox=418.0e-10 + nsub=4.19363e+15 vto=-0.79089 kp=1.64047e-05 gamma=0.451645 + phi=0.6 uo=198.577 uexp=0.343935 ucrit=110988 + delta=0.956806 vmax=41456.3 xj=0.400000u lambda=0.02 + nfs=1e+12 neff=1.001 nss=1e+12 tpg=-1.000000 + rsh=107.6 cgdo=2.47722e-10 cgso=2.47722e-10 + cj=0.0002281 mj=0.508000 cjsw=3.077e-10 mjsw=0.193500 pb=0.740000) * .width out=80 .options dampstrategy=11 .options .print op iter(0) v(1 3 4 5 6 7 8 9) .op * .plot ac vdb(6) (-90,30) vp(6) (-180,180) .ac dec 5 1 10meg *ac steps start stop * .plot dc v(6) (-4,4) .dc vin -5 5 .2 *dc start stop stepsize * .plot tran v(6) (-4,4) .tran 10u 1000u 0 *tran step stop start .stat notime .end tests/oscillator.1.ckt000066400000000000000000000001761316501211100152300ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 L1 1 0 1 i1 1 0 pwl 0 5 .1 0 .width out=80 .plot tran v(1) .tran .5 100 0 .status notime .end tests/oscillator.2.ckt000066400000000000000000000002761316501211100152320ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 ic=5 L1 1 0 1 C2 2 0 1 L2 2 0 1 ic=5 .width out=80 .plot tran v(1) v(2) .tran .1 100 0 uic .tran .tran .tran .1 100 0 .tran .1 100 0 uic .status notime .end tests/oscillator.3.ckt000066400000000000000000000002051316501211100152230ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 L1 1 0 1 i1 1 0 pwl 0 5 .1 0 .width out=80 .plot tran v(1) .tran .5 100 0 skip 2 .status notime .end tests/oscillator.4.ckt000066400000000000000000000002241316501211100152250ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 L1 1 0 1 i1 1 0 pwl 0 5 .1 0 .width out=80 .plot tran v(1) .options reltol=.0001 .tran .5 100 0 .status notime .end tests/oscillator.5.ckt000066400000000000000000000002251316501211100152270ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 L1 1 0 1 i1 1 0 pwl 0 5 .1 0 .width out=80 .plot tran v(1) .options reltol=.00001 .tran .5 100 0 .status notime .end tests/oscillator.6.ckt000066400000000000000000000002171316501211100152310ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 L1 1 0 1 i1 1 0 pwl 0 5 .1 0 .width out=80 .plot tran v(1) .options trtol=1 .tran .5 100 0 .status notime .end tests/oscillator.7.ckt000066400000000000000000000003671316501211100152400ustar00rootroot00000000000000*oscillator, .159 Hz. C1 1 0 1 ic=5 L1 1 0 1 C2 2 0 1 L2 2 0 1 ic=5 .width out=80 .print tran v(1) v(2) iter(0) .tran .1 100 0 uic trace rejected *.tran *.tran *.tran .1 100 0 .status notime .tran .1 100 0 uic trace rejected .status notime .end tests/param.0.ckt000066400000000000000000000000561316501211100141510ustar00rootroot00000000000000' v1 1 0 d .param d=3 .probe op v(1) .op .end tests/param.0a.ckt000066400000000000000000000000561316501211100143120ustar00rootroot00000000000000' .param d=3 v1 1 0 d .print dc v(1) .dc .end tests/param.1.ckt000066400000000000000000000001651316501211100141530ustar00rootroot00000000000000'parameter test v1 1 0 dc _a ac _b r1 1 2 _c r2 2 0 _d .param _a=1 _b=2 _c=3 _d=4 .param .print op v(nodes) .op .end tests/param.10.ckt000066400000000000000000000003671316501211100142370ustar00rootroot00000000000000'parameter function call test .option list .param a='sin(1)' .eval a .param b=sin(1) .eval b .param c=pow(2,2) .eval c .param d=pow(sqrt(2+2),2) .eval d .param e='3+c' .eval e .param f='c+3' .eval f .param g=c+3 .eval g .param h=3+c .eval h .end tests/param.11.ckt000066400000000000000000000003741316501211100142360ustar00rootroot00000000000000 .param p1 = '1/(8.854e-12*3.9)' v1 1 0 dc 'p1' v2 2 0 dc '1/(8.854e-12*3.9)' v3 3 0 dc '1/8.854e-12/3.9' v4 4 0 dc '8.854e-12*3.9' v5 5 0 dc '8.854e-12' v6 6 0 dc '1.e-12' v7 7 0 dc 1.e-12 .print op v(1) v(2) v(3) v(4) v(5) v(6) v(7) .op .end tests/param.2.ckt000066400000000000000000000001551316501211100141530ustar00rootroot00000000000000'parameter test v1 1 0 dc a ac b r1 1 2 c r2 2 0 d .param a=1 b=2 c=3 d=4 .param .print op v(nodes) .op .end tests/param.2a.ckt000066400000000000000000000001611316501211100143110ustar00rootroot00000000000000'parameter test v1 1 0 dc a ac b r1 1 2 {a+b} r2 2 0 d .param a=1 b=2 c=3 d=4 .param .print op v(nodes) .op .end tests/param.2b.ckt000066400000000000000000000001651316501211100143160ustar00rootroot00000000000000'parameter test v1 1 0 dc a ac b r1 1 2 c r2 2 0 c+1 .param a=1 b=a+1 c=a+b d=c+1 .param .print op v(nodes) .op .end tests/param.3.ckt000066400000000000000000000002051316501211100141500ustar00rootroot00000000000000'parameter test with subckt .subckt foo (a b) v1 (a b) zzz .ends x1 (1 0) foo zzz=78 x2 (2 0) foo zzz=83 .print op v(nodes) .op .end tests/param.4.ckt000066400000000000000000000002201316501211100141460ustar00rootroot00000000000000'parameter test with subckt .subckt foo (a b) v1 (a b) zzz .ends x1 (1 0) foo zzz=a x2 (2 0) foo zzz=83 .param a=13 .print op v(nodes) .op .end tests/param.5.ckt000066400000000000000000000001631316501211100141550ustar00rootroot00000000000000'parameter test v1 1 0 dc a ac 'b' r1 1 2 "c" r2 2 0 {d} .param a=1 b=2 c=3 d=4 .param .print op v(nodes) .op .end tests/param.6.ckt000066400000000000000000000002341316501211100141550ustar00rootroot00000000000000'parameter test with subckt .subckt foo (a b) v1 (a b) zzz .ends x1 (1 0) foo zzz=a x2 (2 0) foo zzz=83 .param a=13 .list .print op v(nodes) .op .list .end tests/param.7.ckt000066400000000000000000000003071316501211100141570ustar00rootroot00000000000000'parameter test with subckt .subckt foo (a b c) v1 (a b) zzz v2 (b c) xxx .ends x1 (1 0 3) foo zzz=a xxx=b x2 (2 0 4) foo xxx=a zzz=83 .param a=13 b=923 c=a .list .print op v(nodes) .op .list .end tests/param.8.ckt000066400000000000000000000001511316501211100141550ustar00rootroot00000000000000'parameter test v1 1 0 dc a ac b r1 1 2 c r2 2 0 d .param a=1 b=2 c=3 .param .print op v(nodes) .op .end tests/param.9.ckt000066400000000000000000000000431316501211100141560ustar00rootroot00000000000000' v1 1 0 d .probe op v(1) .op .end tests/parse.1.ckt000066400000000000000000000016521316501211100141670ustar00rootroot00000000000000#parser args check e0 5 0 2 0 posy (1,2) odd e1 5 0 2 0 posy 1,2 odd e2 5 0 2 0 posy (1,2 odd) e3 5 0 2 0 posy ((1,2) odd) e4 5 0 2 0 posy odd (1,2) e5 5 0 2 0 posy (odd 1,2) e6 5 0 2 0 posy (odd(1,2)) e7 5 0 2 0 posy odd 1,2 e10 5 0 2 0 posy (1,2) odd=1 e11 5 0 2 0 posy 1,2 odd=1 e12 5 0 2 0 posy (1,2 odd=1) e13 5 0 2 0 posy ((1,2) odd=1) e14 5 0 2 0 posy odd=1 (1,2) e15 5 0 2 0 posy (odd=1 1,2) e16 5 0 2 0 posy (odd=1 (1,2)) e17 5 0 2 0 posy odd=1 1,2 e00 5 0 2 0 posy (1,2) odd=0 e01 5 0 2 0 posy 1,2 odd=0 e02 5 0 2 0 posy (1,2 odd=0) e03 5 0 2 0 posy ((1,2) odd=0) e04 5 0 2 0 posy odd=0 (1,2) e05 5 0 2 0 posy (odd=0 1,2) e06 5 0 2 0 posy (odd=0 (1,2)) e07 5 0 2 0 posy odd=0 1,2 e20 5 0 2 0 posy (1,2) noodd e21 5 0 2 0 posy 1,2 noodd e22 5 0 2 0 posy (1,2 noodd) e23 5 0 2 0 posy ((1,2) noodd) e24 5 0 2 0 posy noodd (1,2) e25 5 0 2 0 posy (noodd 1,2) e26 5 0 2 0 posy (noodd (1,2)) e27 5 0 2 0 posy noodd 1,2 .list .end tests/probe-hidden.gc000066400000000000000000000002231316501211100150570ustar00rootroot00000000000000""" spice .print tran hidden(0) .tran 0 2 1 trace=all .tran 0 2 1 trace=all .tran 0 2 1 .tran 0 2 1 skip=10 .tran 0 2 1 skip=10 trace=all .end """ tests/pwl.spice000066400000000000000000000020601316501211100140340ustar00rootroot00000000000000'test of pwl, ac, dc combinations v1 1 0 pwl 0 0.1 1 1 2 2 v2 2 0 pwl(0 0.1 1 1 2 2) v3 3 0 pwl(0 0.1 1 1 2 2) dc 7 ac 9 v4 4 0 pwl(0 0.1 1 1 2 2) dc 7 v5 5 0 dc 7 pwl(0 0.1 1 1 2 2) v6 6 0 pwl(0 0.1 1 1 2 2) ac 9 v7 7 0 ac 9 pwl(0 0.1 1 1 2 2) v8 8 0 pwl(0 0.1 1 1 2 2) 7 ac 9 v9 9 0 7 pwl(0 0.1 1 1 2 2) ac 9 v10 10 0 7 pwl(0 0.1 1 1 2 2) v11 11 0 pwl(0 0.1 1 1 2 2) 7 v12 12 0 pwl(0 0.1 1 1 2 2) 7 v13 13 0 7 v14 14 0 ac 9 v15 15 0 dc 7 ac 9 v16 16 0 7 ac 9 r1 1 0 1k r2 2 0 1k r3 3 0 1k r4 4 0 1k r5 5 0 1k r6 6 0 1k r7 7 0 1k r8 8 0 1k r9 9 0 1k r10 10 0 1k r11 11 0 1k r12 12 0 1k r13 13 0 1k r14 14 0 1k r15 15 0 1k r16 16 0 1k .width out=132 .op .print dc v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) .dc v12 0 10 1 .print dc v(9) v(10) v(11) v(12) v(13) v(14) v(15) v(16) .dc v12 0 10 1 .print tran v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) .tran .5 5 0 .print tran v(9) v(10) v(11) v(12) v(13) v(14) v(15) v(16) .tran .5 5 0 .print ac v(1) v(2) v(3) v(4) v(5) v(6) v(7) v(8) .ac oct 1 1k 8k .print ac v(9) v(10) v(11) v(12) v(13) v(14) v(15) v(16) .ac oct 1 1k 8k .end tests/s_tr.1.ckt000066400000000000000000000003201316501211100140130ustar00rootroot00000000000000'c check v1 1 0 dc pulse(0 1 0 .01 .01 1k 1k) ac 1 r1 1 2 1 c2 2 0 1 .list .print tran v(1) v(2) .tran .1 1 0 trace all .tran trace all .tran .1 5 4 .tran .1 9 8 trace all .tran trace all .status notime .end tests/s_tr.2.gc000066400000000000000000000001461316501211100136320ustar00rootroot00000000000000spice .option list v1 (1 0) pulse (0 1) .print tran v(1) .tran 0 1 .1 r1 (2 0) 1 .tran trace all .end tests/s_tr.3.gc000066400000000000000000000001441316501211100136310ustar00rootroot00000000000000spice .option list v1 (1 0) pulse (0 1) r1 (2 0) 1 .print tran v(1) .tran 0 1 .1 .del r1 .tran .end tests/s_tr.4.gc000066400000000000000000000001341316501211100136310ustar00rootroot00000000000000spice .option list v1 (1 0) pulse (0 1) r1 (2 0) 1 .print tran v(1) .tran 0 1 .1 .tran .end tests/s_tr.5.gc000066400000000000000000000001341316501211100136320ustar00rootroot00000000000000spice .option list v1 (1 0) pulse (0 1) .print tran v(1) .tran 0 1 .1 r1 (2 0) 1 .tran .end tests/s_tr.6.gc000066400000000000000000000001471316501211100136370ustar00rootroot00000000000000spice .option list trsteporder=9 v1 (1 0) pulse (0 1) .print tran v(1) .tran 0 1 r1 (2 0) 1 .tran .end tests/s_tr.6r.gc000066400000000000000000000002761316501211100140240ustar00rootroot00000000000000spice .option list trsteporder=9 v1 (1 0) pulse (0 1) .print tran v(1) timef(v1) errort(v1) eventt(v1) dtr(v1) .tran 0 1 1 trace rejected r1 (2 0) 1 .tran trace rejected .status notime .end tests/s_tr.7.gc000066400000000000000000000001441316501211100136350ustar00rootroot00000000000000spice .option list v1 (1 0) pulse (0 1 .001 .0001) r1 (2 0) 1 .print tran v(1) .tran 0 1 .tran .end tests/sl.ckt000066400000000000000000000013301316501211100133250ustar00rootroot00000000000000nmos n gate Vgs 1 0 3.236734 M1 2 1 0 4 cmosn l= 9.u w= 9.u nrd= 1. nrs= 1. Vds 3 0 5 Rds 2 3 100k Vbs 4 0 -1.234875 .model cmosn nmos ( level=2 vto= 0.844345 kp= 41.5964u gamma= 0.863074 + phi= 0.6 rd= 0. rs= 0. cbd= 0. cbs= 0. is= 0 pb= 0.7 + cgso= 218.971p cgdo= 218.971p cgbo= 0. rsh= 0. cj= 384.4u mj= 0.4884 + cjsw= 527.2p mjsw= 0.3002 js= 0. tox= 41.8n nsub= 15.3142E+15 + nss= 1.E+12 nfs= 3.5934E+12 tpg=1 xj= 400.n ld= 265.073n uo= 503.521 + ucrit= 161.166K uexp= 0.163917 utra= 0. neff= 1.001 kf= 0. af= 1. + fc= 0.5 delta= 0.36745 ) *+(* vfb=-0.4241892 ) * lambda= 0.00906241 vmax= 55.9035K .op *.print dc v(1) v(2) v(3) i(vds) *.dc vgs -10 10 1 .end tests/temp.1.gc000066400000000000000000000007521316501211100136320ustar00rootroot00000000000000spice .MODEL TESTR RES (TC1=1m TC2=0 DEFW=1 RSH=1) .options temperature=37 list R1 1 0 TESTR(w=2, l=4) .print tran r(R1) temp(0) .print ac r(R1) temp(0) .print op r(R1) temp(0) .print dc r(R1) temp(0) .ac 1 .dc .dc temp=400 .ac 1 .tran 0 1 .5 temp=1342 .ac 1 .dc .ac 1 .tran 2 .ac 1 .dc 1000 .ac 1 .dc 0 1000 100 .ac 1 temp=10000 .ac 1 .dc .ac 1 .op .op temp=400 .ac 1 .tran 0 1 .5 temp=1342 .ac 1 .op .ac 1 .tran 2 .ac 1 .op 1000 .ac 1 .op 0 1000 100 .ac 1 temp=10000 .ac 1 .op .ac 1 .end tests/test000077500000000000000000000012701316501211100131140ustar00rootroot00000000000000#!/bin/sh if [ $# -eq 0 ] ; then echo "usage: ./test gnucap \"testcases\" targetdir refdir" echo "usual testcases is \"\", usual refdir is ==" echo "example: ./test gnucap \"\" myversion ==" exit 1 else \mkdir $3 \rm -f $3/$2.diffs for ii in $2*.ckt do echo $ii echo $ii >>$3/$2.diffs $1 -b $ii |tail -n +12 >$3/$ii.out diff -u $4/$ii.out $3/$ii.out >>$3/$2.diffs || echo "**** $ii fails ****" done for ii in $2*.gc do echo $ii echo $ii >>$3/$2.diffs $1 $ii |tail -n +12 >$3/$ii.out diff -u $4/$ii.out $3/$ii.out >>$3/$2.diffs || echo "**** $ii fails ****" done echo done with $1 $2 >>$3/$2.diffs echo done with $1 $2 exit 0 fi tests/test-ignore-case000077500000000000000000000010061316501211100153030ustar00rootroot00000000000000#!/bin/sh if [ $# -eq 0 ] ; then echo "usage: ./test gnucap \"testcases\" targetdir refdir" echo "usual testcases is \"\", usual refdir is ==" echo "example: ./test gnucap \"\" myversion ==" exit 1 else \mkdir $3 \rm -f $3/$2.diffs for ii in $2*.ckt do echo $ii echo $ii >>$3/$2.diffs $1 -b $ii |tail -n +12 >$3/$ii.out diff -ui $4/$ii.out $3/$ii.out >>$3/$2.diffs || echo "**** $ii fails ****" done echo done with $1 $2 >>$3/$2.diffs echo done with $1 $2 exit 0 fi tests/test-ignore-whitespace000077500000000000000000000010061316501211100165240ustar00rootroot00000000000000#!/bin/sh if [ $# -eq 0 ] ; then echo "usage: ./test gnucap \"testcases\" targetdir refdir" echo "usual testcases is \"\", usual refdir is ==" echo "example: ./test gnucap \"\" myversion ==" exit 1 else \mkdir $3 \rm -f $3/$2.diffs for ii in $2*.ckt do echo $ii echo $ii >>$3/$2.diffs $1 -b $ii |tail -n +12 >$3/$ii.out diff -uw $4/$ii.out $3/$ii.out >>$3/$2.diffs || echo "**** $ii fails ****" done echo done with $1 $2 >>$3/$2.diffs echo done with $1 $2 exit 0 fi tests/tran_temp.gc000066400000000000000000000003111316501211100145060ustar00rootroot00000000000000spice .options temp=1 rtemp 2 0 t1 (w=1 l=1) .model t1 r tnom=0 rsh=1 tc2=0 tc1=1 .print tran r(rtemp) temp(0) .tran 0 1 1 temp=2 .tran 0 1 1 .tran 0 1 1 temp=3 .tran 0 1 1 .tran 0 1 1 dtemp=10 .end tests/trcurve.ckt000066400000000000000000000024241316501211100144060ustar00rootroot00000000000000TRANSFER curve tracer, ig-spice * * Sources that we sweep VIN 1 0 1 *VOUT 2 0 5 VBACK 0 6 0 EBACK 7 5 0 6 1 * * power supplies, etc. VDD 5 0 5 * * "ammeters" (fudge) *VPU 3 2 0 *VPD 2 4 0 VPU 3 0 0 VPD 5 4 0 * * active devices MPU 3 1 5 7 CMOSP L=3U W=6U AD=18P AS=18P PD=18U PS=18U MPD 4 1 0 6 CMOSN L=3U W=3U AD=9P AS=9P PD=12U PS=12U * * models .MODEL CMOSN NMOS LEVEL=2 LD=0.265073U TOX=418.0E-10 + NSUB=1.53142E+16 VTO=0.844345 KP=4.15964E-05 GAMMA=0.863074 + PHI=0.6 UO=503.521 UEXP=0.163917 UCRIT=161166 + DELTA=1E-06 VMAX=55903.5 XJ=0.400000U LAMBDA=0.00906241 + NFS=3.5934E+12 NEFF=1.001 NSS=1E+12 TPG=1.000000 + RSH=29.3 CGDO=2.18971E-10 CGSO=2.18971E-10 + CJ=0.0003844 MJ=0.488400 CJSW=5.272E-10 MJSW=0.300200 PB=0.700000 * .MODEL CMOSP PMOS LEVEL=2 LD=0.299878U TOX=418.0E-10 + NSUB=4.19363E+15 VTO=-0.79089 KP=1.64047E-05 GAMMA=0.451645 + PHI=0.6 UO=198.577 UEXP=0.343935 UCRIT=110988 + DELTA=0.956806 VMAX=41456.3 XJ=0.400000U LAMBDA=0.0344407 + NFS=1E+12 NEFF=1.001 NSS=1E+12 TPG=-1.000000 + RSH=107.6 CGDO=2.47722E-10 CGSO=2.47722E-10 + CJ=0.0002281 MJ=0.508000 CJSW=3.077E-10 MJSW=0.193500 PB=0.740000 * .OPTIONS LIMPTS=1000 .print DC V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) .DC VDD 0 5 .1 VIN 0 5 .5 .print DC V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) .DC VIN 0 5 .5 VBACK 0 5 1 .END tests/trcurve2.ckt000066400000000000000000000024361316501211100144730ustar00rootroot00000000000000TRANSFER curve tracer, ig-spice * * Sources that we sweep VIN 1 0 1 *VOUT 2 0 5 VBACK 0 6 0 EBACK 7 5 0 6 1 * * power supplies, etc. VDD 5 0 5 * * "ammeters" (fudge) *VPU 3 2 0 *VPD 2 4 0 VPU 3 0 0 VPD 5 4 0 * * active devices MPU 3 1 5 7 CMOSP L=3U W=6U AD=18P AS=18P PD=18U PS=18U MPD 4 1 0 6 CMOSN L=3U W=3U AD=9P AS=9P PD=12U PS=12U * * models .MODEL CMOSN NMOS LEVEL=2 LD=0.265073U TOX=418.0E-10 + NSUB=1.53142E+16 VTO=0.844345 KP=4.15964E-05 GAMMA=0.863074 + PHI=0.6 UO=503.521 UEXP=0.163917 UCRIT=161166 + DELTA=1E-06 VMAX=55903.5 XJ=0.400000U LAMBDA=0.00906241 + NFS=3.5934E+12 NEFF=1.001 NSS=1E+12 TPG=1.000000 + RSH=0 CGDO=2.18971E-10 CGSO=2.18971E-10 + CJ=0.0003844 MJ=0.488400 CJSW=5.272E-10 MJSW=0.300200 PB=0.700000 * .MODEL CMOSP PMOS LEVEL=2 LD=0.299878U TOX=418.0E-10 + NSUB=4.19363E+15 VTO=-0.79089 KP=1.64047E-05 GAMMA=0.451645 + PHI=0.6 UO=198.577 UEXP=0.343935 UCRIT=110988 + DELTA=0.956806 VMAX=41456.3 XJ=0.400000U LAMBDA=0.0344407 + NFS=1E+12 NEFF=1.001 NSS=1E+12 TPG=-1.000000 + RSH=0 CGDO=2.47722E-10 CGSO=2.47722E-10 + CJ=0.0002281 MJ=0.508000 CJSW=3.077E-10 MJSW=0.193500 PB=0.740000 * .OPTIONS LIMPTS=1000 .print op V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) iter(0) .print DC V(1) V(6) I(VPU) I(VPD) id(MPU) id(MPD) iter(0) .op .DC VDD 0 5 1 VIN 0 5 1 .DC VIN 0 5 1 VBACK 0 5 1 .END tests/trcurves.ckt000066400000000000000000000024111316501211100145650ustar00rootroot00000000000000TRANSFER curve tracer, ig-spice * * Sources that we sweep VIN 1 0 1 *VOUT 2 0 5 VBACK 0 6 0 EBACK 7 5 0 6 1 * * power supplies, etc. VDD 5 0 5 * * "ammeters" (fudge) *VPU 3 2 0 *VPD 2 4 0 VPU 3 0 0 VPD 5 4 0 * * active devices MPU 3 1 5 7 CMOSP L=10U W=10U AD=30P AS=30P PD=26U PS=26U MPD 4 1 0 6 CMOSN L=10U W=10U AD=30P AS=30P PD=26U PS=26U * * models .MODEL CMOSN NMOS LEVEL=2 LD=0.265073U TOX=418.0E-10 + NSUB=1.53142E+16 VTO=0.844345 KP=4.15964E-05 GAMMA=0.863074 + PHI=0.6 UO=503.521 UEXP=0.163917 UCRIT=161166 + DELTA=1E-06 VMAX=55903.5 XJ=0.400000U LAMBDA=0.04531205 + NFS=3.5934E+12 NEFF=1.001 NSS=1E+12 TPG=1.000000 + RSH=29.3 CGDO=2.18971E-10 CGSO=2.18971E-10 + CJ=0.0003844 MJ=0.488400 CJSW=5.272E-10 MJSW=0.300200 PB=0.700000 * .MODEL CMOSP PMOS LEVEL=2 LD=0.299878U TOX=418.0E-10 + NSUB=4.19363E+15 VTO=-0.79089 KP=1.64047E-05 GAMMA=0.451645 + PHI=0.6 UO=198.577 UEXP=0.343935 UCRIT=110988 + DELTA=0.956806 VMAX=41456.3 XJ=0.400000U LAMBDA=0.1722035 + NFS=1E+12 NEFF=1.001 NSS=1E+12 TPG=-1.000000 + RSH=107.6 CGDO=2.47722E-10 CGSO=2.47722E-10 + CJ=0.0002281 MJ=0.508000 CJSW=3.077E-10 MJSW=0.193500 PB=0.740000 * .OPTIONS LIMPTS=1000 .print DC V(1) V(6) I(VPU) I(VPD) id(M*) .DC VOUT 0 5 .1 VIN 0 5 .5 .print DC V(1) V(6) I(VPU) I(VPD) id(M*) .DC VIN 0 5 .5 VBACK 0 5 1 .END tests/u_.doc000066400000000000000000000001011316501211100132710ustar00rootroot00000000000000These files are implicitly tested everywhere. No explicit tests. tests/vs.spice000066400000000000000000000003621316501211100136650ustar00rootroot00000000000000'vs test v1 1 0 5 v2 2 0 pulse 4 7 1 v3 3 0 5 ac 2 pulse 4 7 1 v4 4 0 dc pulse 4 7 1 ac 2 v5 5 0 1 .print dc v(1) v(2) v(3) v(4) .print ac v(1) v(2) v(3) v(4) .print tran v(1) v(2) v(3) v(4) .op .dc v5 1 2 1 .ac oct 1 10 20 .tran 1 2 0 .end