数字IC设计语言,应该从哪开始学起?

科技   2025-01-06 18:30   陕西  

其实挺早之前就想写这样一篇文章了,但是自己的思路一直没有整理太清楚就迟迟未下笔。关于这个问题我认为最关键是确定几个最关键的问题以及答案。所以在文章开始前,需要特别强调下AI创作声明:
本篇文章的主体是通过向通义大模型提问,同时结合我自己的想法而产出的,其中信息真实性请大家甄别。
思考这个问题的缘由有三个:
其一是,那天循规蹈矩的在公众号上发了一篇关于verilog RTL bug的探究并延申了一点语法知识的学习。而后有人私信我说(大意),对verilog的探究没有必要这么深入和较真了,有这份时间可以多关注新的芯片设计语言比如SpinalHDL,未来可能这类“高级可综合”语言会更吃香。
其二是,一个朋友和我聊天,说他觉得verilog是一门很“丑陋”的语言,虽然很想做芯片设计的工作但是觉得verilog纯纯耽误设计工程师的“大好时光”。
其三是,一个看起来是刚上大学的孩子在CSDN聊到,说想自学转芯片设计(本方向好像是建模还是啥,用MATLAB/Simulink这类),问我学哪门语言之后比较好找工作。我建议他,没啥必要转(〒▽〒)。
结合这三件事,我就想写一篇关于“这么多的数字芯片设计语言应该从哪开始学起”的文章,当然这里用的是从哪开始学起而不是学哪个,因为语言这东西很多时候是触类旁通的,多多益善。本篇文章主要讨论以下至少我有耳闻可以用于芯片设计的语言(如果没听说过,那感觉应该使用的人还没那么多吧):
VHDL、Verilog、SystemVerilog、Bluespec SystemVerilog、systemc、chisel、SpinalHDL、MyHDL、PyGears、Calyx
关于这些语言,主要关心的问题有下面这四个:
  1. 这些语言的基本信息、特点和使用场景
  2. 都有哪些公司在分别在使用这些语言
  3. 由高到底,推荐重点学习哪些语言
  4. 有哪些资料或开源工程可供学习参考
那在正文前先直接上结论,在不考虑业务方向和具体公司情况的前提下,通义大模型给出的这些语言推荐学习优先级为:
SystemVerilog > Verilog > VHDL > Chisel > Bluespec SystemVerilog (BSV) > MyHDL = PyGears > SystemC > SpinalHDL = Calyx
这个排序和我心里的想法吻合度比较高:
  1. SystemVerilog = Verilog:或设计偏后者验证偏前者;
  2. Chisel:RISC-V的强势带动;
  3. VHDL:很多传统项目仍大量使用,与公司关系比较大;
  4. SpinalHDL:受论坛和IC技术圈朋友的影响,觉得SpinalHDL未来可能有所发展;
  5. PyGears = MyHDL:python在验证上应用的越来越广,谁知道哪天设计上会不会也all in python;
  6. SystemC:设计基本不会用,但是万一哪天转行ESL呢;
  7. Calyx:或许伴随人工智能和机器学习而兴起;
下面是关于提问和回答的正文。

介绍一下这些语言的特点和使用场景

1. VHDL (VHSIC Hardware Description Language)

  • 描述:VHDL是一种广泛应用于数字电路设计的硬件描述语言。它最初由美国国防部开发,用于标准化电子系统的描述。
  • 特点:
    • 严格的类型系统:确保代码的可靠性和可维护性。
    • 强大的验证能力:支持复杂的仿真和验证。
    • 多用途:适用于ASIC和FPGA设计。
  • 应用场景:航空航天、国防、电信等需要高可靠性设计的领域。
  • 发展背景:自1980年代以来一直被广泛使用,是IEEE标准之一。

2. Verilog

  • 描述:Verilog是一种简洁且易于学习的硬件描述语言,主要用于数字电路设计。
  • 特点:
    • 简单易学:语法相对简单,适合初学者入门。
    • 广泛应用:几乎所有的半导体公司都在使用Verilog进行设计。
    • 兼容性强:许多工具和仿真器都支持Verilog。
  • 应用场景:广泛应用于ASIC和FPGA设计,特别是消费电子领域。
  • 发展背景:由Gateway Design Automation在1980年代开发,后来成为IEEE标准。

3. SystemVerilog

  • 描述:SystemVerilog是对Verilog的扩展,增加了许多高级功能,如面向对象编程、断言、随机化测试等。
  • 特点:
    • 功能强大:不仅支持传统的RTL设计,还提供了丰富的验证特性。
    • 广泛应用:几乎所有大型半导体公司都在使用SystemVerilog进行设计和验证。
    • 就业机会多:掌握SystemVerilog可以为职业生涯打开更多大门。
  • 应用场景:现代芯片设计和验证工程师的首选语言。
  • 发展背景:由Accellera组织开发,整合了Verilog和其他语言的优点,成为IEEE标准。

