Presentation is loading. Please wait.

Presentation is loading. Please wait.

内容 FPGA硬件验证 逻辑综合 时序仿真 一般逻辑综合之后只需要做门级功能仿真即可,没必要加上延时进行时序仿真,且因为逻辑综合没有修hold,所以加上延时也很可能会报错(存在hold违反)。 只有布局布线完成后才有进行时序仿真的必要。 2017/2/25.

Similar presentations


Presentation on theme: "内容 FPGA硬件验证 逻辑综合 时序仿真 一般逻辑综合之后只需要做门级功能仿真即可,没必要加上延时进行时序仿真,且因为逻辑综合没有修hold,所以加上延时也很可能会报错(存在hold违反)。 只有布局布线完成后才有进行时序仿真的必要。 2017/2/25."— Presentation transcript:

0 FPGA硬件验证及ASIC 逻辑综合 2016年 6月6日

1 内容 FPGA硬件验证 逻辑综合 时序仿真 一般逻辑综合之后只需要做门级功能仿真即可,没必要加上延时进行时序仿真,且因为逻辑综合没有修hold,所以加上延时也很可能会报错(存在hold违反)。 只有布局布线完成后才有进行时序仿真的必要。 2017/2/25

2 一、 FPGA硬件验证 2017/2/25

3 主要内容 FPGA应用举例 FPGA常用软件 FPGA验证流程 2017/2/25

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

5 FPGA公司及软件 Xilinx公司 ISE Altera公司 QUARTUS II 1、开发工具 Lattice公司 ispLEVER
ACTEL公司 Libero IDE (Microsemi收购) 2、开发语言 Verilog or VHDL 2017/2/25

6 国产FPGA 京微雅格(Capital Microelectronics),以前 又称雅格罗技(Agate Logic)。
2003年在美国硅谷创办。 2005年与清华大学合作。 FPGA+CPU+RAM+Flash可配置应用平台(CAP)芯片: CME-山(M)系列 CME-河(R)系列 CME-云(C)系列 CME-星(P)系列 开发工具:Primace 2017/2/25

7 Xilinx—ISE界面 2017/2/25

8 Altera—Quartus II界面 2017/2/25

9 Lattice—ispLEVER界面 2017/2/25

10 Actel—Libero界面 2017/2/25

11 FPGA流程 第三方软件 2017/2/25

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

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

14 创建新工程2/2 Spartan3 XC3S400 FT256 -4 接下来一直Next..
不很严密地说,“序号越低,速度等级越高”这是Altera FPGA的排序方法,“序号越高,速度等级也越高”这是Xilinx FPGA的排序方法 However for FPGAs, they don't use the same definition for speed grade. Originally speed grades for FPGAs represented the time through a look up table but now the speed grade doesn't actually repesent a timing path. I am not sure if it is the same for other vendors, but for Xilinx FPGAs higher numbers are faster. Each speed grade increment is ~15% faster than the one before it. So a -5 is 10% faster than a -4 speed grade. 2017/2/25

15 添加设计文件 鼠标右键 2017/2/25

16 分配IO管脚1/2 2017/2/25

17 上一步分配完管脚,保存,自动生成这个ucf文件。
分配IO管脚2/2 添加管脚约束文件 上一步分配完管脚,保存,自动生成这个ucf文件。 2017/2/25

18 综合 鼠标单击选中顶 层模块 fsk_modulator, 双击Synthesize 2017/2/25

19 实现 鼠标单击选中 顶层模块 fsk_modulator, 双击Implement Design 2017/2/25

20 生成下载文件--.bit格式 2017/2/25

21 下载文件1/3 2017/2/25

22 下载文件2/3 2017/2/25

23 下载文件3/3 2017/2/25

24 测试1/2 FPGA开发板 下载线 2017/2/25

25 测试2/2 2017/2/25

