Difference between RTL and Behavioral verilog

2023-11-12

原文链接:https://electronics.stackexchange.com/questions/63682/difference-between-rtl-and-behavioral-verilog

Answer 1

ehavioral code is higher-level and usually can’t be synthesized. Constructs like loops, delays, and “initial” statements are behavioral.

RTL code is lower-level and is intended to be synthesized. It defines a circuit as a combination of interconnected registers and the operations performed on signals between those registers.

Taken from Yahoo Answers and found immediately with Google!

Answer 2

“Register transfer level” code is code described in terms of registers and combinatorial logic that sits between them and intended to be used as input to a synthesis tool. The code sticks to a synthesizable subset[1] of the language. There are no explicit delays, all timing is in terms of clock edges. Structures representing level triggered latches are generally avoided. Registers are typically clocked off a small number of clocks whose details can be given to the timing analyser. The combinatorial logic is usually expected[2] to settle within a single clock cycle which limits it’s complexity. It’s higher level than a gate level model but it still defines what value every register has on every clock cycle.

“behavioural” code is generally code that describes behviour at a higher level for use in a simulation but it not intended to be synthsizable. It may be used to describe the environment surrounding your design in a simulation. It may be used as an early step in a design to get the overall design in place before detailed RTL design of the individual modules is overtaken.

[1] The exact subset allowed varies between synthesis tools.
[2] If it doesn’t settle within a single cycle than simulation and synthisis may give different results and the timing analyser will show a violation unless it’s explicitly told not to.

Answer 3

Behavioral Code: By definition it defines the behavior of a digital component. It does not give information how it will be implemented into actual HW (synthesis). It will not give information how registers and gates will be implemented to perform required operation. It is more like writing an algorithm or FSM in C.

RTL: It is more precise form of a digital component. It gives information, how code will be implemented as actual HW (after synthesis). Also it gives information how data will be transferred between registers and gates.

Answer 4

It’s the same language, but different styles are used. With experience you can tell them apart quickly, here’s a few traits of each:

Behavioural verilog code generally looks more like a sequential computer program running from top to bottom within an initial begin block. You may find there are no input/output ports defined in top level behavioural modules, since the output may be to simulator facilities, like the console $display() or filesystem with $open or waveform dumper with $dumpfile and $dumpvars. Watch for delays between statements implemented using long simulation time waits e.g. #4000 and invoking tasks wishbone_master.checked_read(addr, value). For these higher level constructs is it not obvious what the synthesised technology equivalent would/could be.

Verilog for synthesis always has input/output ports, as without connected ports the module has no side effects and can be eliminated [1]. Delays probably implemented by counting cycles of some particular clock. Note some Verilog system functions e.g. $clog2(PARAMETER) may be permitted in code for synthesis, so the presence of $function is not a guarantee either way. Code for synthesis tends to comprise many of independent ‘processes’ each with a sensitivity list. Some technologies do permit initial begin blocks for memory initialisation so again that is not a guarantee.

Ultimately the designer knows the purpose of the code they write and will appropriately invoke it with the synthesis toolset or in a simulator.

