芯片开发语言的简单区别介绍。Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等_芯片rtl是用什么语言写的-程序员宅基地

技术标签: verilog  

芯片开发语言的简单区别介绍

芯片设计前端的流程很长,和芯片前端相关的语言也很多,比如Verilog、VHDL、System Verilog、SystemC、Matlab、C/C++等等,但没有一个语言能够做到适合于整个前端流程;每种语言都有适合使用的领域,只有在整个前端流程的不同节点上选择最合适的语言工具,并加以整合,才能加速产品开发。

注:本图引用自《SystemC: From the Groud Up》
注:本图引用自《SystemC: From the Groud Up》

如上图所示,它显示了各种语言工具适合使用的场所,其中:

  • Verilog、VHDL主要用于RTL建模,并用来综合生成数字电路;
  • System Verilog吸收了Verilog,既能够用于RTL建模,也能用于功能验证,基于System Verilog开发的UVM更是现如今最流行的验证方法学。
  • SystemC则主要用于架构级建模、软硬件建模、行为级建模;
  • Matlab则主要用于算法设计、架构设计等。

我们熟知的Verilog/VHDL/System Verilog是最常见的硬件建模语言(更准确的说是硬件描述语言,即HDL),但是众所周知,HDL的开发难度大、故障率高、运行速度慢、与软件语言兼容性差,HDL用于开发RTL非常合适,但是用于抽象程度更高的建模就显得难堪大任。

C++属于高级语言,开发速度快、运行效率高(仅次于C)。考虑到几乎所有的底层软件都是用C/C++开发的,使用C++进行硬件建模,使得软硬件可以在同一种语言开发,从而让软硬件协同仿真更加方便高效。

SystemC是什么?

首先, SystemC不是一门新的语言,而是基于C++开发的library;因此,你所熟悉的C++知识都可以在SystemC建模时使用;理论上来说,SystemC library和常见的boost库没有任何本质差别。此外,这也告诉我们只需一个支持C++的环境,我们就可以进行SystemC建模和仿真,无需任何其他工具,这相比其他软硬件建模语言来说,所需环境极其简单。

注:最常见的硬件描述语言Verilog,它的仿真需要仿真工具支持,如VCS、modelsim等,它们都是价格昂贵的EDA工具,且使用复杂。

其次,SystemC是由Accellera组织拥有的开源库,它使用Apache 2.0开源协议;Apache2.0协议是一种对商业应用友好的许可,所以,不论用户用之开发的产品是否商用,都可以放心使用,不用担心侵权行为。

但是,SystemC是干什么用的呢?SystemC的命名已经表明了它的用途,它是一种系统建模语言;我们常常用系统来形容复杂的东西,一台电脑、一块芯片、一个公司都可以称之为一个系统。系统有很多特征,如模块化、并行性、通信机制、规则下办事等等。以电脑为例,CPU、GPU、内存、显示器等都是一个个独立的模块,各自完成各自的任务;它们总是并行工作,同时又通过接口相互通信。如何为一个系统建模呢?原生的编程语言都是串行执行的,无法建模并行系统;即使你建模了一个系统,但最终都要在CPU上跑仿真,而CPU总是串行执行的。我们知道,硬件是大量并行运行单元的组合,必须能够支持对并行操作的模拟;SystemC正是为此而生,为软硬件系统建模提供了强有力的支持。

总结:SystemC是一个支持系统建模的开源的C++ library;

参考文章

SystemC中文教程 - https://www.cnblogs.com/xuhaoee/p/12119724.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011729865/article/details/119376935

智能推荐

python xp系统_xp系统安装不上python-程序员宅基地

文章浏览阅读403次。原因:翻出多年前xp系统电脑,想玩玩python,奈何最新版本的python无法在xp系统上安装。解决方法:支持在xp系统上安装python的最新版本为3.4.x。这里我下载的python版本是3.4.4。然后一定要设置环境变量,这样用起来更顺手一些。具体操作:1、升级pippip list -o(这里是英文字母o),这个函数可以让我们知道能够升级的模块(叫库也行,叫包也行,大概就这么个意思)以及..._pyxp

动态刷新配置文件的两种实现方式。(Nacos)-程序员宅基地

