数字集成电路设计基础知识

集成电路设计流程

硬件复杂度

1.特征尺寸的缩小
2.时钟频率提高
3.低功耗问题,可测试性

专业名词

nonrecurring-engineering ( NRE ):集成电路产品的研制开发费,设计人工费,计算机软硬件设备折旧费以及试制过程中所需的制版、工艺加工、测试分析等研发过程中的一次性开支。
wafer size: 晶片尺寸4英寸, 6英寸,8英寸,12英寸
feature size:特征尺寸
die size:芯片颗粒尺寸
Moore’s Law:加工能力每18个月翻一番
等效门:一个等效门是一个二输入NAND门
HDL:硬件描述语言,能够:
–描述电路的连接
–描述电路的功能
–以不同的抽象级描述电路
–描述电路的时序
–描述具有并行性
defect density:缺陷密度,影响成品率
yield:成品率(良率)
仿真器:读入HDL并进行解释及执行的一种软件
抽象级:描述方式的详细程度,如行为级和门级
ASIC:专用集成电路(Application Specific Integrated Circuit)
ASIC Vender:芯片制造商,开发并提供单元库
Bottom-up design flow :一种先构建底层单元,然后由底层单元构造更大的系统的设计方法 。
Top-down design flow :一种设计方法,先用高抽象级构造系统,然后再设计下层单元。
RTL level:寄存器传输级(Register Transfer Level),可综合的一种设计抽象级
Tcl:Tool command Language, 向交互程序输入命令的描述语言

集成电路设计方法分类

• 全定制设计(Full-custom)
• 基于门阵列的设计(Gate Array)
• 基于现场可编程阵列FPGA的设计(Field Programmable Gate Array )
• 基于标准单元的设计

全定制设计

定义

从晶体管开始手工完成集成电路的电路设计、仿真、版图设计的一种方法。

优点

设计的精度很高,可以最大程度优化芯片的性能,不会浪费太多芯片资源。

缺点

花费更多的人力和时间成本。

流程

在这里插入图片描述

基于门阵列的设计方法

定义

门阵列是指由半导体厂商准备出已经在硅片上形成了被称为基本单元的逻辑门的母板,通过按照用户希望的电路进行布线,在母板上形成电路的半客户定制品芯片。

分类

门阵列可分为有信道和无信道两种。

优点

• 可大幅度的缩短生产工期;
• 低成本:即使是小批量的数字电路,仍能实现低成本,原因在于实现相同的功能,FPGA使用LUT等浪费的资源比较多,而门阵列则不在这个问题,所以实现相同的功能,门阵列所使用的资源数量要远远小于FPGA,从而减少电路面积,降低总成本。
• 安全性:FPGA的电路编程数据存储在ROM。可通过监控启动时ROM和FPGA之间的位流,截取和复制电路数据。门阵列的专用电路设计在半定制IC上硬连线实现,从而使其不可能被复制。

现场可编程阵列 FPGA

优点
  1. 小批量系统提高系统集成度、可靠性的最佳选择之一。
  2. 不需要投片生产,就能得到合用的芯片。
  3. 可做其它全定制或半定制ASIC电路的中试样片。
  4. 设计周期短、开发费用最低、风险最小。
结构

• FPGA芯片集成了丰富的门及各种IO
• 存储器SRAM
• 高速存储器接口DDR4
• 时钟 PLL 及DCM
• DSP IP
• XADC
• 高速通信接口PCIe
• CPU
• IP种类丰富

基于标准单元的设计流程:标准单元库

单元库

单元库是进行集成电路设计的一个重要部分,可由制造厂家,或第三方提供,也可自己开发。

为了支持不同层次的设计,单元库的内容包括
  • 行为模型(behavioral model )
  • Verilog/VHDL模型(verilog/VHDL model )
  • 电路原理图(circuit schematic )
  • 单元符号 (cell icon,symbol )
  • 详细的时序模型 (detailed timing model )
  • 测试策略 (test strategy)
  • 线负载模型(wire-load model )
  • 布线模型(routing model )
  • 物理版图 (physical layout )

