博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
行为级和RTL级的区别
阅读量:5933 次
发布时间:2019-06-19

本文共 1818 字,大约阅读时间需要 6 分钟。

RTL级,register transfer level,指的是用寄存器这一级别的描述方式来描述电路的数据流方式;而Behavior级指的是仅仅描述电路的功能而可以采用任何verilog语法的描述方式。鉴于这个区别,RTL级描述的目标就是可综合,而行为级描述的目标就是实现特定的功能而没有可综合的限制。

行为级是RTL的上一层,行为级是最符合人类逻辑思维方式的描述角度,一般基于算法,用C/C++来描述。从行为级到RTL级的转换,一般都是由IC设计人员手工翻译。

这个过程繁琐,工作量很大,特别是随着数字系统的复杂性提升,这样的纯手工"翻译"过程容易出错,且使得开发周期变长。一批高级综合工具应运而生。如Menter Graphics的高层次综合工具Catapult C Synthesis。能够将数字系统的行为级描述映射为RTL设计,并满足给定的目标限制。从层次由上到下,数字系统的设计过程为:

Idea->行为级描述->rtl描述->门级网标->物理版图

行为级的描述更多的是采取直接赋值的形式,只能看出结果,看不出数据流的实际处理过程。其中又大量采用算术运算,延迟等一些无法综合的语句。常常只用于验证仿真。

RTL级的描述就会更详细一些,并且从寄存器的角度,把数据的处理过程表达出来。可以容易地被综合工具综合成电路的形式。

行为级描述可是说是RTL的上层描述,比RTL更抽象。行为描述不关心电路的具体结构,只关注算法。

有行为综合工具,可以直接将行为级的描述综合为RTL级的,比如Behavioral Compiler。

在硬件设计中有一句著名的话:thinking of hardware。RTL在很大程度上是对流水线原理图的描述。哪里是组合逻辑,哪里是寄存器,设计者应该了然于胸。组合逻辑到底如何实现,取决于综合器和限制条件。

rtl级可以理解为,可以直接给综合工具生成你要的网表的代码,而行为级则不行。比如real可以用于行为级,而不能用于rtl级!

行为级 is for testbench for modelling.

RTL is for synthesis

语法块如果可以被综合到gate level,就是RTL的。否则就是behavior level的。

同样是for语句,如果循环条件是常数,就是RTL的,如果是变量,就是behavior的。

行为级不考虑电路的实现,不考虑综合

RTL级描述数据在寄存器层次的流动模型。

always 属于行为级模型,是最基本的行为模型,是可以综合的。
综合与RTL或者行为级没有必然联系,虽然大多数行为模型不能综合

从网上copy

目的区别:
行为级描述目的是加快仿真速度,做法是尽量减少一个always块中要执行的语句数量,其结果不是为了综合,只关注算法。有行为综合工具,可以直接将行为级的描述综合为RTL级的,比如Behavioral Compiler。
形式区别:
RTL级描述是为了综合工具能够正确的识别而编写的代码,verilog中有一个可综合的子集,不同的综合工具支持的也有所不同, RTL级的描述就会更详细一些,并且从寄存器的角度,把数据的处理过程表达出来。可以容易地被综合工具综合成电路的形式。可以采用任何verilog语法 的描述方式。鉴于这个区别,RTL级描述的目标就是可综合,
行为级的描述更多的是采取直接赋值的形式,只能看出结果,看不出数据流的实际处理过程。其中又大量采用算术运算,延迟等一些无法综合的语句。常常只用于验证仿真。
电路区别:
RTL级,register transfer level,指的是用寄存器这一级别的描述方式来描述电路的数据流方式;RTL在很大程度上是对流水线原理图的描述。哪里是组合逻辑,哪里是寄存器,设计 者应该了然于胸。组合逻辑到底如何实现,取决于综合器和限制条件。RTL是晶体管传输级,描述硬件的相互联接关系,一般都可以综合;
而Behavior级指的是仅仅描述电路的功能而在硬件设计中有一句著名的话:thinking of hardware。简单说,rtl就是用寄存器和组合逻辑组成,不能再用其他construct;behavior就是指定输入和输出之间的关系。
混乱点: 有时感觉RTL级是行为级与数据流级的混合应用。
乐点: 同样是for语句,如果循环条件是常数,就是RTL的,如果是变量,就是behavior的。

转载地址:http://esctx.baihongyu.com/

你可能感兴趣的文章
vi、vim、nano如何退出?
查看>>
互联网商道:自己吃饭,别人给钱
查看>>
我的友情链接
查看>>
#TCP你学得会# 之 TCP端口选择那些事儿
查看>>
我的友情链接
查看>>
Linux--rsync
查看>>
SQL--mysql忘记root密码
查看>>
C语言中对变量定义理解的重要性。
查看>>
VMware Horizon 7问题点处理
查看>>
添加MyEclipse WebSphere Portal Server支持(二)
查看>>
DevExpress v17.2新版亮点—DevExtreme篇(三)
查看>>
Oracle 之 管理
查看>>
shell编程——getopts用法小结
查看>>
首页功能添加(一)
查看>>
[LeetCode]59. Spiral Matrix II
查看>>
DHCP冲突的解决方法
查看>>
log4j1.x maven下配置
查看>>
SVN 服务端和客户端的安装及使用
查看>>
MySQL 5.7 Invalid default value for 'CREATE_TIME'报
查看>>
Redis分布式缓存安装(单节点)
查看>>