Verilog面向综合的设计
Verilog 描述(行为描述、结构描述)=综合=> 门级网表
综合就其实质而言是设计流程中的一个阶段,它在标准单元库和特定的设计约束的基础上.把设计的高层次描述转换成优化的门级网表的过程。
标准单元库
标准单元库可以包含简单的单元,例如与门、或门和或非门等基本逻辑门,也可以包含宏单元,例如加法器、多路选择器和特殊的触发器。标准单元库也就是大家熟知的工艺库。
设计规则约束
最大扇出:一个端口可以驱动的负载数目
最大转换时间:从逻辑0转换到逻辑1或相反的时间
最大电容:一个输出端口的电容负载
优化约束
-速度
时钟
输入延时
输出延时
最大延时
-面积
综合过程:
综合对数字设计行业的影响
采用高层次设计方法,人为的错误会更少,因为设计是在更高的抽象层次描述的。高层次设计无需过多关注设计约束。逻辑综合工具将把高层次设计转换到门级网表.并确保满足所有的约束。如果不能满足,设计者就回去修改高层次设计,重复这一过程,直到获得满足时序、面积和功耗约束的门级网表为止。从高层次设计到逻辑门的转换非常迅速。有了这方面的
提高,设计周期可以大大缩短。以前耗费数月的设计现在可能仅需周、时或数天就能完成。块重新设计所需的反复时间更短,因为改变仅需在寄存器传瑜级完成;然后,设计只需简单地更新综合获得门级网表。?推测容易验证。高层次描述不需要改变。设计者只把时序约束从20 ns改变到15ns,并重新综合设计,以获得时钟周期优化为15ns的新门级网表。逻辑综合工具在整体上优化了设计,这样就消除了由于不同模块之间和局部优化的各个设计之间的设计风格不同所带来的问题。如果发现门级设计中有错误,设计者回头修改高层次描述以消除错误。然后,高层次描述再次读人逻辑综合工具,自动生成新的门级描述。逻辑综合工具允许进行与工艺无关的设计。由于设计描述与工艺无关,所以设计重用变成了可能。
可综合的Verilog结构
功能仿真和逻辑综合是HDL语言的两大功能。所有的HDL语言描述都能用于仿真,但并非都能用于综合。哪些描述不能用于综合与具体的综合工具有关,但有一些约束是大多数综合工具所共有的,如下所述:
词法常规 | ||
算符 | 支持 | 不支持全等算符和不全等 |
算符 |
|
|
空白字符和注释 | 支持 |
|
数 | 支持 |
|
字符串 | 不支持 |
|
标识符、关键字和系统名 | 支持 | 忽略系统名 |
文本替换 | 支持 |
|
数据类型 | ||
数值集合 | 支持 |
|
寄存器和网线 | 支持 |
|
向量 | 支持 |
|
信号强度 | 忽略 |
|
网线初始化 | 不支持 | 初始时连续处于悬空状态 |
存贮器 | 支持 |
|
整数 | 支持 |
|
时间 | 不支持 |
|
实数 | 不支持 |
|
参数 | 支持 | 不支持defparam |
表达式 | ||
算符 | 支持 | 不支持全等算符和不全等 |
运算量 |
| 算符 |
寄存器和网线位寻址 | 支持 |
|
存储器寻址 | 支持 | 不支持 |
字符串 |
|
|
延时表达式 | 忽略 |
|
表达式位宽 | 支持 |
|
赋值 | ||
连续赋值(assign) | 支持 | 忽略其中的延迟和驱动强度 |
过程赋值 | 支持 | deassign不一定支持 |
逻辑门级和开关级建模 | ||
逻辑门和开关级语法 | 支持 | 不支持延迟和驱动强度 |
基本逻辑门 | 支持 |
|
MOS开关 | 不支持 |
|
双向传输开关 | 不支持 |
|
CMOS门 | 不支持 |
|
电源PULLUP和PULLDOWN | 不支持 |
|
行为建模 | ||
过程赋值 | 支持 | 不支持时间声明,忽略用于延时的定时控制,不支持用作事件的定时控制。 |
条件语句 | 支持 |
|
case语句 | 支持 |
|
循环语句 |
|
|
forever | 不支持 |
|
repeat | 支持 | repeat表达式必须是常量 |
while | 不支持 |
|
for | 支持 | 循环变量的赋值必须是常量 |
块语句 | 支持 | 不支持时间声明和事件声明 |
initial语句 | 忽略 |
|
always语句 | 支持 |
|
任务 | 支持 | 不支持时间声明和事件声明 |
函数 | 支持 | 不支持时间声明和事件声明 |
Specify语句 | 不支持 |
|
用户自定义元件(UDP)支持 | 不 |
|
文章评论(0条评论)
登录后参与讨论