From its homepage:
Magic is a venerable VLSI layout tool, written in the 1980’s at Berkeley by John Ousterhout, now famous primarily for writing the scripting interpreter language Tcl. Due largely in part to its liberal Berkeley open-source license, magic has remained popular with universities and small companies. The open-source license has allowed VLSI engineers with a bent toward programming to implement clever ideas and help magic stay abreast of fabrication technology. However, it is the well thought-out core algorithms which lend to magic the greatest part of its popularity. Magic is widely cited as being the easiest tool to use for circuit layout, even for people who ultimately rely on commercial tools for their product design flow.
I asked John Ousterhout (Magic’s author) to ask why it got its name. His reply? He liked the sound of it! Ah the good old days of choosing a name without thinking of search engines…
When you’re searching for help on how to use Magic, always include VLSI as a search term!
Magic is a very capable tool:
- draw transistors and build them into standard cells
- extract the netlist that can then be used for simulation or LVS
- work with large numbers of designs in hierarchy
- apply and check DRC rules
It’s quite dated in its user interface, which takes a while to get used to.
It has a fairly decent tutorial here
I would say it’s worth learning how to navigate a design but probably you won’t be doing much actual layout with it. A tool like OpenLane in combination with the Skywater PDK automates a lot of it.
An alternative tool for viewing files associated with chip design is klayout
The part I enjoyed the most was going back to the Verilog and seeing test benches pass. In particular the waveform viewer. At the latter parts of course you're simulating the entire Caravel system on chip with a RISCV core. Being able to drill down into everything inside that core, I can log the program counter, I can log all the address and data buses and you can just see in exquisite detail what the system is doing, and it's doing that because I programmed it. Being able to drill down into that detail was really fascinating.