DC综合实践
首先为工程设计建立好文件夹,如下图,设计目录为DC_proj1,设计目录中包含doc、rtl、syn等目录,doc目录用于存放工程文档,rtl目录用于存放设计rtl文件,syn用于DC综合。
syn目录下各子目录如上,其中work目录用于DC运行目录。在work目录下建立library目录用于存放TSMC 90nm工艺库。上述library目录下文件都为TSMC 90nm工艺库文件。
由于本次只是进行一个加法器综合,加法器RTL代码如下,所以work目录下不建立启动文件.synopsys_dc_setup
文件,将以单独命令行形式完成整个DC过程。
module full_adder(
input clk ,
input rstn ,
input [31:0] a_in ,
input [31:0] b_in ,
input [0 :0] c_in ,
output reg [31:0] sum_out ,
output reg [0 :0] c_out
);
wire c_out_w ;
wire [31:0] sum_out_w ;
assign {c_out_w,sum_out_w} = a_in + b_in + c_in ;
always @ (posedge clk) begin
if(!rstn)
c_out <= 1'b0 ;
else
c_out <= c_out_w ;
end
always @ (posedge clk) begin
if(!rstn)
sum_out <= 32'h0 ;
else
sum_out <= sum_out_w ;
end
endmodule
准备完毕后在work目录下输入命令dc_shell
启动DC。
设置搜索路径,搜索路径设置为work目录下的library目录。命令set_app_var search_path ./library/
。
设置target_library和link_library,给二者设置相同的库。命令分别为set_app_var target_library slow.db
、set_app_var link_library slow.db
。
工艺库设置完之后,读入设计文件,命令为read_file -format verilog {../../rtl/full_adder.v}
,路径可以是相对路径,也可以是绝对路径。
导入完成后会显示如下信息,包含输出信号的类型和位宽。输入命令check design
可以验证代码是否读入成功,返回1代表没有错误。
文件导入完成后进行设计约束了,首先对时钟进行约束,创建周期为10ns的主时钟,命令create_clock -period 10 [get_ports clk]
。
给输入引脚设置相关的输入延时,给除了时钟以外的所有输入引脚都设置input_delay为1,并且输入的input_delay是相对于clk而言的,命令set_input_delay -max 3 -clock clk [remove_from_collection [all_inputs] clk]
。DC显示1,表示设置完毕。
设置输出端口的output_delay,设置输出的最大output_delay为2.5。命令set_output_delay -max 2.5 -clock clk [all_outputs]
。
设置所有输入信号的transition time,即信号翻转时间,设置为0.15,命令set_input_transition 0.15 [all_inputs]
。约束设置完,再check_design一下确认没有问题,显示1表示没有问题。
约束设置完成后开始综合,命令compile
。
综合时DC会输出一些报告,最后显示优化完成。
综合完成后,可以查看一些报告,比如可以输入命令report_clock
查看时钟报告。
输入命令report_timing
查看时序报告,看在我们设置的时序约束下,整个设计是否会出现时序违例。
如上图,时序裕量为正,slack显示MET,表示满足要求,如果时序违例,会显示VIOLATE。
输入命令report_area
查看综合后的面积报告。
输入命令write_sdc full_adder.sdc
保存约束信息,.sdc
文件为时序约束文件。
.sdc
文件如下图,内容就是之前命令设置的时序约束。
输入命令write_sdf full_adder.sdf
保存用于做后仿的时延文件,跑后仿除了时延文件,还需要综合后的网表文件。
输入命令write_file -format verilog -output full_adder_netlist.v
输出门级网表文件。
门级网表文件内容如下图,主要包含基于工艺库的门级电路。
综合的简单过程主要以上内容。
参考资料
[1].https://www.bilibili.com/read/cv17138007