26 Xilinx ISE的ChipScope ISE ChipScope可以充当示波器,或者用来调试程序,查看电路中某些节点的信号。 教程链接:
如何防止软件将某些信号优化掉? 假如我们要观察的一个信号cnt:reg [10:0] cnt;,那么就按照 文档中的介绍,要保持此信号不被综合,则: (* KEEP = “TRUE” *) reg [10:0] cnt 或者 (* keep= “true” *) reg [10:0] cnt 这样就可以实现ChipScope的观察而不被优化掉了 2017/2/25

27 二、 逻辑综合 2017/2/25

28 IC典型流程 数字VLSI 流程 模拟IC 流程 Matlab Matlab 半定制?全定制 Modelsim Questasim
功能要求 系统建模 电路仿真 手工设计 版图 后仿真 满足 不满足 行为设计 Verilog / VHDL 行为仿真 时序仿真 版图自动 布局 布线 流片 封装 测试 综合 优化 网表 Matlab Matlab 半定制?全定制 Modelsim Questasim Maxplus II Spectre Virtuoso, Laker Design Compiler Astro (IC Compiler) Encounter Calibre 参数提取 2017/2/25

29 主要内容 逻辑综合相关概念 逻辑综合工具--Design Compiler 2017/2/25

30 逻辑综合相关概念 什么是逻辑综合? 时间路径 时序 基本术语 2017/2/25

31 什么是逻辑综合? 综合就是把HDL 代码转换为门级电路的过程,用公式表示: 综合= 翻译  + 优化  + 映射(见下页图) (Synthesis=Translation + Optimization + Mapping) 2017/2/25

32 assign mux_out=mux_control ?mux_in1:mux_in2;
assign mux_out=!mux_control&mux_in1 |mux_control&mux_in2|mux_in1&mux_in2; RTL源代码 翻译 通用布尔门 (GTECH) 优化+映射 assign mux_out=mux_control ?mux_in1:mux_in2; 目标工艺库中的门 2017/2/25

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

34 时间路径 path1: input port to data pin of sequential cell
path2: input port to output port path3: clock pin to data pin of next sequential cell path4: clock pin to output port 2017/2/25

35 时序:clock 2017/2/25

36 时序:setup/hold 建立(setup)时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
裕度(slack):是时序要求与实际时序之间的差值,反映了时序是否满足要求。裕度为正,满足要求;反之不满足。 裕度=要求的时间-实际的时间 2017/2/25

37 DC基本术语 库(Library) 设计(Design) 单元(Cell or Instance) 参考(Reference)
端口(Port) 管脚(Pin) 线网(Net) 时钟(Clock) 2017/2/25

38 文本文件,datasheet, handbook
DC基本术语—库 库:一组逻辑单元的集合。 库包括库申明、库属性、库应用环境和每个单元的功能描述、时间延时、面积、功耗等。 逻辑综合库包含两种格式: 1.自由文件格式 .lib(任何文本编辑器都可以打开) 2. synopsys应用程序可使用的格式.db(不可查看) Astro布局布线库 LVS文件 文本文件,datasheet, handbook 可测性矢量压缩文件 标准单元版图 Cadence布局布线库 物理参数库 符号库 逻辑综合库 标准单元verilog模型 标准单元清单 库说明文件 存放路径 2017/2/25

39 DC基本术语 module top(A,B,C,D,CLK,OUT1); input A,B,C,D,CLK; output OUT1;
design module top(A,B,C,D,CLK,OUT1); input A,B,C,D,CLK; output OUT1; …. INV U2(.A(BUS0),.Z(INV0)); endmodule clock port reference net cell pin 2017/2/25

40 逻辑综合工具介绍 Design Compiler, Synplify, ISE– XST, Precision RTL(Mentor), RTL Compiler Design Compiler( DC)中包含了多种工具,如DFT Compiler,Power Compiler,HDL Compiler,Library Compiler等,使得DC具有强大的功能,成为业界最流行的综合工具。用户只需输入满足要求的HDL描述和设计约束,就可能得到较为优化的门级综合网表。 2017/2/25

