DesignCompiler学习(4)- 综合库、设计对象和DesignWare库

标准单元库

绝大多数的数字设计流程都是基于标准单元的半定制设计流程。
标准单元库包含了反相器、缓冲器、NAND门、NOR门、与或非门、锁存器、触发器等逻辑单元综合模型的物理信息。
标准单元是完成通用功能的逻辑,具有同等的高度(宽度可以不同),这样方便了数字后端的自动布局布线。

概述

一个ASIC综合库包括如下信息:
(1)一系列单元(包括单元的引脚)
(2)每个单元的面积(在深亚微米中,一般用平方微米表示,在亚微米工艺下,一般用门来称呼,至于具体的单位,可以咨询半导体制造商)
(3)每个输出引脚的逻辑功能
(4)每个输入到输出的传递延时,输出到输出的传递延时;inout到输出的传递延时

内容与结构

Synopsys的工艺库是一个.lib文件,经过Library Compiler软件编译后,产生.db文件。工艺库文件主要包括如下信息:
(1)单元(cell)(的信息):(主要有)功能、时间(包括时序器件的约束,如建立和保持)、面积(面积的单位不在里面定义,可按照规律理解,一般询问半导体厂商)、功耗、测试等。
(2)连线负载模型(wire load models):电阻、电容、面积。
(3)工作环境/条件(Operating conditions):制程(process)(电压和温度的比例因数k,表示不同的环境之间,各参数缩放的比例)
(4)设计规则约束(Design ):最大最小电容、最大最小转换时间、最大最小扇出。

工艺库的结构如下图所示:

在这里插入图片描述

关于工艺库更具体的内容介绍可以查看文章最后的参考资料。

DC的设计对象

对于一个Verilog代码模块,我们知道这是一个模块的名字是什么,这个模块的功能是什么,这个模块有哪些端口等等信息。但是对于DC来说,它不像我们那么理解,给它一个Verilog模块,它把这个模块的内容当做设计对象(简称对象)来看。

Verilog模块与DC支持的对象的对应关系如下图所示:

在这里插入图片描述
在这里插入图片描述

DC支持8种设计对象

在这里插入图片描述

DC读入设计时候,可以通过以下命令查看这些对象:

get_ports,_pins,_designs,_cells,_nets,_clocks
all_inputs,_outputs,_clocks,_registers

set pci_ports [get_ports “Y??M Z*”]
echo $pci_ports

query_objects $pci_ports
sizeof_collection $pci_ports

set pci_ports [add_to_collection $pci_ports [get_ports CTRL*]]
set all_input_except_clk [remove_from _collection [all_inputs] [get_ports CLK]]

filter_collection [get_cells *] “ref_name=~AN*”
get_cells * -filter “don’t_touch == true”

list_attributes -application -class <object_type>

Query:访问某一个对象,
Sizeof:查某一个(对象)集合的大小。

对象具有某些属性,比如:
  端口(port)的属性有:方向、驱动单元、负载、最大电容约束等
  单元(cell)的属性有:层次化、不触碰 等
  时钟的属性有:周期、抖动 等

约束,就是对设计对象的属性进行约束。

DesignWare库

DesignWare是Synopsys提供的知识产权(Intellectual Property,简称IP)库。IP库分成可综合IP库(Synthesizable IP,SIP),验证IP库(Verification IP,VIP)和生产厂家库(Foundry Libraries)。

IP库中包含了各种不同类型的器件,这些器件可以用来设计和验证ASIC, SoC和FPGA。库中有如下的器件:
  ·积木块(Building Block)IP(数据通路、数据完整性、DSP和测试电路等等)。
  ·AMBA总线构造(Bus Fabric)、外围设备(Peripherals)和相应的验证IP。
  ·内存包(Memory portfolio)(内存控制器、内存BIST和内存模型等等)。
  ·通用总线和标准I/O接口(PCI Express,PCI-X,PCI和USB)的验证模型。
  ·由工业界最主要的明星IP供应商提供的微处理器(Microprocessor)和DSP核心。
  ·生产厂家库(Foundry Libraries)。
  ·板级验证IP
  ·微控制器(Microcontrollers,如8051和6811)。
  ·等等

主要介绍集成在DC综合工具中的designware foundation库。所有的IP都是事先验证过的、可重复使用的、参数化的、可综合的,并且不受工艺的约束。

一部分常用的designware foundation库单元如下表所示(更多的可查看参考资料):
在这里插入图片描述

使用IP库中的器件,可以用运算符号推论法(Operator Inferencing)或功能推论法(Functional Inferencing)。运算符号推论法是直接在设计中使用“+、-、*、>、==和<”等的运算符号。功能推论法是在设计中例化(instantiate)DesignWare中某种算术单元,例如直接指定用库中的DWF_mult_tc、DWF_div_uns等单元。

由于DesignWare库中的所有器件都是事先验证过的,使用该IP库我们可以设计得更快,设计的质量更高,增加设计的生产力和设计的可重复使用性,减少设计的风险和技术的风险。对于每个运算符号,一般地说DesignWare库中会有多个结构(算法)来完成该运算。这样就允许DC在优化过程中评估速度/面积的折衷,选择最好的实现结果。对于一个给定的功能,如果有多个DesignWare的电路可以实现它,Design Compiler将会选择能最好满足设计约束的电路。此外使用DesignWare中的DW Foundation库是需要许可证(license)的,DW Foundation库提供了更好的设计质量(Quality of Result)。

使用DesignWare中IP的方法如下图所示:

在这里插入图片描述

Design Compile自动选择和优化算术器件。对于算术运算,我们并不需要在DC中指定标准的(基本的)综合库standard.sldb。标准的综合库standard.sldb包含内置的HDL运算符号,综合时DC会自动使用这个库。如果我们要使用性能更高的额外的IP库,例如DW_ foundation.sldb,我们就必须指定这些库,如下所示:

#Specify for use during optimization
set synthetic_library dw_foundation.sldb
#Specify for cell resolution during link
lappend link_library $synthetic_library

参考资料

https://www.cnblogs.com/IClearner/p/6622524.html

猜你喜欢

转载自blog.csdn.net/meng1506789/article/details/112629627