培训文档内容(精)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//编译源文件cpos77mv.v源自文库
文件按出现的顺序被编译 文件的顺序或者编辑的顺序不重要 缺省编译到work库
18
编译源代码—Error Messages
主窗口错误显示
双击主窗口错误消息 会自动弹出源代码窗 口并定位在错误代码 处
4、启动仿真器—加载顶模块
选择顶级module 或 entity/architecture
单元
建立库—察看库内容
作用:显示指定库的内容 操作:
菜单操作: Design -> Library Browser 命令行操作: vdir -lib <library_name>
Use view button to view a library
12
3、编译源代码—模块激励的产生(1)
文件格式:激励文件基于Verilog的格式 文件组成:
//在仿真起始经过`clkth时间后,时钟每隔`clkth翻转一次
模块输入激励的产生: 产生模块输入(同源代码中变量的产生方法一致) 模块的调用: 同源文件中的模块引用一致
如下例所示: dcc_pos_gen dcc_pos_gen_1(.dcc_pos(dcc_pos),.fp(fp),.clk(clk),.rst_b(rst_b)); //按照名称对应的方式调用模块dcc_pos_gen ,实例名为
Restart – 重装任何已改动 的设计元素并把仿真时间设 为零
28
执行仿真—仿真结果(前仿真)
29
执行仿真—仿真结果(后仿真)
30
执行仿真—命令行方式
run 1000
//从当前位置运行仿真 1000 时间单位
run 2500 ns
//从当前位置运行仿真2500 ns
run @3000
//在仿真起始时刻将fp赋0 //在仿真起始时刻将clk赋0 //在仿真起始时刻将rst_b赋0 //在仿真起始后(100*`clkth)将rst_b赋
13
编译源代码—模块激励的产生(2)
时钟的产生 :产生激励时钟
如:
always #`clkth forever # `clkth clk=~clk;
编写的源文件 、激励文件
Altera (后仿真)
产生的网表 文件、激励 文件
Xilinx (前仿真)
编写的源文 件、激励文 件
Xilinx (后仿真)
产生网表文 件,激励文件 ,glbl.v
加载编译有 altera_mf.v和 220model.v 的库名
多器件相关 的库
前仿真的库
后仿真的库
加载的延 时文件 (见21p)
从主菜单里面: Design -> Create a New Library
6
建立库—建库命令行操作
从main窗口提示行后敲入命令:
ModelSim> vlib <库名>
如: vlib work vlib work2
//建立库名为work的库 //建立库名为work2的库
7
建立库—库的编译
库文件存放的库名 库文件存放的路径
无
*.sdo
无
*.sdf
36
7、Do文件介绍—DO 文件
自动完成仿真步骤的宏文件
库设置 编译 仿真 强制仿真激励
Do文件示例
cd c:\mydir vlib work vlog counter.v vsim counter view * add wave /* add list /* do run.do
force clk 0 0, 1 20 -repeat 50 -cancel 1000
35
//在当前仿真后0时间单位强制clk到0和在20时间单位强制到1. 每50 时间单位重复直到1000. 因此, 下一个 1 将在70时间单位发生
6、执行仿真—前仿真和后仿真的区别
Altera (前仿真) 引入文件 (见14p) 加载的库 (见20p)
例: force fp 1 @4000ps , 0 @8000ps
//信号fp 在4000ps处置1,在8000ps处置0
参数:
item_name 强迫对象 必需的 可以使用通配符
33
执行仿真—force 命令(2)
其他参数 value
Value 1111 2#1111 10#15 16#F
选择仿真器的分辨率
从主菜单里面: Design -> Load Design
20
启动仿真器—加载库文件
前仿真加载的库:
Xilinx:如果模块中用了core产生的代 码,需 要加入相应的库。如加载编译 有ram块,fifo、bufg等文件的库名 Altera:加载编译有altera_mf.v和 220model.v 的库名
//运行仿真到 3000时间单位
31
执行仿真—force命令
force命令的使用对象:
简单的模块仿真
force命令的输入方式:
直接从命令控制台输 .DO 文件 (宏文件)
32
执行仿真—force 命令(1)
常规语法:
force <item_name> <value> <time>, <value> <time>
后仿真加载的库:
Xilinx:需要添加后仿真的库(参考库的 编译) Altera:库前仿真加载的库外,还需加 跟器件相关的库,如:apexII_atoms.v 编译产生的库
21
启动仿真器—加载延时文件(后仿真专用)
指定 SDF文件
使用定时值的等级的 类型 (如果不是顶级)
Xilinx:延时文件*.sdf,由布局布线工具自动产生 Altera:延时文件*.sdo,由布局布线工具自动产生
Description character sequence binary radix decimal radix hexadecimal radix
被强制的项的值 必须适合项的数据类型 必需的
time
指定值的时间单位 相对于当前的仿真时间
用 @ 符号指定绝对时间
时间单位能被指定
缺省值是仿真分辨率
精度时间确定
`timescale 1ns/1ps //定义时间精度为1ps,时间单位为1ns
激励文件变量的定义
定义变量的类型、数据宽度
激励文件变量的初始化
对变量复初值 如: initial begin fp=0; clk=0; rst_b=0; #(100*`clkth) rst_b=1; end
1
Project Name 项目名称
Project Location 项目存放路径 Default Library Name 缺省库名(一般情况为work, 系统会在项目存放路径自建work子目录)
4
2、建立库—ModelSim 库
需编译的引入文件
激励文件 源文件 源文件调用的子模块
可选的
34
执行仿真—force 命令举例
force clr 0
//在当前仿真时间强制 clr 到 0,维持此状态
force clr 1 100 ns
//在当前仿真时间后100ns强制 clr到 1,维持此状态
force bus2 16#4F @200
//仿真启动后强制 bus2到 4F直到200时间单位 ,分辨率在仿真启动 时选择
15
编译源代码—源代码的编译
在Project窗口中,点击右键,选中Compile All即可对Project中所有 文件进行编译,如下所示:
16
编译源代码— Project窗口的调出
View -> Show Workspace即可在主窗口的左侧出现
17
编译源代码—命令行编译源代码
语法
vlog -work <library_name> <file1>.v <file2>.v 例如: vlog cpos77mv.v
MODELSIM培训
1
培训文档内容
1、建立项目 2、建立库 3、编译源代码 4、启动仿真器 5、执行仿真 6、前、后仿真区别 7、do文件的介绍 8、界面介绍 9、设计调试 10、其他相关内容
2
建立项目
建立库
编译源代码
执行仿真过程需要的步骤
启动仿真器
执行仿真
3
1、建立项目
打开MODELSIM 选择File/New/Project, 出现右图所示的界面。
24
执行仿真—调出信号和波形窗口和源程序窗口 主窗口
波形窗口
信号窗口
命令行方式:
View -> Signals; View -> Waves;
25 View -> Source
执行仿真—在波形窗口中加信号
加入signals窗口选中信号到wave窗口
加入signals窗口的信号到wave窗口
加入设计中所有信号到wave窗口
能在所有的ModelSim 模式里被调用
菜单操作 Macro -> Execute 命令行操作 do <filename>.do
能调用其他的DO文件
37
Do文件介绍—DO 文件举例
my_sim.do cd c:\mydir vlib work vlog counter.v vsim counter view * do stimulus.do stimulus.do
add wave /clk add wave /clr add wave /load add wave -hex /data add wave /q force /clk 0 0, 1 50 -repeat 100 force /clr 0 0, 1 100 run 500 force /load 1 0, 0 100 force /data 16#A5 0 force /clk 0 0, 1 50 -repeat 100 run 1000
库的两种类型
本次新建需编译的库(缺省值 work) 包含当前被编译的设计单元 编译前必须建立一个work库 每个项目只允许一个work库 引用已有的库 包含能被当前编译引用的设计单元 在编译期间允许多个
5
建立库—建库菜单操作
选择 a new library and a logical mapping to it 和输入库名
dcc_pos_gen_1
仿真结束的时间限制: 确定仿真时间长度
如: initial #(`clkth*2*810*8) $finish;
//仿真时间长`clkth*2*810*8ns
14
编译源代码—加载源代码
通过菜单操作方式
源代码的路径 和类型
需加载文件
前仿真:激励文件、模块文件、模块引用的字模块文件 后仿真( Xilinx器件) 激励文件、time_sim.v、glbl.v(该文件在布局布布 线工具安 装目录下。 后仿真( Altera器件) 激励文件、*.vo(布局布线产生的网表文件)
22
启动仿真器—精度选择
命令行方式
-t <time_unit> 指定仿真的时间分辨率 单位可以是{fs, ps, ns, ms, sec, min, hr} 如果用了 Verilog的 ‘timescale 指令, 将使用整个设计中的最 小的时间精度 可选项(缺省是 ns)
菜单方式
23
5、执行仿真—MODELSIM的界面
使用这条命令映射到已经编译的 库
Browse to library directory
vmap my_lib g:/software/model55crk/modelsim55f/simprim //映射my_lib到已经编译的库g:/software/model55crk/modelsim55f/simprim
Xilinx:布局布线工具安装目录 \verilog\src\ 其中: simprims(后仿真库) uni9000,unisims,XilinxCorelib (前仿真库)
Altera:布局布线工具安装目录 \eda\sim_lib
8
建立库—映射逻辑新库
菜单操作(从主菜单里面 )
Design -> Create a New Library->a map to an existing library
在signals窗口中: View -> Wave ;
26
执行仿真—运行
菜单方式:
Run -> Run-all
命令行方式: run <time_step> <time_units> 例: run 100ns //从当前开始时刻运行100ns
27
执行仿真—菜单方式
选择 timesteps数量就 可以执行仿真
命令行操作(从主窗口提示行后敲入)
语法: vmap <logical_name> <directory_path>
vmap my_work c:\my_design\my_lib //将my_work库的内容映射到my_lib
9
建立库—映射现有的库
Select a map to an existing library and type library name
10
建立库—删除库命令
Use delete button to delete a library
作用:从指定的库中删除一个完整的库或者一个设计单元 操作: 菜单操作: Design -> Library Browser //删除库完整的库 命令行操作: vdel -lib <library_name> <design_unit> //删除库中
文件按出现的顺序被编译 文件的顺序或者编辑的顺序不重要 缺省编译到work库
18
编译源代码—Error Messages
主窗口错误显示
双击主窗口错误消息 会自动弹出源代码窗 口并定位在错误代码 处
4、启动仿真器—加载顶模块
选择顶级module 或 entity/architecture
单元
建立库—察看库内容
作用:显示指定库的内容 操作:
菜单操作: Design -> Library Browser 命令行操作: vdir -lib <library_name>
Use view button to view a library
12
3、编译源代码—模块激励的产生(1)
文件格式:激励文件基于Verilog的格式 文件组成:
//在仿真起始经过`clkth时间后,时钟每隔`clkth翻转一次
模块输入激励的产生: 产生模块输入(同源代码中变量的产生方法一致) 模块的调用: 同源文件中的模块引用一致
如下例所示: dcc_pos_gen dcc_pos_gen_1(.dcc_pos(dcc_pos),.fp(fp),.clk(clk),.rst_b(rst_b)); //按照名称对应的方式调用模块dcc_pos_gen ,实例名为
Restart – 重装任何已改动 的设计元素并把仿真时间设 为零
28
执行仿真—仿真结果(前仿真)
29
执行仿真—仿真结果(后仿真)
30
执行仿真—命令行方式
run 1000
//从当前位置运行仿真 1000 时间单位
run 2500 ns
//从当前位置运行仿真2500 ns
run @3000
//在仿真起始时刻将fp赋0 //在仿真起始时刻将clk赋0 //在仿真起始时刻将rst_b赋0 //在仿真起始后(100*`clkth)将rst_b赋
13
编译源代码—模块激励的产生(2)
时钟的产生 :产生激励时钟
如:
always #`clkth forever # `clkth clk=~clk;
编写的源文件 、激励文件
Altera (后仿真)
产生的网表 文件、激励 文件
Xilinx (前仿真)
编写的源文 件、激励文 件
Xilinx (后仿真)
产生网表文 件,激励文件 ,glbl.v
加载编译有 altera_mf.v和 220model.v 的库名
多器件相关 的库
前仿真的库
后仿真的库
加载的延 时文件 (见21p)
从主菜单里面: Design -> Create a New Library
6
建立库—建库命令行操作
从main窗口提示行后敲入命令:
ModelSim> vlib <库名>
如: vlib work vlib work2
//建立库名为work的库 //建立库名为work2的库
7
建立库—库的编译
库文件存放的库名 库文件存放的路径
无
*.sdo
无
*.sdf
36
7、Do文件介绍—DO 文件
自动完成仿真步骤的宏文件
库设置 编译 仿真 强制仿真激励
Do文件示例
cd c:\mydir vlib work vlog counter.v vsim counter view * add wave /* add list /* do run.do
force clk 0 0, 1 20 -repeat 50 -cancel 1000
35
//在当前仿真后0时间单位强制clk到0和在20时间单位强制到1. 每50 时间单位重复直到1000. 因此, 下一个 1 将在70时间单位发生
6、执行仿真—前仿真和后仿真的区别
Altera (前仿真) 引入文件 (见14p) 加载的库 (见20p)
例: force fp 1 @4000ps , 0 @8000ps
//信号fp 在4000ps处置1,在8000ps处置0
参数:
item_name 强迫对象 必需的 可以使用通配符
33
执行仿真—force 命令(2)
其他参数 value
Value 1111 2#1111 10#15 16#F
选择仿真器的分辨率
从主菜单里面: Design -> Load Design
20
启动仿真器—加载库文件
前仿真加载的库:
Xilinx:如果模块中用了core产生的代 码,需 要加入相应的库。如加载编译 有ram块,fifo、bufg等文件的库名 Altera:加载编译有altera_mf.v和 220model.v 的库名
//运行仿真到 3000时间单位
31
执行仿真—force命令
force命令的使用对象:
简单的模块仿真
force命令的输入方式:
直接从命令控制台输 .DO 文件 (宏文件)
32
执行仿真—force 命令(1)
常规语法:
force <item_name> <value> <time>, <value> <time>
后仿真加载的库:
Xilinx:需要添加后仿真的库(参考库的 编译) Altera:库前仿真加载的库外,还需加 跟器件相关的库,如:apexII_atoms.v 编译产生的库
21
启动仿真器—加载延时文件(后仿真专用)
指定 SDF文件
使用定时值的等级的 类型 (如果不是顶级)
Xilinx:延时文件*.sdf,由布局布线工具自动产生 Altera:延时文件*.sdo,由布局布线工具自动产生
Description character sequence binary radix decimal radix hexadecimal radix
被强制的项的值 必须适合项的数据类型 必需的
time
指定值的时间单位 相对于当前的仿真时间
用 @ 符号指定绝对时间
时间单位能被指定
缺省值是仿真分辨率
精度时间确定
`timescale 1ns/1ps //定义时间精度为1ps,时间单位为1ns
激励文件变量的定义
定义变量的类型、数据宽度
激励文件变量的初始化
对变量复初值 如: initial begin fp=0; clk=0; rst_b=0; #(100*`clkth) rst_b=1; end
1
Project Name 项目名称
Project Location 项目存放路径 Default Library Name 缺省库名(一般情况为work, 系统会在项目存放路径自建work子目录)
4
2、建立库—ModelSim 库
需编译的引入文件
激励文件 源文件 源文件调用的子模块
可选的
34
执行仿真—force 命令举例
force clr 0
//在当前仿真时间强制 clr 到 0,维持此状态
force clr 1 100 ns
//在当前仿真时间后100ns强制 clr到 1,维持此状态
force bus2 16#4F @200
//仿真启动后强制 bus2到 4F直到200时间单位 ,分辨率在仿真启动 时选择
15
编译源代码—源代码的编译
在Project窗口中,点击右键,选中Compile All即可对Project中所有 文件进行编译,如下所示:
16
编译源代码— Project窗口的调出
View -> Show Workspace即可在主窗口的左侧出现
17
编译源代码—命令行编译源代码
语法
vlog -work <library_name> <file1>.v <file2>.v 例如: vlog cpos77mv.v
MODELSIM培训
1
培训文档内容
1、建立项目 2、建立库 3、编译源代码 4、启动仿真器 5、执行仿真 6、前、后仿真区别 7、do文件的介绍 8、界面介绍 9、设计调试 10、其他相关内容
2
建立项目
建立库
编译源代码
执行仿真过程需要的步骤
启动仿真器
执行仿真
3
1、建立项目
打开MODELSIM 选择File/New/Project, 出现右图所示的界面。
24
执行仿真—调出信号和波形窗口和源程序窗口 主窗口
波形窗口
信号窗口
命令行方式:
View -> Signals; View -> Waves;
25 View -> Source
执行仿真—在波形窗口中加信号
加入signals窗口选中信号到wave窗口
加入signals窗口的信号到wave窗口
加入设计中所有信号到wave窗口
能在所有的ModelSim 模式里被调用
菜单操作 Macro -> Execute 命令行操作 do <filename>.do
能调用其他的DO文件
37
Do文件介绍—DO 文件举例
my_sim.do cd c:\mydir vlib work vlog counter.v vsim counter view * do stimulus.do stimulus.do
add wave /clk add wave /clr add wave /load add wave -hex /data add wave /q force /clk 0 0, 1 50 -repeat 100 force /clr 0 0, 1 100 run 500 force /load 1 0, 0 100 force /data 16#A5 0 force /clk 0 0, 1 50 -repeat 100 run 1000
库的两种类型
本次新建需编译的库(缺省值 work) 包含当前被编译的设计单元 编译前必须建立一个work库 每个项目只允许一个work库 引用已有的库 包含能被当前编译引用的设计单元 在编译期间允许多个
5
建立库—建库菜单操作
选择 a new library and a logical mapping to it 和输入库名
dcc_pos_gen_1
仿真结束的时间限制: 确定仿真时间长度
如: initial #(`clkth*2*810*8) $finish;
//仿真时间长`clkth*2*810*8ns
14
编译源代码—加载源代码
通过菜单操作方式
源代码的路径 和类型
需加载文件
前仿真:激励文件、模块文件、模块引用的字模块文件 后仿真( Xilinx器件) 激励文件、time_sim.v、glbl.v(该文件在布局布布 线工具安 装目录下。 后仿真( Altera器件) 激励文件、*.vo(布局布线产生的网表文件)
22
启动仿真器—精度选择
命令行方式
-t <time_unit> 指定仿真的时间分辨率 单位可以是{fs, ps, ns, ms, sec, min, hr} 如果用了 Verilog的 ‘timescale 指令, 将使用整个设计中的最 小的时间精度 可选项(缺省是 ns)
菜单方式
23
5、执行仿真—MODELSIM的界面
使用这条命令映射到已经编译的 库
Browse to library directory
vmap my_lib g:/software/model55crk/modelsim55f/simprim //映射my_lib到已经编译的库g:/software/model55crk/modelsim55f/simprim
Xilinx:布局布线工具安装目录 \verilog\src\ 其中: simprims(后仿真库) uni9000,unisims,XilinxCorelib (前仿真库)
Altera:布局布线工具安装目录 \eda\sim_lib
8
建立库—映射逻辑新库
菜单操作(从主菜单里面 )
Design -> Create a New Library->a map to an existing library
在signals窗口中: View -> Wave ;
26
执行仿真—运行
菜单方式:
Run -> Run-all
命令行方式: run <time_step> <time_units> 例: run 100ns //从当前开始时刻运行100ns
27
执行仿真—菜单方式
选择 timesteps数量就 可以执行仿真
命令行操作(从主窗口提示行后敲入)
语法: vmap <logical_name> <directory_path>
vmap my_work c:\my_design\my_lib //将my_work库的内容映射到my_lib
9
建立库—映射现有的库
Select a map to an existing library and type library name
10
建立库—删除库命令
Use delete button to delete a library
作用:从指定的库中删除一个完整的库或者一个设计单元 操作: 菜单操作: Design -> Library Browser //删除库完整的库 命令行操作: vdel -lib <library_name> <design_unit> //删除库中