对仿真glbl.v文件的理解
Simulation, UniSim, SimPrim - How do I use the "glbl.v" module in a Verilog simulation?
Description
How do I use the "glbl.v" module in a Verilog simulation?
Solution
The "glbl.v" module connects the Global Set/Reset and Global Tristate signals to the design. In order to properly reset the design in a Verilog simulation, the "glbl.v" module must be compiled and loaded along with the design. The "glbl.v" module is located at "$XILINX/verilog/src/glbl.v".
Using 6.1i design tools and later
In the 6.1i design tools, the "glbl.v" module was modified to automatically pulse GSR (FPGA Global Set/Reset) and PRLD (CPLD Global Set/Reset) for the first 100 ns of simulation. Code was also added to automatically pulse Global Tristate (GTS), but the default pulse is 0 ns.
For exact commands on how to compile and load the "glbl.v" in ModelSim, see the following solutions:
(Xilinx Answer 1078) - Behavioral Simulation
(Xilinx Answer 10177) - Post-PAR Timing Simulation
For additional information, reference the Synthesis and Simulation Design Guide:
http://toolbox.xilinx.com/docsan/xilinx6/books/docs/sim/sim.pdf
In Chapter 6, Verifying Your Design, there is a section on "Understanding the Global Reset and Tristate for Simulation."
Using 5.1i/5.2i design tools and earlier versions
Prior to the 6.1i release, the "glbl.v" module did not automatically pulse the GSR or PRLD signal. It is therefore necessary to drive GSR or PRLD and/or GTS from the testbench. This is the code that needs to be added to the testbench:
reg GSR;
assign glbl.GSR = GSR;
reg GTS;
assign glbl.GTS = GTS;
initial begin
GSR = 1;
#100 GSR = 0;
end
NOTE 1: For CPLD designs, replace GSR with PRLD in above the code.
NOTE 2: GTS can also be driven, but it is generally not necessary unless you are doing a board-level simulation.
For exact commands on how to compile and load the "glbl.v" in ModelSim, see the following solutions:
(Xilinx Answer 1078) - Behavioral Simulation
(Xilinx Answer 10177) - Post-PAR Timing Simulation
For additional information, reference the Synthesis and Simulation Design Guide:
http://toolbox.xilinx.com/docsan/xilinx6/books/docs/sim/sim.pdf
In Chapter 6, Verifying Your Design, there is a section on "Understanding the Global Reset and Tristate for Simulation."
Xilinx FPGAs have register (flip-flops and latches) set/reset circuitry that pulses at the end of the configuration mode. This pulse is automatic and does not need to be programmed. All the flip-flops and latches receive this pulse through a dedicated global GSR (Global Set-Reset) net. The registers either set or reset, depending on how the registers are defined.
For some device families, it is important to address the built-in reset circuitry behavior in your designs starting with the first simulation to ensure that the simulations agree at the three primary points.
For the Virtex and Spartan-II device families, Xilinx recommends using the manual reset instead of the dedicated GSR circuitry. This is because the implementation tools use the high-speed backbone routing for Reset signals, thus making them faster than the dedicated global routing which transports the GSR signal. However, for the XC4000 and Spartan device families, GSR is the better method of propagating the global reset signal.
For the XC4000 and Spartan device families, if you do not simulate GSR behavior prior to synthesis and place and route, your RTL and possibly post-synthesis simulations might not initialize to the same state as your post-route timing simulation. As a result, the various design descriptions will not be functionally equivalent and your simulation results will not match. Some synthesis tools can identify, from the behavioral description, the GSR net, and will place the STARTUP module on the net to direct the implementation tools to use the global network. However, other synthesis tools interpret behavioral descriptions literally, and will introduce additional logic into your design to implement a function. Without specific instructions to use device global networks, the Xilinx implementation tools will use general purpose logic and interconnect resources to redundantly build functions already provided by the silicon.
If GSR behavior is not described, the chip will initialize during configuration, and the post-route netlist will include this net that must be driven during simulation. This section includes the methodology to describe this behavior, as well as the GTS behavior for output buffers.
In addition to the set/reset pulse, all output buffers are set to a high impedance state during configuration mode with the dedicated global output tristate enable (GTS) net.
The GSR net requires special handling during synthesis, simulation, and implementation to prevent them from being assigned to normally routed nets, which uses valuable routing resources and degrades design performance. The GSR net receives a reset-on-configuration pulse from the initialization controller, as shown in the following figure.

