Verilog——综合和防真

news/2024/7/24 11:13:37 标签: fpga开发, Verilog

2.1综合

        Verilog 是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能,最终在硬件电路上实 现该功能。在Verilog描述出硬件功能后需要使用综合器对Verilog代码进行解释并将代码转化成实际 的电路来表示,最终产生实际的电路,也被称为网表。这种将Verilog代码转成网表的工具就是综合 器。

        上图左上角是一段Verilog代码,该代码实现了一个加法器的功能。在经过综合器解释后该代码 被转化成一个加法器电路。QUARTUS、ISE和VIVADO等FPGA开发工具都是综合器,而在集成电 路设计领域常用的综合器是DC。

2.2仿真

        在FPGA设计的过程中,不可避免会出现各种BUG。如果在编写好代码、综合成电路、烧写到 FPGA后才发现问题,此时再去定位问题就会非常地困难。而在综合前,设计师可以在电脑里通过仿 真软件对代码进行仿真测试,检测出BUG并将其解决,最后再将程序烧写进FPGA。一般情况下可 以认为没有经过仿真验证的代码,一定是存在BUG的。 

        为了模拟真实的情况,需要编写测试文件。该文件也是用Verilog编写的,其描述了仿真对象的 输入激励情况。该激励力求模仿最真实的情况,产生最接近的激励信号,将该信号的波形输入给仿真 对象,查看仿真对象的输出是否与预期一致。需要注意的是:在仿真过程中没有将代码转成电路,仿真器只是对代码进行仿真验证。至于该代码是否可转成电路,仿真器并不关心。

        由此可见,Verilog的代码不仅可以描述电路,还可以用于测试。事实上,Verilog定义的语法非 常之多,但绝大部分都是为了仿真测试来使用的,只有少部分才是用于电路设计,详细可以参考本书 的“可综合逻辑设计”一节。Verilog中用于设计的语法是学习的重点,掌握好设计的语法并熟练应 用于各种复杂的项目是技能的核心。而其他测试用的语法,在需要时查找和参考就已经足够了。本书旨在方便本科、研究生的教学,因此将重点讲解设计用的语法。 

2.3可综合设计

        Verilog 硬件描述语言有类似高级语言的完整语法结构和系统,这些语法结构的应用给设计描述 带来很多方便。但是,Verilog是描述硬件电路的,其建立在硬件电路的基础之上。而有些语法结构 只是以仿真测试为目的,是不能与实际硬件电路对应起来的。也就是说在使用这些语法时,将一个语 言描述的程序映射成实际硬件电路中的结构是不能实现的,也称为不可综合语法。

         综合就是把编写的rtl代码转换成对应的实际电路。比如编写代码assign a=b&c;EDA综合工 具就会去元件库里调用一个二输入与门,将输入端分别接上b和c,输出端接上a。

        同样地,如果设计师编写了一些如下所示的语句

        

        综合工具就会像搭积木一样把这些“逻辑”电路用一些“门”电路来搭起来。当然,工具会对必 要的地方做一些优化,比如编写一个电路assing a=b&~b,工具就会将a恒接为0,而不会去调用一 个与门来搭这个电路。

        综述所述,“综合”要做的事情有:编译rtl代码,从库里选择用到的门器件,把这些器件按照 “逻辑”搭建成“门”电路。

        不可综合,是指找不到对应的“门”器件来实现相应的代码。比如“#100”之类的延时功能, 简单的门器件是无法实现延时100个单元的,还有打印语句等,也是门器件无法实现的。在设计的时 候要确保所写的代码是可以综合的,这就依赖于设计者的能力,知道什么是可综合的代码,什么是不 可综合的代码。对于初学者来说,最好是先记住规则,遵守规则,先按规则来设计电路并在这一过程 中逐渐理解,这是最好的学习路径。

        下面表格中列出了不可综合或者不推荐使用的代码。


http://www.niftyadmin.cn/n/5436268.html

相关文章

【算法】归并排序模板

对于输入序列 9 1 0 5 4,超快速排序生成输出 0 1 4 5 9。 您的任务是确定超快速排序需要执行多少交换操作才能对给定的输入序列进行排序。 输入格式 输入包括一些测试用例。 每个测试用例的第一行输入整数 n,代表该用例中输入序列的长度。 接下来 n…

grpc python实现异步调用(不用grpc异步接口)

grpc python实现异步调用[不用grpc异步接口] 1.infer_session.proto2.生成Python库函数3.infer_session_server.py4.infer_session_client.py5.common.py6.运行7.输出 grpc同步调用更简单,但是在处理复杂任务时,会导致请求阻塞,影响吞吐。当然,可以采用grpc异步接口解决,本方采…

一个页面请求从在浏览器中输入网址到页面最终呈现

前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一起提醒自己,要适时放慢脚步…

centos7修改ssh登录错误限制和端口修改

前几天登录服务器的时候发现有错误登录信息15w多条,该服务器映射了外网,估计是被爆破了。为了防止再有人进行爆破,修改一下ssh的限制登录顺便把默认端口改掉 编辑ssh配置文件 vim /etc/ssh/sshd_config去掉注释 按需修改次数 MaxAuthTries 6…

1.详细解释单链表中的头结点;2.Java算法——力扣707题:设计链表

1.详细解释单链表中的头结点 在做这道算法之前,首先务必要弄明白三个问题: 对于含头节点的单链表, 头结点是否是第一个节点?单链表的长度是否包含该头节点?头结点是否有索引?如果有的话,又是多…

springBoot项目,无配置中心,怎么实现类似功能

实现EnvironmentPostProcessor import cn.hutool.http.HttpUtil; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.boot.env.YamlPropertySourceLoader; import org.springfr…

Rocky Linux - Primavera P6 EPPM 安装及分享

引言 继上一期发布的Redhat Linux版环境发布之后,近日我又制作了基于Rocky Enterprise Linux 的P6虚拟机环境,同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primav…

第四章 Java 网络编程

一、OSI 七层模型和 TCP/IP 四层模型 1、OSI(Open System Interconnect),即开放式系统互联。 一般都叫 OSI 参考模型,是 ISO(国际标准化组织)组织在 1985 年研究的网络互联模型。 2、TCP/IP 协议栈是美国国…