Verilog与C语言的最大区别是什么
Verilog是一种硬件描述语言,作用是进行电路设计,可以描述电路的功能、连接和时序。他关心的不仅是从功能逻辑这个问题如何解决,更关心这些功能如何实现,关心最终的电气连接。可综合的Verilog代码经过综合后,最终会转化为实际电路。
C语言是一种软件描述语言,作用是通过算法逻辑实现某个功能。他不关心电路如何实现,只关心要解决这个问题,我应该使用什么功能,如何使用这些功能。C语言经过编译后,最终转化为二进制码实现。
C语言的抽象级别高于Verilog。无论C还是汇编都是利用CPU中现成的ALU、控制器、寄存器等来执行指令,而Verilog HDL描述的是电路中的寄存器、门电路等之间的连接关系和数据流向。
HDL的本质是什么
HDL是硬件电路本身,高级语言是使用电路的。高级语言通过shell、编辑器调用硬件电路去执行机器码指令,从而操控设备。
据我所知,基于coding的设计方法学是在spice仿真发明后才逐渐建立的。在此之前,电路设计都是手动画电路图的,然后用面包板进行验证。
HDL的设计与验证流程有哪些
在大型系统的设计与实现中,首先要进行详细的系统规划和描述,此时HDL描述侧重于整体系统的划分和实现。对系统级的仿真侧重于对整个系统的功能和性能指标的考量。功能模块级设计时将系统整体功能划分为可实现的具体功能模块,大致确定模块间的接口,如时钟、读写信号、数据流、控制信号等。在有些情况下,还要根据系统要求,描述每个模块或进程的时序约束。另外在此层次,必须权衡整个系统多种的实现方式之优劣,选出系统性能指标优并且可以高效实现的设计方案。功能模块级仿真主要是考察每个功能的功能和基本时序情况。系统与功能模块级设计与仿真常常要借助于C语言和抽象程度较高的HDL语言描述,如SystemC、CoWarC、SystemVerilog、Superlog。
仿真分为系统级仿真、行为级仿真、门极仿真三个层次,门极仿真又分为no timing仿真(前仿真)和timing aware仿真(后仿真)。在大部分设计中执行的第一个仿真将是RTL行为级仿真。这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设计的初期阶段不使用特殊底层元件即可以提高代码的可读性、可维护性,又可以提高仿真效率,且容易被重用。在设计布局布线完成以后可以提供一个时序仿真模型,这种模型中也包括了器件的一些信息,同时还会提供一个SDF时序标注文件。一般在设计流程中的第二个仿真是综合后门级功能仿真。绝大多数的综合工具除了可以输出一个标准网表文件以外,还可以输出Verilog或者VHDL网表,其中标准网表文件是用来在各个工具之间传递设计数据的,并不能用来做仿真使用,而输出的Verilog或者VHDL网表可以用来仿真。之所以叫门级仿真是因为综合工具给出的仿真网表已经是与生产厂家的器件的底层元件模型对应起来了,所以为了进行综合后仿真必须在仿真过程中加入厂家的器件库,对仿真器进行一些必要的配置,不然仿真器并不认识其中的底层元件,无法进行仿真。SDF时序标注最初使用在Verilog语言的设计中,现在VHDL语言的设计中也引用了这个概念。
另外,在逻辑综合的时候或者之前要插入测试电路(DFT,design for test),包括mbist(mem内建测试电路),lbist(逻辑内建测试电路)、scan chain(扫描链)、boundary scan(边界扫描)。在逻辑综合完成后和布局布线完成后,还分别需要做ATPG和ATPG simulation,来验证测试覆盖率。
布局布线完成后还需要physical sign-off和sta sign-off。然后需要tape-out,然后再是回片测试,然后封装。