不同建模方式的介绍 RTL建模笔记(1)

说明:该专栏"RTL建模笔记"是《RTL Modeling with SystemVerilog for Simulation and Synthesis》的翻译;该笔记略过了第一章第一小节中背景介绍内容,以及第二小节前面部分的门级、RTL级建模介绍,对于后续学习不影响。

1.行为级和事务级建模

        SystemVerilog过程块可用于在比RTL更高的抽象层次上进行建模,这种抽象层次的模型通常被称为行为级模型(也称为总线功能模型或算法模型)。由于RTL级和行为级模型都使用过程块,因此它们的外观可能非常相似。

行为级模型与RTL级模型的区别在于两个方面,或者两者兼而有之:

  • RTL过程块会在一个时钟周期内执行其编程语句,如果是组合逻辑,则可能在零个时钟周期内完成。而行为过程块可能需要任意数量的时钟周期来执行其语句。
  • RTL模型必须遵循严格的语言限制,以便能够被RTL综合编译器所综合。而行为模型则可以充分利用完整的System-Verilog语言。

        高层次的抽象是事务级建模。事务模型通常用于验证代码,并且通常使用 SystemVerilog 的面向对象编程结构进行建模。 

        行为和事务的抽象级别无法由RTL综合编译器进行综合。

2.定义SystemVerilog可综合子集

        由于缺乏 SystemVerilog综合标准,不同综合编译器支持 SystemVerilog 标准的子集不同,这意味着在设计阶段需要针对不同的编译器进行适配。工程师在编写用于综合的模型时需格外小心,要参考将要使用的综合编译器的文档,并遵循该编译器的语言子集。在一种综合编译器编写的模型可能需要进行修改,才能与另一种综合编译器配合使用。

        本书定义了SystemVerilog的一个子集,该子集可与市面上大多数的SystemVerilog RTL综合编译器兼容。设计工程师可以放心,只要遵循本书中所述的语言限制和编码准则,模型便可在任何主要的SystemVerilog综合编译器上得到综合。

3.ASIC和FPGA建模

        ASIC和FPGA技术的完整定义超出了本书的范围,本书的主题是与SystemVerilog语言相关的正确数字逻辑建模风格。

3.1 标准ASIC元件

        ASIC是Application Specific Integrated Circuit的首字母缩写,IC包含不同的功能,ASIC 的设计宗旨是执行特定任务(因此得名“应用专用芯片”),控制器、音频格式转换和视频处理是适合由 ASIC执行的特定应用任务示例。为了执行一般性操作以及其特定任务,ASIC还可包含一个或多个嵌入式处理器。带有嵌入式处理器的 ASIC通常被称为片上系统(SoC,system on chip)。

         大多数ASIC技术采用标准单元,即预先设计好的逻辑块,由一到数个逻辑门组成。一个SIC单元库可能包含数百个标准单元,例如AND、NAND、OR、NOR、异或、异或非、二选一多路复用器、D型触发器、锁存器等。每个单元都具有明确的电气特性,如传播延迟、设置时间和保持时间,以及电容。

        设计ASIC的流程包括从库中选取合适的单元,并将它们连接起来以实现所需的性能。在整个过程中会用到软件工具。ASIC设计的典型流程如下图所示。

