Menu Close

Verilog 设计方法与设计流程

Verilog 的设计方法与设计流程

Verilog的设计方法有两种,一种是自顶向下(top_down)的设计方法,一种是自底向上(bottom_up)的设计方法。设计流程是指从一个项目开始从项目需求分析,架构设计,功能验证,综合,时序验证,到硬件验证等各个流程之间的关系。

  1. 设计方法
  • 自顶向下的设计方法:

即先定义顶层模块功能,进而分析要构成顶层模块的必要子模块;然后进一步对各个模块进行分解、设计,直到到达无法进一步分解的底层功能块。这样,可以把一个较大的系统,细化成多个小系统,从时间、工作量上分配给更多的人员去设计,从而提高了设计速度,缩短了开发周期。一般一个系统的Verilog 设计包含激励测试文件(testbench.v), 顶层模块(top level design file),子模块( sub module)等。每个子模块也含有类似的结构便于设计、仿真与验证。

%title插图%num

图1

  • 自底向上的设计方法:

与自顶向下的设计方法正好相反,先从底层子模块开始设计,仿真与验证。然后由各级子模块组装成系统。

一般在系统比较复杂,模块较多,需要多人甚至多团队联合设计、仿真验证的系统都是采用自定向下的设计方法。先由系统架构工程师分析系统架构,编写架构文件,划分功能模块,定义模块接口,行为仿真,最后一级级分配到各组及个人。但是当系统规模较小,架构简单清晰,从事设计的人员较少,甚至只有一两个人从事项目设计时往往采用自底向上的设计方法,这样避免因为对早期架构理解的不透彻,定义的不准确,频繁修改架构而浪费时间。后面在复杂的工程训练中会以实例详细介绍FPGA及verilog的设计方法。

2. 工程管理

工程管理如流程图2所示。

%title插图%num

图 2

3.设计流程

设计流程一般包括需求分析,工程估计,项目描述,功能划分,文本描述,功能仿真,逻辑综合,布局布线,时序仿真(后仿真),板级验证,生产交付,后期维护,如图3。

  • 需求分析

工作人员需要对用户提出的功能要求进行分析理解,做出整体规划,形成较详细的技术指标,确定初步方案。例如,设计一个通信系统,需要考虑供电方式、时钟频率、通信速率,通信协议,软硬件划分,产品体积、成本、功耗等,电路实现采用 ASIC 还是选用 FPGA/CPLD 器件等。

  • 功能划分

正确地分析了用户的电路需求后,就可以进行逻辑功能的总体设计,设计整个电路的功能、接口和总体结构,考虑功能模块的划分和设计思路,各子模块的接口和时序(包括接口时序和内部信号的时序)等,向项目组成员合理分配子模块设计任务。

  • 文本描述

可以用任意的文本编辑器,也可以用专用的 HDL 编辑环境,对所需求的数字电路进行设计建模,保存为 *.v 文件,同时编写清晰的设计文档,会议汇报,审阅等。

  • 功能仿真(前仿真)

对建模文件进行编译,对模型电路进行功能上的仿真验证,查找设计的错误并修正。

此时的仿真验证并没有考虑到信号的延迟等一些 timing 因素,只是验证逻辑上的正确性。

  • 逻辑综合

综合(synthesize),就是在标准单元库和特定的设计约束的基础上,将设计的高层次描述(Verilog 建模)转换为门级网表的过程。逻辑综合的目的是产生物理电路门级结构,并在逻辑、时序上进行一定程度的优化,寻求逻辑、面积、功耗的平衡,增强电路的可测试性。

但不是所有的 Verilog 语句都是可以综合成逻辑单元的,例如时延语句。

  • 布局布线

根据逻辑综合出的网表与约束文件,利用厂家提供的各种基本标准单元库,对门级电路进行布局布线。至此,已经将 Verilog 设计的数字电路,设计成由标准单元库组成的数字电路。

  • 时序收敛

时序收敛是指布局布线后利用EDA综合工具,对时序参数提取,形成报告文件,根据报告文件对设计电路的建立时间,保持时间,资源占用给出详细信息,对于不满足要求的时序应在设计上调整。通常的方法是,对局部加约束提高综合、布局布线的优化能力,来达到设计要求。如果采用综合、布局布线方法优化的不能达到设计要求,应该参考一些优秀的设计(如算法优化,流水线,资源优化等),修改源代码以达到要求。

  • 时序仿真(后仿真)

布局布线后,电路模型中已经包含了时延信息。利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。单元器件的不同、布局布线方案都会给电路的时序造成影响,严重时会出现错误。出错后可能就需要重新修改 RTL(寄存器传输级描述,即 Verilog 初版描述),重复后面的步骤。这样的过程可能反复多次,直至错误完全排除。

  • FPGA/CPLD 下载或 ASIC 制造工艺

完成上面所有步骤后,就可以通过开发工具将设计的数字电路目标文件下载到 FPGA/CPLD 芯片中,然后在电路板上进行调试、验证。如果要在 ASIC 上实现,则需要制造芯片。一般芯片制造时,也需要先在 FPGA 板卡上进行逻辑功能的验证。

  • 生产与后期维护

如在后期使用中,局部功能修改,解决在前期测试中未发现的 bug等。

%title插图%num

图3

Quartus II 软件工具的设计流程

%title插图%num

图4

从图可以看出,在综合工具软件中,Quartus II 编译设计(Compile Design)提供:

  • 分析与综合(Analysis & Synthesis),
  • 适配    Fitter (Place & Route),也就是布局布线
  • 装配AssemblerGenerate Programming files) ,也就是生成FPGA的下载文件(*.sof)
  • 时序分析Timing Analysis),
  • 仿真网表EDA Netlist Writer
  • 器件编程下载到FPGA Program Device)

Vivado软件设计流程

 


%title插图%num

图5

Vivado软件的设计流程与QuartusII 的表现形式略有不同,但也是包含了上面介绍的各个流程环节。在Project Navigator的管理下,仿真(simulation),综合(Synthesis),应用(IMPLEMENTATION),编程与调试(PROGRAM AND DEBUG )。其中IMPLEMENTATION实现布局布线,以及时序参数的提取。PROGRAM AND DEBUG实现FPGA下载文件的生成,这与QuatusII的FITTER相对应。

这些过程正好配合设计流程的各个环节,帮助完成整个设计。

 

 

 

 

Posted in FPGA, IC, Quartus II, Verilog, Verilog

发表评论

相关链接