Upload
graham-knight
View
196
Download
0
Embed Size (px)
DESCRIPTION
FPGA 硬件验证及 逻辑综合软件. 2013 年 4 月 11 日. 内容. FPGA 硬件验证 逻辑综合软件 时序仿真 演示. 一、 FPGA 硬件验证. FPGA 应用举例 FPGA 常用软件 FPGA 验证流程. 应用领域举例. 总线接口 高速数据采集 通信领域 编解码、信号纠错 嵌入式系统 数字图象处理 数字信号处理. Xilinx 公司 ISE Altera 公司 QUARTUS II 1 、开发工具 - PowerPoint PPT Presentation
Citation preview
浙大微电子
FPGA 硬件验证及逻辑综合软件
2013年 4月 11日
浙大微电子
内容 FPGA 硬件验证 逻辑综合软件 时序仿真 演示
2/78
浙大微电子
一、一、 FPGA 硬件验证
3/78
浙大微电子
FPGA 应用举例 FPGA 常用软件 FPGA 验证流程
4/78
浙大微电子
应用领域举例 总线接口 高速数据采集 通信领域 编解码、信号纠错 嵌入式系统 数字图象处理 数字信号处理
5/78
浙大微电子
FPGA 公司及软件 Xilinx 公司 ISE
Altera 公司 QUARTUS II
1 、开发工具 Lattice 公司 ispLEVER
ACTEL 公司 Libero IDE
( Microsemi 收购)
2 、开发语言 Verilog or VHDL
6/78
浙大微电子
国产 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
浙大微电子
Xilinx—ISE 界面
8/78
浙大微电子
Altera--Quartus II 界面
9/78
浙大微电子
Lattice—ispLEVER 界面
10/78
浙大微电子
Actel--Libero 界面
11/78
浙大微电子
FPGA 流程
第三方软件
12/78
浙大微电子
Xilinx Spartan 3 xc3s400 为例1. 创建新工程2. 添加设计文件( .v 或者 .vhd )3. 分配 IO 管脚4. 综合5. 布局布线6. 下载7. 测试
13/78
浙大微电子
创建新工程 1/2 File-->New project
14/78
浙大微电子
创建新工程 2/2
接下来一直Next..
Spartan3XC3S400
FT256-4
15/78
浙大微电子
添加设计文件
鼠标右键
16/78
浙大微电子
分配 IO 管脚 1/2
17/78
浙大微电子
添加管脚约束文件
分配 IO 管脚 2/2
上一步分配完管脚,保存,自动生成这
个 ucf 文件。
18/78
浙大微电子
综合
鼠标单击选中顶层模块fsk_modulator,
双击 Synthesize
19/78
浙大微电子
鼠标单击选中顶层模块fsk_modulator,
双击 Implement
Design
实现
20/78
浙大微电子
生成下载文件 --.bit 格式
21/78
浙大微电子
下载文件 1/3
22/78
浙大微电子
下载文件 2/3
23/78
浙大微电子
下载文件 3/3
24/78
浙大微电子
测试 1/2
下载线
FPGA 开发板
25/78
浙大微电子
测试 2/2
26/78
浙大微电子
IC 典型流程
功 能 要 求
系统建模
电路仿真
手工设计版图
后仿真
满足
满足
不满足
不满足
行为设计(Verilog/VHDL)
行为仿真
时序仿真
版图自动布局、布线
流片、封装、测试
不满足
满足
满足
不满足
不满足
后仿真
综合、优化网表
满足
流片、封装、测试
功能要求
系统建模Matlab
Modelsim,
Questasim,
Muxplus IIDesign Compiler
Astro ,
Encounter
数字 VLSI 流程
Matlab
Spectre
Virtuoso,
laker
Calibre
模拟 IC 流程
Spectre
Modelsim,
Questasim,
Muxplus II27/78
浙大微电子
二、二、 逻辑综合
28/78
浙大微电子
逻辑综合相关概念 逻辑综合工具 --Design Compiler
29/78
浙大微电子
逻辑综合相关概念 什么是逻辑综合? 时间路径 时序 :setup/hold
可综合 verilog
基本术语
30/78
浙大微电子
什么是逻辑综合? 综合就是把 HDL 代码转换为门级电路的过程,
用公式表示 就是:综合 = 翻译 + 优化 + 映射( Synthesis = Translation + Optimization
+ Mapping )
31/78
浙大微电子
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
浙大微电子
时间路经
时间路径:信号传播经过的逻辑通道,简称路径。 起点一般为:基本输入端口或寄存器的时钟端口; 终点一般为:基本输出端口或寄存器的数据端口。 时间路径通常分为 4 种:
基本输入到基本输出:基本输入到寄存器:寄存器到基本输出:寄存器到寄存器:
33/78
浙大微电子
时间路经
基本输入到寄存器 寄存器到寄存器 寄存器到基本输出
基本输入到基本输出
34/78
浙大微电子
时序: setup/hold
建立( setup )时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
保持( hold )时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
裕度( slack ):是时序要求与实际时序之间的差值,反映了时序是否满足要求。裕度为正,满足要求;反之不满足。
裕度=要求的时间 - 实际的时间
35/78
浙大微电子
可综合的 Verilog(1)
HDL 语言:是“硬件描述语言” ,即 Hardware Description Language,
而不是“硬件设计语言”, Hardware Design Language.因此电路设计必须遵循 RTL 的模式来编写代码,而不能随心所欲地只写出符合语法的代码。 下面就常用的可综合 Verilog 编写格式做一简单总结。
36/78
浙大微电子
可综合的 Verilog(2)
37/78
浙大微电子
可综合的 Verilog(3)
38/78
浙大微电子
可综合的 Verilog(4)
39/78
浙大微电子
可综合的 Verilog(5)
40/78
浙大微电子
可综合的 Verilog(6)
41/78
浙大微电子
逻辑基本术语 库( Library ) 设计( Design) 单元( Cell or Instance ) 参考( Reference ) 端口( Port ) 管脚( Pin ) 线网( Net ) 时钟( Clock )
42/78
浙大微电子
逻辑综合基本术语—库库:一组逻辑单元的集合。 库包括库申明、库属性、库应用环境和每个单
元的功能描述、时间延时、面积、功耗等。 逻辑综合库包含两种格式: 1. 自由文件格式 .lib (任何文本编辑器都可以打开) 2. synopsys 应用程序可使用的格式 .db (不可查看)
Astro 布局布线库LVS 文件
文本文件, datasheet, handbook可测性矢量压缩文件
标准单元版图Cadence 布局布线库
物理参数库符号库
逻辑综合库标准单元 verilog 模
型标准单元清单库说明
文件
存放路径
43/78
浙大微电子
逻辑综合基本术语
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
浙大微电子
逻辑综合工具介绍 Synopsys 公司: Design Compiler ( DC )
和 Synplify Cadence 公司: Encounter RTL Compiler 和
BuildGates Magma 公司: Talus RTL Mentor 公司: Precision RTL 以上综合工具都具有图形界面和命令窗口
45/78
浙大微电子
DC启动工作站启动方法: 创建启动软件目录 mkdir syn 进入到启动软件目录 cd syn source /opt/demo/synopsys.env design_vision &
注:先不要启动软件,看完 53页内容在启动软件。
46/78
浙大微电子
DC 界面
输入命令的地方
47/78
浙大微电子
逻辑综合流程1.HDL准备2.准备工艺库3.读入 HDL 代码4. 添加约束5. 综合6.查看报告7. 文件导出
48/78
浙大微电子
1.HDL准备 软件仿真过没有问题的设计文件 带 IO 的顶层文件。
49/78
浙大微电子
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
浙大微电子
2.准备工艺库 1/4
工艺库要到相关 Foundry 代工厂网站下载,上传至服务器。
准备软件启动文件 .synopsys_dc.setup .synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综
合的参数。
在启动软件的时候, DC按下列顺序读入启动文件的。1) Synopsys安装目录下的启动文件:$synopsys/admin/setup2) 用户根目录下的启动文件;3) 项目工作目录下的启动文件;
51/78
浙大微电子
目标库( targe_library ):标准单元库
连接库( link_library ):所有库单元,包括:标准单元, IO , RAM等宏单元。
符号库( symbol_library) :元件的图形符号。 把下页 PPT 上的内容保存
成 .synopsys_dc.setup 文件,再把 .synopsys_dc.setup 文件保存到启动软件的目录。
2.准备工艺库 2/4
52/78
浙大微电子
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
注意: \ 前面得有空格
浙大微电子
软件启动后 要先查看库添加成功与否
2.准备工艺库 4/4
54/78
浙大微电子
3.读入设计文件 1/3
DC提供了下面两种方式读入设计: 1.read命令 2.analyze&elaborate命令(先分析语法等,再构成具体逻辑)
55/78
浙大微电子
3.读入设计文件 2/3
read
方式下一次只能读入一个文件,要采取自下而上的方式。
56/78
浙大微电子
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
浙大微电子
4. 添加约束工作温度条件
58/78
浙大微电子
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
浙大微电子
4. 设置负载
打开电路图,选中要设置负载的输出管脚。set_load 5 [all_outputs]
60/78
浙大微电子
4. 创建时钟
61/78
浙大微电子
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
浙大微电子
5. 综合
compile
63/78
浙大微电子
综合前后电路结构比较
综合前
综合后
64/78
浙大微电子
6. 时序报告
report_timing -delay maxreport_timing -delay min
65/78
浙大微电子 66/78
浙大微电子 67/78
浙大微电子
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
浙大微电子
三、三、 时序仿真
69/78
浙大微电子
时序仿真概念 时序仿真方法
70/78
浙大微电子
时序仿真概念 时序仿真:带有延迟信息的仿真,主要是看时
序和功能是否同时满足。 不同于静态时序分析。 逻辑综合和布局布线完都需要做时序仿真。 布局布线完的时序仿真有时候也叫后仿真,不
同于模拟电路后仿真。
71/78
浙大微电子
时序仿真方法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
浙大微电子
sdf 文件添加到 Testbench
在 testbench 中添加如下代码:initial
begin
$sdf_annotate(“/home/XXX( 学号 )/XXX( 启动逻辑综合软件的目录 )/sdf/top_pad.sdf", top_tb.fsk_modulator);
end
Testbench DUT 实例化的名称 模块名称
73/78
浙大微电子
最终 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 的顶层模块,
不是设计模块
浙大微电子
SDF 文件添加成功
75/78
浙大微电子
仿真结果
功能仿真: data_in_pad 为待调制数据 fsk_out_pad 为产生的 FSK 信号
76/78
浙大微电子
仿真结果
SDF 添加前的仿真结果:无延时
SDF 添加后的仿真结果:有 3.3ns 的延时
77/78
浙大微电子
作业验收 逻辑综合后的时序报告( 66 页的结果) 时序仿真的波形( 75 和 76 页的结果)
78/78
浙大微电子
THANK YOU!
79/78