用ModelSim作功能仿真(8) 3  编译源代码(Verilog) 支持增量式编译(只有被改动的设计单元被编译) 缺省编译到work库

Slides:



Advertisements
Similar presentations
陋室銘 劉禹錫 立人國中小丹老師編製 劉禹錫二三事 司空見慣 劉禹錫才氣縱橫,卻恃才傲物,一生落拓時候 多,當他貶為蘇州刺史時,司空李紳請他喝酒, 並請了一個貌美清秀的歌妓獻唱,他大為心動 寫了一首詩:「高髻雲鬢新樣妝,春風一曲杜 韋娘,司空見慣渾閒事,斷盡蘇州刺史腸。」 李紳明白其中寓意,便將歌妓送給他。而「司.
Advertisements

高等动物的 个体发育 作者:游隆信 松阳一中 二零零二年三月 被子植物子房的结构 及双受精过程 胚珠的结构 花粉管 精 子 卵细胞 极 核 子房壁 珠 被 珠 孔.
投資 & 購屋置產 報告 ( 課程 : 個人理財規劃 ) 授課老師 : 許秀鶴 授課老師 : 許秀鶴 報告學生 : 報告學生 : 許文耀 學號 : 許文耀 學號 : 張慧珍 學號 : 張慧珍 學號 : Next 個人簡介.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
一寸光阴一寸金 寸金难买寸光阴 时间.
实验四 利用中规模芯片设计时序电路(二).
房地产企业所得税政策解析及税收规划 (第二节)
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
Greatest Common Divisor ---最大公约数
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
水煮FPGA 传统FPGA设计流程简介.
Hadoop I/O By ShiChaojie.
Chapter 5 Verilog硬體描述語言
版权所有,禁止未经授权的商业使用行为 何宾 Tel: 北京中教仪装备技术有限公司.
AngularJS -- 使用AngularJS进行开发
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第十章 EDA设计的仿真和测试.
EDA 原理及应用 何宾
Visual Studio Team System 简介
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第一讲: 基本流程(1).
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
单元测试工具XUnit 任课老师:黄武 下午2时20分 25.
CPU结构和功能.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
YMSM D-PACK 安装手册 作成者:D-PACK维护组(YMSLx) 作成日:
VSS使用简介 王树升
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
UI 软件 设计 移动UI设计(三).
Gzip编译及调试 曹益华
SOA – Experiment 2: Query Classification Web Service
NoteExpress进阶 宋敏 电子资源部
Visual Studio 2010简捷入门.
安捷伦Agilent 3458A 八位半高精度万用表
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第14章 对验证的支持 学习内容 理解Verilog文本输出 理解不同的读取仿真时间的系统函数 理解 Verilog文件I/O功能.
Three stability circuits analysis with TINA-TI
VisComposer 2019/4/17.
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
DS Series Program Software
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
FIFO 与 UPP 本节我们结合UPP接口给大家介绍一下FIFO在实际工程中的使用。 广州创龙电子科技有限公司 01 51ele.net
Web安全基础教程
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
VRP教程 2011.
Delphi 7.0开发示例.
Python 环境搭建 基于Anaconda和VSCode.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
基于列存储的RDF数据管理 朱敏
印制板制作软件Protel入门篇.
第四章 UNIX文件系统.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
FPGA系统设计与实践 本章小结(第5章).
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

用ModelSim作功能仿真(8) 3  编译源代码(Verilog) 支持增量式编译(只有被改动的设计单元被编译) 缺省编译到work库 UI) Design -> Compile Cmd) vlog -work <library_name> <file1>.v <file2>.v 文件按出现的顺序被编译 文件的顺序或者编辑的顺序不重要 支持增量式编译(只有被改动的设计单元被编译) 缺省编译到work库 例如. vlog my_design.v

用ModelSim作功能仿真(9) 3  编译源代码 点亮一个或多个文件并点击 Compile

用ModelSim作功能仿真(10) 3  编译源代码----错误信息 错误信息在 Main 窗口显示 3  编译源代码----错误信息 错误信息在 Main 窗口显示 在信息上双击,引起错误的代码在 Source 窗口被点亮

用ModelSim作功能仿真(11) 4  启动仿真器 UI) Design -> Load New Design 4  启动仿真器 UI) Design -> Load New Design Cmd) vsim -lib <library_name> <top_level_design> VHDL vsim top_entity top_architecture Verilog vsim top_level1 top_level2 仿真多个top级模块

用ModelSim作功能仿真(11) 4  启动仿真器 选择库 选择顶级module 或 entity/architecture 4  启动仿真器 选择库 选择顶级module 或 entity/architecture 选择仿真器的分辨率

