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

Slides:



Advertisements
Similar presentations
SOPC技术 数字逻辑电路 主讲:刘昌华 嵌入式技术研究所
Advertisements

FPGA设计与应用 大连理工大学软件学院 王洁 2011年春季.
第1章 电子系统设计训练.
第2章 SOPC硬件开发环境及流程.
EDA技术 第9章 FPGA硬件设计.
实验四 利用中规模芯片设计时序电路(二).
综合布线技术与实践教程 第九章:综合布线系统工程网络分析 课程网站:
第4章 VHDL设计初步.
第10章 FPGA硬件设计 <EDA技术与应用> 课程讲义
系统仿真软件Matlab及数模混合仿真 2013年4月2日.
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
Greatest Common Divisor ---最大公约数
电工电子实验中心.
AKA Embedded 开放实验室系列普及讲座之一 FPGA/CPLD的应用和开发简介
水煮FPGA 传统FPGA设计流程简介.
Chapter 5 Verilog 硬體描述語言
Chapter 5 Verilog硬體描述語言
第1章 概 述.
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
EDA技术 廖义奎.
浅谈基于FPGA的电路设计 报告人:吴爱平 2005/11/13
版权所有,禁止未经授权的商业使用行为 何宾 Tel: 北京中教仪装备技术有限公司.
EDA技术实用教程 第1章 概 述.
第二讲 搭建Java Web开发环境 主讲人:孙娜
授課教授 : 陳永耀 博士 學生 : 藍浩濤 P 電機所控制組
EDA原理及应用 何宾
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
0.18μM製程Laker LVS & DRC 步驟修正與偵錯
EDA 原理及应用 何宾
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
EDA 原理及应用 何宾
SPI驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
本章小结: 可编程逻辑器件(Programmable Logic Device,简称为 PLD)是目前数字系统设计的主要硬件基础。现场可编程门阵列 FPGA(Field Programmable Gate Array)现场可编程门阵列FPGA在结构上由逻辑功能块排列为阵列,功能由逻辑结构的配置数据决定,配置数据可以存放在片外的EPROM或其他存储体上,人们可以控制加载过程,在现场修改器件的逻辑功能。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
第17章 网站发布.
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
iPhone/iPod Touch/Android
第6章 FIR数字滤波器设计 6.1 FIR数字滤波器原理 6.2 使用DSP Builder设计FIR数字滤波器
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
三:基于Eclipse的集成开发环境搭建与使用
程序设计工具实习 Software Program Tool
计算机学院 数字逻辑实验的要求.
EDA技术 实验步骤.
第四章 团队音乐会序幕: 团队协作平台的快速创建
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
长春工业大学工程训练中心 EDA技术及应用实践课程 Maxplus Ⅱ 软件开发系统简述 主讲:刘春阳 长春工业大学工程训练中心
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
设计示例一 用门级结构描述D触发器:.
Xilinx FPGA Design Flow
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
HSC高速输出例程 HORNER APG.
VRP教程 2011.
Python 环境搭建 基于Anaconda和VSCode.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
FPGA组合逻辑 王安然.
Verilog HDL 基本语法 STEP 2016/12/3.
按键处理部分 王安然.
印制板制作软件Protel入门篇.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
FPGA系统设计与实践 本章小结(第5章).
Programmable Logic System Design
Presentation transcript:

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

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

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

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

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

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

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

Xilinx—ISE界面 2017/2/25

Altera—Quartus II界面 2017/2/25

Lattice—ispLEVER界面 2017/2/25

Actel—Libero界面 2017/2/25

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

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

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

创建新工程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

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

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

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

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

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

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

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

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

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

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

测试2/2 2017/2/25

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

二、 逻辑综合 2017/2/25

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

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

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

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

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

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

时间路径 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

时序:clock 2017/2/25

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

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

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

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

逻辑综合工具介绍 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

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

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

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

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

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

带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页

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

.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

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

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

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

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

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

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

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

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

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

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

5.综合 compile 2017/2/25

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

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

2017/2/25

2017/2/25

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 2.1 ./sdf/top_pad.sdf 2017/2/25

三、 时序仿真 2017/2/25

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

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

这里仅用综合后的网表以及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

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

最终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

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

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

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

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

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

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

THANK YOU! 2017/2/25