常见问题汇总
Download
1 / 74

常见问题汇总 - PowerPoint PPT Presentation


  • 124 Views
  • Uploaded on

常见问题汇总. 一、 linux 系统命令操作错误 注意事项: 1 、用户名是 学号 ,按照学号为 单数 或 双数 来选择服务器 2 、输入命令一律使用英文输入法,标点符号为半角 3 、注意区分大小写 4 、 linux 系统输入 密码 的时候是 没有字符显示 的,请注意. 常见问题汇总. 二、 Modelsim 仿真 : 一定要在 Testbench 中加 $stop 或者 $finish 来结束仿真。 3110104008 。 三、代码的可综合性: 注意写的代码一定要用可综合语句,尽量别使用双边沿时钟触发。.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 常见问题汇总' - blaze


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
常见问题汇总

一、linux系统命令操作错误

注意事项:

1、用户名是学号,按照学号为单数或双数来选择服务器

2、输入命令一律使用英文输入法,标点符号为半角

3、注意区分大小写

4、linux系统输入密码的时候是没有字符显示的,请注意


常见问题汇总

二、Modelsim 仿真:

一定要在Testbench 中加$stop 或者$finish 来结束仿真。3110104008。

三、代码的可综合性:

注意写的代码一定要用可综合语句,尽量别使用双边沿时钟触发。


Fpga asic

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

2014年3月31日

[email protected]


内容

FPGA硬件验证

逻辑综合软件

时序仿真

演示


一、 FPGA硬件验证


  • FPGA应用举例

  • FPGA常用软件

  • FPGA验证流程


应用领域举例

  • 总线接口

  • 高速数据采集

  • 通信领域 编解码、信号纠错

  • 嵌入式系统

  • 数字图象处理


Xilinx公司 ISE

Altera公司 QUARTUS II

1、开发工具

Lattice公司 ispLEVER

ACTEL公司 Libero IDE

(Microsemi收购)

2、开发语言 Verilog or VHDL

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






FPGA流程

第三方软件


Xilinx spartan 3 xc3s400
Xilinx Spartan 3 xc3s400 为例

1.创建新工程

2.添加设计文件(.v或者.vhd)

3.分配IO管脚

4.综合

5.布局布线

6.下载

7.测试


创建新工程1/2

  • File-->New project


创建新工程2/2

接下来一直Next..

Spartan3

XC3S400

FT256

-4


添加设计文件

鼠标右键


Io 1 2
分配IO管脚1/2


Io 2 2
分配IO管脚2/2

添加管脚约束文件

上一步分配完管脚,保存,自动生成这个ucf文件。


综合

鼠标单击选中顶

层模块

fsk_modulator,

双击Synthesize


实现

鼠标单击选中

顶层模块

fsk_modulator,

双击Implement

Design


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





测试1/2

FPGA开发板

下载线


测试2/2


二、逻辑综合


功能要求

系统建模

系统建模

行为设计

不满足

Verilog

/

VHDL

不满足

电路仿真

行为仿真

满足

满足

综合

优化

手工设计

网表

版图

不满足

不满足

时序仿真

满足

后仿真

版图自动

满足

布局

布线

流片

封装

测试

不满足

后仿真

满足

流片

封装

测试

IC典型流程

数字VLSI 流程

模拟IC 流程

Matlab

Matlab

Modelsim,

Questasim,

Muxplus II

Spectre

Virtuoso,

laker

Design Compiler

Spectre

Astro,

Encounter

Calibre

Modelsim,

Questasim,

Muxplus II



逻辑综合相关概念

  • 什么是逻辑综合?

  • 时间路径

  • 时序:setup/hold

  • 可综合verilog

  • 基本术语


什么是逻辑综合?

  • 综合就是把HDL 代码转换为门级电路的过程,用公式表示 就是:综合= 翻译  + 优化  + 映射( Synthesis  = Translation  + Optimization  + Mapping  )


assign mux_out=!mux_control&mux_in1 |mux_control&mux_in2|mux_in1&mux_in2;

//assign mux_out=mux_control ?mux_in1:mux_in2;

翻译

映射


时间路经 |mux_control&mux_in2|mux_in1&mux_in2;

  • 时间路径:信号传播经过的逻辑通道,简称路径。

  • 起点一般为:基本输入端口或寄存器的时钟端口;

  • 终点一般为:基本输出端口或寄存器的数据端口。

  • 时间路径通常分为4种:

    基本输入到基本输出:

    基本输入到寄存器:

    寄存器到基本输出:

    寄存器到寄存器:


时间路经 |mux_control&mux_in2|mux_in1&mux_in2;

基本输入到基本输出

基本输入到寄存器

寄存器到寄存器

寄存器到基本输出