用ModelSim作功能仿真(12) 4  启动仿真器 指定 SDF文件 使用定时值的等级的类型 (如果不是顶级)

用ModelSim作功能仿真(13) 4  启动仿真器----vsim 命令的参数 参数 -t <time_unit> 指定仿真的时间分辨率 单位可以是{fs, ps, ns, ms, sec, min, hr} 如果用了 Verilog的 ‘timescale指令, 将使用整个设计中的最小的时间精度 可选项(缺省是 ns) -sdfmin | -sdftyp | -sdfmax <instance>=<sdf_filename> 注释SDF文件 可选项 使用实例名也是可选项; 如果没有使用, SDF用于顶级

用ModelSim作功能仿真(14) 5  执行仿真 UI) Run 5  执行仿真 UI) Run CMD) run <time_step> <time_units> 按timesteps指定的时间长度执行仿真

用ModelSim作功能仿真(15) 5  执行仿真(UI) 选择 timesteps数量就可以执行仿真 Restart – 重装任何已改动的设计元素并把仿真时间设为零 COM) restart

用ModelSim作功能仿真(16) 5  执行仿真----run 命令参数 可选的参数 - -<timesteps> <time_unit> 指定运行的timesteps数量 单位可用{fs, ps, ns, ms, sec} - -step Steps to the next HDL statement - -continue 继续上次在-step或断点后的仿真 - -all 运行仿真器直到没有其他的事件

用ModelSim作功能仿真(17) 5  执行仿真----run 命令举例 run 1000 - 从当前位置运行仿真 1000 timesteps run 2500 ns - 从当前位置运行仿真2500 ns run @3000 - 运行仿真到 timestep 3000

用ModelSim作功能仿真(18) 5  执行仿真----仿真器激励 测试台 force命令 - Verilog 或 VHDL代码 5  执行仿真----仿真器激励 测试台 - Verilog 或 VHDL代码 - 非常复杂的仿真(交互式仿真、数据量大的仿真) force命令 - 简单的模块仿真 - 直接从命令控制台输入 - .DO 文件 (宏文件)

用ModelSim作功能仿真(19) 5  执行仿真----仿真器激励 force命令 测试台(test bench) - 简单的模块仿真 5  执行仿真----仿真器激励 force命令 - 简单的模块仿真 - 直接从命令控制台输入 - .DO 文件 (宏文件) 测试台(test bench) - Verilog 或 VHDL代码 - 非常复杂的仿真(交互式仿真、数据量大的仿真)

用ModelSim作功能仿真(20) 5  执行仿真----仿真器激励 Force命令 5  执行仿真----仿真器激励 Force命令 允许用户给VHDL的信号和Verilog的线网予以激励 常规语法: - force <item_name> <value> <time>, <value> <time> 参数

用ModelSim作功能仿真(21) 5  执行仿真----仿真器激励 Force命令参数 - item_name 5  执行仿真----仿真器激励 Force命令参数 - item_name --被激励的HDL项的名称,是必选的 --必须是一个标量 --可以是一个被编址的阵列, 阵列的一部分 --可以采用通配符(在只有一个匹配的时候) - value --被激励项的值,是必选的 --必须适合该项的数据类型 - time --指定值的时间单位,可选的 --相对于当前的仿真时间,用 @ character指定绝对时间 --时间单位能被指定,缺省值是仿真分辨率

用ModelSim作功能仿真(22) 5  执行仿真----仿真器激励 Force命令参数 5  执行仿真----仿真器激励 Force命令参数 - -r[epeat] <period> --在指定周期重复force命令,是可选的 - -cancel <period> --在指定周期后取消强制force命令,是可选的

用ModelSim作功能仿真(23) 5  执行仿真----仿真器激励 Force命令举例: force clr 0 5  执行仿真----仿真器激励 Force命令举例: force clr 0 在当前仿真时间强制 clr 到 0 force bus1 01XZ 100 ns 在当前仿真时间后100ns强制 bus1到 01XZ force bus2 16#4F @200 仿真启动后强制 bus2到 4F直到200时间单位 ,分辨率在仿真启动时选择 force clk 0 0, 1 20 -repeat 50 -cancel 1000 在当前仿真后0时间单位强制clk到0和在20时间单位强制到1. 每50时间单位重复直到1000. 因此, 下一个 1 将在70时间单位发生 force clk2 1 10 ns, 0 {20 ns} -r 100 ns 和上一个例子相似。-r前面的时间单位表达式必须放在大括号里

用ModelSim作功能仿真(24) 5  执行仿真----仿真器激励 .do文件 自动完成仿真步骤的宏文件 5  执行仿真----仿真器激励 .do文件 自动完成仿真步骤的宏文件 库设置 编译 仿真 强制仿真激励 能在所有的ModelSim 模式里被调用 UI) Macro -> Execute COM) do <filename>.do 能调用其他的DO文件

