2、高层次综合的中间表示格式
Download
Report
Transcript 2、高层次综合的中间表示格式
数字系统设计及VHDL实践
专题二
高层次综合
主 讲 人:徐向民
单
位:电子信息学院
高层次综合
【学习目标】:掌握高层次综合的基本概念和算法。
【难重点】:
1.高层次综合工具的输入是目标电路的行为描述,输出是目标电路的
结构描述,了解行为描述和结构描述的差别和联系。
2、高层次综合的中间表示格式:控制流图、数据流图以及控制数据流图。
3、调度技术:ASAP调度算法、ALAP调度算法、带约束条件的调度算法。
4、分配技术:寄存器单元的分配、基本功能模块的分配。
5、调度与分配之间的相互影响。
高层次综合
本章主要内容:
一、综合的层次
二、高层次综合
三、不能综合的VHDL语句
四、约束(constraints)
五、寄存器的引入
六、FPGA综合
综合的层次
基本概念:
1、80年代中期,专用集成电路ASIC的广泛应用,要求设计的芯片具有高性能、高可
靠性和严格的保密性,同时要求设计周期尽可能短。
2、二十世纪末期,系统级芯片(System on a Chip, SOC)技术兴起,对高层次综
合提出更高的要求,例如系统的整体描述、系统的划分以及高层次综合中考虑布图对
时延的影响等。因此,从较高级别描述自动地综合到较低级别描述的自动设计技术已
成为设计自动化中的关键技术。
综合的层次
基本概念:
3、综合的任务:从数字系统的行为描述及目标电路的约束条件(constraint)出发,
找出一个满足要求的结构来实现它。
4、正如数字系统可以在多个不同的层次上进行详细描述一样,综合也可以在多个层
次上进行。通常,综合分为3个层次:高层次综合->逻辑综合->版图综合。
数字系统描述和综合的层次关系:
算法级
行为特性
物理特性
寄存器传输级
逻辑级
电路级
本章讲述从
版图级
算法级行为
描述寄存
版图综合
器传输级结
构描述的综
合技术。
高层次综合
逻辑综合
高层次综合
高层次综合:从算法级的行为描述转换到寄存器传输级的描述。
高层次综合系统的输入:硬件描述语言的源描述。
综合结果:通常包括一个数据通路和一个控制器。
数据通路(datapath):由寄存器、功能单元、多路器和总线等
模块构成的互连网络,用于实现数据的传输。
控制器(controller):通常由硬连逻辑(hardwired logic)或固件
(firmware)构成,用于控制数据通路中数据的传输。
数据通路的基本硬件模块:
◆数据通路中的功能单元可以是
半导体厂商提供的已经设计好的
单元,也可以是下一步将要设计
的假定单元。
◆存储单元包括寄存器和内存单
元,其中的使能输入与控制器相
连,以控制其读/写操作。
◆互联网包括连线、多路器和
总线,其中的选择输入与控制
器相连,用于选择输入数据。
◆这些模块互连并由控制器提
供控制信号后,即完成了一个
实现预定功能的寄存器传输级
设计。
高层次综合
控制器:
在寄存器传输级,控制器被表示为一个有限状态机(或微程序)。
这个有限状态机(或微程序)通过虚设的时钟周期(称为控制步)来
组织数据通路上的执行顺序。
每个控制步中包含一组宏操作。
每个宏操作都给出数据通路中各模块所需的控制信号(选择信号、使
能信号等)。
高层次综合
高层次综合的优点:
1. 高层次综合技术的应用可以明显地提高设计速度,缩短设计周期,允许设
计者寻求最优或满意的设计方案。
2. 高层次综合技术的引入使得集成电路的用户,特别是专用集成电路的用
户(可以不是集成电路设计专家),可以直接进行数字系统从行为描述到芯
片描述的设计工作。
说明:高层次综合所产生的硬件结构一般为同步电路,本章中仅介绍通用同步电
路的综合技术。实现一个给定行为功能的硬件结构通常可以有许多种,高层次综
合的任务是找出一个满足约束条件和目标集合的、造价最低的硬件结构。
高层次综合通常包括编译、转换、调度、分配、控制器综
合、结果生成与反编译等几个部分 :
算法描述
编译与转换
中间表示格式
确定每个状态
发生的时刻
给数据分配寄
存器
调度
数据流
功能单元库
分配
给操作分配功
能单元
ASM图的硬
件实现
控制流
控制器综合
硬件逻辑
直接用于有限状态机综合
与逻辑综合的输入
数据通路
在寄存器传输级控制器被表示成为一
个有限状态机(或微程序)
反编译
结构描述
直接用于文档管理或其他逻辑综合工具的输入
高层次综合
1、编译:
高层次综合工具首先将行为特性描述经过编译转换到一种有利于高层次综合
的中间表示格式。
数字系统的行为特性描述由硬件描述语言编写,它的编译与计算机高级程序
设计语言的编译相似。
以下面的程序为例:
Library ieee;
Use ieee.std_logic_1164.all ;
Entity synex is
port ( A, B, C, D, E : in integer range 0 to 7 ;
X, Y : out integer range 0 to 256 ) ;
End synex ;
Architecture high_level of synex is
Begin
X<=E*(A+B+C );
Y<=(A+C)*(C+D);
End high_level
高层次综合
编译:
编译把VHDL描述转换为一个适合自动综合的中间格式(数据流图DFG)
DFG中的节点表示VHDL中的操作。箭头表示操作的先后关系。
高层次综合
2、调度:
调度为每个操作赋予一个控制步骤。控制步骤是同步系统中最基本的时间单元,
它对应一个时钟周期。调度的目标使得器件完成所有功能所需时间最少。(通俗
的理解,确定每个操作发生的时刻)
ASAP(as soon as possible) 每个操作被调度发生在可能
的最早时刻。
ALAP(as late as possible) 每个操作都尽可能晚的调度。
高层次综合
ASAP:
高层次综合
ALAP:
高层次综合
3、分配:
分配概念:是指定义系统中部件和部件之间互连的过程。
分配寄存器或RAM存储器来存放数据值。
分配功能部件来执行特定的操作。
分配互连路径在部件之间传输数据。
分配原则:
深色黑圈表示需要存储的数据,需要给每个黑圈分配一个寄存器。
给每个操作分配功能部件。
不同时间单元的寄存器和功能部件可以复用,复用的方式会影响互连
的复杂程度。
高层次综合
3、分配:
一种可能的分配结果
如右图:
复用的寄存器:
R1、R2、R4。
复用的功能模块:
AD1、MU1
高层次综合
4、硬件实现:
经ASAP调度分配后的硬件实现(没有考虑约束条件):
高层次综合
4、硬件实现:
点评:因为对寄存器和功能部件进行了复用,所以需要多路选择器。
高层次综合
5、调度和分配的交互:
调度和分配并不是相互独立的操作。
前面的ASAP调度使系统获得了最大速度。
假设现在为了减少面积,工程师打算用一个加法器和一个乘法 器来实现硬
件系统。ASAP调度不能满足要求。
若考虑上述约束条件,就涉及到考虑约束条件的调度。
高层次综合
在硬件约束条件下进行重新调度:
X<=E*(A+B+C );
Y<=(A+C)*(C+D);
由于硬件的约束造成了一个
额外的控制步骤,执行时间由
4个时钟周期增加到5个时钟周
期。
6、约束调度的分配:
7、约束调度的硬件实现:
高层次综合
约束调度所需的部件:
点评:同没有约束条件相比,它减少了2个加法器,多路选择器的尺寸由3 X
1减少到 2 X 1 , 但增加了一个额外的2 X 1 的多路选择器。总的来说这个
方案的实现比原始设计所需的面积要小。这里并没有考虑互连的开销。
不能综合的VHDL语言
1. 延时模型中,After后面设置的时间延时。
2. Wait for结构在综合时会被忽略。
3. 文件操作不能被综合。
4. Generic设置的属性参数必须要设一个默认值,否则
不能综合。
5. 指针操作(由acess关键字引导)在综合时被忽略。
6. 浮点数操作需要大量的硬件资源,不利于FPGA综合。
7. 信号或变量的初始设定值综合时会被忽略。
约束(Constraints)
设计目标或者是要求反映到综合工具就是各种约束constraints。例
如,一项设计要用特定时钟频率的FPGA来实现时,要考虑面积和速度
的约束(最主要的两方面约束)。看下面的两个等效电路:
两个管脚的与非门需要4个晶体管。
一个管脚的非门需要2个晶体管。
三个管脚的与非门需要6个晶体管。
(a)需要16个晶体管,所以面积小,但速度慢(4个门延迟)。
(b)需要18个晶体管,所以面积大,但速度快(3个门延迟)。
约束(Constraints)
1、约束的表示:
用于综合的约束可以用用户定义属性来表示。用户定义只是用于给综合
工具传递约束信息,仿真时被忽略。
格式:
attribute 属性名 : 数据类型 ;
attribute 属性名
of
对象名 :对象类型 is 值;
例1:
例2:
Type state
Attribute
pin_no
is ( s0,
:natural
s1, s2,; s3 );
Attribute pin_no
enum_encoding
of q : signal
of state
is 42 :; type is “00 01 11 10”;
--用于确定状态编码,用于有限状态机的描述中
--为端口锁定芯片引脚
约束(Constraints)
1、约束的表示:
例1:
Type state is ( s0, s1, s2, s3 );
Attribute enum_encoding of state : type is “00 01 11 10”;
--用于确定状态编码,用于有限状态机的描述中
例2:
Attribute pin_no :natural ;
Attribute pin_no of q : signal is 42 ;
--为端口锁定芯片引脚
约束(Constraints)
2、资源的约束:
例:
if select=‘1’ then q<=a+b;
else q<=c+d;
end if ;
点评:上面的例子可以用2个加法器和1个二路选择器
实现也可以用1个加法器和2个二路选择器完成。
约束(Constraints)
3、时间的约束:
假定一个时序系统工作在20MHZ的时钟频率,
那么通过状态寄存器和此态产生逻辑的最大
延迟不能超过50ns(20MHZ的倒数)。
寄存器的引入
最重要的几点如下:
条件涵盖不完整的if语句会产生寄存器。
条件涵盖不完整的case语句会产生寄存器。
并行条件赋值语句可以引入寄存器。
在引入寄存器时,一般情况下采用异步复位的方式。
寄存器中,复位的优先级一般要高于置位。
在引入时钟具有使能作用的寄存器时,宜采用嵌套的if
语句来描述。
FPGA综合
Xilinx系列的FPGA是基于SRAM工艺的。每片FPGA都由一排可配置的逻辑模
块CLB,CLB结构如下图。
CLB由两个触发器和一个8输入的组合逻辑块构成。
除了CLB外,Xilinx FPGA中还存在三态门。
FPGA综合
Actel系列的FPGA采用的是抗熔断技术。Actel FPGA中存在两种逻辑
块:组合逻辑块和时序块。
注意:由于FPGA中寄存器资源相对组合逻辑充足,所以对于状态机,采用
one-hot编码,简化组合逻辑,反而能节省FPGA资源。在设计触发器时,如果
要同时用到复位和置位,最好采用异步复 位和同步置位。在设计中尽量避免
电平触发的锁存器。
FPGA综合
library ieee;
use ieee.std_logic_1164.all;
entity mux is
port ( a, b, c, d, e : in std_logic ;
s : in std_logic_vector(4 downto 0);
y : out std_logic );
end mux;
architecture version1 of mux is
begin
process( s, a, b, c, d, e)
begin
FPGA综合
case s is
when “00001”=>
y<=a;
when “00010”=>
y<=b;
when “00100”=>
y<=c;
when “01000”=>
y<=d;
when others =>
y<=e;
end case ;
end process;
end version1;
点评:用Xilinx的FPGA进行综合,需
要两个CLB块。(一个CLB有8个输入,
这里有10个输入)
本章小结
高层次综合的实质是从行为描述到电路结构描述(一般指RT·级)的转换,是
从较高抽象层次的描述到较低抽象层次描述的转换。硬件设计者用行为描述的
方式描述自己的设计,有如下优点:
简练
概念清晰
易于修改和排除错误
缩短设计周期
高层次综合和较低层次的逻辑综合相比,技术复杂性增大很多。逻辑综合主要
考虑组合逻辑的优化;而高层次综合则要同时考虑电路结构、存储结构(寄存
器、内存单元)、互连结构(总线、多路器)以及时序的设计问题。
本章小结
高层次综合经过三十年来的发展,其主要问题(如调度、分配、模块确
定等)已经得到较好的解决,已经有了商品化的软件,但距离实用要求还有
很大差距。需要解决的问题还很多,例如:
· 设计空间的有效搜索方法;
· 数字系统的划分;
· 深亚微米工艺对时延约束下的高层次综合提出更高要求,要求高层次
综合过程中同时考虑布线对时延的影响;
· 异步数字系统的设计(如接口电路的设计);
· 人的因素在高层次综合中的作用(如专家干预);
· 高层次综合的可测试性设计;