Linux环境下EDA软件的使用——数字IC设计DC综合篇
目前,绝大部分集成电路设计所用到EDA软件都是Linux版本,对于芯片工程师,熟悉一款EDA软件是入门的必修课,当然要真正的掌握会是十分漫长的过程。在公司中通常会使用Linux服务器进行开发,作为学生党在VMware中安装Linux学习即可。我选用的是synopsys的DC综合工具,S家的软件对CentOS的兼容性更好,网络上也能找到很多EDA工具包和安装好的EDA虚拟机,关于虚拟机的安装在这里就不再赘述。
一、综合的基本概念
1.1综合概述
通常我们所说的综合指的是逻辑综合。逻辑综合就是使用综合工具将较高层次的RTL级描述转换为基于目标工艺库和特定约束条件的门级网表的过程。
1.2综合的流程
综合包括转转译(Translation)、映射(Mapping)、优化(Optimization)三个过程。
转译是指把电路的HDL描述转化为与工艺无关的功能模块的逻辑电路的过程。这个过程不包括任何重组和优化,也与制造工艺没有直接联系。
映射是把转译后得到的电路结构用特定的目标工艺库中的单元实现。这时得到的电路包含了具体的制造工艺参数。
优化则是综合工具根据设计者施加的时序和面积等约束条件对电路进行改进的过程。综合工具根据设定的参数,采用一定的算法来使设计尽量满足设计要求。
1.3DC的主要功能
(1)使用用户指定的门阵列或者标准单元库产生速度快、面积小的ASIC设计
(2)把设计从一种工艺转换为另一种工艺
(3)在不同的负载、温度和电压条件下对时序、面积和功耗等设计指标作折中处理
(4)综合的优化有限状态机(FSM)
(5)支持网表输入,支持用来与第三方工具交互的网表或原理图输出
(6)自动创建和划分层次原理图
二、文件准备
设计文件:RTL代码文件
工艺库文件:将RTL级的HDL映射到门级时所需要的标准单元综合库。DC用到的工艺库是.db或者是.lib格式的,其中.lib是可读的,通过此文件可以了解库的详细信息,比如工作电压,操作温度,工艺偏差等等。.db格式的库是二进制的,不可读。
脚本文件:DC综合一般采用运行脚本的方式,把每一步操作对应的命令写在一个文件中,通过source这个文件就可以批量执行其中的命令。
Setup文件:文件名为.synopsys_dc.setup,文件中一般包含初始化参数变量,设计工艺库名称、路径等等。
三、目录组织结构
四、DC中常用命令
Find the location and/or names of filesdc_shell-xg-t> pwd; cd; lsShow the history of commands entereddc_shell-xg-t> historyRepeat last commanddc_shell-xg-t> !!Execute command no.7 from the history listdc_shell-xg-t> !7Execute the last report commanddc_shell-xg-t> !repExecute any Linux commanddc_shell-xg-t> sh <Linux_command>
五、操作步骤
Step1:启动DC
首先打开一个Terminal,输入命令
source cshrc_eda
然后按照前面的目录结构建立文件夹,把所需要的文件放入相应的文件夹,进入工作目录run,
启动DC图形界面在Terminal中输入命令:
design_vision&
启动DC命令行界面输入命令:
dc_shell
业界大佬都青睐命令行界面,并且把所用的命令写成综合脚本。
Step2:执行setup文件
在DC窗口下方的design_vision>中可以输入命令,在此输入
source ./.synopsys_dc.setup 回车
./代表当前目录
Step3:执行脚本文件
依次输入:
source ../script/pbist.def回车source ../script/pbist.read回车source ../script/pbist.run回车
综合结束,在report和export文件夹中已经有了所需要的输出文件
Step4:查看综合后的电路图
六、Setup文件详解
setup文件通常有三个.synopsys_dc.setup、common_setup.tcl以及dc_setup.tcl,他们分别在安装目录、用户目录和工程目录下。
搜索路径(search_path)
这个变量给出的是DC环境下读入的文件(包括库文件和设计文佳)的搜索路径。当读入没有给出路径的文件时,DC默认按照search_path给出的路径搜索该文件
目标工艺库(target_library)
目标工艺库是指将RTL级的HDL描述到门级时所需要的标准单元库,它是芯片制造商(Foundary)提供的,包括物理信息的单元模型,例如与、或、非等基本逻辑单元,锁存器、触发器等时序逻辑单元。
链接库(link_library)
链接库可以是和target_library一样的单元库,也可以是综合到门级的底层模块设计,它可以在由上而下的综合过程中,上层设计调用底层已综合模块是,从link_library中寻找并链接起来。
符号库(symbol_library)
DC创建电路图时,用来标识器件单元的库。
七、脚本文件讲解
7.1 pbist.def
set SRC “../src”set REPORT “../report”set EXPORT "../export"define_name_rules BORG -restricted "A-Z" -replacement_char "a-z"
7.2 pbist.read
ananlyze -format verilog $SRC/address_gen.velaborate address_genananlyze -format verilog $SRC/control_gen.velaborate control_genananlyze -format verilog $SRC/date_gen.velaborate date_genananlyze -format verilog $SRC/diag_monitor.velaborate diag_monitorananlyze -format verilog $SRC/instruction_mem.velaborate instruction_mem....
analyze语句读入设计文件,-format选项的值可以是verilog或者vhdl,elabrate语句建立一个design,design的名字为设计文件中module的名字。
7.3 pbist.run