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、符合业…

Android制作微信添加多个图片,放大图片

1.添加依赖 implementation com.github.bumptech.glide:glide:4.12.0 //裁剪图片等等 implementation androidx.recyclerview:recyclerview:1.1.0 //recycleview依赖 2.使用recycleview <androidx.recyclerview.widget.RecyclerViewandroid:id"id/recyclerView"…

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

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

【 React 】Real DOM 和Virtual DOM的区别?优缺点?

1. 是什么 Real DOM,真实DOM ,意思为文档对象模型&#xff0c;是一个结构化文本的抽象&#xff0c;在页面渲染出的每一个结点都是一个真实DOM结构&#xff0c;如下&#xff1a; <div id"root"><h1>Hello World</h1> </div>Virtual Dom,本质…

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

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

node后端helmet中间件

认识helmet helmet 是一个 Node.js 的中间件&#xff0c;用于增强 Web 应用程序的安全性。它通过设置各种 HTTP 头来增加安全性&#xff0c;以防止一些常见的攻击。 作用 以下是一些 helmet 中间件可以帮助你处理的安全问题&#xff1a; 设置 HTTP 头部&#xff1a; helmet …

mysql判断一个字符串字段的长度是否为0

LENGTH(str) &#xff1a;返回字符串 str 所占用的字节数。 CHAR_LENGTH(str) &#xff1a;返回字符串 str 中字符的数量&#xff08;对于多字节字符集如UTF-8更为精确&#xff0c;因为它会按照字符而非字节计数&#xff09;。 如果字符串中都是单字节字符&#xff0c;或者不在…

Python接口自动化之接口依赖

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

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

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

【探索AI】三十二-计算机视觉(七)实践项目与案例分析

实践项目与案例分析 图像分类项目:使用公开数据集CIFAR-10和ImageNet进行训练和评估概念及步骤代码实例目标检测项目:实现基于YOLO或SSD的实时目标检测步骤 1: 环境准备步骤 2: 数据集准备步骤 3: 模型选择与下载步骤 4: 编写代码加载模型步骤 5: 实时视频流处理步骤 6: 处理…

Device Tree (四) - device_node -> platform_device

一&#xff0c;调用到of_platform_populate的流程 kernel V5.10: start_kernel(void) ----setup_arch(&command_line); --------setup_machine_fdt(__fdt_pointer); /* D:\work\source_code\msm-kernel\msm_kernel\arch\arm64\kernel\setup.c */ --------unflatten_device…

Jasypt 配置文件加密的用法

Jasypt 是一个用于配置文件加密的 Java 库。它可以用来加密和解密配置文件中的敏感信息&#xff0c;如数据库密码、API 密钥等。 使用 Jasypt 加密配置文件的步骤如下&#xff1a; 引入 Jasypt 依赖 首先&#xff0c;在你的项目的构建文件中添加 Jasypt 依赖。如果使用 Maven&…

AI系统性学习04—文本嵌入模型

文本嵌入&#xff08;text embedding&#xff09;是自然语言中的一项重要技术&#xff0c;是将文本转换了固定长度的低密度集向量的表示。 文章目录 1、文本嵌入介绍1.1 介绍1.2 文本嵌入与文本向量1.3 应用场景1.4 常用的文本嵌入模型 2、M3E文本嵌入模型2.1 模型介绍2.2 模型…

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

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

sqllab第十一关通关笔记

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

美区PayPal绑visa卡注意事项

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

【超细完整版】C# 获取WebService所有方法并调用 【调用篇】

注意&#xff1a;该文章涉及到的调用方法若找不到 请移步第一部分内容查找 C# 生成wsdl和dll教程请移步 【超细完整版】C# WebService 通过URL生成WSDL文件和DLL文件> 【生成篇】 开始 首先实现一个类&#xff0c;用于实现对URL的验证等 public class InputFormatVerifica…

【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 工程。但是…