79
浙浙浙浙浙 FPGA 硬硬硬硬硬 硬硬硬硬硬硬 2013 硬 4 硬 11 硬

FPGA 硬件验证及 逻辑综合软件

Embed Size (px)

DESCRIPTION

FPGA 硬件验证及 逻辑综合软件. 2013 年 4 月 11 日. 内容. FPGA 硬件验证 逻辑综合软件 时序仿真 演示. 一、 FPGA 硬件验证. FPGA 应用举例 FPGA 常用软件 FPGA 验证流程. 应用领域举例. 总线接口 高速数据采集 通信领域 编解码、信号纠错 嵌入式系统 数字图象处理 数字信号处理. Xilinx 公司 ISE Altera 公司 QUARTUS II 1 、开发工具 - PowerPoint PPT Presentation

Citation preview

Page 1: FPGA 硬件验证及 逻辑综合软件

浙大微电子

FPGA 硬件验证及逻辑综合软件

2013年 4月 11日

Page 2: FPGA 硬件验证及 逻辑综合软件

浙大微电子

内容 FPGA 硬件验证 逻辑综合软件 时序仿真 演示

2/78

Page 3: FPGA 硬件验证及 逻辑综合软件

浙大微电子

一、一、 FPGA 硬件验证

3/78

Page 4: FPGA 硬件验证及 逻辑综合软件

浙大微电子

FPGA 应用举例 FPGA 常用软件 FPGA 验证流程

4/78

Page 5: FPGA 硬件验证及 逻辑综合软件

浙大微电子

应用领域举例 总线接口 高速数据采集 通信领域 编解码、信号纠错 嵌入式系统 数字图象处理 数字信号处理

5/78

Page 6: FPGA 硬件验证及 逻辑综合软件

浙大微电子

FPGA 公司及软件 Xilinx 公司 ISE

Altera 公司 QUARTUS II

1 、开发工具 Lattice 公司 ispLEVER

ACTEL 公司 Libero IDE

( Microsemi 收购)

2 、开发语言 Verilog or VHDL

6/78

Page 7: FPGA 硬件验证及 逻辑综合软件

浙大微电子

国产 FPGA

•京微雅格( Capital Microelectronics ),以前又称雅格罗技 (Agate Logic) 。•2003 年在美国硅谷创办。•2005 年与清华大学合作。•FPGA+CPU+RAM+Flash 可配置应用平台( CAP )芯片:

Astro 系列( AS1E5F1K 、 AS2E5F1K ) Angelo 系列( AG1F4N4 )http://www.capital-micro.com/index.htm

7/78

Page 8: FPGA 硬件验证及 逻辑综合软件

浙大微电子

Xilinx—ISE 界面

8/78

Page 9: FPGA 硬件验证及 逻辑综合软件

浙大微电子

Altera--Quartus II 界面

9/78

Page 10: FPGA 硬件验证及 逻辑综合软件

浙大微电子

Lattice—ispLEVER 界面

10/78

Page 11: FPGA 硬件验证及 逻辑综合软件

浙大微电子

Actel--Libero 界面

11/78

Page 12: FPGA 硬件验证及 逻辑综合软件

浙大微电子

FPGA 流程

第三方软件

12/78

Page 13: FPGA 硬件验证及 逻辑综合软件

浙大微电子

Xilinx Spartan 3 xc3s400 为例1. 创建新工程2. 添加设计文件( .v 或者 .vhd )3. 分配 IO 管脚4. 综合5. 布局布线6. 下载7. 测试

13/78

Page 14: FPGA 硬件验证及 逻辑综合软件

浙大微电子

创建新工程 1/2 File-->New project

14/78

Page 15: FPGA 硬件验证及 逻辑综合软件

浙大微电子

创建新工程 2/2

接下来一直Next..

Spartan3XC3S400

FT256-4

15/78

Page 16: FPGA 硬件验证及 逻辑综合软件

浙大微电子

添加设计文件

鼠标右键

16/78

Page 17: FPGA 硬件验证及 逻辑综合软件

浙大微电子

分配 IO 管脚 1/2

17/78

Page 18: FPGA 硬件验证及 逻辑综合软件

浙大微电子

添加管脚约束文件

分配 IO 管脚 2/2

上一步分配完管脚,保存,自动生成这

个 ucf 文件。

18/78

Page 19: FPGA 硬件验证及 逻辑综合软件

浙大微电子

综合