集成电路设计流程

在这里插入图片描述

软/硬件协同设计流程

在这里插入图片描述

基于标准单元的设计流程

在这里插入图片描述

版图设计流程

在这里插入图片描述

Verilog语言介绍

用途

– ASIC和FPGA工程师编写可综合的RTL代码
– 使用高抽象级描述仿真系统,进行系统建模开发
– 测试工程师用于编写各种层次的测试程序
– 用于ASIC和FPGA单元或更高层次的模块的仿真模型开发

抽象级

在这里插入图片描述
• 行为级
– 用功能块之间的数据流对系统进行描述
– 在需要时在函数块之间进行调度赋值。
• RTL级/功能级
– 用功能块内部或功能块之间的数据流和控制信号描述系统
– 基于一个已定义的时钟的周期来定义系统模型
• 结构级/门级
– 用基本单元(primitive)或低层元件(component)的连接来描述系统以得到更高的精确性,特别是时序方面。
– 逻辑综合时用特定工艺和低层元件将RTL描述映射到门级网表

标识符

标识符是用户在描述时给Verilog对象 定义的名称
标识符必须以字母(a-z, A-Z)或( _ )开头,后面可以是字母、数字、$ 或 _ 。
最长可以是1023个字符
• 标识符区分大小写,sel和SEL是不同的标识符
• 模块、端口和实例的名称都是标识符

整数常量和实数常量

• 整数的大小可以定义也可以不定义。整数表示为:
– 数字中(_)忽略,便于阅读,但不能出现在数字的首位。
– 没有定义大小(size)整数缺省为32位
– 缺省数基为十进制
– 数基(base)和数字(16进制)中的字母无大小写之分
– 当数值value大于指定的位数时,截去高位。如 2’b1101表示的是
2’b01;小于指定的位数?
• 实数常量
– 实数可用科学表示法或十进制表示
– 科学表示法表示方式:
<尾数><e或E><指数>, 表示: 尾数×10^指数

字符串(string)

Verilog中,字符串大多用于显示信息的命令中。Verilog没有字符串数据类型
• 字符串要在一行中用双引号括起来,不能跨行。
• 字符串中的每个字符以ASCII格式表示
• 字符串中可以使用一些C语言转义(escape)符,如\t \n
• 可以使用一些C语言格式符(如%b)在仿真时产生格式化输出:
” This is a normal string”
”This string has a \t tab and ends with a new line\n”
”This string formats a value: val = %b”

net的分类

在这里插入图片描述

register类的类型

在这里插入图片描述

参数(parameters)

• 用参数声明一个可变常量,常用于定义延时及宽度变量。
• 可一次定义多个参数,用逗号隔开。
• 在使用常数(literal)的地方都可以使
用参数。
• 参数的定义是局部的,只在当前模块中
有效。
• 参数定义可使用以前定义的整数和实数
参数。

参数重载(overriding)

Defparam语句(现在综合工具还不支持)
• 可用defparam语句在编译时重载参数值。
• defparam语句引用参数的层次化名称。
• 使用defparam语句可单独重载任何参数值。

持续赋值(continuous assignment)

• 描述的是组合电路
• 在过程块外部使用。
• 对net类型的信号赋值。
• 在等式左边可以有一个简单延时说明。
– 只限于在表达式左边用#delay形式
• 可以是显式或隐含表示。

过程块语句

块语句用来将多个语句组织在一起,使得他们在语法上如同一个语句。
块语句分为两类:
• 顺序块:语句置于关键字begin和end之间,块中的语句以顺序方式执行。
• 并行块:关键字fork和join之间的是并行块语句,块中的语句并行执行。
• Fork和join语句常用于test bench描述。这是因为可以一起给出矢量及其绝对时间,而不必描述所有先前事件的时间。
• 过程语句有两种:
– initial :只执行一次
– always :循环执行

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值