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.mzph.cn/news/753157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APP性能测试,你需要关注哪些指标?

一、Android客户端性能测试常见指标 1、内存 2、CPU 3、流量 4、电量 5、启动速度 6、滑动速度、界面切换速度 7、与服务器交互的网络速度 二、预期标准指定原则 1、分析竞争对手的产品,所有指标要强于竞品 2、产品经理给出的预期性能指标数据 3、符合业…

【Python使用】嘿马头条完整开发md笔记第2篇:数据库,作用【附代码文档】

嘿马头条项目从到完整开发笔记总结完整教程(附代码资料)主要内容讲述:课程简介,ToutiaoWeb虚拟机使用说明,Pycharm远程开发,产品与开发,数据库1 产品介绍,2 原型图与UI图,3 技术架构,4 开发。OS…

SSL证书过期不更新会有什么影响?怎么续签?

SSL证书如果不及时更新,可能会带来以下问题: 1.影响体验和信誉: - 如果你的网站SSL证书过期了,现在大部分浏览器都会提醒用户这个网站的安全证书已经失效。这就很可能让用户觉得你的网站不太安全,不敢继续浏览&#x…

Python接口自动化之接口依赖

一、场景说明 在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖? 在此之前我们介绍过session管理器保存会话状态。如果接口请求需要携带token,那么又如果处理呢&#…

绿色再生·安卓4G智能远程操作巡视机器人小车

一、前言 1.1 项目介绍 【1】项目功能介绍 随着物联网技术与移动通信技术的快速发展,远程遥控设备在日常生活及工业应用中的普及度日益提高。无论是家用扫地机器人实现自主导航清扫,还是目前抖音平台上展示的实景互动小车等创新应用,都体现…

Games101笔记-模型、视图、投影

在旋转点,旋转矩阵的逆等于矩阵的转置 视图变换和投影变换 三维变换 左边3*3是线性变换,右边一列是仿射变换(平移) 先线性再平移 缩放、旋转、平移 x叉乘y得到z,y叉乘z得到x, xyz给任何两个可以得到另一个 (循环对称) z叉乘x得…

sqllab第十一关通关笔记

知识点: 发现登录框就可以尝试注入登录框一般都是字符型注入通过注入可以获取其他表的信息绕过手段 单引号闭合联合注入也可以进行错误注入 首先看界面是一个登录框;通过admin admin登录进去,发现页面会把用户名和密码的登录信息打印出来&am…

美区PayPal绑visa卡注意事项

很多小伙伴都有绑定paypal的需求,但是如果你是绑定美区的paypal这里有几点建议: 1、建议使用US的网络环境注册 2、使用美区的账号 3、使用美区的visa卡 三者统一才可以绑定成功,点击获取可以绑定美区paypal的visa卡,办理简单

【vue elementUI】修改el-dropdown样式

实现效果如下&#xff1a; 代码如下&#xff1a; <el-dropdown trigger"click" command"handleCommand" active-text-color"#606266"><span class"product-card">{{getCategoryName(categoryId)}}</span><el-dro…

docker安装华为opengauss高斯数据库

opengauss高斯数据库 openGauss是一款企业级开源关系型数据库&#xff0c;由华为公司推出。它深度融合了华为多年的数据库领域经验&#xff0c;充分结合企业级场景需求&#xff0c;基于openGauss自研生态而打造。 在架构上&#xff0c;openGauss着重于传统数据库的企业级能力和…

Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践

背景介绍 书接上回《Monorepo 解决方案 — Bazel 在头条 iOS 的实践》&#xff0c;在头条工程切换至 Bazel 构建系统后&#xff0c;为了支持用户使用 Xcode 开发的习惯&#xff0c;我们使用了开源项目 Tulsi 作为生成工具&#xff0c;用于将 Bazel 工程转换为 Xcode 工程。但是…

sqllab第二十七关通关笔记

知识点&#xff1a; union select 关键字过滤 通过<> /**/进行截断处理 un<>ion sel<>ect 没效果uni/**/on sel/**/ect 被过滤了双写绕过 这关对select进行了多重过滤&#xff0c;无法进行双写绕过 大小写绕过 UNion SElect (这关可以用&am…

OpenvSwitch 配置 Trunk 端口实验

OpenvSwitch 配置 Trunk 端口实验 Open vSwitch(OVS)作为一款领先的软件交换机&#xff0c;为构建灵活、可扩展的虚拟网络架构提供了强大的支持。其中Trunk口(Trunk Port)功能就是OVS中一个非常实用的特性。 Trunk口允许在同一个物理端口上传输多个VLAN的数据流量。通过配置T…

西门子上位机软件WINCC的项目改造及其多元化报警功能实践:巨控GRM560智能远程控制终端

标签: #西门子WINCC #OPC通讯 #短信报警系统 #项目改造 #智能报警 西门子上位机软件WINCC的项目改造及其多元化报警功能实践 在工业自动化领域&#xff0c;有效的监控和及时的异常响应是保障生产安全和效率的关键。西门子的WINCC上位机软件升级&#xff0c;整合了巨控的OPC560…

Python 计算1~100 求和

result0 for i in range(101):print(i)result result i print(result)

Redis 内存是如何划分的?

查询内存命令 info memory 查询Redis自身使用内存的统计数据。通过这个命令&#xff0c;可以了解 Redis 实例的内存分配情况、内存碎片、键空间使用情况等 内存分配情况&#xff1a; used_memory&#xff1a;Redis 实例当前使用的内存总量&#xff08;以字节为单位&#xff0…

【初学者】Visual Studio 2019没有 C 项目,只有C++怎么办? 怎么创建第一个项目教程。

起因&#xff1a; 想要在 Visual Studio 上创建一个 C 项目&#xff0c;发现只有 C 的。 解决&#xff1a; C 是 C 的超集。只要创建 C 的项目就行了&#xff0c;将新增的 .cpp 文件改后缀为 .c 即可。不会有问题的。 C 的语法更加严格&#xff0c;而 C 的项目更宽松。虽然…

【云呐】固定资产管理系统的功能有哪些?管理工具

为了提高经营效率&#xff0c;降低企业成本&#xff0c;许多企业选择固定资产管理系统。那么&#xff0c;固定资产管理系统有什么作用呢&#xff1f; 资产登记&#xff1a;  固定资产管理系统可以方便地登记公司的固定资产&#xff0c;包括资产名称、规格型号、购买日期、使…

3dmax渲染卡光子、灯光缓存的处理方法

1、在vray全局开关勾选最大射线强度 2、将场景材质转换为vray类型 3、关闭置换 4、清理空物体等场景垃圾 可以试一下优化场景的工具&#xff0c;清理空物体、空代理、适当塌陷精简场景、清理场景垃圾等 有3dmax效果图渲染需求可以使用渲染100&#xff08;注册填邀请码‘7788…

微信小程序简单实现手势左右滑动和点击滑动步骤条功能

使用微信小程序实现左右滑动功能&#xff0c;自定义顶部图案&#xff0c;点击文字滑动和手势触屏滑动&#xff0c;功能简单&#xff0c;具体实现代码如下所示&#xff1a; 1、wxss代码&#xff1a; /* 步骤条 */ .tab-box {display: flex;flex-direction: row;position: fix…