鼠标单击选中顶层模块fsk_modulator,

双击 Synthesize

19/78

Page 20: FPGA 硬件验证及 逻辑综合软件

浙大微电子

鼠标单击选中顶层模块fsk_modulator,

双击 Implement

Design

实现

20/78

Page 21: FPGA 硬件验证及 逻辑综合软件

浙大微电子

生成下载文件 --.bit 格式

21/78

Page 22: FPGA 硬件验证及 逻辑综合软件

浙大微电子

下载文件 1/3

22/78

Page 23: FPGA 硬件验证及 逻辑综合软件

浙大微电子

下载文件 2/3

23/78

Page 24: FPGA 硬件验证及 逻辑综合软件

浙大微电子

下载文件 3/3

24/78

Page 25: FPGA 硬件验证及 逻辑综合软件

浙大微电子

测试 1/2

下载线

FPGA 开发板

25/78

Page 26: FPGA 硬件验证及 逻辑综合软件

浙大微电子

测试 2/2

26/78

Page 27: FPGA 硬件验证及 逻辑综合软件

浙大微电子

IC 典型流程

功 能 要 求

系统建模

电路仿真

手工设计版图

后仿真

满足

满足

不满足

不满足

行为设计(Verilog/VHDL)

行为仿真

时序仿真

版图自动布局、布线

流片、封装、测试

不满足

满足

满足

不满足

不满足

后仿真

综合、优化网表

满足

流片、封装、测试

功能要求

系统建模Matlab

Modelsim,

Questasim,

Muxplus IIDesign Compiler

Astro ,

Encounter

数字 VLSI 流程

Matlab

Spectre

Virtuoso,

laker

Calibre

模拟 IC 流程

Spectre

Modelsim,

Questasim,

Muxplus II27/78

Page 28: FPGA 硬件验证及 逻辑综合软件

浙大微电子

二、二、 逻辑综合

28/78

Page 29: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑综合相关概念 逻辑综合工具 --Design Compiler

29/78

Page 30: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑综合相关概念 什么是逻辑综合? 时间路径 时序 :setup/hold

可综合 verilog

基本术语

30/78

Page 31: FPGA 硬件验证及 逻辑综合软件

浙大微电子

什么是逻辑综合? 综合就是把 HDL 代码转换为门级电路的过程,

用公式表示 就是:综合 = 翻译 + 优化 + 映射( Synthesis  = Translation  + Optimization 

+ Mapping  )

31/78

Page 32: FPGA 硬件验证及 逻辑综合软件

浙大微电子

assign mux_out=!mux_control&mux_in1 |mux_control&mux_in2|mux_in1&mux_in2;//assign mux_out=mux_control ?mux_in1:mux_in2;

翻译

映射

32/78

Page 33: FPGA 硬件验证及 逻辑综合软件

浙大微电子

时间路经

时间路径:信号传播经过的逻辑通道,简称路径。 起点一般为:基本输入端口或寄存器的时钟端口; 终点一般为:基本输出端口或寄存器的数据端口。 时间路径通常分为 4 种:

基本输入到基本输出:基本输入到寄存器:寄存器到基本输出:寄存器到寄存器:

33/78

Page 34: FPGA 硬件验证及 逻辑综合软件

浙大微电子

时间路经

基本输入到寄存器 寄存器到寄存器 寄存器到基本输出

基本输入到基本输出

34/78

Page 35: FPGA 硬件验证及 逻辑综合软件

浙大微电子

时序: setup/hold

建立( setup )时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。

保持( hold )时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。

裕度( slack ):是时序要求与实际时序之间的差值,反映了时序是否满足要求。裕度为正,满足要求;反之不满足。

裕度=要求的时间 - 实际的时间

35/78

Page 36: FPGA 硬件验证及 逻辑综合软件

浙大微电子

可综合的 Verilog(1)

HDL 语言:是“硬件描述语言” ,即 Hardware Description Language,

而不是“硬件设计语言”, Hardware Design Language.因此电路设计必须遵循 RTL 的模式来编写代码,而不能随心所欲地只写出符合语法的代码。 下面就常用的可综合 Verilog 编写格式做一简单总结。

36/78

Page 37: FPGA 硬件验证及 逻辑综合软件

浙大微电子

可综合的 Verilog(2)

37/78

Page 38: FPGA 硬件验证及 逻辑综合软件

浙大微电子

可综合的 Verilog(3)

38/78