41 Design Compiler介绍 Design Compiler有两种界面供用户使用,一种是命令界面,一种是图形界面。
dc_shell-t (命令界面) design_vision (图形界面) Design Compiler支持TCL(Tool Command Language)语言 初学者通过图形界面,然后熟悉DC的综合命令,采用批处理的方式提高综合的工作效率。 2017/2/25

42 DC启动(非常重要!!! ) 工作站启动方法: 1.打开Terminal,创建syn目录(输入: mkdir syn)
2.进入到软件启动目录syn(输入 :cd syn ) 3.拷贝软件启动文件 (输入:cp /tmp/.synopsys_dc.setup .) 4.启动软件 source /opt/demo/synopsys.env design_vision & 2017/2/25

43 DC界面 输入命令的地方 2017/2/25

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

45 1.HDL准备 设计文件 fsk_modulator.v 带IO的顶层文件
在终端下输入命令 cp /tmp/top_pad.v ./ 将顶层IO文件复制到自己的目录下 注:后边的./可以换成自己放Verilog文件的目录) 2017/2/25

46 带IO的顶层文件 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 2017/2/25 共95页

47 2.准备工艺库1/3 工艺库要到相关Foundry代工厂网站下载,上传至服务器。 准备软件启动文件.synopsys_dc.setup
1) Synopsys安装目录下的启动文件$synopsys/admin/setup 2) 用户根目录下的启动文件 3) 项目工作目录下的启动文件 2017/2/25

48 .synopsys_dc.setup文件 2017/2/25
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 \ set symbol_library [list SCC40NLL_HS_RVT_V0p1.sdb] 2017/2/25

49 2.准备工艺库2/3 目标库(targe_library):标准单元库
连接库(link_library):所有库单元,包括:标准单元,IO,RAM等宏单元 符号库(symbol_library):元件的图形符号 一定要按照43页的操作,拷贝.synopsys_dc.setup文件到syn目录,再在syn目录中启动DC软件。 2017/2/25

50 2.准备工艺库3/3 软件启动后 要先查看库添加成功与否 2017/2/25

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

52 方式下一次只能读入一个文件,要采取自下而上的方式。
3.读入设计文件2/3 read 方式下一次只能读入一个文件,要采取自下而上的方式。 2017/2/25

53 3.读入设计文件3/3 read -format verilog [list \ /home/qianyj/class/rtl/fsk_modulator.v] read -format verilog [list \ /home/qianyj/class/rtl/top_pad.v] 2017/2/25

54 4.添加约束 工作温度条件 2017/2/25

55 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 2017/2/25

56 4.设置负载 打开电路图,选中要设置负载的输出管脚。 set_load 5 [all_outputs] 2017/2/25

57 4.创建时钟 2017/2/25 共95页

58 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] 2017/2/25

59 5.综合 compile 2017/2/25

60 综合前后电路结构比较 综合前 综合后 2017/2/25

61 6.时序报告 report_timing -delay max report_timing -delay min 2017/2/25

62 2017/2/25

63 2017/2/25

64 7.文件导出 top_pad.sv和top_pad.sdc提供给布局布线工具去做后端。 top_pad.sdf文件是延迟文件,做时序仿真用。
在启动软件的目录里面创建netlist目录 命令:mkdir netlist(在Terminal里面输入,不是软件命令窗口) 导出.sv文件到netlist目录: 1)change_names -hierarchy -rules verilog 2)write -format verilog -hierarchy -output ./netlist/top_pad.sv (在软件的命令栏输入,不是在Terminal里) 在启动软件的目录里面创建sdc目录命令:mkdir sdc (在Terminal里面输入,不是软件命令窗口) 导出.sdc文件到sdc目录:write_sdc ./sdc/top_pad.sdc(在软件的命令栏输入,不是在Terminal里) top_pad.sdf文件是延迟文件,做时序仿真用。 在启动软件的目录里面创建sdf目录 命令:mkdir sdf 导出.sdf文件到sdf 目录里: write_sdf -version /sdf/top_pad.sdf 2017/2/25

