wonder · 7月31日

基于Synopsys的ASIC设计流程系列:RTL概述

源自微信公众号 “数字芯片实验室”

在数字系统设计中,有一些重要的设计级别概念:

•行为级(Behavior Level):通过行为级算法描述数字系统。
•寄存器传输级(Register Transfer Level):在寄存器传输级,通过寄存器之间的数据传输进行电路功能设计, 例如有限状态机。
•门级(Gate level):数字系统按门级(AND,OR,NOT,NAND等等…)描述。通常不会进行门级设计,门级网表网表一般是通过逻辑综合的输出。

RTL可以用Verilog或VHDL描述。
Verilog是一种用于描述数字系统的硬件描述语言(HDL),例如Latches,Flip-Flops,组合逻辑,时序逻辑等......

基本上,你可以使用Verilog来描述任何类型的数字系统。

设计通常以top-down的方式编写的。 系统具有层次结构,使设计和调试更容易。 verilog模块的基本框架如下:

模块可以引用其他模块以形成层次结构。
模块实例化(module instance)时,每个模块实例都包含被实例化的模块名称(例如NAND或INV),实例名称(在当前模块中的那个实例名称是唯一的)和端口连接列表

上例中的实例名称是'N1和V1',它必须是唯一的。模块端口连接可以按顺序给出(位置映射),或者显式连接(命名映射)。通常首选是命名映射,因为降低了错误的可能性。

1.按名称进行端口映射:
INV V2(.in(a),. out(abar));
2.按顺序进行端口映射:
AND A1(a,b,aandb);
此时,端口列表顺序必须相同。

下面是一个简单的Verilog示例代码:D触发器

数字电路设计可以分为组合逻辑或时序逻辑。硬件描述语言用于建模数字电路的RTL,而RTL不过是组合和时序逻辑。

不是所有用Verilog编写代码都是可综合的。我们需要确保我们的代码综合成我们想要的电路。

大多数情况下,Verilog中一些时间相关的任务无法综合。例如,wait, initial语句, 延迟等。

可以在Verilog中建模电平敏感和边沿敏感的电路行为。两者都可以使用verilog中的always语句块建模。

“always”语句块建模组合电路时,每个输出都依赖于敏感列表。如果没有完全指定组合电路,可能会综合处到锁存器(latch)

本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/zaWsH06DLQWqqCoYSRoQLw
未经作者同意,请勿转载!

推荐阅读

想了解更多内容,欢迎关注芯片数字实验室专栏
2 阅读 222
推荐阅读
0 条评论
关注数
160
内容数
69
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息