Setup hold
时序: |mux_control&mux_in2|mux_in1&mux_in2;setup/hold

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

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

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

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


逻辑基本术语 |mux_control&mux_in2|mux_in1&mux_in2;

  • 库(Library)

  • 设计(Design)

  • 单元(Cell or Instance)

  • 参考(Reference)

  • 端口(Port)

  • 管脚(Pin)

  • 线网(Net)

  • 时钟(Clock)


逻辑综合基本术语 |mux_control&mux_in2|mux_in1&mux_in2;—库

库:一组逻辑单元的集合。

  • 库包括库申明、库属性、库应用环境和每个单元的功能描述、时间延时、面积、功耗等。

  • 逻辑综合库包含两种格式:

    1.自由文件格式 .lib(任何文本编辑器都可以打开)

    2. synopsys应用程序可使用的格式.db(不可查看)

存放路径

Astro布局布线库

LVS文件

文本文件,datasheet, handbook

可测性矢量压缩文件

标准单元版图

Cadence布局布线库

物理参数库

符号库

逻辑综合库

标准单元verilog模型

标准单元清单

库说明文件


逻辑综合基本术语 |mux_control&mux_in2|mux_in1&mux_in2;

design

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

input A,B,C,D,CLK;

output OUT1;

….

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

….

endmodule

port

reference

cell

pin


逻辑综合工具介绍 |mux_control&mux_in2|mux_in1&mux_in2;

  • Synopsys公司:Design Compiler(DC)和Synplify

  • Cadence公司:Encounter RTL Compiler 和 BuildGates

  • Magma公司:Talus RTL

  • Mentor公司: Precision RTL

  • 以上综合工具都具有图形界面和命令窗口


DC |mux_control&mux_in2|mux_in1&mux_in2;启动(非常重要!!! )

工作站启动方法:

1.打开Terminal,创建syn目录(输入: mkdir syn)

2.进入到软件启动目录syn(输入 :cd syn )

3. 拷贝软件启动文件

(输入:cp /tmp/.synopsys_dc.setup .)

4.启动软件

source /opt/demo/synopsys.env

design_vision &


DC |mux_control&mux_in2|mux_in1&mux_in2;界面

输入命令的地方


逻辑综合流程 |mux_control&mux_in2|mux_in1&mux_in2;

1.HDL准备

2.准备工艺库

3.读入HDL代码

4.添加约束

5.综合

6.查看报告

7.文件导出


1 hdl
1. |mux_control&mux_in2|mux_in1&mux_in2;HDL准备

  • 软件仿真过没有问题的设计文件

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


2 1 3
2. );准备工艺库1/3

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

准备软件启动文件.synopsys_dc.setup

.synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综合的参数。

在启动软件的时候,DC按下列顺序读入启动文件的。

1) Synopsys安装目录下的启动文件:

$synopsys/admin/setup

2) 用户根目录下的启动文件;

3) 项目工作目录下的启动文件;


2 2 3
2. );准备工艺库2/3

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

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

符号库(symbol_library):元件的图形符号。

一定要按照42页的操作,拷贝.synopsys_dc.setup文件到syn目录,

再在syn目录中启动DC软件。


2. );准备工艺库3/3

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


3 1 3
3. );读入设计文件1/3

DC提供了下面两种方式读入设计:

1.read命令

2.analyze&elaborate命令(先分析语法等,再构成具体逻辑)


3 2 3
3. );读入设计文件2/3

read

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


3 3 3
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]


4. );添加约束

工作温度条件


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


4. );设置负载

打开电路图,选中要设置负载的输出管脚。

set_load 5 [all_outputs]


4. );创建时钟


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]


5. );综合

compile


综合前后电路结构比较 );

综合前

综合后


6. );时序报告

report_timing -delay max

report_timing -delay min


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 (在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


三、 );时序仿真


时序仿真概念 );

时序仿真方法


时序仿真概念 );

时序仿真:带有延迟信息的仿真,主要是看时序和功能是否同时满足。

不同于静态时序分析。

逻辑综合和布局布线完都需要做时序仿真。

布局布线完的时序仿真有时候也叫后仿真,不同于模拟电路后仿真。


时序仿真方法 );

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.编译及仿真


Sdf testbench
sdf );文件添加到Testbench

在testbench中添加如下代码:

initial

begin

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

end

Testbench DUT实例化的名称

模块名称


Testbench
最终 );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的顶层模块,

不是设计模块

实例化的名称


SDF );文件添加成功


仿真结果 );

功能仿真:

data_in_pad为待调制数据

fsk_out_pad为产生的FSK信号


仿真结果 );

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

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


作业验收 );

逻辑综合后的时序报告(类似60页的结果)

Max delay and min delay 两个slack

时序仿真的波形(类似69和70页的结果)