Page 39: FPGA 硬件验证及 逻辑综合软件

浙大微电子

可综合的 Verilog(4)

39/78

Page 40: FPGA 硬件验证及 逻辑综合软件

浙大微电子

可综合的 Verilog(5)

40/78

Page 41: FPGA 硬件验证及 逻辑综合软件

浙大微电子

可综合的 Verilog(6)

41/78

Page 42: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑基本术语 库( Library ) 设计( Design) 单元( Cell or Instance ) 参考( Reference ) 端口( Port ) 管脚( Pin ) 线网( Net ) 时钟( Clock )

42/78

Page 43: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑综合基本术语—库库:一组逻辑单元的集合。 库包括库申明、库属性、库应用环境和每个单

元的功能描述、时间延时、面积、功耗等。 逻辑综合库包含两种格式: 1. 自由文件格式 .lib (任何文本编辑器都可以打开) 2. synopsys 应用程序可使用的格式 .db (不可查看)

Astro 布局布线库LVS 文件

文本文件, datasheet, handbook可测性矢量压缩文件

标准单元版图Cadence 布局布线库

物理参数库符号库

逻辑综合库标准单元 verilog 模

型标准单元清单库说明

文件

存放路径

43/78

Page 44: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑综合基本术语

module top(A,B,C,D,CLK,OUT1);

input A,B,C,D,CLK;

output OUT1;

….

INV U2(.A(BUS0),.Z(INV0));

….

endmodule

design

port

reference

cellpin

44/78

Page 45: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑综合工具介绍 Synopsys 公司: Design Compiler ( DC )

和 Synplify Cadence 公司: Encounter RTL Compiler 和

BuildGates Magma 公司: Talus RTL Mentor 公司: Precision RTL 以上综合工具都具有图形界面和命令窗口

45/78

Page 46: FPGA 硬件验证及 逻辑综合软件

浙大微电子

DC启动工作站启动方法: 创建启动软件目录 mkdir syn 进入到启动软件目录 cd syn source /opt/demo/synopsys.env design_vision &

注:先不要启动软件,看完 53页内容在启动软件。

46/78

Page 47: FPGA 硬件验证及 逻辑综合软件

浙大微电子

DC 界面

输入命令的地方

47/78

Page 48: FPGA 硬件验证及 逻辑综合软件

浙大微电子

逻辑综合流程1.HDL准备2.准备工艺库3.读入 HDL 代码4. 添加约束5. 综合6.查看报告7. 文件导出

48/78

Page 49: FPGA 硬件验证及 逻辑综合软件

浙大微电子

1.HDL准备 软件仿真过没有问题的设计文件 带 IO 的顶层文件。

49/78

Page 50: FPGA 硬件验证及 逻辑综合软件

浙大微电子

module top_pad (clk_pad, en_pad, data_in_pad, fsk_out_pad );

input clk_pad,en_pad,data_in_pad;output fsk_out_pad;

fsk_modulator fsk_modulator(clk_wire,en_wire,data_in_wire,fsk_out_wire);

PULLHS1 pull_high (.Z(high_wire)); PULLHS0 pull_low (.Z(low_wire)); //input PBCD2RN data_in_block

(.PAD(data_in_pad),.IE(high_wire), .OEN(high_wire), .REN(high_wire), .C(data_in_wire));

PBCD2RN clk_block (.PAD(clk_pad),.IE(high_wire), .OEN(high_wire), .REN(high_wire), .C(clk_wire));

PBCD2RN en_block (.PAD(en_pad),.IE(high_wire), .OEN(high_wire), .REN(high_wire), .C(en_wire));

//output PBCD2RN fsk_out_block

(.PAD(fsk_out_pad),.IE(low_wire), .OEN(low_wire), .REN(high_wire), .I(fsk_out_wire));

endmodule

查看库的 handbook

50/78

Page 51: FPGA 硬件验证及 逻辑综合软件

浙大微电子

2.准备工艺库 1/4

工艺库要到相关 Foundry 代工厂网站下载,上传至服务器。

准备软件启动文件 .synopsys_dc.setup .synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综

合的参数。

在启动软件的时候, DC按下列顺序读入启动文件的。1) Synopsys安装目录下的启动文件:$synopsys/admin/setup2) 用户根目录下的启动文件;3) 项目工作目录下的启动文件;

51/78

Page 52: FPGA 硬件验证及 逻辑综合软件

浙大微电子

目标库( targe_library ):标准单元库