上图的步骤是:

  1. 第一步指定设计的预期功能。
  2. 所需的功能在模型的抽象RTL级别上进行建模。在这个阶段,重点是功能,而非物理实现。
  3. 仿真用于验证功能。该书第1.5节(第17页)详细讨论了仿真的内容。
  4. 综合过程用于将RTL功能映射到目标ASIC类型的相应标准单元上。综合的输出称为门级网表。综合过程将在第1.6节(第31页)中作更详细的描述。
  5. 通过仿真逻辑等价检查器(一种形式验证方法),可以验证门级实现在功能上等同于RTL功能。--> 现在常用形式验证工具做等价验证,常用工具为s家fmt和c家lec。
  6. 时钟树综合用于将时钟驱动器均匀地分布到整个设计中。通常会使用扫描链(scan chain)插入工具来增强设计的可测试性。
  7. 布局和布线软件会计算如何在实际的硅芯片上布局单元,并规划互连走线。布局和布线软件的输出是一个图形数据系统文件(GDSII)文件。GDSII是一种二进制格式,其中包含有关几何形状(多边形)和其他数据的信息,这些信息对于在硅芯片上实际构建IC是必要的。
  8. 通过执行设计规则检查(DRC),确保将由该代工厂制造的ASIC所遵循的所有规则都已得到遵守,例如栅极扇出负载。
  9. 进行静态时序分析(STA)以确保设置/保持时间得到满足,同时考虑到互相作用的net和时钟树偏移的延迟影响。
  10. 最后将GDSII文件和其他数据发送给负责制造ASIC的代工厂。将这些文件交给代工厂的过程被称为“tapeout” ASIC,因为在ASIC设计的早期阶段,人们使用磁带将文件发送给代工厂。

 3.2 FPGA

        FPGA 是现场可编程 门阵列(Field Programmable Gate Array)的缩写,FPGA是一种集成电路,包含一定数量的逻辑块,这些逻辑块在IC制造完成后可以进行配置(而ASIC的内容和布局必须在制造之前确定)。FPGA所包含的功能性无法与 ASIC 相媲美,且运行时钟速度较慢,这在 RTL级别的设计中是重要的考量因素。但FPGA技术的最新进展显著缩小了 FPGA和 ASIC 之间的差距。总的来说,FPGA 可以用于实现与ASIC 相同的功能。

        FPGA包含许多称为可配置逻辑块(CLB)的小型逻辑组件的阵列。一些FPGA厂商将这些块称为逻辑阵列块(LAB),一个典型的CLB可能包含一个或多个查找表(LUT)和一些选择器(MUX),和一个存储元素,例如D型触发器。大多数FPGA中的查找表是小型RAM,编程时使用逻辑运算,如AND、OR和XOR。从LUT中选择所需的操作允许CLB以多种方式使用,从简单的"与"或"异"门到更复杂的组合功能。某些FPGA中的CLB可能还具有其他功能,例如加法器。MUX可使组合结果直接由CLB输出(异步输出)或存储在存储单元中((同步输出)。

        FPGA的制造过程中会包含一个由数百或数千个CLB单元组成的阵列,以及可配置的互连结构,这些互连结构可以被“编程”成所需的CLB单元配置。FPGA还包含I/O端口,这些端口可以配置为连接到CLB阵列的任意一列或一行。
下图显示了一个复杂FPGA的典型设计流程。

        FPGA设计流程的前端与ASIC类似,但后端有所不同。与ASIC设计流程相比,FPGA设计流程后端的主要区别在于FPGA的放置和布线。对于ASIC,放置和布线软件决定了IC的制造方式。而对于FPGA,综合放置和布线软件则决定了预先制造的IC将如何进行编程。本书将重点介绍前端步骤2和3,即RTL建模和模拟,这是ASIC和FPGA设计之间差异最小的部分。

3.3 适用于ASIC和FPGA的RTL编码风格

        理想情况下,相同的RTL代码可以用于针对ASIC或FPGA进行开发:在RTL级别进行工作时,工程重点在于设计和验证功能,而无需考虑具体的实现细节。综合编译器的职责是将RTL功能映射到特定的ASIC或FPGA技术上。

        大多数(但不是全部)RTL代码都能在ASIC和FPGA上得到同样良好的综合。但这一概括性结论也存在例外。RTL模型的某些方面需要考虑设计是将在ASIC还是FPGA上实现。这些方面包括:

  • reset,大多数ASIC单元库都包含同步和异步复位触发器。设计工程师可以使用被认为最适合设计的复位类型来编写RTL模型;一些FPGA的灵活性较差,仅具备一种类型的复位触发器(通常是同步的)。虽然综合编译器可以将具有异步复位的RTL模型映射到门级同步复位,或者反之,但需要额外的逻辑门。许多FPGA还支持全局复位功能和上电复位触发器状态,这是ASIC所不具备的。第8章第8.1.5节(第286 页)更详细地讨论了建模复位。
  • Vector sizes(矢量大小),对于最大矢量宽度和矢量操作,ASIC具有相当程度的灵活性,处理大型矢量时,复杂的操作将需要大量的逻辑门,但大多数ASIC中使用的标准单元架构能够支持这些操作。FPGA在这方面则较为受限。预定义的CLB数量及其在FPGA内的布局,可能限制了对大型矢量进行复杂操作的能力,这要么是因为可用的CLB数量有限,要么是因为在CLB之间进行互连的布线复杂性所致。ASIC和FPGA之间的这种差异确实意味着,即使是在RTL级别的抽象层面,设计工程师也必须考虑到设备的局限性,以确保实现的功能与之相匹配。

        本书中所提供的多数示例、编码风格和指南,同样适用于ASIC和 FPGA 设计。对于针对 ASIC或 FPGA 时可能影响 RTL编码风格的少数特殊情况,书中有所特别说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87238.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87238.shtml

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

相关文章

<13>-MySQL用户管理

目录 一,用户管理操作 1,创建用户 2,查询用户 3,修改密码 4,删除用户 二,数据库权限 1,用户授权 2,回收权限 一,用户管理操作 1,创建用户 --创建用户…

如何使用超低噪声电源提高AD 时钟电路质量,改善超声系统的图像质量

超声波技术是医疗诊断和其他应用中广泛使用的无创工具,已经从静态图像进化到动态图像,从黑白呈现变为彩色多普勒图像。这些重大进步主要是由于引入了数字超声技术。虽然这些进步提高了超声成像的有效性和通用性,但同样重要的是,这…

【解决方案】Kali 2022.3修复仓库密钥一键安装docker,docker compose

1、Kali 2022.3 2、一键安装docker,docker compose #!/bin/bashecho " 安全的Kali Docker安装脚本 "# 备份重要配置 cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date %Y%m%d)# 修复Kali仓库配置 echo "修复Kali仓库配置..." ca…

Transformer、RNN (循环神经网络) 和 CNN (卷积神经网络)的区别

我们来详细对比一下 Transformer、RNN (循环神经网络) 和 CNN (卷积神经网络) 这三种在深度学习中极其重要的架构,并通过具体例子说明它们的区别。 核心区别总结: 处理数据的方式: CNN: 专注于局部特征和空间/时间模式。通过卷积核在输入数据…

408第二季 - 组成原理 - 数据类型转换

这章内容会比较少 闲聊 如果题目说把8位改成4位,你保留低位就行了 这里保留的是0101 然后是有符号数和无符号数的转换 机器数就是二进制长什么样子 然后就是小数点是不参与存储的 然后简单看看代码 这是short就说明是有符号数 unsigned就是说明是无符号数 然后y…

让 Deepseek 写电器电费计算器(html版本)

以下是一个简单的电器电费计算器的HTML和CSS代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

react_flow自定义节点、边——使用darg布局树状结构

文章目录 ⭐前言⭐引入react-flow⭐自定义节点nodeType⭐自定义边edgeType⭐添加节点⭐inscode代码块⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享 前端 ——react_flow自定义节点、边——使用darg布局树状结构。 自定义效果 可以自定义节点、边、线条流动…

word表格批量转excel,提取表格数据到excel

本文将带你一步步实现一个将 Word 中的表格内容批量提取并转换为 Excel 文件的自动化工具&#xff0c;适用于需要手动复制粘贴数据到excel的场景 假设我们有这样的表格在word中&#xff0c;图片世放在excel中便于截图&#xff0c;现在需要将表格中有颜色的数据提取到对应的exce…

day2课程

1.添加pinia到Vue项目 2.counter基础使用 3.getters和异步action 4.storeToRefs和调试 5.项目初始化和git管理 6.别名路径联想设置 7.elementsPlus自动按需导入配置 这个项目使用的是按需引入 1.安装包管理器 npm install element-plus --save 2.按需引入 npm install -D unp…

Vue3 + TypeScript + Element Plus 设置表格行背景颜色

技术要点&#xff1a; 1、使用 :row-class-name"setRowClassName" 设置表格行类名 2、不能同时使用 stripe 3、设置行类名的样式 应用效果&#xff1a; 同时使用 stripe 出来的效果&#xff1a; 参考代码&#xff1a; ReagentTable.vue <script setup lang&…

山东大学 软件项目管理知识点总结

软件项目管理背诵总结 将老师所发ppt的知识点整理&#xff0c;方便查阅与背诵。 文章目录 软件项目管理背诵总结1. 概述1.1 什么是项目&#xff1f;1.2 项目有那些特征&#xff1f;1.3 项目于日常工作有什么区别&#xff1f;1.4 如何衡量一个项目是否成功&#xff1f;1.5 软件项…

css基础笔记简洁版1

&#x1f4d8; CSS 基础笔记 1 一、CSS 简介 CSS&#xff08;层叠样式表&#xff09;用于为网页添加样式&#xff0c;实现结构与样式分离&#xff0c;能够控制颜色、字体、布局、位置、动画等视觉效果。 二、基本语法 选择器 {属性1: 值1;属性2: 值2; }说明&#xff1a; 选…

reactor模型学习

学习链接 狂野架构师第四期netty视频 - B站视频 狂野架构师训练营6期 - B站视频 Netty学习example示例&#xff08;含官方示例代码&#xff09; LG-Netty学习 【硬核】肝了一月的Netty知识点 - 启动过程写的很详细 Reactor模型讲解 一文搞懂Reactor模型与实现 高性能网络编…

应用探析|千眼狼高速摄像机、sCMOS相机、DIC测量、PIV测量在光学领域的应用

2025&#xff0c;长春&#xff0c;中国光学学会学术大会。中科视界携千眼狼品牌四大科学仪器高速摄像机、sCMOS科学相机、DIC应变测量系统、PIV流场测量系统亮相&#xff0c;在光学领域多个细分研究方向承载科学实验的感知与测量任务。 1先进制造技术及其应用 激光切割、激光焊…

Kafka 4.0.0集群部署

Kafka 4.0.0集群部署 1.1 关闭防火墙和 selinux 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service关闭selinux setenforce 0 #&#xff08;临时生效&#xff09; sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config #&…

探秘卷积神经网络(CNN):从原理到实战的深度解析

在图像识别、视频处理等领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称 CNN&#xff09;如同一位 “超级侦探”&#xff0c;能够精准捕捉图像中的关键信息&#xff0c;实现对目标的快速识别与分析。从医疗影像诊断到自动驾驶中的路况感…

vue3导入xlsx表格处理数据进行渲染

下载插件 npm install -S xlsx import * as XLSX from "xlsx"; // Vue3 版本 <el-upload class"upload-demo"accept".xlsx":http-request"channel":show-file-list"false":limit"1"><el-button type&qu…

生成模型_条件编码器

条件编码器可以采用不同的网络结构&#xff0c;UNet 是其中非常常见的一种&#xff0c;尤其在 Diffusion 和图像生成任务中用得最多。 &#x1f9e0; 什么是“条件编码器”&#xff1f; 在 **条件生成模型&#xff08;Conditional GAN / Diffusion&#xff09;**中&#xff0c…

@Scheduled, @PostConstruct, @PreDestroy, @Async, @OnApplicationEvent

注解名称模块功能引入年份版本是否推荐使用PostConstructjavax.annotation (Java EE) / spring-beansBean 初始化完成后执行的方法2006Java EE 5 / Spring 2.0✔️ 推荐PreDestroyjavax.annotation (Java EE) / spring-beansBean 销毁前执行的方法2006Java EE 5 / Spring 2.0✔…

小程序请求加载提示防闪烁机制详解

目录 一、问题背景&#xff1a;闪烁现象的产生 二、完整解决方案代码 三、核心防闪烁机制解析 1. 请求计数器&#xff08;requestCount&#xff09; 2. 延迟隐藏定时器&#xff08;关键创新&#xff09; 3. 100ms缓冲期的重要意义 四、关键场景对比分析 场景1&#xff…