65 三、 时序仿真 2017/2/25

66 主要内容 时序仿真概念 时序仿真方法 2017/2/25

67 时序仿真概念 功能仿真:不包含延时信息,只关注实现功能的理想条件下的仿真。 时序仿真:带有延迟信息的仿真,主要是看时序和功能是否同时满足。
延时主要包括:cell delay和net delay 不同于静态时序分析(STA)。 含延时的动态仿真既能验证设计的功能,也能验证设计的时序,但是验证都不完全:动态仿真无法将设计中的每条路径都覆盖到,且功能正确性的仿真强烈的依赖于测试向量。STA只能验证时序,无法验证功能。 逻辑综合和布局布线完都可以做时序仿真,但是逻辑综合后一般只需要做门级功能仿真即可,没有必要做时序仿真,不需要加上sdf延时文件进行时序仿真,且因为逻辑综合没有修hold,所以加上延时也很可能会报错(存在hold违反)。 此外,并不是说不加上sdf文件进行仿真进行的就是功能仿真,因为STD库里面也是存在延时的,如何进行功能仿真? 仿真脚本里面+nospecify 只有布局布线完成后才有进行时序仿真的必要。 布局布线完的时序仿真也叫后仿真,不同于模拟电路后仿真。 2017/2/25

68 这里仅用综合后的网表以及DC导出的sdf文件演示一下时序仿真的方法,但是实际实际设计中只需要在该步做不包含任何延时的功能仿真即可!!
时序仿真方法 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.编译及仿真 这里仅用综合后的网表以及DC导出的sdf文件演示一下时序仿真的方法,但是实际实际设计中只需要在该步做不包含任何延时的功能仿真即可!! 2017/2/25

69 sdf文件添加到Testbench 在testbench中添加如下代码: initial begin $sdf_annotate(“/home/XXX(学号)/XXX(启动逻辑综合软件的目录)/sdf/top_pad.sdf", top_tb.fsk_modulator); end Testbench模块名称 DUT实例化名称 2017/2/25

70 最终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 (clk_tb, en_tb, data_in_tb, fsk_out_tb); initial begin $sdf_annotate("/home/liuxp/class/syn/sdf/top_pad.sdf",top_tb.fsk_modulator); end …..//这里为测试变量赋值,跟之前一样 endmodule Testbench的名称 带IO的顶层模块, 不是设计模块 实例化的名称 2017/2/25

71 SDF文件添加成功 2017/2/25

72 仿真结果 功能仿真: data_in_pad为待调制数据 fsk_out_pad为产生的FSK信号 2017/2/25

73 仿真结果 SDF添加后的仿真结果:有2.51ns的延时 2017/2/25

74 Testbench中不加sdf文件, 仿真脚本里面不加 +nospecify 仿真波形如下: 仍然存在延时 2017/2/25

75 Testbench中不加sdf文件, 仿真脚本里面加 +nospecify 仿真波形如下: 不存在延时,这才是功能仿真
但是,modelsim存在一个问题,加上+nospecify选项之后呢,某些情况下软件巨慢,几乎没法跑,VCS运行超快。 2017/2/25

76 作业验收 逻辑综合后的时序报告(类似64页的结果) max delay and min delay 两个slack
时序仿真的波形(类似73和74页的结果) 2017/2/25

77 THANK YOU! 2017/2/25


Download ppt "内容 FPGA硬件验证 逻辑综合 时序仿真 一般逻辑综合之后只需要做门级功能仿真即可,没必要加上延时进行时序仿真,且因为逻辑综合没有修hold,所以加上延时也很可能会报错(存在hold违反)。 只有布局布线完成后才有进行时序仿真的必要。 2017/2/25."

Similar presentations


Ads by Google