目录
功能验证
功能验证(functional verification),是电子设计自动化中验证数字电路是否与预定规范功能相符的一个验证过程,通常所说的功能验证、功能仿真是指不考虑实际器件的延迟时间,只考虑逻辑功能的一个流程。功能验证的目标是达到尽可能高的测试覆盖率,被测试的内容要尽可能覆盖所有的语句、逻辑分支、条件、路径、触发、状态机的状态等,同时在某些阶段还必须包括对时序的检查。在较小型的电路设计中,设计人员可以利用硬件描述语言来建立测试平台(通常这是一个顶级模块),通过指定测试向量来检验被测模块在各种输入情况下,检验对应的输出是符合要求。但是,在更大型集成电路设计项目中,该过程会耗费设计人员较大的时间和精力。许多项目都采用计算机辅助工程工具来协助验证人员创建随机测试激励向量。其中,硬件验证语言在建立随机测试和功能覆盖方面具有显著的优势,它们通常提供了专门用来进行功能覆盖和产生可约束随机测试激励向量的数据结构。除了上面讲述的这种通过输入测试向量的方式,功能验证还可以通过形式等效性检查(形式验证)、断言等方式来进行,达到更高的功能覆盖率。.
查看 硬件验证语言和功能验证
C++
C++是一種使用廣泛的计算机程序設計語言。它是一種通用程序設計語言,支援多重编程模式,例如程序化程序設計、数据抽象、面向对象程序設計、泛型程序設計和设计模式等。 比雅尼·斯特勞斯特魯普博士在贝尔实验室工作期间在20世紀80年代發明並實現了C++。起初,這種語言被稱作“C with Classes”(“包含‘類’的C語言”),作為C語言的增強版出現。随后,C++不斷增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多繼承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(Runtime type information)、命名空間(namespace)等概念逐漸納入標準。1998年,國際標準組織(ISO)頒布了C++程序設計語言的第一個國際標準ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2017。根據《C++編--程思想》(Thinking in C++)一書,C++與C的代码执行效率往往相差在±5%之間。 C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向对象語言,並且憑藉着接近C語言的效率,在工業界使用的開發語言中佔據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程式庫的出現,泛型程序設計在C++中佔據了越來越多的比重。當然,同時由於Java、C#等語言的出現和硬體價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL(Boost)等程式庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。.
查看 硬件验证语言和C++
硬件描述语言
在电子学中,硬件描述语言(hardware description language, HDL)是用来描述电子电路(特别是数字电路)功能、行为的语言,可以在寄存器传输级、行为级、逻辑门级等对数字电路系统进行描述。随着自动化逻辑综合工具的发展,硬件描述语言可以被这些工具识别,并自动转换到逻辑门级网表,使得硬件描述语言可以被用来进行电路系统设计,并能通过逻辑仿真的形式验证电路功能。设计完成后,可以使用逻辑综合工具生成低抽象级别(门级)的网表(即连线表)。 硬件描述语言在很多地方可能和传统的软件编程语言类似,但是最大的区别是,前者能够对于硬件电路的时序特性进行描述。硬件描述语言是构成电子设计自动化体系的重要部分。小到简单的触发器,大到复杂的超大规模集成电路(如微处理器),都可以利用硬件描述语言来描述。常见的硬件描述语言包括Verilog、VHDL等。.
縮寫
縮寫(abbreviation),在语言学裡嚴格地说是一種詞語的簡易格式,又称缩略语或簡稱。但實際上,它是從詞中提取關鍵字來簡要地代表原來的意思。例如,「欧洲联盟」被省略作為「欧盟」。.
查看 硬件验证语言和縮寫
编程语言
编程语言(programming language),是用来定义计算机程序的形式語言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 最早的编程语言是在電腦發明之前產生的,當時是用來控制及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的编程語言,而且每年仍有新的编程語言誕生。很多编程語言需要用指令方式說明計算的程序,而有些编程語言則屬於宣告式編程,說明需要的結果,而不說明如何計算。 编程语言的描述一般可以分為及語義。語法是說明編程語言中,哪些符號或文字的組合方式是正確的,語義則是對於編程的解釋。有些語言是用規格文件定義,例如C語言的規格文件也是ISO標準中一部份,2011年後的版本為ISO/IEC 9899:2011,而其他55語言(像Perl)有一份主要的文件,視為是。.
查看 硬件验证语言和编程语言
高级语言
高级编程语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。它是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示,使程序編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。由於早期電腦業的發展主要在美國,因此一般的高階語言都是以英語為藍本。在1980年代,當東亞地區開始使用電腦時,在日本、台灣及中國大陸都曾嘗試開發用各自地方語言編寫的高級語言,當中主要都是改編BASIC或專用於數據庫資料存取的語言,但是隨着編程者的外語能力提升,現時的有關開發很少。 G.
查看 硬件验证语言和高级语言
電子電路
電子電路(Electronic circuit):將各式各樣的電子元件,形成一迴路電路,進行電信號的運算,電子元件形成電路為電子電路。.
查看 硬件验证语言和電子電路
Java
Java是一種廣泛使用的電腦程式設計語言,擁有跨平台、物件導向、泛型程式設計的特性,广泛应用于企业级Web应用开发和移动应用开发。 任職於昇陽電腦的詹姆斯·高斯林等人于1990年代初开发Java語言的雛形,最初被命名为Oak,目標設定在家用电器等小型系統的程式语言,應用在电视机、电话、闹钟、烤面包机等家用电器的控制和通訊。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代網際網路的发展,Sun公司看見Oak在網際網路上应用的前景,于是改造了Oak,於1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的-zh-hans:指针; zh-hant:指標;-,改以-zh-hans:引用; zh-hant:參照;-取代,同時移除了C++中的--和多重继承特性,改用接口取代,增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。昇陽電腦对Java语言的解释是:「Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言」 Java不同於一般的编译語言或直譯語言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性。在早期JVM中,这在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的執行速度有了大幅提升。 与传统型態不同,Sun公司在推出Java時就将其作为开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是 Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司後來推出了与之竞争的.NET平台以及模仿Java的C#语言。後來Sun公司被甲骨文公司併購,Java也隨之成為甲骨文公司的產品。 現時,行動作業系統Android大部分的代碼採用Java 程式設計語言編程。.
查看 硬件验证语言和Java
OpenVera
OpenVera是一种硬件验证语言,它由新思科技研发和运营。该语言主要用于创建硬件系统的测试平台。OpenVera是作为IEEE 1800标准的SystemVerilog的一个基础部分,许多从事半导体集成电路设计、系统级设计、IP核设计以及电子设计自动化的人员都受益于此。.
SystemC
SystemC是一种基于C++语言的用于系统设计的计算机语言,是用C++编写的一组库和宏。它是为了提高电子系统设计效率而逐渐发展起来的产物。IEEE于2005年12月批准了IEEE1666-2005标准。 通常,系统由软件部分和硬件部分组成,系统的一部分功能由软件实现,而另一部分功能则由硬件实现。早期的系统比较简单,系统工程师将准备设计的系统划分为软件部分和硬件部分,分别由软件工程师和硬件工程师进行设计、仿真、实现和改进,最后再将软件部分和硬件部分结合起来形成系统。软件工程师使用C和C++等程序设计语言,因为这些语言专长于描述串行执行的程序,用来仿真软件部分;而硬件工程师则使用VHDL和Verilog等硬件描述语言,因为这些语言专长于描述并行运行的硬件,用来仿真硬件部分。但是,随着电子系统的不断发展,系统结构越来越复杂,系统元件也越来越多,这就要求系统工程师在先期划分软件和硬件时,就对整个系统性能有很好的了解和掌握,以便更好地划分软件和硬件,减小设计中不必要的失误所带来的损失和风险。SystemC也就由此孕育而生,因为它能够满足对软件和硬件协同仿真的需求。 SystemC的名称来自“系统”一词的英语System和“C/C++语言”中的C,以表示它是一种基于C/C++语言的系统设计语言。 许多科学研究团队和计算机辅助设计软件公司一同为SystemC的发展做出了贡献,1999年成立了开源SystemC的开发团队“Open SystemC Initiative(OSCI)”。 2011年11月10,IEEE通过了新SystemC 2011标准:IEEE1666-2011。.
SystemVerilog
在现代的集成电路(尤其是超大规模集成电路)的设计和验证流程中,SystemVerilog是一种由Verilog发展而来的硬件描述、硬件验证统一语言,前一部分基本上是2005年版Verilog的扩展,而后一部分功能验证特性则是一门面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比寄存器传输级更高的抽象级别,以事务而非单个信号作为监测对象,这些都大大提高了验证平台搭建的效率。 SystemVerilog已经被采纳为电气电子工程师学会1800-2009标准,并获得了主流电子设计自动化工具供应商的支持。虽然没有哪一个仿真系统能够声称自己完全支持SystemVerilog语言参考手册(Language Reference Manual, LRM)里介绍的所有语言结构,要改善测试平台的互操作性相当困难,但是推进跨平台兼容性的研究开发工作已经在进行。若干种验证方法学相继出现,以预定义类的形式对测试平台模块进行标准化,如今最新的基于SystemVerilog的验证方法学为通用验证方法学。这一方法学主要包括开放源代码的类库以及支持可重用测试平台、开发验证IP核的预置格式。许多第三方提供商则开始推出基于SystemVerilog的验证IP核。.
测试平台
测试平台(test bench),或称测试台,是用于验证软件设计正确性、可靠性的一种虚拟的环境。测试平台通常包含信号输入、数据处理、验证、输出几个部分。对于小型的数字电路设计,工程师可以使用硬件描述语言来搭建测试平台。如果遇到大型集成电路项目,由于所需的测试向量相当复杂,为了达到更高的语句、分支、条件、路径、触发、翻转覆盖率,很多情况需要使用更加先进的直接随机测试方法。硬件验证语言针对随机测试的建立和功能覆盖率的提高,则提供了专用的数据结构供工程师使用。.
查看 硬件验证语言和测试平台