连接库( link_library ):所有库单元,包括:标准单元, IO , RAM等宏单元。

符号库( symbol_library) :元件的图形符号。 把下页 PPT 上的内容保存

成 .synopsys_dc.setup 文件,再把 .synopsys_dc.setup 文件保存到启动软件的目录。

2.准备工艺库 2/4

52/78

Page 53: FPGA 硬件验证及 逻辑综合软件

浙大微电子

set lib_path /home/smic/smic_40/SCC40NLL_HS_RVT_V0p1aset smic_stdlib_path ${lib_path}/synopsys/1.1v/set smic_iolib_path /home/smic/smic_40/SP40NLLD2RN_3P3V_V0p2/syn/3p3v/set smic_stdsymlib_path ${lib_path}/Symbol/

set search_path "$search_path $smic_stdlib_path $smic_iolib_path \$smic_stdsymlib_path "

set target_library [list scc40nll_hs_rvt_ff_v1p21_-40c_basic.db \ scc40nll_hs_rvt_ss_v0p99_125c_basic.db \ scc40nll_hs_rvt_tt_v1p1_25c_basic.db]

set link_library [list "*" SP40NLLD2RN_3P3V_V0p1_ff_V1p21_-40C.db \ SP40NLLD2RN_3P3V_V0p1_ss_V0p99_125C.db \ SP40NLLD2RN_3P3V_V0p1_tt_V1p10_25C.db \ scc40nll_hs_rvt_ff_v1p21_-40c_basic.db \ scc40nll_hs_rvt_ss_v0p99_125c_basic.db \ scc40nll_hs_rvt_tt_v1p1_25c_basic.db] set symbol_library [list SCC40NLL_HS_RVT_V0p1.sdb]

2.准备工艺库 3/4

注意: \ 后面不要跟空格

53/78

注意: \ 前面得有空格

Page 54: FPGA 硬件验证及 逻辑综合软件

浙大微电子

软件启动后 要先查看库添加成功与否

2.准备工艺库 4/4

54/78

Page 55: FPGA 硬件验证及 逻辑综合软件

浙大微电子

3.读入设计文件 1/3

DC提供了下面两种方式读入设计: 1.read命令 2.analyze&elaborate命令(先分析语法等,再构成具体逻辑)

55/78

Page 56: FPGA 硬件验证及 逻辑综合软件

浙大微电子

3.读入设计文件 2/3

read

方式下一次只能读入一个文件,要采取自下而上的方式。

56/78

Page 57: FPGA 硬件验证及 逻辑综合软件

浙大微电子

3.读入设计文件 3/3

read -format verilog [list \ /home/liuxp/sim/rtl/fsk_modulator.v]

read -format verilog [list \ /home/liuxp/sim/rtl/fsk_modulator_pad.v]

57/78

Page 58: FPGA 硬件验证及 逻辑综合软件

浙大微电子

4. 添加约束工作温度条件

58/78

Page 59: FPGA 硬件验证及 逻辑综合软件

浙大微电子

set_operating_conditions -min_library scc40nll_hs_rvt_ff_v1p21_-40c_basic -min ff_v1p21_-40c -max_library scc40nll_hs_rvt_ss_v0p99_125c_basic -max ss_v0p99_125c -analysis_type bc_wc

4. 添加约束

59/78

Page 60: FPGA 硬件验证及 逻辑综合软件

浙大微电子

4. 设置负载

打开电路图,选中要设置负载的输出管脚。set_load 5 [all_outputs]

60/78

Page 61: FPGA 硬件验证及 逻辑综合软件

浙大微电子

4. 创建时钟

61/78

Page 62: FPGA 硬件验证及 逻辑综合软件

浙大微电子

4. 创建时钟 create_clock -name clk -period 15 -

waveform [list 0 7.5] clk_pad set_clock_latency 1.0 [all_clocks] set_clock_uncertainty -setup 1.0 clk set_clock_uncertainty -hold 0.5 clk set_clock_transition 1 [get_clocks clk] set_dont_touch_network [list clk_pad]

62/78

Page 63: FPGA 硬件验证及 逻辑综合软件

浙大微电子

5. 综合

compile

63/78

Page 64: FPGA 硬件验证及 逻辑综合软件

浙大微电子

综合前后电路结构比较

综合前

综合后

64/78

Page 65: FPGA 硬件验证及 逻辑综合软件

浙大微电子

6. 时序报告

