“Verilog and VHDL are the most natural and efficient ways for me to express my design intent.” — No one. Ever.
Whether we’re doing FPGA or ASIC design, or programming the latest DSP, most of us don’t start out our project with regular hardware description languages. In fact, if we’re developing or tuning an algorithm, or if we’re somehow applying math to our problem, a great many of us do the early work in MATLAB. It makes sense. For translating mathematical ideas into specific algorithms, and verifying the performance of those algorithms on early data sets, MATLAB is worlds more productive than jumping straight into the design of hardware, or even into C/C++ coding.
But, as effective as MATLAB is as an electronic design tool, it has many other roles to fill – from helping students with physics homework to analyzing railroad bridges. Because of that breadth, it can be easy to forget that it’s one of our most powerful and valuable design automation tools – even though it doesn’t come from a traditional EDA company.
MathWorks as an EDA player is an interesting story. Of course, we all know MATLAB as a power tool for “people who do math.” That’s a pretty big swath, it turns out. A few years ago, the company noticed that MATLAB was really popular among a particular high-value set of customers (that would be all of us in the electronic engineering world), and that those customers would pay big bucks for high-value tools. At that time, MATLAB pricing was something like a 3-digit number. So, the company did what any of us would do when we find out our 3-digit product is really popular with a 6-digit crowd – they made a gold-plated, autographed, limited edition!
OK, not really. They actually did something much more helpful than that. They worked really hard to understand the challenges that were faced by electronic designers, and they augmented their offering to cater specifically to that crowd. Soon, people were prototyping DSP designs with Simulink, generating HDL code automatically to feed into FPGA and ASIC design flows, and generally using MathWorks products as the front-end of their development process. It’s possible that this didn’t sit that well with traditional EDA companies who were engaged in a decades-long battle to “own” the front end of the design flow. Just when EDA thought they knew the rules of the game, a new kid came in and started breaking their assumptions.
Because MathWorks is still well aware that even the venerable MATLAB is an EDA tool, the company spends a considerable amount of time and resources making sure that their suite of solutions – from MATLAB to Simulink (as well as all of the model-based design plug-ins and IP) are up to the task of supporting the electronic design flow.
Usually, we write about the more engineering-specific aspects of the MathWorks arsenal such automatic HDL generation or Simulink features, but the latest version of MATLAB, Release 2016a, has some nice improvements that could come in really handy on your next design project.
First on the list is a new “Live Editor” that brings code development, execution, and debugging/analysis all into one environment. Cross-probing is built in that correlates output with the code that caused it, much like we’re used to with trace windows in HDL simulators. Results and graphics are shown adjacent to the code that generated them so we can find that, uh, one little thing we messed up – much faster than in the past. Live Editor also creates a seamless environment for documentation and coding that allows hypertext, equations (translated into real mathematical notation, even), images, and hyperlinks to be merged into a single narrative document that is simultaneously documentation, source code, and results.
Behind the scenes, there is a whole new graphics system behind MATLAB that gives an improved look to the output with a new default colormap and line colors as well as clean-ups such as anti-aliased fonts and lines. The company says the new subsystem makes the graphics easier to customize, and it has an array of new features for customizing output – including polar plots, multiple y-axis plots, and various functions for plotting expressions and equations.
Second, maybe less relevant in the typical electronic design flow, is a new “App Designer” that dramatically simplifies the process of developing a reusable app from your MATLAB creation. App Designer includes a library of handy UI widgets and an object-oriented environment that make quick work of turning code into a real app. Apps can be exported, shared, and even executed by people who don’t have MATLAB installed.
Third, and maybe most significant for some of us, MATLAB is considerably faster, both in raw execution speed (the company says it benchmarks 40% faster on a suite of 76 performance-sensitive applications) and in overall productivity, owing to just-in-time compilation and the improved development environment. The company says many object-oriented features are faster, and even some element-wise operations have been sped up.
For those who wanted more performance because their program would go away for a LONG time crunching numbers, there is handy new “pause” button that stops execution wherever it happens to be at the moment, just as if you’d dropped a breakpoint at that spot. You can then do all of the expected break-pointy things like examine and set variables, single-step, and generally find out why the heck your code was taking so long. Oh, and then you can resume, of course, so you aren’t throwing away all the work it already did.
Finally, did you know that there was a repository handy for toolboxes, apps, functions, models, and hardware support packages – supplied both by MathWorks themselves and by the user community? Yeah, it turns out a lot of other people didn’t know that either. So, the company has created a new Add-On Explorer that will put that useful stuff front-and-center and make it easier to browse and locate things that will reduce your workload. Oh, and you can share stuff here too, if you’re a sharing kind of engineer.
On top of the major new features, there is a host of additional new toolboxes such as a Neural Network, Symbolic Math, Statistics and Machine Learning, Control Systems, Image Acquisition, and Trading (in case you’re using MATLAB for investment advice as well as electronic design). There is also a strong list of improvements to Simulink, including an automatic solver option, a capability for simulation of system models targeting Xilinx and Altera SoC FPGAs, and units to specify, visualize, and check units at interfaces of Stateflow and Simscape components. The Embedded Coder, HDL Coder, and HDL Verifier also boast some updates and upgrades.
Release 2016a is available now, so we’ll probably get busy installing our copy right away.