FPGA硬件验证及逻辑综合 - 浙江大学信息与电子工程学系

Download Report

Transcript FPGA硬件验证及逻辑综合 - 浙江大学信息与电子工程学系

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
2、开发语言
ACTEL公司 Libero IDE
(Microsemi收购)
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
Spartan3
XC3S400
FT256
-4
接下来一直
Next..
浙大微电子
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典型流程
数字VLSI 流程
模拟IC 流程
功能要求
Matlab
Modelsim,
Questasim,
Muxplus II
Design Compiler
功 能 要 求
系统建模
行为设计
Verilog
/VHDL)
(
不满足
行为仿真
不满足
Encounter
Modelsim,
Questasim,
Muxplus II
Spectre
电路仿真
满足
满足
综合、优化
网表
手工设计
版图
不满足
时序仿真
满足
Astro,
Matlab
系统建模
Virtuoso,
不满足
后仿真
版图自动
布局、布线
laker
Spectre
满足
不满足
Calibre
流片、封装、测试
后仿真
满足
流片、封装、测试
浙大微电子
27/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
逻辑综合基本术语—库
库:一组逻辑单元的集合。
 库包括库申明、库属性、库应用环境和每个单
存放路径
元的功能描述、时间延时、面积、功耗等。
 逻辑综合库包含两种格式:
Astro布局布线库
LVS文件
1.自由文件格式 .lib(任何文本编辑器都可以打开)
文本文件,datasheet, handbook
可测性矢量压缩文件
2. synopsys应用程序可使用的格式.db(不可查看)
标准单元版图
Cadence布局布线库
物理参数库
符号库
逻辑综合库
标准单元verilog模型
标准单元清单
库说明
文件
浙大微电子
43/78
逻辑综合基本术语
design
module top(A,B,C,D,CLK,OUT1);
input A,B,C,D,CLK; port
output OUT1;
…. reference
INV U2(.A(BUS0),.Z(INV0));
cell
pin
….
endmodule
浙大微电子
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));
查看库的handbook
//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(cl
k_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(f
sk_out_wire));
endmodule
浙大微电子
50/78
2.准备工艺库1/4
工艺库要到相关Foundry代工厂网站下载,上传至服务
器。
准备软件启动文件.synopsys_dc.setup
.synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综
合的参数。
在启动软件的时候,DC按下列顺序读入启动文件的。
1) Synopsys安装目录下的启动文件:
$synopsys/admin/setup
2) 用户根目录下的启动文件;
3) 项目工作目录下的启动文件;
浙大微电子
51/78
2.准备工艺库2/4
目标库(targe_library):标准单元库
连接库(link_library):所有库单元,包括:标
准单元,IO,RAM等宏单元。
符号库(symbol_library):元件的图形符号。
把下页PPT上的内容保存成.synopsys_dc.setup
文件,再把.synopsys_dc.setup文件保存到启动
软件的目录。
浙大微电子
52/78
2.准备工艺库3/4
set lib_path /home/smic/smic_40/SCC40NLL_HS_RVT_V0p1a
set 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]
浙大微电子
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
4.添加约束
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
浙大微电子
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 max
report_timing -delay min
浙大微电子
65/78
浙大微电子
66/78
浙大微电子
67/78
7.文件导出
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
浙大微电子
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实例
`timescale 1ns/10ps
module top_tb();
reg clk_tb;//clk 31.6 MHz
reg en_tb , data_in_tb;// data_in is 564 KHz
top_pad fsk_modulator
Testbench的名称
(clk_tb, en_tb,
带IO的顶层模块,
data_in_tb, fsk_out_tb);
不是设计模块
initial
begin
实例化的名称
$sdf_annotate("/home/liuxp/class/syn/sdf/top_pa
d.sdf",top_tb.fsk_modulator);
end
…..//这里为测试变量赋值,跟之前一样
endmodule
浙大微电子
74/78
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