[1] except for certain IP blocks which may make back-door connections to internal chip facilities, e.g. JTAG

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Difference between RTL and Behavioral verilog 的相关文章

  • scl sda 是什么接口_SOC设计控制接口IIC

    IIC全称为Inter Integrated Circuit 集成电路总线 IIC接口只有两根线 SCL SDA SCL为同步时钟线 SDA为数据线 通SPI不同的是 数据线为双向接口 也就是说 发送接收都走这根线 IIC是一种多向控制总线
  • 我想起我当初玩的DE1-SOC不就是双核ARM cortex A9么

    我想起我当初玩的DE1 SOC不就是双核ARM cortex A9么 确实这种A系列的就是跑Linux或者安卓 可惜你当初没有好好弄弄 xff0c 装个Linux就完事了 没有真正深入去学
  • CPU、MPU、MCU、SOC的概念和区别

    概念 1 cpu cpu central processing unit 是一台计算机的运算核心和控制核心 xff0c CPU由运算器 控制器和寄存器以及实现他们联系的数据 控制总线构成 xff0c cpu典型的三级流水线操作是取值 译码
  • R-Car H3系列SOC芯片与R-Car M3 R8A77961JBP0BA区别

    RENESAS推出的 xff1a R Car H3 系列 SOC 芯片 R8A77951JA00BA xff03 YJ1 xff0c R Car M3 系列 SOC 芯片 R8A77960JA60BG xff03 YJ5 在内核上 xff1
  • Introduction to NMOS and PMOS Transistors

    原文链接 https anysilicon com introduction to nmos and pmos transistors Introduction to NMOS and PMOS Transistors In this ar
  • How to Reduce Ground Bounce: Mitigating Noise with PCB Design Best Practices

    原文链接 https www allaboutcircuits com technical articles how to reduce ground bounce mitigating noise pcb design best prac
  • vivado 中手动添加 pynq类型板

    随着人工智能的火热 算法的并行计算越来越受到追捧 而pynq python zynq 作为可以用python为高级语言变相调用fpga的模块的soc板也越来越受到人工智能和硬件相关学生的喜爱 而然 Vivado 2019之前的很多版本是默认
  • 【设计经验】5、Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    原文链接 https www cnblogs com liujinggang p 10549095 html
  • RISC-V学习笔记【系统设计】

    蜂鸟E200系列处理器简介 特色 开源 免费 高能效比 针对IoT领域设计 支持RV32I E A M C F D等指令子集和机器模式 2级流水线 功耗和性能均优于主流商用的ARM Cortex M处理器 提供完整的配套SoC 包括中断控制
  • 芯片设计中的时钟与约束

    1 同步电路与异步电路 首先来谈谈同步电路与异步电路 那么首先就要知道什么是同步电路 什么是异步电路 对于同步时序电路 不同的文章有不同的说法 大致有下面的定义方法 对于比较严格的定义 一个电路是同步电路 需要满足一下条件 每一个电路元件是
  • How to Connect Power Switches

    原文链接 https vlsiconceptsforyou blogspot com 2020 05 how to connect power switches html Wednesday May 20 2020 How to Conne
  • SoC的开发

    怎么做SoC SoC是干啥的 SoC就是将CPU GPU Uart I2C WiFi Etherne等硬件IP连起来 做到一个芯片上 主要工作有 1 用verilog将这些IP core连起来 在verilog仿真器上进行验证 也要写一些C
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • 数字SOC设计之低功耗设计入门(二)——功耗的分析

    前面学习了进行低功耗的目的个功耗的构成 今天就来分享一下功耗的分析 由于是面向数字IC前端设计的学习 所以这里的功耗分析是基于DC中的power compiler工具 更精确的功耗分析可以采用PT 关于PT的功耗分析可以查阅其他资料 这里不
  • 线路编码(NRZ,NRZI,8B/10B,Manchester等)

    0 前言 编码根据作用和场景不同分为信源编码 信道编码和线路编码 信源编码 降低信源符号之间的相关性和冗余度 通过编码提高每个符号的信息量 具体说 就是针对信源输出符号序列的统计特性来寻找某种方法 把信源输出符号序列变换为最短的码字序列 比
  • 数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化

    三 门级电路低功耗设计优化 1 门级电路的功耗优化综述 门级电路的功耗优化 Gate Level Power Optimization 简称GLPO 是从已经映射的门级网表开始 对设计进行功耗的优化以满足功耗的约束 同时设计保持其性能 即满
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • ASIC中带有MUX的时钟路径时序约束

    链接 https pan baidu com s 1BrAsabLYLGbvdXJB2LQwiA 提取码 mgrn
  • JESD204B(RX)协议接口说明。

    解释一下Vivado IP协议中的Shared Logic in Example 与 Shared Logic in Core 首先 什么是Shared Logic 字面意思很好理解 就是共享逻辑 主要包括时钟 复位等逻辑 当选择Share
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告

