A toolbox for embedded software engineers
It’s fascinating that we have so many software tools available at our fingertips. As an engineer I have always tried to make full use of these tools to better organize my life and perform my tasks. Touchstone has been very open to new ideas and ways to do things better, which has been very encouraging to further refine my software toolkit. So I would like to share a few of the software from my toolkit here.
Being a circuits enthusiast, I have always wanted to have and use a personal SPICE program right on my personal laptop. Ngspice is my choice for this. This is very actively developed and maintained open-source SPICE simulator. It has recently added PSS analysis which is normally found in the commercial Spectre simulator. It has full scripting support as well as support for verilog and user defined models. It is also available as a dynamic library so you can make your own program around it. Ngspice’s website has many resources and links to programs that can be used to enter schematics and to look at simulation results. Ngspice is platform independent, so whether you are a Linux fan or use Windows, you can use Ngspice easily.
For my board level projects I have often used KiCAD. This is another free open-source package which comes with its own schematic editor, component editor and PCB designer. I really like the PCB design tool for its usability enhancements like net names on the layout tracks! It also has 3D viewing capabilities of the populated PCB which may also be exported to a 3D CAD software like Sketchup to design the enclosure for the board. Recently KiCAD added Python scripting so you can write Macros in Python and run them. KiCAD is a cross-platform tool and works easily on Windows, Linux and Mac.
Toped is an open source layout editor I have used to view and edit layouts of ICs. It supports GDS, OASIS and CIF formats. It comes with its own scripting language, which I have not used. This software comes very handy when I want to look at a GDS file on my personal laptop, or make edits on a layout for better documentation and communication.
Maxima is an open-source computer algebra system which I have used on numerous occasions to solve algebraic equations of the circuits I design. It solves the equations in a snap which would otherwise take me hours to do and would be very error prone. It allows you to do symbolic as well as numerical Math and you can write full scripts in Lisp language to process a complex problem which I have done before. Again Maxima is platform independent and has a large and active community of users and developers.
Very often you need a Math package to process numeric data. For example taking transforms, plotting, etc. For this I have used Matlab, Scilab and Octave. Scilab is a good, extensive, free, open source tool, Octave is very handy since it uses the Matlab syntax so most Matlab scripts need very little or no modification. The nice thing about Scilab and Octave is that they are both free and open source. Although currently I am using GSL-Shell for my math processing needs. This is a relatively new tool and does not have a large community. But I like it because it is well designed and is based on the Lua scripting language, which makes it versatile, extremely fast (almost as fast as a native C code). I have used GSL-Shell to process circuit simulation data and found it quite easy to pick up.
The Lua language itself is also in my software toolkit. Lua is extremely fast in execution (nearing execution speed of compiled C when you use its JIT engine), yet is extremely easy to learn and use. In spite of its simplicity it’s possible to do highly advanced programming in Lua which would make your head spin to do in C/C++. Lua runs on Android, iPhone, Windows, Linux, Mac etc. It is used in places like NASA, Google and Adobe and is highly used in the video game industry because of its speed.
All engineers need to record and later recall notes and data. Most engineers prefer a real notebook and a pen but for me it’s TiddlyWiki. Tiddlywiki is an excellent self-contained wiki ready to use out of the box. It is a HTML file that opens in a browser and edits right in there so it is totally platform independent and works on desktops and even your smart phone. The advantage of using this over pen and paper is that you can link and cross link stuff very easily. So your notes become a web of connected information, much like how it is stored in your brain. It also becomes easy to backup and carry with you wherever you go. Tiddlywiki has a big community and hundreds of plugins to do almost anything you can imagine you might want to do with such a software.
It is often required to make diagrams and flowcharts when doing documentation. Dia is an excellent open source software to do that. Its installation packages are available for Linux, Windows and Mac. It also allows scripting and automation by using Python for those of you who know Python programming language. I use Dia to create block diagrams, etc.
Inkscape is a useful open-source tool to create drawings and artwork for presentations or websites. If creates files as Scalable Vector Graphics (SVG) so they can be resized without loss of resolution. . If you are good with Microsoft Paint, then you will quickly be able to create professional quality images for your presentations with Inkscape.
Engineers are exposed to PDF documents nearly every day. PDFfill is not free or open source but it is very good and not too expensive at $20. It is good for editing text, annotations and drawings in a PDF.
Jarnal is a handwriting note application that I find very useful when I want to take notes right on the PDF instead of having to maintain the PDF and notes separately. With my tablet digitizer pen I can take notes directly on top of the PDF. Jarnal is Java software so it’s cross platform, open source and free. Jarnal also comes in handy if I want to create notes with hand drawn schematics quickly.
These days most of us have multiple phones, tablets, laptops, etc., and to keep the data synchronized between all can be a nightmare. FreeFileSync is an excellent folder synchronization program. It is really fast in comparing hundreds of thousands of files and syncing them. You can create sync profiles and just execute them to sync 2 connected devices. It is open source and cross platform.So these were some of the software tools I use to help make my life easier and more efficient. I would love to hear about other Software tools that you think are great.EDN Magazine.