使用Verilog HDL 进行逻辑综合

逻辑综合技术的发展巳经把硬件描述语言 ( HDL ) 推到了数字设计技术的最前沿。逻辑综合工具显著地缩短了设计周期。设计者可以在吏高的抽象层次上进行设计,因而减少了设计时间­。

逻辑综合

简而言之,逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。
标准单元库可以包含简单的单元,例如与门、或门和或非门等基本逻辑门、也可以包含宏单元,例如加法器、多路选择器和特殊的触发器。标准单元库也就是大家熟知的工艺库。在过去逻辑综合用的是设计者的大脑。
在这里插入图片描述
计算机辅助逻辑综合工具的出现已经把高层次描述向逻辑门的转化过程自动化了。设计者不需要在脑子里实现逻辑综合,他们现在可以把精力集中在体系结构的方案设计的高层次描述, 精确的设计约束和标准单元库中的单元优化上。这些都作为计算机辅助逻辑综合工具的输入。该综合工具在内部进行几次反复,然后生成最优化的门级描述。同时,设计者不必在屏幕或者纸上画高层次描述而是用HDL 描述高层次设计。VerilogHDL 已经成为一种流行的编写高层次描述的 HDL。图展示了整个过程。
在这里插入图片描述
自动化的逻辑综合已经非常有效地减少了高层次设计到门级网表的转化时间。它使设计者 以把更多的时间用于更高层次的描述上。因为把设计转换到门级网表所需的时间大大减少了。

Verilog HDL综合

为了逻辑综合的目的 ,目前都在寄存器传输级( RTL ) 层次用硬件描述语言 ( HDL ) 编写设计。术语 RTL 用于表示 HDL 的一种风格 。该风格的 HDL 描述采用了数据流和行为结构相结合的方式。 逻辑综合工具接受寄存器传输级 HDL 描述并把它转化为优化的门级网表。Verilog 和 VHDL 是两种最流行的在 RTL 级上描述功能的HDL语言 。本章讨论基于RTL 的 Verilog HDL 逻辑综合 用于把行为描述转换成RTL 描述的行为综合工具发展缓慢。但是基于 RTL 的综合已经成为当前最流行的设计方法 。 因此只讨论基于RTL 的综合。

逻辑综合工具并不能完全处理编写的任意结构。一般周期到周期的任何RTL Verilog 结构能被综合工具接受。可进行逻辑综合的语句如下:
在这里插入图片描述提供的是周期到周期的RTL描述。因此, 这些语言结构用于逻辑综合工具的方式有一些限制。例如, while 和 forever 循环必须由@(posedge cloc k) 或@(negedge clock)语句终止循环,以此强制具有周期到周期的行为,避免组合反馈。另一个限制是逻辑综合忽略所有由#<delay> 结构指定的时序延迟。因此,综合前后Verilog 的仿真结果可能不同。设计者必须尽量减少使用这些有可能导致Verilog 的前后仿真结果不一致的描述风格。此外, 逻辑综合工具也不支持initial结构的转换,因而设计者必须使用复位机制来取代initial结构, 进行电路信号的初始化。
建议明确地指定信号和变量宽度。定义未指定宽度的变量可能产生庞大的门级网表,因为综合工具可能根据变量定义生成不必要的逻辑。

要注意和x与z有关的操作符不能用于逻辑综合。如===
在这里插入图片描述

部分Verilog结构的解释

赋值语句

assign out=(a&b)|c; //转换为:

在这里插入图片描述在这里插入图片描述always:always语句可用于生成时序和组合逻辑。对于时序逻辑来说, always 语句必须由时钟信号clk 的变化所控制。

always @(posedge clk)
q<=d;

在这里插入图片描述
函数语句

function [4:0] fulladd;
input [3:0] a,b;
input c_in;
begin
	fulladd=a+b+c_in;
end
endfunction

逻辑综合流程

现在我们已经理解了逻辑综合工具如何把基本Verilog语言结构转换成门级描述,下面讨论从RTL描述转换到最优化门级描述的综合设计流程。
在这里插入图片描述

RTL 描述
设计者在高层次上使用RTL结构描述设计。设汁者在功能验证上耗费一定的时间,以确保RTL描述的功能正确无误。功能验证之后, 再把RTL 描述输人到逻辑综合工具中。

翻译

在这里插入图片描述未经优化的中间表示
在这里插入图片描述

逻辑优化
在这里插入图片描述
工艺映射和优化
在这里插入图片描述
工艺库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述工作环境因素也需要作为逻辑综合工具的输入。

优化后的门级描述

在这里插入图片描述

门级网表的验证

逻辑综合工具生成的优化后的门级网表必须验证其功能的正确性。另外,如果时序和面积约束太严格,综合工具有时不能完全满足这些要求,这时需要在门级网表层次进行独立的时序验证。

功能验证

最初为设计编写的RTL 模块和其综合后的门级模块可以用同一个测试激励模块进行测试。比较它们的输出结果,找出其中的不一致。对数值比较器而言,所示的程序模块是验证其功 能是否正确的一个简单测试激励文件。
在这里插入图片描述的输出结果的不同之处。还有另一件事需要考虑:门级描述是基于VAND, VNAND 等库单元的,Verilog 仿真器不能理解这些单元的意义。因此为了仿真门级描述, ABC 公司必须提供一个仿真库, abc_100.v。仿真库必须用Verilog HDL 原语 and和nand等描述 VAND 和VNAND 等。(UDP中的specify)

比较 RTL 和门级网表的仿真输出只是功能验证过程的一部分。有许多种技术可用以来确保逻辑综合生成的门级网表在功能上正确无误。一种技术是以 C++编写高层次结构描述 , 将执行这个高层次结构描述后获得的输出与RTL 或者门级描述的仿真输出相比较。另一种称为等价性检查 。

时序验证也是验证的重要方面。

逻辑综合建模技巧

在这里插入图片描述
不一定对称。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述要学会用状态机分析

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值