[HN Gopher] Julia receives DARPA award to accelerate electronics...
       ___________________________________________________________________
        
       Julia receives DARPA award to accelerate electronics simulation
        
       Author : jonbaer
       Score  : 442 points
       Date   : 2021-03-11 16:19 UTC (6 hours ago)
        
 (HTM) web link (juliacomputing.com)
 (TXT) w3m dump (juliacomputing.com)
        
       | pmuk wrote:
       | So the machines are gonna start building the machines?
        
         | ChrisRackauckas wrote:
         | That's the plan. Don't worry, what could go wrong?
        
         | whaaswijk wrote:
         | With current EDA tools they already are :-)
        
       | kumarvvr wrote:
       | Can anyone explain the potential benefits of accelerating
       | electronics simulation?
       | 
       | Do they want to generate efficient FPGA programs?
        
         | hctaw wrote:
         | Accelerate doesn't just mean 'run faster' but 'write models
         | faster.' It's about reducing time to market and overhead for
         | design verification, which is a massive time and money sink in
         | the industry today.
        
         | kurthr wrote:
         | Because all modern computer chips and electronic systems (e.g.
         | PCBs) rely on electrical simulation for design and build.
         | Typically, these are SPICE based simulators, which are open
         | source and quite old in their methods (you literally set
         | convergence requirements and step times).
         | 
         | FPGAs are already digital... meaning that although they (FPGAs)
         | have to be simulated when they are designed, their purpose is
         | digital simulation. Programs are at their heart a discrete
         | digital simplification of the underling electrical operation
         | for the purpose of increasing reliability and allowing greater
         | design complexity.
        
           | eternauta3k wrote:
           | Open source? Isn't everyone using Spectre or Eldo?
        
             | kurthr wrote:
             | which are built on BSD licensed SPICE at Berkeley: "SPICE
             | (Simulation Program with Integrated Circuit Emphasis) is a
             | general-purpose, open-source analog electronic circuit
             | simulator."
             | 
             | https://en.wikipedia.org/wiki/SPICE
             | 
             | Also see HSPICE, pSPICE, LTspice...
        
         | KenoFischer wrote:
         | Our particular project is about analog simulation, though DARPA
         | is also funding surrogate modeling efforts in the digital
         | domain. On analog in particular, one significant impetus is
         | speeding up mixed signal simulations, since digital simulators
         | (in terms of seconds of execution simulated per seconds of
         | simulation time) are much faster than analog simulators, so if
         | you want to do a mixed signal simulation, you're generally
         | running it at the speed of analog simulators. For end-to-end
         | simulation, it would be much nicer if you could bring up the
         | speed of the analog simulators to be comparable to the digital
         | simulators. Of course there is a question of how much accuracy
         | you're paying (and we're still finding out what the tradeoff
         | is), but in the kinds of simulations where this comes in, your
         | actually often ok with losing some accuracy, since you can
         | always get some noise coupled into the analog portion, so your
         | control electronics should be robust to slightly weird analog
         | signals anyway.
        
           | ThJ wrote:
           | i've had a lot trouble with analog simulations in SPICE. they
           | often fail to converge or run incredibly slowly. i do a lot
           | of audio circuitry. the speedups addressed here could
           | potentially make it possible to simulate audio circuits in
           | real time. suppose you feed a signal in via an audio
           | interface, pass it through your analog processing circuitry
           | and play it back in real time. the design cycle would be so
           | much faster.
        
             | KenoFischer wrote:
             | We are working on improvements to the baseline simulator
             | also (or rather we basically get them for free because they
             | are part of our core simulation engine), so hopefully that
             | should address some of the first order usability issues in
             | SPICE simulations. For these kinds of design applications,
             | the ML-based speed up may or may not work, since you do
             | have to spend time training the surrogate. You can often
             | re-use pieces of if, but depending on what kind of
             | manipulations you're doing to the model you're
             | surrogatizing, it may or may not help if you're changing
             | the circuit after every simulation.
        
               | ptarmigan wrote:
               | Sorry if you've already clarified, but is this meant to
               | replace or augment traditional SPICE simulators? I
               | remember Ken Kundert mentioned that, even with the
               | improvements of Spectre over SPICE-based simulators, it
               | took things like SpectreRF's oscillator phase noise
               | modeling to get analog designers to consider changing
               | their ways. Their steadfast use of SPICE is "a form of
               | Stockholm Syndrome," in his own words.
        
               | KenoFischer wrote:
               | Our plan is to build both some extremely sophisticated
               | analog design tooling that improves the state of the art
               | (by leveraging our existing investments in modeling &
               | simulation from other domains to build a clean simulator
               | implementation) and then have the ML acceleration be an
               | optional "one more thing" that can be used where
               | applicable. Of course the first part is a major
               | undertaking, so we're talking to potential customers to
               | see what particular thing to start with that would really
               | get them to consider using our system. That is
               | independent of the DARPA-funded work though, which is
               | particularly on the ML side (closely aligned of course).
        
             | ThJ wrote:
             | speaker frequency response simulations will sometimes use
             | an equivalent electronic circuit. it could help design
             | better speakers. any time you interface digital circuitry
             | with the real world, hybrid circuitry is used. also, with
             | this increased processing capacity, you could be looking at
             | simulating the parasitic properties of components, not just
             | ideal versions of them.
        
             | ThJ wrote:
             | many sims use some variety of SPICE and some convergence
             | algorithm a-la Newton's method to discover the voltages and
             | currents at the nodes. simulating a system where every
             | single component runs in parallel with every other
             | component isn't easy.
        
       | ericmay wrote:
       | How are Julia Computing and Julia the programming language
       | related? Is it similar to R and R Studio in a way?
        
         | KenoFischer wrote:
         | See here: https://julialang.org/blog/2019/02/julia-entities/
        
           | ericmay wrote:
           | Thank you!
        
       | oxinabox wrote:
       | This seems very promising to me One big part of circuit
       | simulation is solving differential equations. That's the whole
       | inducer, resistor, capacitor thing. Julia has hands down the best
       | toolkit for differential equation solving. Most circuit
       | simulators today are going to be using old methods invented in
       | the 60's-80's. Neglecting the state of the art developments.
       | 
       | Someone made a blog post recently comparing the time to simulate
       | with LTSpice vs writng and solving the system in Julia
       | https://klaff.github.io/LTSvDEQ_1.jl.html this is a _very_ simple
       | circuit, and they still got a 100x speed up. Sure that is
       | neglecting the time it takes to actually extract the differnetial
       | equetion from the circuit. But from what i hear that kind of
       | thing is something this DARPA project will be working on. And
       | sure LTSpice isn 't state of the art. But still I find this
       | indicative and promising.
        
         | bravo22 wrote:
         | The problem is a lot of the models you use are black box
         | characterized models and not differential equations. I don't
         | mean Julia won't speed things up a lot and won't be helpful but
         | your point about modern sim tools using old techniques is not
         | true. Simulation RCL in semiconductors is a huge business where
         | customers have been paying a lot for faster solutions.
        
           | oxinabox wrote:
           | fair enough. I can't say i've seen inside how things things
           | are made. Julia definately has cutting edge for DEs. I doublt
           | LTSpice does, but ORCAD etc might.
        
         | JHonaker wrote:
         | Not only that, but the LTSpice solution was incorrect, and the
         | Julia solution was correct.
        
         | m-ee wrote:
         | As someone that actually uses LTSpice I've never considered
         | speed to be an issue. The main draws for it are
         | 
         | 1. It's free unlike Altium addons or orcad p-spice
         | 
         | 2. Graphical, I'm happy to code things but code literacy varies
         | widely among EEs. Much easier to share results when it looks
         | like a schematic
         | 
         | 3. Good enough component library. The time spent finding and
         | inputting component parameters are gonna be way bigger than any
         | savings on the actual computation
         | 
         | I mostly work on small embedded systems boards and use
         | simulation to probe behavior of analog sub systems I'm
         | concerned about, rather than simulating the whole board. Maybe
         | more complex designs get more like CFD models where computation
         | time is measured in hours or days. Would love to see someone
         | use this as a backend for an alternative to the major spice
         | programs, LTSpice UI isn't exactly pleasant, and is unusable on
         | Mac so it wouldn't take a whole lot to get me to switch.
        
           | oxinabox wrote:
           | 1. yeah these are super expensive. Even the cheaper ones are
           | close to a grand a liscense 2. definately got to have a
           | front-end. Writing netlist by hand is suffering. 3.
           | Interestingly (to me) the components are more or less
           | portable between them. With only a little manual writing i
           | have translated components from ORCAd p-spice, to ISpice, to
           | LTSpice. No idea on the liscensing for that. (I suspect the
           | IC manufacturers produce these)
           | 
           | I think speed is very much a question of what kind of thing
           | you are doing. I agree it often doesn't matter. and without
           | your 3 points, it certainly doesn't matter
        
           | willis936 wrote:
           | LTSpice is my go-to circuit simulator, but I have spent weeks
           | of my waking life waiting on it to run simulations. My
           | current demon is simulating a 1 MW DC power supply to
           | validate current output smoothing solutions in low load
           | scenarios. The topology is a delta-delta and delta-wye
           | transformer, each feeding a summing bridge rectifier, the two
           | rectifiers have their negative legs tied together and the
           | positive legs are the outputs.
           | 
           | I only simulate one pulse (about 3 ms), but the simulation
           | takes minutes to resolve the inrush. Tuning circuit
           | impedances to match measurement is a real pain. At this point
           | I'm just going to take many more direct measurements. If it
           | was quick I would have written a script to scan through
           | unknown parameters to maximize correlation with measurements,
           | but that isn't reasonable when the simulation fails after
           | several minutes of trying for most values.
        
             | m-ee wrote:
             | Oof that's rough. Don't know if it can handle your topology
             | but have you tried LTPowerCAD or TIs equivalent? They did
             | the job when I was doing a boost converter design but I
             | don't remember how capable they were for more complex
             | tasks.
        
       | amelius wrote:
       | 1000x sounds nice, but can you trust the results?
       | 
       | Also, why doesn't the funding go to more general linear algebra
       | (and related) solver software, which can then be used in many
       | physics packages?
        
         | adgjlsfhk1 wrote:
         | Note that DifferentialEquations.jl already has bindings for R
         | and Python, so this has the potential to be used in many
         | physics packages.
        
       | sjkelly wrote:
       | Gate level sims would be sweet. Yosys has the CXXRTL backend that
       | may nicely dovetail into this too.
        
       | [deleted]
        
       | xvilka wrote:
       | I wish BioJulia[1][2] (bioinformatics ecosystem with Julia
       | language) would get a similar attention. Currently, they seem
       | largely underfunded[3]. Global pandemic highlighted importance of
       | such projects, I hope more and more people would participate into
       | the FOSS-based computational biology and medicine.
       | 
       | [1] https://biojulia.net/
       | 
       | [2] https://github.com/BioJulia/
       | 
       | [3] https://opencollective.com/biojulia
        
         | jakobnissen wrote:
         | I'm one of the main developers of BioJulia. I believe our main
         | issue is lack of developer manpower, and not necessarily lack
         | of funds.
         | 
         | Of course, if we got enough money to actually employ a
         | developer, that would be amazing. It's just not very realistic.
         | Furthermore, having BioJulia be developed by working scientists
         | has its advantages.
         | 
         | If you, or anyone else, is interested in BioJulia, do think
         | about making a contribution to your favorite package, it would
         | be very welcome. Developing in Julia is extremely satisfying,
         | as you get so much bang for your buck, while still being able
         | to create highly efficient code.
        
           | akudha wrote:
           | Can a programmer with zero knowledge of bioinformatics be of
           | help too? Or do you need a bio background?
        
             | jakobnissen wrote:
             | You don't need to have any particular skills except
             | familiarity with Julia, but it's obviously an advantage to
             | have a bio background - depending on what you're going to
             | do.
             | 
             | Usually, the best packages come about when people are
             | motivated to creating something specific, for example if
             | they think the status quo in some domain is not good
             | enough.
             | 
             | I'm sure we can dig up a handful of old, badly maintained
             | projects that could use some love. Off the top of my head,
             | it would be nice to have
             | 
             | * Micro-optimized our smith-waterman algorithm. That's
             | probably fairly easy to get started with if you're not a
             | bio person
             | 
             | * A number of our parsers have not been properly
             | maintained. We use finite state automata
             | https://github.com/BioJulia/Automa.jl to create parsers.
             | That's for more advanced users
             | 
             | * We need to consolidate our scattered sources of k-mer
             | analysis code. Another developer is re-writing our k-mer
             | iterator protocol, but we need a big toolbox for k-mer
             | counting, minhashing, calculating k-mer spectra etc. That's
             | also very computer-sciency and no so much biological
             | 
             | Feel free to get in touch on the Julia Slack, or send me an
             | email :)
        
             | planet-and-halo wrote:
             | I'd like to second this question. I'm very interested in
             | bioinformatics as a field, but no background. Would be
             | happy to devote some free time but I wouldn't want to be
             | counterproductive.
        
               | ViralBShah wrote:
               | The way to do this is to find non-domain specific tasks
               | in these projects, and make useful contributions to the
               | team - and slowly learning as you go along. Website, CI,
               | benchmarking, helping out new users, pointing out unclear
               | docs, writing a tutorial as you learn, etc. are all great
               | ways to get involved.
        
               | planet-and-halo wrote:
               | Thanks a lot, these are great suggestions.
        
           | Ambix wrote:
           | Are there signs of wider BioJulia adoption? Looks like bio
           | frameworks for Python, Go and even Rust still more popular.
           | Disclaimer: I'm just checking GitHub stars, have no glue what
           | metrics would be more appropriate.
        
       | choeger wrote:
       | Maybe of interest in that context:
       | 
       | https://github.com/ModiaSim/Modia.jl
       | 
       | The authors of that tool have a strong background in modeling and
       | simulation of differential algebraic equations. Not so much in
       | designing DSLs, though, so there maybe some technical oddities.
       | But I expect the simulation aspect to be quite decent.
        
         | ChrisRackauckas wrote:
         | Modia.jl is great! Though note that there are other M&S DAE
         | libraries in Julia which stray from the Modelica DSL syntax.
         | For example, ModelingToolkit.jl can do it directly by modifying
         | Julia code:
         | 
         | https://www.stochasticlifestyle.com/generalizing-automatic-d...
         | 
         | or it can work via a component-based modeling DSL:
         | 
         | https://mtk.sciml.ai/dev/tutorials/acausal_components/
        
       | dreamcompiler wrote:
       | I'm having a lot of trouble understanding how "just add AI" is
       | going to make electronics simulation 1000x faster.
        
         | [deleted]
        
         | KenoFischer wrote:
         | Chris has posted the relevant papers in a sibling comment, but
         | let me try to give an intuitive explanation. Say you have some
         | sort of electronic device like an amplifier. It is made out of
         | many individual transistors and parasitics, but its time
         | evolution is overall guided mostly by the amplifier
         | characteristics its supposed to implement plus boundary effects
         | and corrections from the parasitics. So what you try to do is
         | to learn a simpler system of equations that captures the time
         | evolution plus a (highly-nonlinear, complicated) projection
         | that recovers the signals of interest (if you don't care about
         | reproducing interior signals, you can usually get away with a
         | simpler model). Of course it's not obvious that this should
         | actually work (though of course picking a model of the same
         | size as the system plus an identity projection is always
         | possible, so it'll always work for _some_ size of the model
         | being learned, just at that point you don 't get a speedup),
         | but our initial results show that it does seem to be very
         | promising.
        
           | amelius wrote:
           | Since this is based on ML, I would have trouble trusting the
           | results. Can you verify the results with standard
           | mathematical methods? E.g. solve a linear system using AI,
           | then compute the residue and meaningfully interpret it? Would
           | it be possible to apply ML techniques iteratively, and let
           | the error approach zero?
        
             | KenoFischer wrote:
             | Sure, you can always just run the baseline simulation and
             | compare error rates. You can also do fancier analyses to
             | get some rough idea of robustness and maximum error rates
             | (over your particular parameter domain).
        
               | Sukera wrote:
               | Would this integrate with e.g. Measurements.jl?
        
               | KenoFischer wrote:
               | From an implementation perspective of course, so you can
               | get error propagation on the baseline simulator. For the
               | actual ML part, you'd get Measurements complaining that
               | it doesn't know how to propagate bounds through the
               | surrogate. You can do some estimation of what that
               | propagation would look like, but it's a research project.
        
               | ChrisRackauckas wrote:
               | The error propagation won't be through measurements,
               | because that blows up linearly. There's other approaches
               | which give much more promising results.
        
           | gugagore wrote:
           | It seems that there are two related but distinct ways to
           | simplifying a model:
           | 
           | 1. projections / disregarding some dimension, followed by
           | some model in this latent space, followed by an injection
           | back into the native space. The model is simpler by virtue of
           | operating in a lower dimensional space.
           | 
           | 2. using a "reduced-order model" or "surrogate model", but
           | still operating in the same input/output space. The model is
           | simpler by virtue of, e.g. using fewer derivatives or delays.
           | 
           | And with 2, you can have have the simple model e.g. arise
           | from first principles, and learn a _residual_ correction on
           | top of it.
           | 
           | And it sounds like the comment contains a bit of both. Am I
           | getting that right?
        
             | ChrisRackauckas wrote:
             | A bit of both.
        
           | ptarmigan wrote:
           | Do you think such an approach could extend to the final
           | verification stage of a large post-extraction chip? My
           | impression is that speedups are most sorely needed in this
           | final sign off phase where the number of nodes explodes with
           | parasitic R's and C's, especially in modern technologies.
           | Simulation times in weeks seem necessary now for sufficient
           | verification accuracy of analog/mixed signal chips.
        
             | KenoFischer wrote:
             | Yes, we're looking at it. One of our benchmark cases for
             | this work, will likely be a post-extraction structure from
             | one of the Sky130 chips (not that it wouldn't work in a
             | more moderns process, but the NDA issues become complicated
             | while this is still a research project).
        
         | adgjlsfhk1 wrote:
         | the TLDR is that for a lot of high dimensional PDE models, you
         | get a better trade off of speed vs accuracy by using a NN for
         | part of the model that is inefficient to calculate the full
         | physics for. This is already having a lot of success in climate
         | modeling, where NN based solutions do a better job of dealing
         | with some atmospheric effects than previous efforts.
        
           | Sukera wrote:
           | Sounds similar to what stockfish (leading chess computer
           | engine) does. In newer versions, position evaluation comes at
           | least in part from a NN, which lead to an improvement in
           | playing strength.
           | 
           | edit: similar in approach, not as a 1:1 mapping. Replace a
           | deterministic model with a faster, slightly fuzzy one.
        
             | gugagore wrote:
             | This can be a useful connection, but I believe it's worth
             | fleshing out in case it is misleading
             | 
             | What's the alternative to using a NN for position
             | evaluation? I can think of two:
             | 
             | 1. Do minimax search until you have a winner or a
             | stalemate. Then you have the exact value of the position.
             | Well, this is the problem we're actually trying to solve to
             | begin with, and it's also impractical to do for chess and
             | any interesting game. This is what necessitates an
             | approximation to position evaluation.
             | 
             | 2. A human expert writes a position evaluation function. It
             | determines a huge handful of features, a simple example
             | being how many pieces I have - how many pieces you have,
             | and some way to combine those features into a score.
             | 
             | In surrogate modeling, you can get ground-truth data to
             | evaluate your approximation against. You're approximating
             | another model that you can compute, it's just too slow for
             | practical use.
             | 
             | In chess, we don't know THE position evaluation function.
             | We can certainly get data about it, but we don't know it in
             | the same way we know PDE models.
             | 
             | To be clear, I am not saying we _know_ the PDE models are
             | accurate with respect to reality. That's the science part,
             | to determine if the model arising from empirical evidence
             | or first-principles that are themselves arising from
             | empirical evidence, actually summarizes empirical evidence.
        
             | dreamcompiler wrote:
             | Chess position evaluation is always going to be somewhat
             | subjective and statistical. Electronics simulation is
             | neither; it's physics.
        
         | ChrisRackauckas wrote:
         | There are ways to surrogatize portions of a simulation,
         | replacing large portions with ML-trained surrogates. There are
         | already demonstrations in different domains (on highly stiff
         | differential-algebraic equations) showing that you can get
         | these kinds of speedups at around 99% accuracy.
         | 
         | https://arxiv.org/abs/2010.04004
         | 
         | https://arxiv.org/abs/2103.05244
        
           | vlovich123 wrote:
           | > can get these kinds of speedups at around 1% accuracy
           | 
           | Shouldn't this be at around "at around 99% accuracy" or
           | "within around 1% accuracy loss"?
        
             | ChrisRackauckas wrote:
             | Thanks, fixed.
        
       | [deleted]
        
       | 7_my_mind wrote:
       | Is scientific computing getting some revival with the advent of
       | quantum computers? From what I could see the niche is relatively
       | small and not well paid, with most jobs somehow tied to the
       | public sector. Not sure how Julia factors into all of this. I
       | don't think the programming language makes that big of a
       | difference, ultimately. Very interesting field at the
       | intersection of all my skills, but I'm hesitant to get into it.
        
         | ska wrote:
         | > ... getting some revival ...
         | 
         | Scientific computing is chugging along about the same as it
         | always has, quantum computers aren't really that relevant yet.
         | 
         | > I don't think the programming language makes that big of a
         | difference, ultimately.
         | 
         | I can see how you might think this, but it's really
         | ahistorical.
         | 
         | Scientific computing has always been a niche because of the
         | range of skills needed. To have any real success at it as a
         | team you needed to be a good enough at numerical analysis to
         | understand the implementation, a good enough programmers to
         | write something like production code (e.g. not your typical lab
         | code) and good enough at the science to do the right project.
         | 
         | In the old days you were basically looking for one person who
         | could do all of this, and in Fortran 77. You can carve off the
         | last requirement if you only work on tools for other people,
         | but that still leaves you with two domains.
         | 
         | Fortran 77 basically limited the scope of project that was
         | reasonable. Things like matlab essentially started as wrappers
         | on good libraries (in F77) so that people could get some work
         | done without spending all their time fighting that complexity.
         | This had a massive impact on productivity globally.
         | 
         | Introduction of things like c++ allowed more complex programs
         | to be built for good or ill (also lead to improvements in
         | fortran) but a lot of the same problems remain in terms of
         | managing the complexity.
         | 
         | Later people added enough numerical libraries to python to get
         | real work done, and that started to eclipse matlab at least in
         | some specific domains (mainly because it's free and open).
         | 
         | Neither matlab or python are particularly good languages for
         | scientific programming, but they are accessible - a gazillion
         | grad students shoot themselves in the foot less in python than
         | they would in fortran or c++, and iterate much faster.
         | 
         | In some ways systems like this have impact because they have
         | reduced the necessary skill level across domains. There is
         | always going to be room at the margins for a polymath but a lot
         | of people who aren't can get things done much more easily now
         | than a few decades ago. Now you may argue that nobody "does"
         | scientific programming in python but it's a bit of a semantic
         | flip, the core algorithms are all in c or something but
         | depending on domain you may mostly be using python wrappers to
         | access them.
         | 
         | Julia is an attempt (not the first one) to define a language
         | that is both approachable and interactive (important) but
         | _also_ well designed for numerics etc. It 's a very interesting
         | project for that reason.
         | 
         | I've obviously skipped a lot of important stuff, but the impact
         | of languages and particularly their accessibility has been
         | really significant, especially when we get past scientific
         | programming for it's own sake, and into real applications.
        
         | Trex_Egg wrote:
         | Just curious, what's your current works involves?
        
           | 7_my_mind wrote:
           | I'm a math grad student studying numerics and scientific
           | computing actually. But I do not see a future in it as it
           | does not seem to pay well and the relevant jobs are scarce.
           | So it seems risky to get into it as a career when I can pivot
           | to a more profitable SWE role or do something with ML.
        
             | ska wrote:
             | You could certainly choose a few paths that are likely to
             | pay higher salary that most of the scientific computing
             | jobs you'd likely get. On the other hand, the pay for some
             | of those scientific computing jobs is reasonable, and often
             | the work is more interesting for someone with your
             | background. It's worth bearing in mind that unless you are
             | extremely unusual, you'll need a few years training in
             | industry as well before you are really running on all
             | cylinders.
             | 
             | You'll really have to think about your priorities, but it
             | sounds like you have a bit of time to do that.
             | 
             | Probably the worst case is "support programmer for a
             | research lab", some people do well there if they love the
             | lab and the work but it tends to combine poor pay with
             | extremely limited options for professional growth.
        
             | krapht wrote:
             | 1) If you are a US-born citizen and qualify for a security
             | clearance, jobs aren't as scarce as you think.
             | 
             | 2) You are right the pay is worse in the public /
             | government side. I will say - you might not believe me now,
             | but it really is true that once you make enough money to
             | pay all your bills, suddenly more money is less motivating
             | than the ability to work on interesting problems.
             | 
             | What I just said above supposes that most lab work is
             | interesting, which is not not the case, but I still think
             | it's better than the average SWE's workload at your average
             | tech company, just based on my personal experience having
             | done both at different times in my career.
        
         | prpl wrote:
         | There is hundreds of millions of dollars funding available at
         | the DOE for quantum computing research, but that is spread over
         | all aspects of quantum computing, so it's not really enough to
         | make significant headway anytime soon. Maybe at the $5-10B mark
         | we could see rapid progress and start to think about scientific
         | computing in a production context
        
         | nawgz wrote:
         | > I don't think the programming language makes that big of a
         | difference, ultimately
         | 
         | I mean, it should be clear Julia is a much higher-performance
         | method of crunching data than Python, which is unquestionably
         | the king of the data science pile, and therefore it factors
         | into performance & cost.
        
           | cameronperot wrote:
           | You can also look at it in terms of man hours with respect to
           | how much time it takes to implement and how much time it
           | takes for others to read it. Coming from a computational
           | physics background, one of the main reasons I love
           | programming in Julia is because it allows me to write code
           | with syntax very close to the underlying mathematics.
        
           | 7_my_mind wrote:
           | Scientific computing is not done in python. It is usually
           | Fortran on C/C++ or Matlab (which I think uses Fortran
           | libraries behind the scenes). Python is only used for the
           | data manipulation part but not for the core simulation.
        
         | ViralBShah wrote:
         | Scientific computing has always been around, but as you allude,
         | a bit in the background. It used to be matlab/mathematica on
         | your desktop or a supercomputer that very few could get access
         | to and program. With cloud computing, GPUs, ability to get
         | terabytes of RAM on a single compute node, and all the exciting
         | developments in CPUs despite skirting the edge of Moore's Law -
         | a lot of opportunities are showing up.
         | 
         | You can now simulate science in ways like never before. Today,
         | the median scientist can easily rent a cluster of hundreds of
         | nodes for a few hundred dollars an hour. It is increasingly the
         | case that you can actually simulate entire products in silico
         | before you do anything in the lab. SciML is a large part of
         | that story because we are able to use ML to approximate science
         | and speed it up even more.
         | 
         | I like to think about it as follows - 10x faster CPUs, 100x
         | from GPUs when possible, 100x from ML when possible, 100x
         | through easier access to parallel computing on cloud. So your
         | best case speedup compared to a decade ago is easily 10^7x.
         | Because of this huge space for improvement, we can easily find
         | 1000x improvements in so many cases.
         | 
         | And this is what we as software engineers can do to change the
         | world - by simulating science, building new batteries,
         | designing new drugs, solving power infrastructure, getting
         | climate right and its impact on our cities, food production,
         | and so on and so forth.
         | 
         | Bret Victor captures this really well in his essay:
         | http://worrydream.com/ClimateChange/ and at Julia Computing, we
         | are doing a lot of what it outlines, and really grateful that
         | ARPA-e and DARPA are funding all this hard science and
         | improvements to Julia and its ecosystem.
        
       | tomrod wrote:
       | This is the sign that Julia had arrived as a language. Kudos!
        
         | KenoFischer wrote:
         | Thanks
        
       | shrubble wrote:
       | The section "SID Scalar and Vector Processor Synthesis" from
       | https://en.wikipedia.org/wiki/VAX_9000 talks about this need to
       | have better tools and even a bit about AI:
       | 
       | SID was an artificial intelligence rule-based system and expert
       | system with over 1000 hand-written rules. In addition to logic
       | gate creation, SID took the design to the wiring level,
       | allocating loads to nets and providing parameters for place and
       | route CAD tools. As the program ran, it generated and expanded
       | its own rule-base to 384,000 low-level rules.[19][20] A complete
       | synthesis run for the VAX 9000 took 3 hours.
       | 
       | Initially it was somewhat controversial but was accepted in order
       | to reduce the overall VAX 9000 project budget. Some engineers
       | refused to use it. Others compared their own gate-level designs
       | to those created by SID, eventually accepting SID for the gate-
       | level design job. Since SID rules were written by expert logic
       | designers and with input from the best designers on the team,
       | excellent results were achieved. As the project progressed and
       | new rules were written, SID-generated results became equal to or
       | better than manual results for both area and timing. For example,
       | SID produced a 64-bit adder that was faster than the manually-
       | designed one. Manually-designed areas averaged 1 bug per 200
       | gates, whereas SID-generated logic averaged 1 bug per 20,000
       | gates. After finding a bug, SID rules were corrected, resulting
       | in 0 bugs on subsequent runs.[19] The SID-generated portion of
       | the VAX 9000 was completed 2 years ahead of schedule, whereas
       | other areas of the VAX 9000 development encountered
       | implementation problems, resulting in a much delayed product
       | release. Following the VAX 9000, SID was never used again. [Not
       | sure why]
        
       | d33lio wrote:
       | LT-Spice is absolute trash and basically why I decided to leave
       | EE for CS in college... among many other reasons! Essentially,
       | because after learning all kinds of math my linear systems prof
       | basically said "yeah, at some point you just have to simulate
       | everything because the math you learned only applies maybe 60% of
       | the time". Granted, I do not think I was exactly destined to be a
       | great electrical engineer.
       | 
       | Electronics simulation is fascinating, especially given the AI
       | models used to do this. Layout gets especially complex when rf-
       | traces / layers have to be considered or when you want to have an
       | arrangement of traces to high bandwidth components all be the
       | same length. Interaction between multi-layer vias is also insane
       | (the guy who built the UberTooth1 bluetooth hacking dongle has a
       | great defcon talk on the subject).
       | 
       | The best analog I can come up with is the debate / discrepancies
       | between the US and European weather simulation models.
       | Fascinating space, I got to work a few feet away from the Julia
       | team at the Harvard Launch Lab way back in the day at a college
       | internship. Of the few interactions I had with their team they
       | are great people and unbelievably brilliant. If any of you are
       | reading this, my hat's off to your engineering abilities - I'm
       | still impressed by the fact you guys identified an error in
       | intel's x86 instruction sets and yeeted the issue in less than
       | 24hrs.
        
         | ultrasounder wrote:
         | Been using LTSpice for the last decade or so and am just fine
         | simulating everything from Buck to current sense circuits to
         | battery monitoring systems to HBridge. Don't know what your
         | beef is with LTSpice but still can't get around the fact you
         | quit your discipline for the lack of a better tool. If you
         | didn't like what you had to deal with why didn't you pivot to
         | CS and invent a better simulation tool. Just saying.
        
           | d33lio wrote:
           | I'm really just being cheeky, the writing was on the wall for
           | me about three years in that EE wasn't for me.
           | 
           | Granted, I make a great living writing software and honestly
           | have really benefitted from my 67% complete EE degree.
           | Software ppl generally have zero idea how computers work /
           | how to really leverage hardware bits to accelerate certain
           | workloads. The ideal CS education for me is based in EE but
           | also starts with both lisp and C. NOT Python. However, I was
           | a horribly distracted student throughout college so I really
           | should be the last person giving recs for coursework.
        
           | munificent wrote:
           | _> still can't get around the fact you quit your discipline
           | for the lack of a better tool._
           | 
           | When people are at the very beginning of some path, they have
           | almost no attachment to it and the smallest nudge one way or
           | the other can change their course.
           | 
           | Think about how many people say, "If it wasn't for _< random
           | elementary school teacher>_ I would have never gotten into _<
           | field they became famous in>_."
        
         | vallas wrote:
         | I agree LT-Spice and many scientific software have terrible
         | experience. There is a massive opportunity in designing better
         | UI and UX in the modeling/simulation space (Julia's market). I
         | can't wait for the web to clean this space. I believe modern
         | JavaScript and more ergonomic low-level tech will help (i.e.
         | Rust, better C#). I'm skeptic though.
        
           | rightbyte wrote:
           | You want the component parameters entered for you. A nice UI
           | is secondary.
           | 
           | Also LT-Spice being native desktop is great. No way the lock
           | it into the cloud now.
        
       | nsxwolf wrote:
       | So, at 1000x the current fastest speed, how close does simulation
       | get to the speed of real circuits?
        
         | KenoFischer wrote:
         | Depends on the time scales of the circuits (as long as your
         | baseline simulator isn't dumb) ;). For example, consider LRC
         | circuits that have an analytic solution - you can basically
         | simulate them instantly. The primary goal here is to bring
         | analog simulation to similar time scales as digital simulation
         | on realistic problems.
        
       | omot wrote:
       | Whatever happened to Samsan Tech, they had a really impressive
       | year and then just disappeared off the face of the earth.
        
       | oxinabox wrote:
       | A modern circuit simulator, that has a fully featured programable
       | API, that can be run from a real modern programming language,
       | would be a dream. Every simulator i have used has been pretty
       | limited in that way, or at least those features were not well
       | advertized. Even the insanely expensive ones. I mean the most
       | expensive ones (like $100K liscense type deals, like Cadence) are
       | if anything even less modern from a user interaction perspective.
       | 
       | My first academic paper
       | (https://www.oxinabox.net/publications/White2015PsoTransistor...)
       | was based on doing a search over parameters for the transistors
       | being used in a circuit. The way that whole thing work was by
       | string mangling the netlist file to update the parameters.
       | Triggering the simulator on the commandline. Getting it to output
       | a CSV of the signals. Parsing that CSV, and detecting edges and
       | then measuring timing that way. Then throwing it at a particle
       | swarm optimizer to fine a new one. That sucks from a user
       | experience. It's a super cool way to solve problems though. that
       | would be so easy with a real API.
       | 
       | Further, with julia being a differnetiable programming language,
       | rather than having to use a particular swarm optimizer to search,
       | I could have been differentiating it, and using some
       | sophisticated gradient descent like LBGFS etc.
       | 
       | I hope that some of the general tools like this will be an
       | outcome of this project.
        
         | eternauta3k wrote:
         | Have you looked into Spectre's interactive mode? You can send
         | SKILL commands to change parameters and rerun simulations. It's
         | not documented, though.
        
         | throwaway9870 wrote:
         | There was a simulator called HSIM that I used 20 years ago to
         | do what you describe. It had a C api that I integrated with. It
         | was more of a fast Spice rather than equivalent to HSPICE or
         | Spectre. I coupled it with a little mini-language I wrote to do
         | easily scriptable regression tests for our system. I believe
         | Synopsys bought the company.
        
         | multiply wrote:
         | A lot of semi companies have built their own simulation
         | environments because the EDA vendor's provided tools are very
         | limited in what they can do and difficult to use. Many users go
         | to Python, Excel or MATLAB because the programming/math
         | capabilities of the EDA tools are inadequate. Over time these
         | home-grown environments become a burden and the developer
         | disowns it and it becomes a headache.
         | 
         | The EDA tools have no ecosystem you can hook into and they
         | don't really care about the user trying to put the simulators
         | into a flow to solve their problem. It is a bunch of point
         | tools each with their own embedded interpreter that don't play
         | together. I sure hope there is a plan to create a better set of
         | tools so I can write custom netlist checks and do something
         | novel (like get derivatives out of the simulator) and in-memory
         | (no slow disks) and run custom Julia checks during simulation.
         | Julia is a much better match because running Python or MATLAB
         | code within the simulator is way too slow. I'll keep watch for
         | sure.
        
           | kayson wrote:
           | It's an absolute nightmare. Cadence added support for Matlab
           | calculations on simulator outputs, but its clunky and
           | inconsistent. Don't even get me started on how long it takes
           | to do basic calculations on numbers that should already be in
           | memory...
        
             | multiply wrote:
             | My worst experience was doing a simple min/max of each
             | signal took 7x longer than the simulation. I'd be so happy
             | to toss TCL in the trash. I spent a long time debugging
             | because TCL expr doesn't do -2^2 correctly. The error
             | messages don't tell you the line number and I found no good
             | way to debug. Things like that are just the tip of the
             | iceberg of time wasted fighting with arcane tools. I
             | suppose others have their own stories.
        
             | KenoFischer wrote:
             | We are building something along these lines that the DARPA
             | work sits on top of, so if you have a current need, do feel
             | free to reach out (email is in profile).
        
           | seanmclo wrote:
           | I can attest first-hand to the "headache" that comes from
           | semi company simulation environments. Not only are they
           | horribly outdated (in Perl/Tcl), but they're different at
           | every company you work at. There's no gold standard because
           | the standard that these EDA companies ought to be making
           | doesn't exist.
           | 
           | There needs to be an open initiative between semi companies
           | to create a standard simulation environment -- with
           | compilers, unit-test frameworks, and all sorts of simulation
           | (gate-level, analog/mixed signal, emulation, etc). Hell, just
           | give me a free IDE plugin for SystemVerilog that _actually
           | works_.
           | 
           | This lack of a standard seems to me like the critical path in
           | hardware design. I'm trying to support projects to fix this
           | like SVLS (A language server for SystemVerilog:
           | https://github.com/dalance/svls) but these are all hard
           | problems to solve. This industry is relatively niche and
           | doesn't seem to have many engineers interested in FOSS.
        
           | built_with_flux wrote:
           | Shameless plug: We are building this over at flux.ai
           | 
           | its early days but you can start playing with our beta
        
         | jacquesm wrote:
         | That is an interesting optimization trick, essentially a brute
         | force search over a parameter space in order to minimize
         | silicon area, I am assuming this was for cells that were going
         | to be replicated many times on the same die?
        
           | oxinabox wrote:
           | Something like that is the idea. Silicon area is what costs
           | money. Use as little as possible while still being fast
           | enough to beat the clock-rate of your system. PSO's are way
           | better than brute force. but yeah.
           | 
           | It was a purely academic work for a masters level CS unit. I
           | had just finished a masters level electrical engineering unit
           | on silicon circuit design. Where the final project was to
           | design an adder that minimized silicon used (and thus cost)
           | while also being faster enough. And the hard bit is that you
           | want big thick doped regions for high conductivity, but also
           | the bigger the area the more paracidic capacitance. And so
           | there are some tricks the to find good sizes, like
           | progressive sizing and stuff. But afaik there is no actual
           | answer, at least not one we ever learned. So a lot of trial
           | and error went into it. It was a hard project.
           | 
           | And so then I did this CS unit where the project was "Do
           | something interesting with a particle swarm optimizer". And i
           | was like "lets solve this". and once I saw the results, i was
           | like "this is actually really good", and so the lecturer and
           | I wrote a paper about it.
           | 
           | It is a real problem. Minimizing silicon area subject to
           | speed. I bet the big integrated designers have there own
           | tricks for it that i don't know about. To do it really well
           | you need to miminal the real area so also need to solve
           | layout (which is a cool cutting and packing problem). (and
           | ther are also nth order effects, like running traces over
           | things can cause slow downs, because electromagnetism
           | reasons) I bet a bunch of folk on HN know this problem much
           | better than i do though. probably something bad in my
           | solution, but i think it illustrates the utility
        
             | jacquesm wrote:
             | Thank you for writing it up and posting it here, one of the
             | more interesting comment threads.
        
             | kayson wrote:
             | Very cool paper. Your observations in V.B.4 are pretty well
             | understood in circuit design. If you've not heard of it,
             | you might be interested in
             | https://en.wikipedia.org/wiki/Logical_effort. Turns out the
             | optimum scaling for propagation delay is e (natural log
             | constant), but I don't know if I ever learned anything
             | about the optimum for area.
             | 
             | Now that everyone is using finfet processes, the layout
             | part is pretty easy to solve because transistor widths have
             | to be a certain number of fins and the layout is extremely
             | regular.
             | 
             | One thing your analysis didn't include, which actually ends
             | up being quite significant, is the extra capacitance caused
             | by the wires between transistors. This changes the sizing
             | requirements substantially.
             | 
             | I've done some custom logic cell design, and I always had
             | to use a lot of trial and error, though generally I was
             | concerned more with speed than area. I'm not sure exactly
             | what the development process is at my current employer, but
             | it seems like its a lot of manual work. I'm guessing they
             | set area targets based on experience and attempt to
             | maximize speed where possible.
             | 
             | Ultimately, everything gets placed and routed by a computer
             | anyways!
        
               | oxinabox wrote:
               | > Your observations in V.B.4 are pretty well understood
               | in circuit design.
               | 
               | Indeed, I am actually surprised the paper doesn't include
               | something like _"This is inline with the well known
               | result for progressive sizing [cites textbook]"_. It was
               | my first paper, i was worse at writing things then. :-D
               | 
               | > One thing your analysis didn't include, which actually
               | ends up being quite significant, is the extra capacitance
               | caused by the wires between transistors. This changes the
               | sizing requirements substantially.
               | 
               | Good point. And not easy to model in a SPICE style
               | simulator. I guess one could maybe introduce explict
               | capacitors and them compute capacitiances by making some
               | assimptions about layout.
        
               | kayson wrote:
               | > I guess one could maybe introduce explict capacitors
               | and them compute capacitiances by making some assimptions
               | about layout.
               | 
               | That is, in fact, exactly what we do! I think it would be
               | pretty straight forward for your large buffer example -
               | you can model it as a fixed capacitance at each output
               | which corresponds to the routing between inverters, which
               | would be the same for all sizes, plus some scaling
               | capacitance that relates to the size of the transistor
               | itself, which you already have.
               | 
               | The adder would be trickier, for sure. Regardless, in my
               | experience, just adding a reasonable estimate is good
               | enough to get you close in terms of sizing in schematics,
               | then you fine tune the layout.
        
       | stochastimus wrote:
       | I enjoy seeing this sort of press for Julia. One thing I'll say
       | for the language is that it is good with elegant high level
       | abstractions for productivity while at the same time being able
       | to go as low-level as you need for optimization. My company uses
       | Julia for our text structuring ML. From go we communicate with
       | the Julia binary using protobufs. I have no complaints and have
       | enjoyed my experience with Julia.
        
       | vallas wrote:
       | Why isn't Rust top at modeling and simulation yet?
        
         | smabie wrote:
         | What advantage does Rust have over Julia? I can think of a lot
         | of disadvantages, but not many advantages.
        
           | [deleted]
        
         | nicolashahn wrote:
         | This is about Julia Computing, the company, not Julia the
         | language.
        
           | vallas wrote:
           | I mean what is the Julia ecosystem focusing on that Rust
           | would not (or similar languages)
        
             | oxinabox wrote:
             | Scientific and technical computing.
             | 
             | ---
             | 
             | Not saying you can't do this stuff in rust. I mean its
             | turing complete.
             | 
             | But contrast the description of Rust: A language empowering
             | everyone to build reliable and efficient software.
             | 
             | vs Julia Julia is a high-level, high-performance dynamic
             | language for technical computing.
             | 
             | Julia is for doing "technical computing". Things like
             | simulations, problems where you need to apply a bunch of
             | math. Its easy to write math in julia. The syntax is
             | designed for it (like look at code for manipulating
             | matrixes). The semantics are designed for it (multiple
             | dispatch is _the_ thing you need for efficient linear
             | algebra for example. Specializing on each combination of
             | matrixes)
        
               | vallas wrote:
               | Thanks for clearing. I'm not familiar with Julia' Syntax
               | but I don't doubt its pros over Python. I see why I got
               | unvoted, I think my question was more if Rust (as a metal
               | language) could really help make simulation techs like
               | Julia better than the standards. I don't know.
        
           | kgwgk wrote:
           | Maybe they are using Rust, then...
        
             | andrewflnr wrote:
             | Julia Computing exists to commercialize the Julia language
             | which exists to solve precisely this kind of problem
             | without resorting to a lower-level language. So, probably
             | not.
        
               | kgwgk wrote:
               | I was joking!
        
             | KenoFischer wrote:
             | We're not. I do think Rust is a good language though and
             | you may take my word that I have very strong opinions on
             | language design :).
        
               | junippor wrote:
               | Julia is great, thank you for your work <3
        
               | kgwgk wrote:
               | I'm shocked :-)
        
       | KenoFischer wrote:
       | Huh, did not expect our press release to end up on HN, but I'm
       | the PI on this project, so AMA, I guess. Will jump into the
       | questions already asked here and provide some context.
        
         | azalemeth wrote:
         | Is there a good way of doing _analytic_ analysis on circuits
         | with a sensible GUI, if restricted to passive components? I
         | have a few interesting problems that I 'd like to analytically
         | explore, but the best I've been able to find is OpenModellica
         | piped into something like Maxima or sympy. Mathematica looks
         | like it has a nice tool -- system builder -- but it costs a lot
         | and I don't have a license.
         | 
         | Julia would of course be ideal for this, and I very much like
         | where you project is going!
        
           | KenoFischer wrote:
           | The underlying representation of the simulator we have is
           | symbolic, so you can have it spit out a
           | https://github.com/JuliaSymbolics/Symbolics.jl representation
           | of the equations that make up the circuit and feed it into a
           | symbolic integrator from there. Not a focus for us, but I
           | don't see why it wouldn't work.
        
         | javajosh wrote:
         | How was the process of applying to DARPA? What kind of effort
         | was involved, and what was the experience like?
        
           | KenoFischer wrote:
           | We have a fairly academic background, so we know how to write
           | these grant proposals and have been doing it for a while.
           | It's definitely a specialized skill, but there's no magic to
           | it. You have to know how to do the paperwork and budgets
           | though. This particular one was an extreme fast track
           | program, so there were 30 days between each of program
           | announcement, proposal due date, performer selection and
           | final contract negotiation date. Nothing in government
           | usually happens that fast - I was quite shocked that it
           | actually happened in the stated time frame.
        
         | dnautics wrote:
         | A long long long time ago, I wrote this (currently very
         | unmaintained, and I have no interest in maintaining) julia
         | project, don't know if this is useful to you, but it's pretty
         | clear that there is a LOT of potential for julia in this
         | domain, though if I'm not mistaken, the HDL-stuff is one level
         | above what you're doing in your project -- it would be nice if
         | these sorts of things could be composable:
         | https://github.com/interplanetary-robot/Verilog.jl
        
           | KenoFischer wrote:
           | We're not doing design in Julia at the moment, just
           | simulation of existing domains, so we're just reading in
           | netlists from other tools. Eventually I do think Julia would
           | be good at HDL, and I too have an abandoned HDL DSL (that I
           | basically used for an FPGA demo and nothing else), but I
           | don't think HDL is an area where Julia would be able to
           | provide 100x improvements over existing tools (which is about
           | where we want to be to start something new). Of course, if
           | Julia takes over in the space, doing HDL in the same language
           | as your simulations would have advantages :).
        
             | dnautics wrote:
             | you mean quantifiable 100x improvements ;-). Chisel, which
             | I would argue is the best HDL tool, still produces
             | completely inscrutable verilog, so if you don't like the
             | way it does things you might have... a challenge
             | rejiggering it. I imagine there's like "100x" DX
             | improvement you could generate between say best practices
             | on CI, deployment, portability of design, running your
             | design on accelerated hardware with ease, etc.
        
             | [deleted]
        
         | Rochus wrote:
         | What was the technology replaced by Julia (i.e. the systems
         | which were 100 or 1000 times slower)? Is the whole factor 1000
         | because of Julia/LLVM optimizations, or is there faster
         | hardware, or was the old system an interpreter?
        
           | KenoFischer wrote:
           | The 1000x goal here specially refers to algorithmic
           | accelerations. Depending on your baseline simulator, there
           | may also be improvements because Julia's simulation
           | capabilities are extremely fast, but those gains are
           | multiplicative, since we're using our own simulator as a
           | baseline for measuring the algorithmic improvements. Just to
           | be clear though the 1000x is a goal. We've demonstrated the
           | same techniques at about 100x algorithmic improvement (for
           | close to 1000x overall), but haven't quite gotten to that
           | point yet in this domain. It is still a research project at
           | this point. We are quite actively exploring what to do with
           | just the simulator components though, because we think
           | there's a good opportunity to replace some legacy tooling in
           | this space even before factoring in the algorithmic
           | improvements.
        
           | Sukera wrote:
           | This is about funding for future work, not payment for
           | achieved bonuses, it seems.
        
         | kayson wrote:
         | I've been doing analog integrated circuit design for a decade
         | and I'm somewhat skeptical that this is practical. I hope you
         | can convince me otherwise because this would be great to avoid
         | multi week simulations.
         | 
         | From your other comments, it seems that the general principle
         | is to create a simple model that captures most of the behavior
         | then apply corrections on top of that.
         | 
         | Can you elaborate on how the model is trained? Is it just from
         | netlist/models? Or are you running a regular transient
         | simulation? Or do you need a special transient setup?
         | 
         | What happens when your circuit's operating point varies wildly
         | during operation? Presumably you'd have to train a larger model
         | over the entire range of operating points but it seems to me
         | that it would require extensive simulation to just collect the
         | operating point data, which somewhat defeats the purpose.
         | You've also got simulation corners, where you'd have another
         | massive set of permutations to generate models for...
         | 
         | My other big concern is accuracy. Chris commented that you're
         | achieving these speed ups at 99% accuracy. Does that mean your
         | results are within 1% of the "full" simulation? Or that the
         | intrinsic simulation error is 1%? For the former, that result
         | is extremely dependent on the particular simulation and desired
         | output. I'm curious if you have preliminary results on real
         | circuits? If it's the latter... That's not enough. Even for
         | mediocre circuits you're looking at >60dB relative accuracy
         | requirements. Potentially >100dB for some high performance
         | applications. The default relative tolerance is 1e-3 and we
         | often reduce that by an order of magnitude or two...
         | 
         | There are certainly mixed signal simulations where we care more
         | about functionality than performance, so it could help there.
         | But as a matter of practice we usually already have verified
         | verilog models for all analog blocks anyways.
         | 
         | And lastly, I'm curious how much does this have to do
         | specifically with Julia the programming language? Is it just an
         | "all part of the family" kind of thing? There's no claim that
         | something intrinsic in the language is providing speed up,
         | right? It's just a conveniently easy way to implement?
        
           | [deleted]
        
           | KenoFischer wrote:
           | > From your other comments, it seems that the general
           | principle is to create a simple model that captures most of
           | the behavior then apply corrections on top of that.
           | 
           | It's not applying corrections as in doing a taylor expansion
           | and then adding terms to it, it's basically a projection of
           | the systems. The basic details are in the CTESN paper, though
           | I think there's improvements that haven't been published yet
           | to make it work in this domain. Another point to note is that
           | sometimes the "simpler" model actually as more equations, but
           | the equations are of a form that is much faster to simulate,
           | because you can relax some stiffness in the original set of
           | equations.
           | 
           | > Can you elaborate on how the model is trained? Is it just
           | from netlist/models? Or are you running a regular transient
           | simulation? Or do you need a special transient setup?
           | 
           | The details are complicated, but the basic approach is the
           | usual ML thing: You pick some highly parameterizable model
           | and projection, and then take gradients to tweak the
           | parameters until the projection reproduces what you want,
           | except in this case it's obviously a continuous time problem
           | and you don't need to feed in data, because you can just use
           | the original simulation in your loss function. For some more
           | advanced techniques you do benefit from having the whole
           | simulator be differentiable even on the baseline, but
           | conceptually it's not required and you could do it blackbox
           | with a regular transient simulator.
           | 
           | > What happens when your circuit's operating point varies
           | wildly during operation?
           | 
           | You can choose what parameters to fix and which to keep
           | variable over the training process. It is probably true that
           | in some (e.g. chaotic) models this means that the surrogate
           | generation is too hard and will fail to converge for
           | reasonable sizes of the model. We don't have enough
           | experience yet to give you a clear answer of when this
           | happens or not - figuring that out is part of the research
           | effort here.
           | 
           | > My other big concern is accuracy. Chris commented that
           | you're achieving these speed ups at 99% accuracy. Does that
           | mean your results are within 1% of the "full" simulation?
           | 
           | I'm not sure I quite understand the distinction that you're
           | drawing and measuring errors in a sensible way here is
           | actually somewhat non-trivial. I believe the error rates
           | Chris quoted are from a smooth distance metric between the
           | signal generated by a full simulation and those generated by
           | the surrogate.
           | 
           | These tradeoffs are tunable of course, so for a particular
           | application you can decide how much accuracy loss you can
           | live with. Of course, there will be infeasible points for
           | this technique but hopefully it's useful. I can't speak for
           | DARPA, but if you look at the original call for proposals,
           | you will see that they were asking for accuracy targets in
           | the single-digit percent, so we think at those targets the
           | 1000% speed-up is more than achievable.
           | 
           | > There are certainly mixed signal simulations where we care
           | more about functionality than performance, so it could help
           | there. But as a matter of practice we usually already have
           | verified verilog models for all analog blocks anyways.
           | 
           | One way to think of this is as automatic generation of those
           | verilog models from the netlist for the mixed signal use
           | case. It is certainly still at the research phase though -
           | where it's applicable will highly depend on what the
           | performance/accuracy trade-offs look like and how expensive
           | the thing is to train.
           | 
           | > And lastly, I'm curious how much does this have to do
           | specifically with Julia the programming language? Is it just
           | an "all part of the family" kind of thing? There's no claim
           | that something intrinsic in the language is providing speed
           | up, right? It's just a conveniently easy way to implement?
           | 
           | We've spent many millions of dollars building some extremely
           | sophisticated modeling & simulation tooling in Julia, most of
           | it open source, so we get to piggy back on that here to get a
           | very modern simulator with all kinds of bells and whistles
           | "for free", including the surrogatization capabilities. We
           | are expecting speedups on real-world problems just by using
           | this framework for baseline simulation also, but I don't have
           | data on that yet, so I don't have any concrete claims to
           | make. As for the question whether such a speedup is intrinsic
           | to the language, as always the answer is yes and no. Julia's
           | design makes it extremely easy to write very high performance
           | code. Both of those things are important. Being easy to use,
           | allows you to do go further down the algorithmic rabbit hole
           | before you start hitting the complexity limit :).
        
             | kayson wrote:
             | > improvements that haven't been published yet to make it
             | work in this domain
             | 
             | Are you able to share what some of those are?
             | 
             | > You can choose what parameters to fix and which to keep
             | variable over the training process
             | 
             | Can you explain more about the parametrization? Do your
             | parameters correspond 1-to-1 with schematic parameters like
             | transistor sizes or resistance/capaciance values? Or
             | internal transistor model parameters? Or are they more
             | abstract mathematical parameters?
             | 
             | > I'm not sure I quite understand the distinction that
             | you're drawing and measuring errors in a sensible way here
             | is actually somewhat non-trivial.
             | 
             | Circuit simulator vendors often market their accuracy in
             | terms of "% SPICE Accuracy", and what they mean is if you
             | run a simulation and measure some parameters (usually
             | something like RMS noise voltage or signal-to-noise ratio),
             | then those measurement results will be within 1% of what
             | the measurement results you'd get from running the same
             | simulation with full-accuracy SPICE.
             | 
             | The other way of measuring simulator accuracy is in terms
             | of dynamic range. For example if I have a noisy sine
             | generator circuit where the signal has rms amplitude 1, and
             | the noise is 1e-4 rms, I need to make sure the numerical
             | noise of the simulator is much less than 1e-4.
             | 
             | The first is sort of relevant in your case as a comparison
             | between surrogate and full simulation. The second is an
             | absolute measurement of a single simulator's (or
             | surrogate's) accuracy.
             | 
             | > I believe the error rates Chris quoted are from a smooth
             | distance metric between the signal generated by a full
             | simulation and those generated by the surrogate.
             | 
             | This is interesting because it makes sense as an
             | application-independent metric for measuring the accuracy
             | of your surrogate. It's not immediately clear to me how
             | this would translate to circuit performance accuracy in all
             | cases. However, in one specific case - a Digital to Analog
             | Converter - that 1% smooth distance error could be
             | catastrophic for some performance metrics depending on how
             | it behaves.
             | 
             | That might be an interesting thing for you to consider
             | investigating through the course of your research.
             | 
             | > We are expecting speedups on real-world problems just by
             | using this framework for baseline simulation
             | 
             | Very cool, and I'm looking forward to seeing some data
             | there.
             | 
             | One last question - why did you choose this particular
             | DARPA project? Was it any specific interest/relationship
             | with the circuit design industry? Or did it just happen to
             | be a very cool application of CTESN?
        
               | KenoFischer wrote:
               | > Are you able to share what some of those are?
               | 
               | The papers are being written, so should be public in a
               | few months, but I can't go into detail quite yet.
               | 
               | > Can you explain more about the parametrization? Do your
               | parameters correspond 1-to-1 with schematic parameters
               | like transistor sizes or resistance/capaciance values? Or
               | internal transistor model parameters? Or are they more
               | abstract mathematical parameters?
               | 
               | All of the above. We have a fully symbolic representation
               | of the circuit, so any part of it can be replaced by a
               | parameter. Transistor sizes and device values are a
               | natural thing to do, but the system is generic.
               | 
               | > % SPICE Accuracy"
               | 
               | Heh, we've actually found some SPICE implementations to
               | have significant numerical issues when compared to our
               | baseline simulator, which has some fancier integrators -
               | I suppose that would make us worse on this metric ;).
               | 
               | > That might be an interesting thing for you to consider
               | investigating through the course of your research.
               | 
               | Yup, characterizing error trade offs is one of the
               | primary outcomes of this research.
               | 
               | > One last question - why did you choose this particular
               | DARPA project? Was it any specific interest/relationship
               | with the circuit design industry? Or did it just happen
               | to be a very cool application of CTESN?
               | 
               | Circuit design was my first job, and I have a second desk
               | with a soldering iron and test equipment, though it's
               | collecting dust ;). I have a bit of a hypothesis that -
               | between open source tooling becoming more mature, and
               | more people getting into the chip design space for custom
               | accelerators - we're on the cusp of a major overhaul in
               | EDA tooling. I thought we'd be good at it, so I was
               | advocating internally for us to start up a team in the
               | domain. We have a bit of an "if you can get it funded it,
               | you can do it" attitude to those sorts of things, so I
               | was trying to find the money to jumpstart it, and this is
               | that.
        
               | kayson wrote:
               | > Heh, we've actually found some SPICE implementations to
               | have significant numerical issues when compared to our
               | baseline simulator, which has some fancier integrators -
               | I suppose that would make us worse on this metric ;)
               | 
               | Hah. That's not surprising. Our vendors generally mean
               | spectre when they talk about full accuracy, but I have a
               | laundry list of grievances when it comes to spectre and
               | its accuracy settings... What are you using as your
               | baseline?
               | 
               | > Circuit design was my first job
               | 
               | Glad to hear. This industry needs a lot of modernization.
               | 
               | > I have a bit of a hypothesis that - between open source
               | tooling becoming more mature, and more people getting
               | into the chip design space for custom accelerators -
               | we're on the cusp of a major overhaul in EDA tooling
               | 
               | I hope you're right. The current state of circuit EDA
               | tooling is abysmal. I think on the analog/RF side, the
               | ecosystem is so ancient and entrenched that it will take
               | a herculean effort to make any real strides, especially
               | because the golden age of analog/RF semi startups is
               | over. But digital design is very much becoming open
               | source, as you mentioned, and maybe that will eventually
               | bleed over.
               | 
               | I wish all types of circuit design were more accessible
               | to the world - lots of emerging economies could use it,
               | but the up front cost is just so high. There's been a
               | massive surge of software dev recently in the Middle East
               | and Africa, and hopefully hardware dev follows suit.
        
       | meepmorp wrote:
       | Fix the headline - it should say "Julia Computing Receives DARPA
       | Award to Accelerate Electronics Simulation by 1,000x"
       | 
       | The money is going to a company.
        
         | leephillips wrote:
         | Impossible. That has 84 characters. Also, since it doesn't seem
         | possible for a language to receive grant money, I don't think
         | there is much chance for a dangerous level of confusion.
        
         | adgjlsfhk1 wrote:
         | Note that while Julia Computing and Julia are different
         | entities, the former is the employer of most of the top
         | contributors to Julia. Lots of this grant will probably go into
         | paying for additional features for `DifferentialEquations.jl`
         | or compiler work necessary to speed up some of this code.
        
           | yesenadam wrote:
           | Apparently 4 of the 6 founders of Julia Computing are the 4
           | creators of Julia.
        
           | meepmorp wrote:
           | I have no problem at all with the award, company, or its
           | employees and founders - just the accuracy of the headline.
        
         | nicolashahn wrote:
         | Yeah, I think most people on this site are going to first
         | assume the language.
        
           | hshshs2 wrote:
           | I was over here wondering who Julia is
        
           | Sukera wrote:
           | It's also weirdly editorialized, since the original title
           | also says "Julia Computing"
        
       | transfire wrote:
       | Anyone know how much $ ?
       | 
       | This might give a nice boost to adoption of Julia. And hopefully
       | this spending trickles down to further improve the language
       | itself.
        
       | the__alchemist wrote:
       | I love the goal, and the idea to use Julia. I hope the emphasis
       | on machine learning and AI is for the purposes of the press
       | release, and it's not forced into the core of the project. If it
       | turns out to be a good fit, great. If not, skip it.
        
         | KenoFischer wrote:
         | The funding is particularly for AI exploration, but we are
         | building out a strong foundation of modern analog design
         | tooling in julia as well. If the AI works like we hope, it'll
         | be a nice bonus for situations where it is applicable, but I
         | think there is plenty of opportunity to provide value even
         | without it.
        
       ___________________________________________________________________
       (page generated 2021-03-11 23:01 UTC)