用ModelSim作功能仿真(25) 5  执行仿真----仿真器激励 .do文件举例 add wave /clk 5  执行仿真----仿真器激励 .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 run 1000 cd c:\mydir vlib work vcom counter.vhd vsim counter view * add wave /* add list /* do run.do my_sim.do cd c:\mydir vlib work vcom counter.vhd vsim counter view * do stimulus.do

用ModelSim作功能仿真(26) 5  执行仿真----仿真器激励 测试台文件(test bench) 针对复杂的仿真 5  执行仿真----仿真器激励 测试台文件(test bench) 针对复杂的仿真 VHDL文件或者Verilog 在测试台文件中将设计模块实例化 --将测试台文件置于TOP层,调用设计模块 --在测试台文件中加载时钟激励信号,以及给部分信号赋初值 测试台文件的写法与设计模块写法有区别 -- 一些符合语法但又无法被综合的语句(根据具体的综合工具而定),可以在测试台文件中使用

用ModelSim作功能仿真(27) 设置断点: 支持两种类型的断点 1、在源代码窗口设置断点 Toggles – 再次点击删除断点 没有断点数量的限制 用 bp 命令:bp <file_name> <line#> 2、条件断点 when <condition> <action> when {b=1 and c/=0} 与VHDL信号和Verilog 线网和寄存器一起使用 也可用 bp 命令: bp <file_name> <line#> {if{$now/=100}then{cont}}

用ModelSim作时序仿真 时序仿真的含义 时序仿真的实现方法 其他问题

用ModelSim作时序仿真(1) 时序仿真的含义: 布局布线后进行的后仿真 包含有延时信息 仿真结果可能与功能仿真不相同 除功能仿真时需要的文件以外,还需要网表文件(如time_sim.vhd或time_sim.v)和包含延时信息的文件(time_sim.sdf文件)

用ModelSim作时序仿真(2) 时序仿真的实现方法: 编译Xilinx公司的库文件: 先将modelsim.ini文件的只读属性去掉 将Xilinx公司元件库的脚本文件COPY到modelsim的安装目录下 在main窗口运行: MODELSIM> source <path_to_script>/xilinx_lib.tcl 这里的路径一定要用/来表示,比如e:/tools/xilinx 看到弹出对话框后,选择相应的选项,进行库的编译

用ModelSim作时序仿真(3) 时序仿真的实现方法: unisim库是用来对ISE中画的电路图进行前仿真时用的。 simprim则是在作布线后的时序仿真时用。

用ModelSim作时序仿真(4) 时序仿真的实现方法: 以Foundation为例: Foundation所产生的netlist不包含time delay的数据,有一个time_sim.SDF文件来存储TIMING数据。(有的厂商的布局布线所产生的NETLIST文件已经包含有time delay的数据). Foundation所产生的NETLIST文件默认的文件名是time_sim.vhd(或time_sim.v) time_sim.vhd或time_sim.v文件用到新的simprim库,因此必须在仿真前先建立。 做时序仿真,要编译time_sim.vhd或time_sim.v,以及time_sim.SDF 加载测试文件

用ModelSim作时序仿真(5) 时序仿真的容易遇到的问题: GSR信号产生的影响(可以通过改变输入信号时延来解决) 以Xilinx公司的为例: GSR信号产生的影响(可以通过改变输入信号时延来解决) D触发器的setup time不足(可以通过分析SDF文件来追究错误所在)

关于modelsim.ini文件 ModelSim使用 ASCII文件, 由用户控制 在ModelSim的安装目录一个缺省文件被提供 存有初始信息 库定位 启动文件的定位 ModelSim其他缺省设定 [Library]:逻辑上的LIBRARY与实际硬盘驱动目录的连接 [vcom]:COMPILE时的一些选项的默认值,0=OFF,1=ON [vsim]:仿真时参数的设定 modelsim.ini缺省为只读属性,故编译库文件时应该将只读属性去掉。

总结 前面讲述了ModelSim的基本使用方法。大家可通过例子来练习使用ModelSim 还有一些较深入的问题,例如: 用VITAL仿真模型支持VHDL 布局布线后仿真;用Tcl 去定制ModelSim图形用户界面;用Tcl 去自动生成测试矢量;用性能分析去减少仿真时间;用测试矢量分析HDL 代码覆盖率;Modelsim5.6以及5.7的新特性;源代码编写中的语言模板和助手;数据流窗口中的信号探察……等等,还有待于进一步的探讨。

谢谢大家!