数字集成电路综合设计.docx
《数字集成电路综合设计.docx》由会员分享,可在线阅读,更多相关《数字集成电路综合设计.docx(38页珍藏版)》请在冰豆网上搜索。
数字集成电路综合设计
摘要
7人表决器电路是一简单的输入信号检测与处理、产生运算控制信号的逻辑电路。
本文详细介绍了依据功能要求进行运算控制电路方案设计的过程,并在此基础上将整体电路分为数据接收模块、数据处理模块、结果显示模块等主要功能模块。
电路设计完成后通过DesignCompiler对电路进行逻辑综合。
使用Tcl命令编写电路的约束文件,设定约束条件,对电路进行优化以保证设计的功能性,同时生成网表文件、时序报告、面积报告,并进行结果分析。
再通过延时文件与顶层文件的激励进行电路功能的时序仿真,分析设计的可行性。
再通过Primetime对电路进行静态时序分析,得到静态时序报告。
最后通过IC_Compler对生成的网表进行物理实现,生成GDSII版图信息。
关键词DesignCompiler;Primetime;逻辑综合;静态时序分析;物理实现;
引言
现代集成电路技术急剧发展,输百万级晶体管电路使设计面临着巨大的挑战。
如果没有计算机的辅助和建立了很好的设计方法是不可能完成这一工作的。
Synopsys公司是全球半导体和电子行业先进的EDA(电子设计自动化)软件工具和专业化服务提供商,为设计复杂集成电路(IC)、FPGA(现场可编程门阵列)和SOC(SystemonChip,系统级芯片)产品的公司提供业内最完善的工具,使客户能够用最短时间并以最低风险向市场推出最好的电子产品。
从高水平的综合能力到门电路的设置,Synopsys为工程技术人员面临的最严峻挑战提供全部解决方案,并帮助他们将电子设计推向极致。
现今,Synopsys在全球半导体技术发展潮流中担当着重要角色[2]。
Synopsys公司发布的“DesignCompiler”软件,简称“DC”,是一种逻辑合成工具。
通过改进电路延迟时间的计算方法,缩小了逻辑合成时的时序与布局完成后的最终时序之间的偏差。
DC得到全球60多个半导体厂商、380多个工艺库的支持。
据最新Dataquest的统计,Synopsys的逻辑综合工具占据91%的市场份额。
DC是十二年来工业界标准的逻辑综合工具,也是Synopsys最核心的产品。
它使IC设计者在最短的时间内最佳的利用硅片完成设计。
它根据设计描述和约束条件并针对特定的工艺库自动综合出一个优化的门级电路。
它可以接受多种输入格式,如硬件描述语言、原理图和网表等,并产生多种性能报告,在缩短设计时间的同时提高设计性能。
本设计采用VerilogHDL语言描述、DesignCompiler进行约束及综合。
DesignCompiler的操作有Tcl命令来实现,还要用Modelsim进行时序仿真,用PrimeTime进行静态时序分析,实验环境为Linux操作系统。
完成7人表决器电路前端设计。
1总体电路结构设计
1.1电路功能
7人表决器电路功能主要集中在四方面。
一是在用户使用开关输入状态,高电平代表“1”,低电平代表“0”;二是数据输入后要对数据进行锁存。
三是输入锁存后进行数据的实时运算,通过运算电路计算出赞成即“1”的人数和反对“0”的人数,并进行判断赞成人数是否大于3。
由于FPGA属于硬件电路,没有使用CPU软核时,没有任何指令集,所以需要使用自带的IP核进行必要的加减运算;四是运算结果得出后,可以准确的将赞成和反对人数的数量显示在数码管上。
电路的具体功能罗列如下:
(1)采用7个开关作为7人表决结果得输入设备。
(2)采用2位8段数码管和一位LED灯作为输出显示设备。
1.2关键功能电路设计
本电路设计的主要难点在于2位8段数码管的静态显示。
本课程设计给定的工作时钟位1kHZ,显示1位8段数码管的时间为1MS,扫描2位的时间为2MS。
而人的眼睛遗留时间20MS左右。
次时钟工作频率是符合设计要求的。
依照功能,将电路分为3个功能:
开关输入锁存模块;运算模块用于将开关收集到的数据按照一定要求进行计算出正确的结果;数码管显示模块,用于显示计算结果。
电路功能框图如图1.1所示
图1.1电路功能框图
1.3电路接口
整个设计接口可以分为2部分,分别是数据的输入以及数据的实时输出。
具体接口如下表1.1所示。
表1.1接口信号表
名称
IO属性
描述
备注
clk
In
时钟频率1kHz
rst
In
复位信号输入端口
低电平有效
vote
In
表决数据输入端口
pass
Out
表决结果输出端口
cnt_sel
Out
数码管位选端口
disp_seg
Out
数码管段选端口
1.4顶层TOP的设计
因为本设计是要一起综合功能电路,所以需要顶层的文件,该文件为vote7TOP.v,此部分内部包含了功能电路。
具体接口如下表1.3所示:
表1.3顶层接口信号表
名称
IO属性
描述
备注
CLK
In
外部输入时钟频率1kHz
RSTN
In
复位信号
低电平有效
VOTE
In
表决信号
高电平有效
PASS
Out
表决结果信号
大于一半有效
CNT_SEL
Out
数码管段选
高电平有效
DISP_SEG
Out
数码管位选
高电平有效
电路功能框图如图1.2所示:
图1.2顶层设计功能框图
2设计约束及脚本
2.1约束设计
约束部分是本次课程设计的重点内容,对于一个由时钟控制的数字逻辑电路来说,时序是最为重要的。
Vote7TOP.v是本设计所要约束的文件。
虽然人的肉眼所能分辨的最大频率一般为20Hz,但该设计在计算机上实现仿真运行,故暂不考虑分频问题。
所有使用本设计的工作时钟为1kHZ,即CLK周期设置为1000000ns。
输入为vote,输出为cnt_sel,disp_seg[6:
0],pass,他们都是由CLK信号同步控制,所以这些信号延时约占时钟信号的60%,即输入输出延时设置为600000ns。
本次对此电路的综合约束需要分为以下几部分:
对CLK时钟信号进行设置,对每个输入输出信号的约束,对扇出和驱动负载能力能度需要进行约束设置,最后输出报告。
2.2脚本设计
首先是读入源代码,也就是HDL文本描述的设计文件,此处不用制定目录,DesignCompiler会在搜索目录中搜索。
Tcl语句如下:
read_verilog{vote7.vvote7TOP.v}
读入设计原文件后,一般设定当前设计,这样约束条件才可能有针对性的施加。
Tcl语句如下:
current_designvote7TOP
设定当前设计后,要完成链接,也就是将设计与库链接起来,用于映射过程中搜索相应的单元,完成综合。
Tcl语句如下:
Link
检查设计,主要完成检查转换的设计。
Tcl语句如下:
check_design
然后对设计设定时序约束,这是最重要的一项约束,用于设定设计的工作速度。
针对不同的设计部分,有不同的约束方法。
针对本次设计,采用全同步,单时钟工作的实际情况。
以下语句设定时钟及属性、输入输出信号时间余量。
设定名称为CLK的时钟,由于采用1KHz的时钟,故设定时钟周期为1000000ns。
Tcl语句如下:
create_clock-name"clk"–period1000000[get_portsCLK]
设定时钟的渡越时间为0.2ns。
Tcl语句如下:
set_clock_transition-max0.2[get_clocksclk]
设定输入信号最大时间延时。
Tcl语句如下:
set_input_delay-clockclk-max600000[get_ports"VOTE"]
设定输出信号最大时间延时。
Tcl语句如下:
set_output_delay-clockclk-max600000[get_ports"DISP_SEGCNT_SELPASS"]
告诉综合器不要对时钟网络进行驱动,这个工作将在后续版图布局布线中进行。
Tcl语句如下:
set_dont_touch_network[get_clocks"clk"]
set_ideal_network[get_ports"CLK"]
告诉综合器不要对复位进行驱动。
Tcl语句如下:
set_dont_touch_network[get_portsRST]
set_ideal_network[get_portsRST]
检查时序。
Tcl语句如下:
check_timing
设定综合的操作条件。
Tcl语句如下:
set_operating_conditions-maxWORST-max_librarysaed90nm_max_hth-minWORST-min_librarysaed90nm_max_hth
设定线负载模型,本设计选择saed90nm_max_hth模型。
Tcl语句如下:
set_wire_load_model-nameForQa
设定输出负载电容。
Tcl语句如下:
set_load-pin_load2[get_ports"DISP_SEGCNT_SELPASS"]
设定扇出最大负载能力。
Tcl语句如下:
set_max_fanout30vote7TOP
驱动能力设定。
Tcl语句如下:
set_drive2.0[get_ports"CLKRST"]
设定输出网表的格式规则,以消除gatelevelnelist中的assign。
Tcl语句如下:
setverilogout_no_tritrue
set_fix_multiple_port_nets-all-buffer_constants
最大能力进行综合。
Tcl语句如下:
compile-maphigh
输出时序报告。
Tcl语句如下:
rc>../output/tim.log
输出网表。
Tcl语句如下:
write-fverilog-hier-o../netlst/vote7TOP.v
输出综合数据文件。
Tcl语句如下:
write-fddc-hier-o../output/vote7TOP.ddc
输出延时文件。
Tcl语句如下:
write_sdf../output/vote7TOP.sdf
输出面积文件。
Tcl语句如下:
report_area>../output/vote7TOP.area.log
3逻辑综合过程
3.1综合文件
首先在目录下建立dclab作为本次实验dc的操作主目录。
在dclab目录下,建立设计存放目录如code、约束文件目录如constrn、输出网表文件目录netlst、报告输出目录output、dc启动目录work,库文件目录SnonpsysDC等等。
在综合前需要准备以下几个文件,以便使软件可以正常工作。
.synopsys_dc.setup文件即启动项文件:
在这个文件中,需要将所用到的库单元文件的路径和电路设计文件所存放的路径写入,以便软件在工作时能够找到这些文件并正确识别,本设计将它存放在work目录下。
*.v文件:
因为本次课程设计所使用电路描述语言为verilogHDL语言,所以至少需要将顶层TOP设计文件、功能电路的设计文件准备好,即准备好一个正确可用的设计,以便用于约束综合,本设计将*.v文件存放在code目录下。
Tcl语句文件:
在本次课程设计中使用的是命令界面,使用Tcl语言进行操作,所以需要准备好相应的Tcl命令,以便对设计进行约束综合等相应操作,本设计将它存放在constrn目录下。
库文件:
本设计采用的是synopsys提供好的saed90nm标准单元库的所有文件,存放在目录:
/home/zhm/zhm0/SnonpsysDC下面。
3.2综合环境
本次设计是运行在ubuntuLinux操作系统环境下的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的UNIX工具软件、应用程序和网络协议。
它支持32位和64位硬件。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统Linux操作系统诞生于1991年的10月5日(这是第一次正式向外公布的时间)。
Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
本次课程设计所使用的综合工具DesignCompiler(简称DC),是synopsys公司的ASIC综合器产品,它可以完成将硬件。
描述语言所做的RTL级描述自动转换成优化的门级网表。
DC得到全球60多个半导体厂商、380多个工艺库的支持。
Synopsys的逻辑综合工具DC占据91%的市场份额。
DC是工业界标准的逻辑综合工具,也是Synopsys最核心的产品。
它使IC设计者在最短的时间内最佳的利用硅片完成设计。
它根据设计描述和约束条件并针对特定的工艺库将输入的VHDL或者Verilog的RTL描述自动综合出一个优化的门级电路。
它可以接受多种输入格式,如硬件描述语言、原理图和网表等,并产生多种性能报告,在缩短设计时间的同时提高设计性能。
3.3综合过程
首先打开Linux中命令终端。
进入以准备好的.synopsys_dc.setup文件所在路径。
执行命令,打开DesignCompiler。
进入Tcl命令界面。
命令如下:
cd/home/zhm/zhm0/dclab/work
dc_shell
运行后,读入文件将在终端得到如图3.1界面,即已经进入DC的Tcl命令
图3.1DesignCompiler的Tcl命令界面
因为已经将所要使用的Tcl语句准备好并形成文件,所以可以使用source命令来讲Tcl命令全部读入并执行。
命令如下:
source/home/zhm/zhm0/dclab/constrn/vote.con
这里我们逐一运行命令,运行后,将在终端得到如下界面,即已经进入约束综合过程。
读入文件过程,如图3.2所示:
图3.2读入文件过程
链接,检查设计之后如图3.3所示:
图3.3链接,检查设计过程
时序约束过程,如图3.4所示:
图3.4时序约束过程
关键路径优化过程。
如图3.5所示:
图3.5优化过程
待综合完成后,导出相应文本。
如电路网表、综合过程、时序报告、面积报告等。
如图3.6所示:
图3.6导出文件
4结果分析及时序仿真
4.1时序报告分析
DesignCompiler将电路分解成不同的信号时序路径(TimingPath),每条路径都有一个起点和一个终点。
起点是电路的输入端口或电路中寄存器的时钟管脚,终点是电路的输出端口或时序器件(sequentialdevices)中除时钟管脚外的其它输入管脚。
时序路径又根据控制它们终点的时钟分成不同的路径组(pathgroup),默认的路径组(thedefaultpathgroup)包含所有不受时钟约束的路径。
生成一个默认的时序报告。
时序报告由4个部分组成:
路径信息部分(PathInformationSection),路径延时部分(PathDelaySection),路径要求部分(PathRequiredSection),总结部分(SummarySection)。
查看命令:
report_timing。
时序报告如下:
****************************************
Report:
timing
-pathfull
-delaymax
-max_paths1
Design:
vote7TOP
Version:
G-2012.06-SP2
Date:
ThuJul1611:
03:
122015
****************************************
OperatingConditions:
saed90nm_max_hthLibrary:
saed90nm_max_hth
WireLoadModelMode:
top
Startpoint:
vote7/tmp_reg_4_
(risingedge-triggeredflip-flopclockedbyclk)
Endpoint:
PASS(outputportclockedbyclk)
PathGroup:
clk
PathType:
max
Des/Clust/PortWireLoadModelLibrary
------------------------------------------------
vote7TOPForQaslow
PointIncrPath
-----------------------------------------------------------
clockclk(riseedge)0.000.00
clocknetworkdelay(ideal)0.800.80
vote7/tmp_reg_4_/CK(DFFRHQX4)0.000.80r
vote7/tmp_reg_4_/Q(DFFRHQX4)0.461.26r
vote7/U148/Y(INVX12)0.251.51f
vote7/U149/Y(INVX12)0.281.79r
vote7/U46/Y(XOR2X4)0.312.10r
vote7/U47/Y(INVX12)0.232.33f
vote7/U48/Y(INVX12)0.282.61r
vote7/U155/Y(XOR2X4)0.312.92r
vote7/U109/Y(INVX12)0.233.15f
vote7/U110/Y(INVX12)0.283.43r
vote7/U41/Y(XOR2X4)0.313.74r
vote7/U42/Y(INVX12)0.233.97f
vote7/U23/Y(INVX12)0.284.25r
vote7/U75/Y(AND2X4)0.234.48r
vote7/U76/Y(INVX12)0.244.71f
vote7/U12/Y(INVX8)0.104.81r
vote7/U21/Y(INVX8)0.064.87f
vote7/U61/Y(AND2X4)0.255.12f
vote7/U62/Y(INVX12)0.295.41r
vote7/U93/Y(AND2X4)0.235.64r
vote7/U94/Y(INVX12)0.235.87f
vote7/U69/Y(AND2X4)0.226.10f
vote7/U70/Y(INVX12)0.256.35r
vote7/U115/Y(INVX12)0.246.59f
vote7/U151/Y(CLKINVX8)0.136.72r
vote7/pass(vote7)0.006.72r
iopads/pass_core(iopads)0.006.72r
iopads/pass/PAD(PDO04CDG)1.308.01r
iopads/PASS_PAD(iopads)0.008.01r
PASS(out)0.008.01r
dataarrivaltime8.01
clockclk(riseedge)1000000.001000000.00
clocknetworkdelay(ideal)0.801000000.81
clockuncertainty-0.301000000.50
outputexternaldelay-600000.00400000.50
datarequiredtime400000.50
-----------------------------------------------------------
datarequiredtime400000.50
dataarrivaltime-8.01
-----------------------------------------------------------
slack(MET)399992.50
上面是对clk时钟的约束,即对jjq_core部分约束的时序报告。
时序报告中有三列项目。
第一列是关键路径经过的器件;第二列为器件的延时;第三列是路径总延时。
路径起点为vote7/tmp_reg_4_,路径终点为PASS(outputportclockedbyclk)。
从表中可知经过各个器件的延时,数据到达时间为8.01ns。
而约束的时钟周期1000000ns,允许的最大延时为400000.50ns。
因此,允许的最大时延减去到达时间为ns。
所以满足设计的要求,裕量时间即为399992.50ns。
4.2面积报告分析
面积报告中列出了设计的端口、单元、线网和引用的数目。
设计的面积被分为组合、非组合以及互连线。
分别显示出组合逻辑面积,时序逻辑面积,估计的互联线面积,单元器件总面积。
面积报告如下:
****************************************
Report:
area
Design:
vote7TOP
Version:
G-2012.06-SP2
Date:
ThuJul1611:
03:
122015
****************************************
Library(s)Used:
saed90nm_max_hth(File:
/home/zhm/zhm0/SynopsysDC/saed90nm_max_hth)
Numberofports:
18
Numberofnets:
36
Numberofcells:
2
Numberofcombinationalcells:
0
Numberofsequentialcells:
0
Numberofmacros:
0
Numberofbuf/inv:
0
Numberofreferences:
2
Combinationalarea:
174748.435136
Buf/Invarea:
4311.014318
Noncombinationalarea:
1713.096024
NetInterconnectarea:
63933.649796
Totalcellarea:
176461.531