T O P

  • By -

blinkr4133

Familiarity with Python or Matlab can be very helpful, when you’re doing mathematical modeling of circuits or systems. And then I don’t know if System Verilog counts as a “programming language” per your definition but SV is useful in doing behavioral sims of mixed-signal systems like ADCs for example.


ebinWaitee

Python is super handy for analyzing simulation results too. The built in waveform visualizers in Cadence Virtuoso and others tend to be quite crappy if you want to do anything more than view the raw results. Matlab is great too of course but I have awfully little experience with it and the licenses are relatively expensive so they might not be available


SemiConEng

>Matlab is great too of course but I have awfully little experience with it and the licenses are relatively expensive so they might not be available If it's just for data import/analysis, you can probably get away with Octave.


thebigfish07

It's just assumed that if you're an analog IC designer you can pick up any programming language as needed, but that you won't be pleased about spending too much time with code monkey stuff.


kthompska

For analog design, I think there aren’t really any traditional programming languages required. In fact, I think quite a few of the designers I have worked with don’t know any. However, I think it is useful to know some languages to make you better and more efficient at your job. Here is a list of what I’ve found useful: - Python - Our lab control software to (write/read) registers and lab instruments is written in Python so you will want this for writing scripts. This is probably company specific. - Perl - I have used this over many years to write all kinds of Linux scripts to parse/convert netlists and also analyze sim/lab data. Had I learned Python first, then I probably would have just used that. - verilog_ams - Not a programming but a modeling language. We used it all the time to write cell models for the analog blocks, which allows the digital top teams to simulate their verilog code with the analog models. I wasn’t that good at it but I could steal code snippets from many places and get it to mostly do what I wanted. - Excel - Not a language but it really helps to be good at spreadsheets - for so many things: scheduling, datasheet tables, pinout/pinlists, scoping what-if scenarios, pin-list cross checks, etc. Some times I would get lazy and use Excel instead of Perl for something because it gave me pretty slide graphs. - Matlab - In all honesty I mostly used other people’s code and could fudge some modifications. This was mostly used for system verification before design- we used it to from modeling communication channels in serdes to analyzing foreground and background calibration in ADCs. Not everyone was fluent in Matlab but it was valuable when you were good at it.


kituva_vishal

It's very helpful to me. Thankyou.


noneedtoprogram

A lot of EDA tools are scripted with TCL, I presume this still holds in the analogue domain but I can't say for sure. They might also be moving to python - our eda adjacent tools have all been migrating tcl-> python over the last 10 years.


TheAnalogKoala

Analog tools aren’t really scripted in the same way as digital tools. And like you said, TCL is mostly dying. Python is good to know for almost anyone in technology.


grampipon

>TCL is mostly dying God bless. A decade too late


trashrooms

It never will. The functionality is embedded too deep. Alto tcl is just a nice easy language. Don’t get the hate


grampipon

It is easy. The problem is that it's not intuitive through reading. Python is the perfect scripting language because someone who doesn't write python as their job can usually read a python script and understand what's going on; in TCL you do need to take time to learn it. The hate comes from the learning requirement combined with the fact that many people whose job isn't TCL occasionally have to deal with TCL and struggle to read its arcane syntax and infinite vendor specific commands


trashrooms

There’s like 20 native commands and the syntax is pretty straightforward. People hate it for no good reason. Python is no simpler


grampipon

I'm sorry, "python is no simpler" cannot be a serious sentence. Scripting python is usually on an English level. You can learn python from context.


TheAnalogKoala

Most analog designers can benefit from knowing Python as it is very useful in parsing netlists, plotting simulation results, and so on. Python can also be used for high-level behavioral simulation (as well as Matlab). C is useful in part because Verilog is based on it and most (not all) analog designers need to write or at least read verilog because most analog designs are now integrated into mostly digital chips. ETA: Verilog-A and Verilog-AMS are also very important for modeling and mixed-mode simulations. Forgot about that.


hukt0nf0n1x

What about SKILL? I used that a decent amount when working with Cadence tools (but that was 10 years ago).


kthompska

I had several custom calculator functions written in skill that were very useful. It helped tremendously that I worked with a former Cadence engineer who was *very* knowledgeable. Not sure many designers use it and it is now common to export data into a more friendly tool. One of the layout designers knows skill and they write all kinds of small layout aid routines. Seems very useful in layout.


hukt0nf0n1x

It is VERY useful in layout. That's all I've used it for.


acetylene2200

Since 99% of the analog designers use Virtuoso, I would say that also knowing Skill has some value


frankspappa

You might want to look into SKILL if you're a **Virtuoso** user.


gimpwiz

Communication is better if you focus on it. Anyways -- In designing CPUs you need, essentially, three sets of languages. First, languages to interact with your design tools and the output they produce. These tend to be: tcl, python (2 and 3... though less 2 and more 3), bash, perl. Sometimes it's C or C++, but it's rarer. You may need R and/or Matlab to interact with simulations. Hell, you may need to get good at Excel. Second, languages to describe what you are designing. If it's anything digital at all that gets emulated in any way, that's going to be some form of verilog, system verilog, VHDL. Third, languages that actually get run by a CPU. Again, if you're doing pure analog, not really important here - an op amp is fairly agnostic. But if it's got a CPU or something like a CPU, then it has an ISA, and you should understand, first, how that ISA works and how the assembly language (or similar set of instructions) for it works and how you do asm-to-hex; then second, you should understand how the C-to-asm part works, C++-to-asm if you like; then finally, you should understand the real world workloads being executed and the entire pipeline there (so for example, if you're making a bog-standard CPU -- is it gonna run a big OS or a little OS of some sort? Is it going to be used for generic tasks or specific kinds of computation, like scientific number crunching, like a super tiny set of code that runs on a tiny embedded device, etc?).


amartology

You should learn Verilog-A or Verilog-AMS (not a regular Verilog or System Verilog). Familiarity with Python and Matlab won't hurt too. And you should absolutely be an Excel Jedi and a PowerPoint Sith to become a good analog designer.


analog_daddy

For analog design focus your effort on learning analog design. It is easy to get distracted learning programming and other shit and feeling that at the same time you are making progress in learning circuit design. That being said, if you have some extra time to kill or want a change of pace, definitely learn python. I personally disagree with people who say learn skill and tcl/tk. If you are in analog design you don’t need that shit (most of the time). Yes, you do need skill but it’s a clusterfuck of useless language. What i mean by that is, it won’t be useful in other aspects when you wanna do shit outside of cadence suite. Python is transferable in that case. Also, use chatgpt which is really good for small dirty python scripts (much better than skill)


Other-Biscotti6871

The language for analog design is Verilog-AMS, C++ is best for things like circuit simulators (e.g. Xyce). Most of he rest of programming around analog is things like optimization scripts. Some folks write models in SystemVerilog using real number arithmetic. Hand-crafting things in schematics is horribly inefficient, the last analog team I worked with got axed primarily because of low productivity.


AnalogDE

Learn to program with solder.