Figure 6-2 Built-in FPGA Initialization Circuitry
This pulse occurs during the configuration mode of the FPGA. However, for ease of simulation, it is usually inserted at time zero of the test bench, before logical simulation is initiated. The pulse width is device-dependent and can vary widely, depending on process voltage and temperature changes. The pulse is guaranteed to be long enough to overcome all net delays on the reset special-purpose net. The parameter for the pulse width is TPOR, as described in The Programmable Logic Data Book.
The tristate-on-configuration circuit shown in the "Built-in FPGA Initialization Circuitry" also occurs during the configuration mode of the FPGA. Just as for the reset-on-configuration simulation, it is usually inserted at time zero of the test bench before logical simulation is initiated. The pulse drives all outputs to the tristate condition they are in during the configuration of the FPGA. All general-purpose outputs are affected whether they are regular, tristate, or bi-directional outputs during normal operation. This ensures that the outputs do not erroneously drive other devices as the FPGA is being configured. The pulse width is device-dependent and can vary widely with process and temperature changes. The pulse is guaranteed to be long enough to overcome all net delays on the GTS net. The generating circuitry is separate from the reset-on-configuration circuit. The pulse width parameter is TPOR, as described in The Programmable Logic Data Book. Simulation models use this pulse width parameter for determining HDL simulation for global reset and tristate circuitry.
If a global set/reset is desired for behavioral simulation, it must be included in the behavioral code. Any described register in the code must have a common signal that will asynchronously set or reset the register depending on the desired result. Similarly, if a global tristate-state is desired for simulation, it should be described in the code as well.
参考
https://wenku.baidu.com/view/fb602c53ad02de80d4d8402b.html
对仿真glbl.v文件的理解的更多相关文章
- QuestaSim自动化仿真之do文件
一.编写基本的do文件 下面按照实际仿真的步骤来说明do文件中需要用到的各个tcl命令. 1.quit -sim ---- 退出原来的仿真工程: 2.cd ---- 设置工作目录的路径,就是仿真工程路 ...
- modelsim仿真中 do文件的写法技巧
网上的关于DO文件的编写好像资料不多,比较杂,所以本人总结一下常用的简单语法,方便大家查看.其实本人也刚接触DO文件没多久,有纰漏很正常,欢迎指正批评,互相学习.PS:写得有点乱 还有一个值得注意 ...
- VCS仿真生成fsdb文件(Verilog)
VCS仿真生成fsdb文件(Verilog) 一.环境 Linux 平台 csh环境 VCS 64bit Verdi3 二.开始仿真 1. 联合仿真环境配置 a.在testbench中加入如下语句: ...
- VCS仿真生成vpd文件(verilog)
VCS仿真生成vpd文件(verilog) 一.环境与文件 Linux平台 csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.com ...
- 在头文件中声明class 类 与 include类所在的头文件区别---理解
在头文件中声明class 类 与 include类所在的头文件的理解: 在头文件中,声明类 它告诉编译器:存在这样的类.而实际的类则可以位于同一个编译单元中,也可以放在其他编译单元中.没有这个类原型, ...
- 如何对多个文件进行MODELSIM仿真? (由于是一个很大的项目,不可能把所有MODULE都放在一个文件里。 如何在ModelSim中对多个.V文件进行仿真?)
可以将所有要编译的所有文件的名字做一个list.新建一个文本文档,重命名为vflist vflist内容例子如下(src为文件夹):src/base_addr_chk.vsrc/config_mux. ...
- Modelsim自动化仿真之do文件书写
创建本地库 vlib ./work You must use vlib rather than operating system commands to creat a library directo ...
- C 头文件阅读理解
__BEGIN_DECLS ..... ..... __END_DECLS 很多时候,为了使 C 代码和 C++ 代码保持互相兼容的过程调用接口,需要在 C++ 代码里加上 extern " ...
- stm32f10x.h文件分析理解
今天再看过半年前自己写的这篇发现自己当时理解有误,stm32f10x.h与库开发并未存在太大关系,只是一个最为重要的寄存器地址到寄存器结构体变量的映射. stm32f10x.h 这个头文件是STM32 ...
随机推荐
- TCHART FROM DATATABLE
using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System. ...
- Web3.js 0.20.x API 中文版翻译
文档原始链接为:https://web3.learnblockchain.cn/0.2x.x/,欢迎大家前往查阅,本文只是节选开头部分的介绍及API列表索引,以下为翻译正文: 为了开发一个基于以太坊的 ...
- apply、call
call(),apply() 1.每个函数都包含两个非继承而来的方法:call()和apply() 2.在特定的作用域内调用函数,等于设置函数体内的this对象,以扩充函数赖以运行的作用域 3.app ...
- android-------- 强引用、软引用、弱引用、虚引用使用
在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引 ...
- Vmware安装Kali
下载软件 破解版的Vmware14 kali(我的是kali-linux-2018.2-amd64) 配置虚拟机 新建虚拟机,选择自定义 虚拟机硬件兼容性 选择虚拟机硬件兼容性为Workstation ...
- 架构探险笔记5-使框架具备AOP特性(下)
开发AOP框架 借鉴SpringAOP的风格,写一个基于切面注解的AOP框架.在进行下面的步骤之前,确保已经掌了动态代理技术. 定义切面注解 /** * 切面注解 */ @Target(Element ...
- apiCloud 调微信支付,调支付宝支付
data里面的参数信息,需要从后台接口中调取,点击查看微信支付详情,https://docs.apicloud.com/Client-API/Open-SDK/wxPay 首先,需要在config.x ...
- 『OpenCV3』Mat简介
Mat属性方法介绍:OpenCV2:Mat属性type,depth,step 推荐一套OpenCV入门博客:OpenCV探索 一.Mat Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来 ...
- HDU - 4436sam裸题
题意:给你多个数字串,求本质不同的子串和(去掉前导零) 题解:建广义sam,刚开始一直想的是用l来计算,发现前导零对l的影响根本消不掉,所以不会做= =,原来应该是直接用一个新的数组表示到当前有多少个 ...
- ACM-选人问题(救济金发放)
n(n<20)个人站成一圈,逆时针编号为1-n.有两个官员,A从1开始逆时针数,B从n开 始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个 官员停在同一个人上) ...