report_timing -delay maxreport_timing -delay min

65/78

Page 66: FPGA 硬件验证及 逻辑综合软件

浙大微电子 66/78

Page 67: FPGA 硬件验证及 逻辑综合软件

浙大微电子 67/78

Page 68: FPGA 硬件验证及 逻辑综合软件

浙大微电子

top_pad.sv 和 top_pad.sdc提供给布局布线工具去做

后端。 在启动软件的目录里面创建 netlist目录 命令 :mkdir netlist (在

Terminal里面输入) 导出 .sv 文件到 netlist目录: write -format verilog -hierarchy -output ./netlist/top_pad.sv(在软件的命令栏输入,不是在 Terminal里) 在启动软件的目录里面创建 sdc目录命令: mkdir sdc 导出 .sdc 文件到 sdc目录: write_sdc ./sdc/top_pad.sdc

top_pad.sdf 文件是延迟文件,做时序仿真用。 在启动软件的目录里面创建 sdf目录 命令 :mkdir sdf 导出 .sdf 文件到 sdf 目录里: write_sdf -version 2.1 ./sdf/top_pad.sdf

7. 文件导出

68/78

Page 69: FPGA 硬件验证及 逻辑综合软件

浙大微电子

三、三、 时序仿真

69/78

Page 70: FPGA 硬件验证及 逻辑综合软件

浙大微电子

时序仿真概念 时序仿真方法

70/78

Page 71: FPGA 硬件验证及 逻辑综合软件

浙大微电子

时序仿真概念 时序仿真:带有延迟信息的仿真,主要是看时

序和功能是否同时满足。 不同于静态时序分析。 逻辑综合和布局布线完都需要做时序仿真。 布局布线完的时序仿真有时候也叫后仿真,不

同于模拟电路后仿真。

71/78

Page 72: FPGA 硬件验证及 逻辑综合软件

浙大微电子

时序仿真方法1. 将 sdf 文件添加到 Testbench 中2. 创建新的工程3. 添加逻辑综合完导出的网表文件 top_pad.sv

4. 添加标准单元的 Verilog 模型文件/home/smic/smic_40/SCC40NLL_HS_RVT_V0

p1a/verilog/SCC40NLL_HS_RVT_V0p1.v

5. 添加输入输出 IO 的 Verilog 模型文件/home/smic/smic_40/SP40NLLD2RN_3P3V_V

0p2/verilog/SP40NLLD2RNP_3P3V_V0p1.v

6. 编译及仿真72/78

Page 73: FPGA 硬件验证及 逻辑综合软件

浙大微电子

sdf 文件添加到 Testbench

在 testbench 中添加如下代码:initial

begin

$sdf_annotate(“/home/XXX( 学号 )/XXX( 启动逻辑综合软件的目录 )/sdf/top_pad.sdf", top_tb.fsk_modulator);

end

Testbench DUT 实例化的名称 模块名称

73/78

Page 74: FPGA 硬件验证及 逻辑综合软件

浙大微电子

最终 Testbench 实例

74/78

`timescale 1ns/10psmodule top_tb();reg clk_tb;//clk 31.6 MHzreg en_tb , data_in_tb;// data_in is 564 KHz top_pad fsk_modulator (clk_tb, en_tb, data_in_tb, fsk_out_tb);initialbegin$sdf_annotate("/home/liuxp/class/syn/sdf/top_pad.sdf",top_tb.fsk_modulator);end…..// 这里为测试变量赋值,跟之前一样endmodule

实例化的名称

Testbench 的名称带 IO 的顶层模块,

不是设计模块

Page 75: FPGA 硬件验证及 逻辑综合软件

浙大微电子

SDF 文件添加成功

75/78

Page 76: FPGA 硬件验证及 逻辑综合软件

浙大微电子

仿真结果

功能仿真: data_in_pad 为待调制数据 fsk_out_pad 为产生的 FSK 信号

76/78

Page 77: FPGA 硬件验证及 逻辑综合软件

浙大微电子

仿真结果

SDF 添加前的仿真结果:无延时

SDF 添加后的仿真结果:有 3.3ns 的延时

77/78

Page 78: FPGA 硬件验证及 逻辑综合软件

浙大微电子

作业验收 逻辑综合后的时序报告( 66 页的结果) 时序仿真的波形( 75 和 76 页的结果)

78/78

Page 79: FPGA 硬件验证及 逻辑综合软件

浙大微电子

THANK YOU!

79/78