现代飞机设计
I am a pre-silicon validation engineer. What that means is that I write software to test, analyze, and stress hardware designs to ensure that they adhere to their architectural specifications. Aside from a Linux environment, The common tools that I use for my job are:
我是前硅验证工程师。 这意味着我编写软件来测试,分析和强调硬件设计,以确保它们遵守其体系结构规范。 除了Linux环境外,我用于工作的常用工具还有:
- SystemVerilog: An IEEE-standard language designed for defining hardware at the Register Transfer Level (RTL), as well as the test benches to test that hardware. SystemVerilog:一种IEEE标准语言,旨在在寄存器传输级别(RTL)定义硬件以及用于测试该硬件的测试平台。
- UVM (Universal Verification Methodology): An open-source library that standardizes how hardware validators should write test benches for hardware designs. UVM(通用验证方法):一个开放源代码库,用于标准化硬件验证程序应如何编写用于硬件设计的测试平台。
- DVT Eclipse: A plugin for the (previously) popular IDE Eclipse that works with SystemVerilog. It supports syntax highlighting, custom build scripts, etc. DVT Eclipse :(以前)流行的IDE Eclipse的插件,可与SystemVerilog一起使用。 它支持语法突出显示,自定义构建脚本等。
- Synopsys VCS: A SystemVerilog compiler, simulator, and synthesizer. Proprietary. A license costs a boat-load of money. Synopsys VCS:SystemVerilog编译器,模拟器和合成器。 所有权。 执照要花很多钱。
- Various other tools to help me debug and track the progress of the testing of the design, such as waveform viewers, coverage viewers, etc. These tools all come from external vendors such as Synopsys, Cadence, and Mentor, all of them cost quite a bit, and none are open-source. 各种其他工具可以帮助我调试和跟踪设计测试的进度,例如波形查看器,覆盖率查看器等。这些工具都来自Synopsys,Cadence和Mentor等外部供应商,它们的成本都很高。一点,而且都不是开源的。
If you’re coming from a pure software background and you haven’t heard of any of these tools, that’s perfectly fine.
如果您来自纯软件背景,而您还没有听说过其中任何一种工具,那就很好。
The issue is that many new graduates coming into the semiconductor industry, such as myself a few years ago, haven’t heard of many of these tools at all. At my college, our Computer Architecture course allowed us to use Synopsys VCS to compile our SystemVerilog code, but we did not use any other tools. For the most part, we were stuck with using Vim/Emacs to do our coding, and while we were still able to design an out-of-order processor properly, the experience with these tools was unenjoyable due to their poor and complex documentation, as well as a lack of coding automation that an IDE would provide for us.
问题是,很多新毕业的大学生,几年前进入半导体行业,比如我自己,都没有听说过很多这样的工具。 在我的大学里,我们的计算机体系结构课程允许我们使用Synopsys VCS来编译我们的SystemVerilog代码,但是我们没有使用任何其他工具。 在大多数情况下,我们只能使用Vim / Emacs进行编码,尽管我们仍然能够正确地设计乱序处理器,但是由于这些工具的文档贫乏而复杂,因此使用它们的经验令人不愉快,以及IDE不会为我们提供的编码自动化。
Contrast this with a mobile app development class that was also available at my university, where all the students would use Xcode with all the IDE features you’d expect, a live app simulator, dozens of well-documented libraries from Apple, and either Swift or Objective-C as the language. While not perfect, the tools for that job allow the developer to work much more efficiently and happily.
与此形成对比的是,我的大学也提供了一个移动应用程序开发课程,所有学生都将使用Xcode以及您期望的所有IDE功能,一个实时应用程序模拟器,数十个来自Apple的记录良好的库以及一个Swift或使用Objective-C作为语言。 虽然不完美,但用于该工作的工具使开发人员可以更高效,更快乐地工作。
So why is it that the tools for hardware design are so much worse than software design?
The most obvious reason is that software designers far outnumber hardware designers, and so the tools for hardware design are either going to be featureless in comparison, or completely nonexistent. We could just stop there, but I don’t think that it explains the whole story.
最明显的原因是软件设计师的数量远远超过硬件设计师,因此,相比之下,用于硬件设计的工具要么毫无特色,要么完全不存在。 我们可以就此止步,但我认为这不能解释整个故事。
I believe that a larger contributor to this issue is that designing hardware isn’t as widely available as designing software. I mean two things by this:
我相信,导致此问题的更大原因是设计硬件没有设计软件那么广泛。 我的意思是两件事:
- Most people don’t have access to a nanofab or an FPGA lying around where they can design a new piece of hardware and see it working the same day. In contrast, anyone who knows HTML/CSS and JavaScript can create a nice, functional website in a few hours. 大多数人无法使用纳米工厂或FPGA,因为他们无法设计新的硬件并在同一天看到其工作。 相反,任何了解HTML / CSS和JavaScript的人都可以在几个小时内创建一个不错的,功能强大的网站。
Even if I had an FPGA or access to a nanofab, I couldn’t work on hardware design because the software tools I need for development are too expensive.
即使我拥有FPGA或访问纳米工厂,也无法进行硬件设计,因为开发所需的软件工具过于昂贵。
A big part of any engineer’s job is to make his or her job as easy as possible. Tools that are a pleasure to use contribute greatly to the ease of one’s work. I’m not going to make hardware design a more desirable career path, and I’m not going to be able to give all aspiring developers an FPGA. However, anyone, including myself, can remake these proprietary tools as FOSS alternatives. So is making free and open-source software to rival proprietary design tools the best route to take?
任何工程师工作的很大一部分就是使他或她的工作尽可能容易。 易于使用的工具极大地简化了工作。 我不会使硬件设计成为更理想的职业道路,也不会为所有有抱负的开发人员提供FPGA。 但是,包括我在内的任何人都可以将这些专有工具重新制成FOSS替代品。 那么,使免费的开源软件与专有设计工具相抗衡是最好的选择吗?
Consider g++. One of the biggest reasons g++ is the go-to C and C++ compiler is, not only does it work (and it works well!), but it’s free and easy to access anywhere. Both Microsoft and Intel, among others, have their own proprietary C++ compilers, but g++ is arguably the best choice out of all of them. While g++ might be better in terms of performance, a major contributor to it’s success is that, unlike its competitors, it’s free. Anyone who learns C++ is going to compile their code with g++. I work at Intel, and even I use g++ to compile the C++ code that I sometimes write. It’s an absolute wonderful tool that I’ve never had any trouble with (except when I’m angry that my code doesn’t compile).
考虑一下g ++。 g ++是首选的C和C ++编译器的最大原因之一是,它不仅可以工作(而且效果很好!),而且可以在任何地方免费访问。 Microsoft和Intel以及其他公司都有自己专有的C ++编译器,但是g ++无疑是其中所有的最佳选择。 尽管g ++在性能方面可能会更好,但它取得成功的主要原因是与竞争对手不同,它是免费的。 任何学习C ++的人都将使用g ++编译其代码。 我在英特尔工作,甚至我都使用g ++编译我有时编写的C ++代码。 这是一个绝对绝妙的工具,我从来没有遇到任何麻烦(除非当我很生气我的代码无法编译时)。
This describes many of the types of tools that are used in the software world: free, open-source, community-driven pieces of software that drive the industry forward. NodeJS, Git, the entirety of Linux, Apache, everything Mozilla has ever made, and more, are all great examples of this. What if the semiconductor industry took notes from these practices and created a cross-company initiative to create FOSS tools to benefit the industry?
这描述了软件世界中使用的许多工具类型:推动行业发展的免费,开源,社区驱动的软件。 NodeJS,Git,整个Linux,Apache,Mozilla曾经做过的一切,等等,都是很好的例子。 如果半导体行业从这些实践中记录下来并创建了一个跨公司的计划,以创建使该行业受益的FOSS工具该怎么办?
Unfortunately, it is all too common in the semiconductor industry to develop tools internally, or pay a pretty penny from EDA (Electronic Design Automation) vendors like Synopsys, Cadence, and Mentor in order to license tool usage[1]. You will never see Intel, AMD, NVIDIA, Qualcomm, etc. ever release an EDA tool that the rest of the industry gets to use, but if you ever work at one of those companies, you’ll know just how many people they hire to develop tools that are for internal usage only (hint: it’s a lot).
不幸的是,在半导体行业中,内部开发工具或向Synopsys,Cadence和Mentor等EDA(电子设计自动化)供应商支付不菲的费用,以许可使用工具[1],已经很普遍了。 您将永远不会看到Intel,AMD,NVIDIA,Qualcomm等发布过其他行业可以使用的EDA工具,但是如果您在其中一家公司工作,您将知道他们雇用了多少人开发仅用于内部使用的工具(提示:很多)。
NVIDIA’s recent deal to purchase ARM is another great example of the semiconductor giants trying to top one another by getting a stronghold on an industry tool such as ARM’s ISA.
NVIDIA最近收购ARM的交易是半导体巨头试图通过获得诸如ARM ISA之类的行业工具的据点而相互竞争的另一个很好的例子。
I yearn to live in a world where the semiconductor industry takes a modern approach to their tool design and usage by learning from the successes of the software industry, but we’re never going to get there if there isn’t a FOSS-initiative started between these companies. While I would love to be in a small team that creates these FOSS tools to help everyone, it’s simply not realistic for me to work a full-time job and create open-source software that major industries use.
我渴望生活在一个半导体行业通过从软件行业的成功经验中学到现代方法来设计和使用工具的世界,但是如果没有FOSS倡议,我们将永远无法实现目标这些公司之间。 虽然我希望成为一个能够创建这些FOSS工具来为所有人提供帮助的小团队,但对我而言,从事全职工作并创建主要行业使用的开源软件根本不现实。
This change needs to start internally in these companies. However, with all of the forks happening in the industry now, such as Apple creating their own silicon for Macs, Microsoft creating silicon for Azure, and Facebook making custom silicon for training neural networks, I wonder if it’s even still possible.
这些变化需要在这些公司内部开始。 但是,随着现在行业中发生的所有分歧,例如Apple为Mac创建自己的芯片,Microsoft为Azure创建芯片,以及Facebook为培训神经网络创建定制芯片,我想知道是否仍然可能。
脚注 (Footnotes)
[1] One of the tools I mentioned previously that I find to be an exception to this problem is UVM, since it is open-source, industry-standard, and quite well-documented. Given the climate of the semiconductor industry towards FOSS tools, it’s a miracle that a library such as UVM even exists in its current form.
[1]我之前提到的我发现是该问题的一个例外的工具是UVM,因为它是开源的,行业标准的并且有据可查。 鉴于半导体行业对FOSS工具的热爱,因此像UVM这样的库甚至以当前形式存在也是一个奇迹。
翻译自: https://medium.com/swlh/modern-hardware-design-941ac64682ef
现代飞机设计