随机推荐

  • Open3D 最小二乘拟合空间直线(方法一)

    目录 一 算法原理 1 空间直线 2 最小二乘法拟合 二 代码实现 三 结果展示 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 算法原理 1 空间直线 x
  • MySQL环境搭建利器---Sandbox

    MySQL环境搭建利器 Sandbox https metacpan org pod MySQL Sandbox http mysqlsandbox net https www cnblogs com gomysql p 3767445 h
  • Java中Arrays类的常用方法

    Java中Arrays类的常用方法 Arrays类位于 java util 包中 主要包含了操作数组的各种方法 import java util Arrays Arrays fill 填充数组 int arr new int 5 新建一个大
  • pycharm使用中的小tip

    1 双击shift会弹出全局搜索功能 关闭 双击shift 打开全局搜索 action gt registry 找到ide suppress dounle hangler勾上 重新打开 ctrl shift a 2 快速格式化代码 ctrl
  • pytorch 实现SSD详细理解 (一)vgg和特征图的提取

    摘要 本章就开始进入SSD的学习 通过学习这些基础的目标检测算法更好的对比理解其它算法 多看几种代码的写法更容易找到适合自己书写的套路 ssd网络的6个特征图 ssd采用的是vgg16的特征提取 在vgg16中提取二个特征图 之后又通过额外
  • Linux高性能I/O框架库Libevent介绍

    C C Linux服务器开发 后台架构师知识体系 这篇文章主要讲一下Libevent库的内容 顺便对I O库整体做个介绍 Linux服务器程序必须处理的三类事件 I O事件 信号 定时事件 在处理这三类事件时我们通常需要考虑如下三个问题 统
  • 解决Action和Servlet共存问题

    一 问题的提出 先让我们看下 web xml 中 struts2 和 servlet 的配置
  • 程序员的生活1

    记录最近生活 最近用C Winform DevExpress InstallShield 开发数据管理及分析软件 在懵懵懂懂的路上 越走越远 项目也差不多进行了一年 当然也会在后期 陆续更新项目上相关的东西 虽然界面很丑 但学习的热情不能因
  • matlab的gscale函数

    function g gscale f varargin if length varargin 0 method full8 else method varargin 1 end if strcmp class f double max f
  • selenium元素等待

    元素等待 js代码执行渲染期间 导致数据 标签加载缓慢 如果元素没有加载完成 直接通过find element去进行定位 会出现元素不存在的异常 3种方法 1 time sleep 10 强制性等待 不管元素在设置时间范围内是否加载出来 都
  • NOIP中的数学---第3课 约数

    约数定义 思考三秒钟 注意约数是成对出现的 如果数a能被数b整除 a就叫做 b 的倍数 b就叫做a的约数 约数和倍数都表示一个整数与另一个整数的关系 不能单独存在 最大公约数是指两个或多个整数共有约数中最大的一个 例如 24 18 共同的约
  • Redis缓存知识-穿透、击穿、雪崩

    目录 一 Redis介绍 二 Redis做缓存服务器 三 缓存穿透 击穿 雪崩 1 缓存穿透 2 缓存击穿 3 缓存雪崩 大家好 我是杨叔 每天进步一点点 关注我的微信公众号 程序员杨叔 获取更多测试开发技术知识 今天分享的内容是 Redi
  • 安卓(Android studio)编写一个计算器,可以连续加减乘除,可加小数点,不包含括号以及加减乘除优先算法。

    安卓 Android studio 编写一个计算器 可以累加 可加小数点 不包含括号以及加减乘除优先算法 首先需要在res目录下的layout文件下创建一个xml文件进行界面的布局设计 接着在Java目录下创建一个Java的class类文件
  • 折纸问题——打印折痕方向

    题目 请把一段纸条竖着放在桌子上 然后从纸条的下边向上方对折1次 压出折痕后展开 此时 折痕是凹下去的 即折痕突起的方向指向纸条的背面 如果从纸条的下边向上方连续对折2 次 压出折痕后展开 此时有三条折痕 从上到下依次是下折痕 下折痕和上折
  • Zabbix监控httpd服务

    Zabbix监控httpd服务 一 工作要求及目的 二 WEB配置步骤 1 进入监控主机列表 2 链接模板 3 查看自定义HTTP端口监控项 4 查看自定义的触发器 三 客户端测试http服务停止报警 1 停止服务 2 查看web端报警 3
  • 去除百度推广的广告

    在百度搜索过的关键字后 经常在其他网页看到百度的推广广告 超级烦人而且涉及隐私 下面是去除方法 C Windows System32 drivers etc下的hosts文件 加入 127 0 0 1 cpro baidu com 127
  • 理解目标检测当中的mAP

    我们在评价一个目标检测算法的 好坏 程度的时候 往往采用的是pascal voc 2012的评价标准mAP 网上一些资料博客参差不齐 缺乏直观易懂的正确说明 希望这篇博文能够给大家一点帮助 mAP历史 目标检测的mAP计算方式在2010年的
  • 【PBR系列二】辐射度量学理论

    本文核心知识主要参照 现代计算机图形学入门 闫令琪课程课件PPT 后续光线追踪系列辐射度量学知识也源于此处 辐射度量学理论 在开始之前我们先思考 为什么学习辐射度量学 辐射度量学是基于物理光照的基础 一 辐射能和辐射通量 辐射能 Radia
  • 员工管理系统服务器,员工管理系统小结 - 四七的个人空间 - OSCHINA - 中文开源技术交流社区...

    练习中出现 DAO层 Service层 Controler层 entity 层 utils 层 mapper 层 想知道几个之间的关系是如何 分层的目的是 高内聚 低耦合 DAO层 接口 也叫数据访问层 做的是数据持久层的工作 负责与数据库
  • Difference between RTL and Behavioral verilog

    原文链接 https electronics stackexchange com questions 63682 difference between rtl and behavioral verilog Answer 1 ehaviora