文章浏览阅读4.2k次。直奔主题:所谓动态刷新配置文件即修改配置文件的一些值,可以直接读取,不需要重启项目项目搭配nacos来实现此需求nacos中加入测试的配置项第一种方式:使用注解 @RefreshScope来使此类成为“支持动态配置的类”,给属性添加@Getter,@Value("${test1}")这个大家都懂。使用:下面的接口用作测试:项目初次启动:结果如下:地址栏马赛克部分为,server.servlet.context-pathnacos中修改配置:并且发布配置刷新页面:此时我们的项目并没

chain.doFilter(request,response)含义_chain.dofilter(request, response);-程序员宅基地

文章浏览阅读2.7k次。转载来源:https://blog.csdn.net/haofengjiao/article/details/70186381一.chain.doFilter作用1.一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起request -> filter1 -> filter2 ->filter3 -> …. -> reque..._chain.dofilter(request, response);

tensorflow2.0 ValueError: Empty training data.报错-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏6次。使用tensorflow2.0 训练数据时,出现Empty training data报错:File "gru_layer2.py", line 74, in <module> network.fit(db_train, epochs=epochs, validation_data=db_val,steps_per_epoch=x_train.shape[0]//batchs..._valueerror: empty training data.

laravel ajax提交登陆存储session,并输出-程序员宅基地

文章浏览阅读495次。前端输出session{{ Session::get('username') }}ajax提交<div>{{ Session::get('username') }}</div><meta name="csrf-token" content="{{ csrf_token() }}"><!-- ajax提交必写验证 --> ..._auth::login larvavel 登录之后打印存储的session

R相关知识-程序员宅基地

文章浏览阅读7.1k次。1.R语言基础知识https://www.runoob.com/r/r-tutorial.html2.环境和工具下载https://cran.r-project.org/ R 语言官方网站https://www.rstudio.org/download/daily/desktop/windows/ RStudio下载3.R开发工具下载安装教程

随便推点

java的Map集合 详解Map集合_java map-程序员宅基地

文章浏览阅读7.5w次,点赞110次,收藏717次。java 集合 Map, HashMap,LinkedHashMap,Hashtable, 详解Map集合_java map

webpack plugin源码解析(二) copy-webpack-plugin_copywebpackplugin-程序员宅基地

文章浏览阅读1k次。用于创建文件系统的快照。快照是文件系统状态的一份副本,包含了文件的元数据以及每个文件的最后修改时间戳。_copywebpackplugin

HTML 表单制作_表单输入元素 课堂练习:请编写html代码-程序员宅基地

文章浏览阅读2.5w次,点赞76次,收藏435次。HTML 表单用于收集不同类型的用户输入。表单是一个包含表单元素的区域表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等表单使用表单标签 来设置HTML 表单-输入元素多数情况下被用到的表单标签是输入标签()。输入类型是由类型属性(type)定义的。文本域(Text Fie..._表单输入元素 课堂练习:请编写html代码

终端美化微软官方解决方案——Windows Terminal_mintty美化-程序员宅基地

文章浏览阅读699次。本文目录介绍下载方式终端美化介绍参考微软官方的介绍文档 An overview on Windows Terminal | Microsoft Docs:Windows Terminal 是一个面向命令行工具和 shell(如命令提示符Command Prompt、PowerShell 和适用于 Linux 的 Windows 子系统 (WSL))用户的新式终端应用程序。 它的主要功能包括多个选项卡、窗格、Unicode 和 UTF-8 字符支持、GPU 加速文本呈现引擎,你还可用它来创建你自己的主题_mintty美化

【Java SE】一文详解next和nextLine的区别-程序员宅基地

文章浏览阅读7.4k次,点赞2次,收藏9次。了解如何处理用户输入是编程中的一个基本任务。在Java中,我们经常用到的一个类就是Scanner,它提供了许多方法来读取和解析不同类型的输入。然而,即使是这样的基础概念,也存在着让人混淆的地方。例如,next()和nextLine()两个方法,它们在使用上有何区别?为何我们在某些情况下需要使用next(),而在其他情况下需要使用nextLine()?在这篇文章中,我们将详细地探讨这两个方法的不同,让我们一起开始吧!_next和nextline

从最佳并发用户数和最大并发用户数看性能测试_激活用户数,最大并发-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏9次。从最佳并发用户数和最大并发用户数看性能测试原文地址:http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html文章中介绍一个理发店理论,然后引出最佳并发用户数和最大并发用户数的概念 背景:理发店共有3名理发师,每名理发师完成一次理发都耗时1小时,店里有还有一些位子供客人等位,每个客人在_激活用户数,最大并发

推荐文章

热门文章

相关标签