4. Bluespec SystemVerilog (BSV)

  • 描述:Bluespec SystemVerilog是一种高层次综合语言,旨在简化复杂硬件的设计。
  • 特点:
    • 高层次抽象:提供高层次的抽象和并行编程模型,简化复杂逻辑的设计。
    • 高性能计算:特别适用于高性能计算和通信系统。
    • 专业领域:在IBM和Google等公司中广泛应用。
  • 应用场景:高性能计算、通信系统等领域。
  • 发展背景:由Bluespec Inc.开发,基于SystemVerilog,并引入了许多高层次综合特性。

5. SystemC

  • 描述:SystemC是一种C++的扩展库,主要用于片上系统(SoC)设计和高层次综合。
  • 特点:
    • SoC设计:特别适用于SoC设计,特别是在事务级建模(TLM)方面有优势。
    • 嵌入式系统:适用于嵌入式系统的开发。
    • 高层次抽象:提供了高层次的抽象,简化了复杂系统的建模。
  • 应用场景:SoC设计、嵌入式系统开发。
  • 发展背景:由Accellera组织开发,成为IEEE标准之一。

6. Chisel

  • 描述:Chisel是一种基于Scala的硬件构造语言,旨在简化复杂硬件的设计。
  • 特点:
    • 高层次抽象:提供了高层次的抽象,使得编写复杂逻辑变得容易。
    • 学术前沿:由加州大学伯克利分校开发,受到学术界和研究机构的广泛关注。
    • 开源社区活跃:拥有一个活跃的开源社区,提供了丰富的资源和支持。
  • 应用场景:学术研究、探索新的硬件架构和技术。
  • 发展背景:由Berkeley Architecture Research开发,旨在推动硬件设计的新方法和技术。

7. SpinalHDL

  • 描述:SpinalHDL是一种基于Scala的硬件描述语言,具有简洁的语法和强大的类型系统。
  • 特点:
    • 模块化设计:支持模块化的硬件设计方法,使得代码重用和维护更加容易。
    • 灵活性高:利用Scala的强大功能,可以编写简洁且易于维护的代码。
    • 开源项目:主要由开源社区维护,但已被多家公司采用。
  • 应用场景:开源社区、初创企业和一些中型公司。
  • 发展背景:由开源社区开发,旨在提供一种更高效和灵活的硬件描述方式。

8. MyHDL

  • 描述:MyHDL是一种基于Python的硬件描述语言,允许设计师使用Python语法来描述硬件行为。
  • 特点:
    • 快速原型开发:非常适合快速原型开发和教育用途。
    • 灵活性高:利用Python的强大功能,可以编写简洁且易于维护的代码。
    • 开源社区活跃:拥有一个活跃的开源社区,提供了丰富的资源和支持。
  • 应用场景:教育机构、原型开发和快速验证。
  • 发展背景:由Jan Decaluwe开发,旨在简化硬件设计过程。

9. PyGears

  • 描述:PyGears是一种基于Python的高层次综合框架,旨在简化数字电路的设计和验证过程。
  • 特点:
    • 高层次抽象:提供高层次的抽象,使得编写复杂逻辑变得容易。
    • 快速迭代:可以在Python环境中进行快速迭代和验证。
    • 开源项目:主要由其开发者社区推动,但也被一些初创公司和研究实验室采用。
  • 应用场景:学术研究、初创企业、快速原型开发。
  • 发展背景:由其开发者社区推动,旨在提供一种更高效和灵活的硬件设计方式。

10. Calyx

  • 描述:Calyx是一种新兴的硬件描述语言,旨在为FPGA和其他可编程逻辑器件提供高层次的抽象。
  • 特点:
    • 高层次抽象:提供了高层次的抽象,简化了复杂算法的实现。
    • 特定应用领域:特别适用于人工智能和机器学习领域的高性能计算任务。
    • 新兴趋势:展示了硬件设计的新趋势,吸引了越来越多的关注。
  • 应用场景:人工智能、机器学习、高性能计算。
  • 发展背景:由其开发者社区推动,旨在探索新的硬件设计方法和技术。

都有哪些公司在分别在使用这些语言

1. VHDL

  • 主要用户:航空航天、国防、电信等行业。
  • 公司:Xilinx、Intel(Altera)、Lattice Semiconductor、Microsemi(Microchip Technology)等FPGA供应商;STMicroelectronics、NXP Semiconductors等ASIC供应商。

2. Verilog

  • 主要用户:广泛的芯片设计公司和研究机构。
  • 公司:几乎所有主要的半导体公司,如Intel、AMD、NVIDIA、Qualcomm、Apple、Samsung等。

3. SystemVerilog

  • 主要用户:现代芯片设计和验证工程师。
  • 公司:几乎所有大型半导体公司,如Intel、Broadcom、Cadence Design Systems、Synopsys、Mentor Graphics(Siemens EDA)等。

4. Bluespec SystemVerilog (BSV)

  • 主要用户:高性能计算、通信系统等领域。
  • 公司:Bluespec Inc.(开发和支持BSV),以及一些学术研究机构和技术领先的公司如IBM、Google等。

5. SystemC

  • 主要用户:SoC设计、嵌入式系统和高层次综合。
  • 公司:Cadence Design Systems、Synopsys、Mentor Graphics(Siemens EDA)、TSMC、ARM Holdings等。

