组合电路设计描述的优化How to get an optimal Coding for the
combinational circuits ?
陈海燕
计算机学院微电子所
1
如何评价RTL级代码
•具有可综合的、一致的编码风格;
•功能正确;
•满足设计的非功能性约束,实现代价最低
•同等实现代价,性能最优
2
非功能约束要点
•影响性能的因素
–组合逻辑通路的延迟时
间
–……
•影响功耗的因素
–芯片面积……•提高性能的途径
–降低关键路径上组合逻辑通路的逻辑级数成为组合通路
设计优化的关键因素
–逻辑复制等等
•降低功耗的可能途径
–减少组合逻辑电路实现所需的单元及连线数目成为组合
逻辑电路设计优化的重要因
素
–逻辑共享……
4
组合逻辑的非功能性设计目标
•性能
关键路径上的组合电路往往决定系统时钟频率•功耗
•面积
往往与提高性能是矛盾的
5
组合逻辑描述的优化技巧
•流水线时序优化技术
•模块复用与资源共享
•逻辑复制
•香农扩展运算
设计时不仅要正确实现功能,还要根据不同的非功能设计目标,进行折中,选择不同的优化技巧与方法
6
什么是流水线时序优化
•概念:把规模较大,层次较多的组合逻辑分为几个级,在每一级插入寄存器组并暂存中间数据,上一级的输出是下一级的输入。
即用寄存器合理分割该组合逻辑路径。
•各级之中最长的时间延迟决定系统的时钟频率。
•作用:改善电路性能,即缩短时钟周期,提高吞吐率。
对运算功能单元效果显著
7
流水线时序优化实例(3)
•例2 对下例代码进行三段流水线设计:
input [7:0] A,B,C,D;
output [7:0] compare;
output[9:0] result;
reg[7:0] compare;
reg[9:0] result;
always@(posedge clk)
begin
result<=A+B+C+D;
compare<=!(A^B);
end
11
模块复用与资源共享(1)
•从微观角度考虑节约面积;减少硬件实现代价。
•多个同类功能复用一个硬件电路单元.
•特点:节约了面积,减少了功耗,有时可能会损失一些性能
12
模块复用与资源共享(2)
例3 补码平方器
第一种实现方式:
module resource_share_1(data_in,square);
input [7:0] data_in;
output [15:0] square;
wire [7:0] data_bar;
assign data_bar=~data_in+1;
assign square=(data_in[7])? (data_bar* data_bar) :
(data_in* data_in);
endmodule
13
模块复用与资源共享(3)
•第二种实现方式
module resource_share_2(data_in,square);
input [7:0] data_in;
output [15:0] square;
wire [7:0] data_temp;
assign data_temp=(data_in[7])? ( ~data_in+1):data_in; assign square=data_temp* data_temp;
endmodule
14
模块复用与资源共享(4)
•某电路有四个输入信号:multselt,
in1[7:0],in2[7:0],in3[7:0],一个输出out。
电路实现下例逻辑功能,当multselt为高时,输出out=in1*in2;否则out=in1*in3 。
15
数据通路的复制
例4 地址计算
17
例4 描述对应的电路结构
18
19
例4 数据通路复制后的描述
20
使用香农扩展优化组合逻辑时延
例5 设需要运算的逻辑表达式如下:
F=((({8{late}}|in0)+in1)==in2)&en,其中
in0[7:0],in1[7:0],in2[7:0]都为8bit的数据,信号late和en为1位的控制信号,
信号late为本逻辑运算的关键信号路径,延时最大,使用香农扩展运算优化该关键路径
F=late•F(late=1)+ ~late•F(late=0)
•可直接优化已表达为布尔函数的组合逻辑
22
常见语法结构中慢速信号的处理
——设计时通常知道哪一个信号到达的时间要晚一些。
这些信息可用于构造优化的描述,使到达晚的信号离输出近一些。
——对于条件、分支结构而言,信号到达时间较晚的信号视为慢速信号
数据信号为慢速信号
控制信号为慢速信号
23
if-else 及其嵌套结构问题
例6 多个串行if语句
if (sel[3]) z=d;
else if (sel[2]) z =c;
else if (sel[1]) z=b;
else if (sel[0]) z=a;
else z =0;
24
例6 对应的电路结构
25
例6 等价的case
结构
26
5选1结构图
27
28
考虑信号b 的到达时间很慢的情形???某分支的数据信号为慢速信号
29
sel[3]=0 且sel[2]=0 且sel[1] =1~
| {sel[3], sel[2], ~sel[1]}合理的电路结构图
实现的描述优化(1)——具有优先级的if结构
30
实现的描述优化(2)
•module single_if(a, b, c, d, sel, z);
•input a, b, c, d;
•input [3:0] sel;
•output z;
•reg z;
•always @(a or b_is_late or c or d or sel)
•begin
•if (~| {sel[3], sel[2], ~sel[1]})z= b_is_late;•else if (sel[3])z = c;
•else if (sel[2])z = d;
•else if (sel[0]) z = a;
•else z = 0;
•end
•endmodule
31
晚到达的是控制信号
如果晚到达信号作为if语句条件分支的条件,也应使这个信号离输出最近。
在下面的例子中,CTRL_is_late是晚到达的控制信号
32
例7 某分支选择控制信号为慢速信号
33
例7 优化后的电路结构图及其描述
35
36
例8 if…else及其嵌套分支结构
37
例8
对应的电路结构图
38
例8 优化的电路结构
39
例8 优化的电路描述
40
例9 多分支结构——某位选择控制信号晚到
41
例9 多分支对应的电路结构
42
例9 改进的描述
44
例10 数据通路的优化
45
例10 数据通路优化后的描述
46
RTL代码的设计目标
•时序(Timing):满足预期的时序约束条件,频率要求•面积(Area):设计所耗费的资源满足规划的面积要求•时钟(Clocks):设计的时钟质量满足规划要求
•验证(Verification):通过仿真验证
•功耗(Power):最大功耗在设计的规定范围内
•DFT:设计时充分考虑可测性
•Reuse:设计便于被重用,便于继承
•原厂策略:生产厂家的设计规格和软硬件需求。
要同时满足上述所有目标是非常困难的,设计者应根据设计的实现载体和具体应用要求,综合考虑,并折中。
49
小结
•没有好的设计描述,综合工具很难综合出好的设计结果。
•使用哪种方法优化关键要看设计对象的优化目标是面积?速度?功耗?
•速度是优化目标时,选用流水线方式或香农扩展算法,以面积换速度;
•面积和功耗是优化目标时,就要资源共享、逻辑复用;节约面积。
•满足性能条件下,代价最低
50。