Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Magic (software)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{More citations needed|date=April 2022}}{{Short description|Historical VLSI IC layout editor}} {{about|the VLSI tool|the rapid application development tool|Magic Software Enterprises}} {{Infobox software | name = Magic | logo = | screenshot = | caption = | collapsible = | author = [[John Ousterhout|John K. Ousterhout]], Gordon T. Hamachi, Robert N. Mayo, Walter S. Scott, George S. Taylor | developer = Magic Development Team | released = {{Start date and age|1983|04}} | discontinued = | latest release version = 8.3.479 | latest release date = {{Start date and age|2024|05|08}} | status = | repo = https://github.com/RTimothyEdwards/magic | programming language = [[C (programming language)|C]] | operating system = [[Linux]] | platform = | size = | language = English | genre = [[Electronic design automation]] | license = [[BSD license]]<ref>http://opencircuitdesign.com/magic/archive/papers/copyright.pdf {{Bare URL PDF|date=March 2022}}</ref> | website = {{url|opencircuitdesign.com/magic/}} | frequently updated = }} [[Image:Inverter Layout - Magic.png|right|300px|thumb|VLSI layout of an inverter circuit using Magic software]] '''Magic''' is an [[electronic design automation]] (EDA) layout tool for [[very-large-scale integration]] (VLSI) [[integrated circuit]] (IC) originally written by [[John Ousterhout]] and his graduate students at [[UC Berkeley]] as part of [[VLSI Project]]. Work began on the project in February 1983. A primitive version was operational by April 1983,<ref>[http://www2.eecs.berkeley.edu/Pubs/TechRpts/1983/CSD-83-154.pdf A Collection of Papers on Magic].</ref> when Joan Pendleton, Shing Kong and other graduate student chip designers suffered through many fast revisions devised to meet their needs in designing the SOAR CPU chip, a follow-on to [[Berkeley RISC]]. Fearing that Ousterhout was going to propose another name that started with "C" to match his previous projects ''Cm*'', ''Caesar'', and ''Crystal'', Gordon Hamachi proposed the name ''Magic'' because he liked the idea of being able to say that people used magic to design chips. The rest of the development team enthusiastically agreed to this proposal after he devised the [[backronym]] '''M'''anhattan '''A'''rtwork '''G'''enerator for '''I'''ntegrated '''C'''ircuits. The Magic software developers called themselves magicians, while the chip designers were Magic users. As [[free and open-source software]], subject to the requirements of the [[BSD license]], Magic continues to be popular because it is easy to use and easy to expand for specialized tasks. ==Differences== The main difference between Magic and other VLSI design tools is its use of "corner-stitched" geometry, in which all layout is represented as a stack of planes, and each plane consists entirely of "tiles" (rectangles). The tiles must cover the entire plane. Each tile consists of an (X, Y) coordinate of its lower left-hand corner, and links to four tiles: the right-most neighbor on the top, the top-most neighbor on the right, the bottom-most neighbor on the left, and the left-most neighbor on the bottom. With the addition of the type of material represented by the tile, the layout geometry in the plane is exactly specified. The corner-stitched geometry representation leads to the concept of layout as "paint" to be applied to, or erased from, a canvas. This is considerably different from other tools that use the concept of layout as "objects" to be placed and manipulated separately from one another. Each concept has its own strengths and weaknesses in terms of both practical use and speed of computation. The corner-stitched representation is particularly well suited to searches within a single plane, for which it excels in speed. It is not particularly well suited to extremely large databases: The need to maintain four pointers for each tile, as well as the need to store tiles representing the space between areas of material on a layout, makes it more memory-intensive than object-based representations. An extension to the corner-stitched geometry representation called the "split tile" method, added in version 7.1, allows true representation of non-[[Manhattan distance|Manhattan]] geometry. This method allows each tile in the database to specify two material types, in which case the tile is regarded as being bisected by a diagonal line from corner to corner, with one material type on one side of the diagonal and the other material type on the other side of the diagonal. An additional flag specifies whether the diagonal runs from the top left corner to the bottom right, or the top right corner to the bottom left. The split-tile method has the advantage that nearly all rules that apply to corner-stitched geometry apply, unaltered, to split tiles. A further advantage is that all non-Manhattan geometry must have corners lying on the database internal grid. This makes it impossible to generate geometry that is off-grid within a single plane, a rule error for most fabrication processes that is a common problem with object-based representations. === Design rule checking === Magic features real-time [[design rule checking]], something that some costly commercial VLSI design software packages don't feature. Magic implements this by counting distance using [[Manhattan distance]], which is much faster to compute than [[Euclidean distance]]. Magic versions from 7.3 properly compute Euclidean distance when given the <code>drc euclidean on</code> command. Euclidean distance checks are a trivial extension of the Manhattan distance checks, and require very little overhead. On a straight-line edge, the Manhattan and Euclidean distances are the same. Only on corners do the two distances diverge. When checking corners, it is only necessary to keep track of the direction of search from the corner point. Any geometry found inside the square representing the Manhattan distance from the corner undergoes an additional check to see if the same geometry lies outside the quarter-circle radius representing the Euclidean distance. Since this additional check is applied only to geometry found in violation of the Manhattan distance rule, it is not invoked often, so the computational overhead is very small. Magic currently runs under [[Linux]], although versions exist for [[DOS]], [[OS/2]], and other [[operating systems]]. Magic is frequently used in conjunction with [[IRSIM]]<ref>[http://opencircuitdesign.com/irsim/ IRSIM switch-level simulator]</ref> and other [[electronic circuit simulation|simulation programs]]. == Internals == It uses [[Tcl/Tk]] under the hood.<ref>{{Cite web |title=Magic Development |url=http://opencircuitdesign.com/magic/develop.html |access-date=2022-04-27 |website=opencircuitdesign.com}}</ref> == File formats == === Importing and exporting === * Magic supports [[Caltech Intermediate Form|CIF]]/[[Calma]] [[GDSII|GDS]] files. == See also == * [[XCircuit]] * Netgen ==References== {{Reflist}} ;Notes {{Refbegin}} * {{cite journal |first1= John K. |last1= Ousterhout |first2= Gordon T. |last2= Hamachi |first3= Robert N. |last3= Mayo |first4= Walter S. |last4= Scott |first5= George S. |last5= Taylor |title= A Collection of Papers on Magic |journal= EECS Department University of California Berkeley Technical Report No. UCB/CSD-83-154 |date= December 1983 |url= https://www2.eecs.berkeley.edu/Pubs/TechRpts/1983/5295.html }} * {{cite journal |first= John K. |last= Ousterhout |title= Corner Stitching: A Data-Structuring Technique for VLSI Layout Tools |journal= IEEE Transactions on Computer-Aided Design |volume= 3 |issue= 1 |date= January 1984 |pages= 87β100 |doi= 10.1109/TCAD.1984.1270061 |s2cid= 25136284 |url= http://techreports.lib.berkeley.edu/accessPages/CSD-83-114.html |url-access= subscription }} * {{cite book |first1= John K. |last1= Ousterhout |first2= Gordon T. |last2= Hamachi |first3= Robert N. |last3= Mayo |first4= Walter S. |last4= Scott |first5= George S. |last5= Taylor |title= 21st Design Automation Conference Proceedings |chapter= Magic: A VLSI Layout System |chapter-url= http://dl.acm.org/citation.cfm?id=800790 |issue= 21st |date= 1984 |pages= 152β159 |isbn= 0-8186-0542-1 |publisher= IEEE Press |location= Piscataway, NJ |doi= 10.1109/DAC.1984.1585789 |s2cid= 6833511 }} * {{cite book |first1= George S. |last1= Taylor |first2= John K. |last2= Ousterhout |title= 21st Design Automation Conference Proceedings |chapter= Magic's Incremental Design-Rule Checker |chapter-url= http://dl.acm.org/citation.cfm?id=800791 |issue= 21st |date= 1984 |pages= 160β165 |doi= 10.1109/DAC.1984.1585790 |isbn= 0-8186-0542-1 |s2cid= 13191340 }} * {{cite book |first1= W.S. |last1= Scott |first2= John K. |last2= Ousterhout |title= 21st Design Automation Conference Proceedings |chapter= Plowing: Interactive Stretching and Compaction in Magic |chapter-url= https://www.researchgate.net/publication/4218441 |issue= 21st |date= 1984 |pages= 166β172 |doi= 10.1109/DAC.1984.1585791 |isbn= 0-8186-0542-1 |s2cid= 6004870 }} * {{cite book |first1= Gordon T. |last1= Hamachi |first2= John K. |last2= Ousterhout |title= 21st Design Automation Conference Proceedings |chapter= A Switchbox Router with Obstacle Avoidance |chapter-url= http://dl.acm.org/citation.cfm?id=800033.800793 |issue= 21st |date= 1984 |pages= 173β179 |doi= 10.1109/DAC.1984.1585792 |isbn= 0-8186-0542-1 |s2cid= 12525813 }} * {{cite journal |first1= Walter S. |last1= Scott |first2= John K. |last2= Ousterhout |journal= IEEE Design & Test of Computers |title= Magic's Circuit Extractor |url= https://www.researchgate.net/publication/221061372 |issue= 22nd |volume= 3 |date= 1985 |pages= 286β292 |doi= 10.1109/MDT.1986.294914 }} {{Refend}} ==External links== {{Portal|Free and open-source software}} * [http://opencircuitdesign.com/magic/ Magic VLSI Layout Tool] * [http://bwrc.eecs.berkeley.edu/Classes/IcBook/magic/index.html Magic], Man Pages & Tutorial * [http://embedded.eecs.berkeley.edu/pubs/downloads/magic/ Magic], Old version * [http://opencircuitdesign.com/irsim/ IRSIM] * [http://students.ceid.upatras.gr/~gef/projects/vlsi/ask4/fa16.mag.gif VLSI Layout of 16 bit Full Adder using Magic software] {{CAD software}} {{DEFAULTSORT:Magic (Software)}} [[Category:Integrated circuits]] [[Category:Free computer-aided design software]] [[Category:Electronic design automation software for Linux]] [[Category:Software using the BSD license]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:CAD software
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox software
(
edit
)
Template:More citations needed
(
edit
)
Template:Portal
(
edit
)
Template:Refbegin
(
edit
)
Template:Refend
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)