6. Chisel

  • 主要用户:学术界、研究机构和某些技术前沿的公司。
  • 公司:Berkeley Architecture Research(开发和支持Chisel),以及一些领先的半导体公司如Google、Intel、SiFive等。

7. SpinalHDL

  • 主要用户:开源社区、初创企业和一些中型公司。
  • 公司:SpinalHDL是由一个开源社区维护的项目,但已被多家公司采用,如GreenWaves Technologies、UltraSoC(现为Siemens EDA的一部分)等。

8. MyHDL

  • 主要用户:教育机构、原型开发和快速验证。
  • 公司:虽然没有专门支持MyHDL的大型公司,但它在一些小型公司和开源社区中非常流行。

9. PyGears

  • 主要用户:学术界、研究机构和初创企业。
  • 公司:PyGears是一个开源项目,主要由其开发者社区推动,但也被一些初创公司和研究实验室采用。

10. Calyx

  • 主要用户:新兴的硬件设计领域,特别是人工智能和机器学习。
  • 公司:Calyx是相对较新的语言,主要由其开发者社区和一些初创公司在探索使用。

由高到底推荐重点学习哪些语言

1. SystemVerilog

  • 理由:
    • 广泛应用:SystemVerilog是目前最常用的硬件描述语言之一,几乎所有的大型半导体公司都在使用它进行设计和验证。
    • 功能强大:它不仅支持传统的RTL设计,还提供了丰富的验证特性(如断言、随机化测试等),这对于现代复杂设计的验证至关重要。
    • 就业机会多:由于其广泛的采用,掌握SystemVerilog可以为您的职业生涯打开更多的大门。
    • 学习资源丰富:有大量的教程、书籍和在线课程可供学习。

2. Verilog

  • 理由:
    • 基础重要:Verilog是SystemVerilog的基础,理解Verilog有助于更好地掌握SystemVerilog。
    • 简单易学:相比其他语言,Verilog语法较为简单,适合初学者入门。
    • 兼容性强:许多工具和仿真器都支持Verilog,使得学习和实践更加容易。

3. VHDL

  • 理由:
    • 特定领域应用:在某些行业如航空航天、国防等领域,VHDL仍然非常流行。
    • 严谨规范:VHDL以其严格的类型系统著称,对于需要高可靠性的设计特别有用。
    • 互补技能:虽然不如SystemVerilog普遍,但了解VHDL可以为您提供额外的竞争优势。

4. Chisel

  • 理由:
    • 学术前沿:Chisel由加州大学伯克利分校开发,受到学术界和研究机构的广泛关注。
    • 高层次抽象:Chisel提供了高层次的抽象,简化了复杂逻辑的设计,特别适合探索新的硬件架构和技术。
    • 开源社区活跃:拥有一个活跃的开源社区,提供了丰富的资源和支持。

5. Bluespec SystemVerilog (BSV)

  • 理由:
    • 高性能计算:BSV在高性能计算和通信系统中有广泛应用,特别是在IBM和Google等公司中。
    • 高层次综合:提供了高层次的抽象和并行编程模型,简化了复杂电路的设计。
    • 专业领域:虽然不如SystemVerilog普及,但在某些特定领域有独特优势。

6. MyHDL 和 PyGears

  • 理由:
    • 快速原型开发:基于Python的语言非常适合快速原型开发和教育用途。
    • 灵活性高:利用Python的强大功能,可以编写简洁且易于维护的代码。
    • 新兴趋势:随着高层次综合技术的发展,这些语言可能会在未来获得更多关注。

7. SystemC

  • 理由:
    • SoC设计:SystemC主要用于片上系统(SoC)设计,特别是高层次综合和系统级建模。
    • 嵌入式系统:适用于嵌入式系统的开发,特别是在TLM(事务级建模)方面有优势。
    • 补充技能:虽然不是必须,但对于从事SoC设计的人来说是一个有价值的补充技能。

8. SpinalHDL 和 Calyx

  • 理由:
    • 开源项目:这两个语言主要由开源社区推动,虽然尚未广泛应用于工业界,但展示了硬件设计的新趋势。
    • 创新潜力:适合有兴趣参与开源项目或探索新硬件设计方法的人。

推荐学习路径:

  1. 首先学习 Verilog,因为它简单易学,是理解和掌握SystemVerilog的基础。
  2. 深入学习 SystemVerilog,这是当前行业中最常用的语言,掌握它可以为您的职业生涯提供坚实的基础。
  3. 根据兴趣和目标选择 VHDL 或 Chisel,前者适用于需要高可靠性设计的领域,后者则适合探索新的硬件架构和技术。
  4. 考虑学习 Bluespec SystemVerilog 或 Python-based HDLs,以拓宽视野并增加竞争力。
  5. 最后可以学习 SystemC,作为补充技能,尤其如果您对SoC设计感兴趣。



推荐阅读



    

点击阅读原文,进行IC设计岗位咨询

IC修真院
打造IC人才科技生态圈
 最新文章