After nearly 15 years building, selling, supporting, implementing, and yes, even using, EDA software - schematic, PCB, FPGA, SIM, SI, etc. - I’m convinced I must’ve missed a meeting somewhere. Slept clean thru it. Perhaps there was a meetup somewhere where would-be entrepreneurs speed-date their way thru 5 minute vet-fests, but it seems, from the collective ether, a whole gaggle of guys cropped with precisely the same idea at exactly the same moment in time...entangled states perhaps. And here I’d fallen asleep, waiting for something to build.
The notion? Build an online schematic and PCB tool.
Led by the likes of Upverter, DesignSpark and others, it’s like waking up in a parallel universe -- though strangely reminiscent of the 80s when desktop EDA SW became all the rage and we were disrupted by the ease and disease these new entrants created in a market dominated by dedicated CAD machines, and legions of guys with scalpel skills to make a surgeon blush (here’s to the Minions of Mylar!).
The premise: to make an online EDA tool. The promise: We can do it better. We can do it cheaper. We can do it smarter. “...It’s time for a change.” The reality? So far a boulevard of broken dreams, unfulfilled promises, and ill-spent VC dollars (that’s your money too folks). Though before we pack it in and sneak out through the bathroom window, all’s not lost. Just misplaced perhaps. And as for that last item: ‘it’s time for a change’ ...this still rings profoundly true. But it’s going to take more than a few years of Javascript experience and a double-E degree to get there.
Sage wisdom: building an EDA tool is hard. And there isn’t a REST API on the planet that’s going to save you. It may get you that next round of funding but the problems of EDA are hardly exclusive to the tools. The concepts are hard. The data models are hard. And teaching people to adopt a new way of thinking about the engineering problem (!) -- that’s the hardest problem of them all.
More background: For years I worked as an FAE (amongst other roles) rocking up and rolling out EDA software in various companies large and small - software that had extraordinary features for collaboration, sharing, managing quality, ensuring compliance, communicating intent (sound familiar?) - and time and time again, saw the promise of these new tools dashed by an inability or unwillingness to adapt to a new way of thinking, a new methodology. Sure, the tools had their share of blunders - not everyone’s a winner - but overall the software was indeed a part of the solution, and evolved into something solid, or in some cases, even spectacular! (few tools truly suck these days)
But it’s this lethal combination of technology and people’s adaptability that *must* intersect, for anyone to be successful evangelizing a new approach. And what you’re endeavoring to do, is a new approach in a market that moves like medicine.
All smoke and no fire
To-date, we’ve been over-promised tools that have seriously, profoundly under-delivered when contrasted against their desktop counterparts...simply stated: they are largely unusable (there, I said it). Sure you can get something together, but would you want to?
And what’s altogether worse is that the self-promotion has only focused and refocused attention on an opportunity that those developing these things seem all too ill-equipped to deliver on.
See, the risk is that the “bridesmaid’s at the karaoke bachelorette party” enthusiasm to be out front, owning the mic & seen changing the world only works if we’re converting on the back-end. If not, the media hype only calls attention to our inability to do this right, and as user enthusiasm wanes, so does the available capital as VCs lose interest and move on to more obvious wins.
The challenge to the anyone endeavoring to build online tools is that minimum viable product is scary-hard. You should know this. So let’s stop talking about changing the world, and figure out how to do it. In this series, I give my two cents on just how to do that...
Level set
Firstly, ask yourselves: Have you ever built electronic products and taken them thru to production? Do you have a sense of what that involves? Truly. (Not bullshit...it’s ok, this is just between you and I ;). Have you ever worked in a PCB fab or assembly house? Have you ever worked on the supply chain side of things and seen that process first hand (not one board, try 5K, 10K, 50K)? Have you ever owned a copy of a top shelf EDA tool and used it extensively to build stuff in a corporate environment? Really gotten under the hood of it? Implemented and had to support it? Learned the reasons behind the features that make some really special, and others tragic.
What about complex enterprise software that involves revision management, sign-offs, etc? PLM tools? ERP tools? Ever built any? Implemented any? Ever had a company’s future success hinge on decisions you’ve made implementing any of these?
See, here’s the deal, don’t pack up! It’s ok. We just need to understand the background around what we’re endeavoring to do. <Reassurance> A little secret: many of the guys building EDA tools hadn’t done a lot of that stuff either until they got into the biz...but over time, they got wise from the guys that had. Your day will come. Just don’t mistake experience for baggage...It can be a fatal mistake.
Solving the hard problems...
Simply put, so far, you haven’t solved (m)any:
How about good schematic wiring? How about drag on schematic? How about complex buses? Complex hierarchy? How about selection and filtering of objects? How about polygons on PCB? Overlapping polys? Pour order? Different connection styles? Split planes? Plane rules? Polygon rules? 2D/3D? Handling images? Logos? The huge numbers of objects you have to display in PCB? Zoom? ...Try it with 400K primitives in the window at a time. Really nailing Gerber and ODB export? It needs to be
100%. How’s your PCB rule system? How about sourcing & supply chain integration? Parts equivalents? Variants? The list goes on.
Now you say you want to do this in a browser? Egads!
And this is to say nothing of high speed or precision RF work, which I won’t even begin to get in to. Match lengths for impedance controlled differential signals spanning multiple layers with series terminations and you’ll know what I’m talking about.
See most of these may seem like corner cases to those that haven’t been around companies with more than a few products, but they’re not. And many of those serious about design need these tools to be successful -- even startups. Or perhaps better: especially startups. Afterall, who will benefit most from free or ultra low-cost tools?
The point is, we need to ease into it. No one likes a cannonballer and you are jumping in right next to the water-aerobics class at the senior’s center.
Stage setting
Throughout this and my follow up article, I’m going to offer some suggestions on how to sequence this thing and how to build kickass online tools for engineering. Flame me if you like, call me a relic, blame me for all that’s wrong in EDA...But you can’t say this: I made EDA profitable. I can.
Pick your battles
Let’s begin with the all-important question ‘does it make sense to do this a browser?’ Or perhaps better: ‘what part of this provides the maximum return to our users if it happens in the browser?’
Browsers are - as you know - tools for people to interact with data and people across vast distances. But ask yourself (or better: ask the users...yeah yeah, I get it...’faster horse’...just bare with me):
Is it truly the ability to route a PCB in a browser that people are after? Or is that a problem we can “get to”?
Even schematic - though this definitely trumps PCB in terms of sequencing:
Was there a pitchfork wielding hoard of folks lined up outside demanding browser based schematic tools?
Of course not. Many people like the idea but that isn’t enough. So what parts of these broader “areas” of design (schematic and PCB) might folks truly want? Where can we make a dent? Where can we create the most value?
That doesn’t mean you abandon the dream, but the things you should do or can do in the browser today - are things that will prepare you for the day when you have the data models worked out and the utility to a level where it rivals desktop tools...And what's more, you can deliver real value today.
Subtext: There’s a lesson in just learning to render something and maintain it’s intelligence...Start there, figure this out for the myriad design styles that people employ and you have a really, really hard problem solved! And we’ll all love you for it. I promise. More importantly, we'll create value.
Who you calling git?
So what was that? You say you want to be the GitHub of electronics design? Awesome. A great place to start. Opportunities abound! Abstraction, sharing, collaboration, reuse! Excellent idea! Let’s start here and build a winning strategy; there’s SO much we can learn by doing this.
Version control tools like git and GitHub, Bitbucket, etc. all built on top of it; facilitate collaboration, sharing, revisioning, reporting, comparison, history management, etc. But more pragmatically, they are a great way for a company or an individual or a group to track products and their dependencies over time. And these are big concepts (ask PTC, Siemens, Dassault, Aras or any of the others feeding their families slinging PLM systems). They mean something to a company who has anything like a history of building products.
Managing the resources engineers use and share and demand along this temporal dimension is a powerful first step on the road toward understanding the data and how best to model it in the browser environment.
Now no use trying to compete with the aforementioned PLM big boys just yet (an exit? perhaps) but rather, let’s build utility that serves engineers. This will build audience. PLM is a big, unwieldy thing to try and bite off...but I promise, PLM providers will gaze longingly, lovingly in your direction if you can peel back the outer shell that is the black box of electronics. They have all tried to varying degrees of success to unlock the electronics and model them correctly and anyone that ventures in this direction is sure to get noticed.
What’s in it for me?
The average Joe - of which I am one of them - could use really good online markup, sharing, collaboration, history / revision management, etc. tools for managing schematic content and communicating intent (it may not be obvious to folks just yet, but hang in there). But also consider, Version Control possesses the ability to compare, merge, roll back, etc. And hooks to generate notifications, what-not. Sprinkle in really good navigation tools and back-end integration with the systems we’re already using, and you begin to see a narrative unfolding (i.e. I don’t change compilers to use git, I bring git to the IDE).
Is there money in there somewhere?
There are at least two business models in there (and real value) that are either not served, underserved, or perhaps overserved by big, unwieldy enterprise software.
Looking at what you’ve got today, ask yourselves: Can I check in design content? “Yes.” Great. Can I view it? “No...or kinda. Some.” Ok. Fail. Let’s figure out how to render EDA content in a browser. Graphics on screen. And let’s do this while maintaining a minimum of intelligence.
What’s a minimum you ask?
Nets and parts and parameters. Start with schematic and work forward from there. Schematic is good for now.
Can you read an OrCAD schematic? “Nope.” Why? “It’s a hard file format to crack.” I know. Crack your knuckles, grab your favorite hex editor and pull up a chair...Someone’s going to be here for a while.
Can you import an Altium file? If not, why not? That’s not as hard and probably number two in terms of popularity behind OrCAD schematic. And of course, there’s Eagle and KiCAD. (Must-haves if you want to service a market that has really made a career out of free or low-cost software tools. These will be your biggest fans when you crack the code on a really awesome online package.)
But don’t stop there...What about PDF content? Can you crack that code?
You’re going to work toward a normalized format but don’t let this be a barrier to getting things to display and getting some level of intelligence into the browser. Get it to display. Keep the BOM intelligence behind it and parameters and net detail. Fake it. You don’t need to or want to try to infer net intelligence any more than you have to and this is a nice, straightforward(-ish) way to do it (ok, some formats don’t have nets in the files - they're generated after the file loads - so you’ll need to figure it out after you read and process the data...it’s a hard problem. But remember, we’re solving hard problems now.)
Make it possible to inline schematics into forum posts and blogs. Think Wordpress widget. Make it intelligent enough that the application schematic in datasheets are living, breathing things with more than one-dimensional intelligence to them. Link SPICE netlists to the back end and allow it to run simulations from the content you supply (albeit limited in it’s practical intelligence, this is just another document behind it). Berkeley and XSPICE engines are both freely available. Do that? And you have something special! Magical!
<Applause>
This makes datasheets pop. Imagine simulating in the document. Curves that actually display as interactive elements. Manufacturers will sit up and take notice. It makes the social web come alive with content that as yet, is flat and stupid. People will take notice. Make it searchable by crawlers. Make sense of the data! Search engines will take notice.
<More applause>
Now another important feature of this is versioning and like software, we have a hierarchy of dependencies we can do cool and interesting things with. e.g. Schematics contain parts, which contain pins, parameters, whathaveyou...And all of this can be modeled as a series of things to be versioned (if you want to get really fancy).
In its simplest form, treat it all the same (flat) and solve the problem of comparing two schematics or two pcbs to one another...Or two library components. If you want to get kung fu about it, maintain the hierarchy of elements and assign revisions that span the hierarchy with tags relating each dependent item to the higher order elements. That? Oh that’s awesome stuff. PLM providers and users alike should (& would) sit up and take notice.
Heroes are born.
Now, we don’t stop there...We’re just getting started. In my next piece, we’ll look at the move from this first-line functionality into other more interesting areas. Things like file conversion, models for socializing circuits across the open web, higher abstractions, and a whole heap of other things that will take us forward in a direction that means we have the intelligence right before we attempt full-fledge schematic-in-a-browser. It’s not that far off, but I would hope that if we sequence things right, when you get there, there’ll be far fewer disappointed users, angry VCs, and misled media lined up behind it. And it may turn out that many of those “hard things” don’t really matter at all...If you have the users behind you.
We’ll get there. Patience.
Promise.
matt b. / tlm - may, 2014
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.