systemverilog的timescale作用域

2023-11-13

参考文献1:https://www.chipverify.com/verilog/verilog-timescale-scope

在数字电路仿真过程中,如果没有模块本身没有指定timescale,则编译器本身可能插入一个默认的timescale,仿真代码如下:
在这里插入图片描述
仿真结果:
在这里插入图片描述
以下我们尝试以不同的方式测试不同模块的timescale设置对仿真延时的影响。

仿真代码:

`timescale 1ns/1ns
module harness;
    logic b1, c1, d1;
    m1 m1 (.a1(b1), .a2(c1));
    p2 p2 (.*);
    p3 p3 (.*);

	initial begin
		$fsdbDumpfile("wave.fsdb");
		$fsdbDumpvars;
	end

	initial begin
        #100 d1 = 1;
	end

endmodule

`timescale 1ns/1ns
module m1(input logic a1, a2);
    assign #1.2 a = a1 & a2;
endmodule

`timescale 1ns/10ps
module p2(output logic b1);
    logic b;
    assign #3.345 b = 1;
    initial @(b) b1 <= b;
endmodule

program p3(output logic c1);
    timeunit        1ns;
    timeprecision   1fs;
    logic c;
    assign #2.2 c = 1;
    initial begin
        @(c) c1 <= c;
        #1000ns;
    end
endprogram

脚本设置:

comp:
	@vcs \
	-full64 \
	-kdb -lca \
	-sverilog \
	-debug_access+all \
	-timescale=1ns/1ns \
	+fsdb+region \
	+libext+.sv+.v \
	-l cmp.log \
	*.sv

run:
	@./simv \
 	+fsdb+delta \
 	-l simv.log	

all:
	@make clean && make comp && make run

verdi:
	@verdi -ssf wave.fsdb &

clean:
	@rm -rf simv* csrc ucli* vc_hdrs.h verdi* novas* vdCovLog* *.log *.fsdb 

各个模块的延时

先看d1
在这里插入图片描述
d1在100ns时变为1,即延时100的单位为1ns,为harness模块的timescale为1ns/1ns

再看m1
在这里插入图片描述
a的延时为1ns,这是由于模块m1的timescale为1ns/1ns, 精度也为1ns,因此#1.2会进行舍如为#1。

接着看p2:
在这里插入图片描述
b的真正延时为3.35ns,这是由于其timescale为1ns/10ps,精度为10ps,因此#3.345舍入为#3.35

最后看p3:
在这里插入图片描述
延时时间为2.2ns,其分辨率即#1 step1fs

Note:

  1. 如果注释掉harness的timescale,设置脚本中的timescale为1ns/1ns,则脚本中的timescale将作用于harness模块。
  2. 如果保留harness的timescale,注释掉m1的timescale,则m1的timescale为harness的timescale,而非脚本中的timescale设置
  3. 由以上可知,timescale的判定原则为就近原因。如果查看波形觉得timescale异常,一定是找到了错误的timescale。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

systemverilog的timescale作用域 的相关文章

  • 如何在 Visual Studio Code 中使代码片段仅显示特定文件扩展名?

    我几周来一直试图解决这个问题 但我最终放弃了并决定寻求帮助 我为我的 Web 项目编写了很多片段 HTML PHP JS VUE Laravel Blade 等 并且创建了几个全局 code snippet 文件 它们出现在我在 VSCod
  • R 环境和函数调用堆栈

    我正在尝试使用get在一系列函数调用中 但对象名称的查找似乎跳过了环境 例如 foo lt 1 variable in GlobalEnv getter lt function x get x getter foo returns 1 wh
  • 如何在 Spring 中将对象添加到应用程序范围

    我们可以使用设置请求属性Model or ModelAndViewSpring 中的对象 我们可以用 SessionAttributes将属性保留在会话范围内 那么我怎样才能将属性放入applicationSpring中的作用域 sprin
  • 委托和变量范围

    我有以下代码 public void SetMove Position3D pos float time float linearity bool relative ExecuteOnActiveClients delegate Neuro
  • Javascript:作用域链何时创建?

    我听到过两种说法 当定义函数时 In book Professional Javascript for Web Developers 3rd Edition 在里面Chapter 7 Function Expressions封闭部件 当co
  • 使用正则表达式进行 Verilog 端口映射

    我有一个很长的端口映射 我想在其中替换一堆 SignalName i with SignalName SignalName i 我想我可以用正则表达式轻松地做到这一点 但我无法弄清楚如何做到这一点 有任何想法吗 假设 SignalData
  • JavaScript:将函数本地范围引用为对象

    当我调用一个函数时 会为该调用建立一个本地作用域 有什么方法可以直接将该范围作为对象引用吗 就像window是全局范围对象的引用一样 Example function test foo var bar 1 Now can I access
  • angularjs foreach循环通过依赖于先前请求的http请求

    我想循环遍历一个数组以角度执行 http jsonp 请求 但是每个请求都会略有不同 具体取决于前一个 http jsonp 请求的时间戳 我试图循环 5 个请求 每个请求都依赖于前一个请求信息 如何执行 foreach 循环来等待每个 h
  • 上下文保留评估

    我们正在构建一个小型 REPL 来评估 使用eval 用户输入的 JavaScript 表达式 由于整个事情是事件驱动的 因此评估必须在单独的函数中进行 但必须在调用之间保留上下文 即所有声明的变量和函数 我想出了以下解决方案 functi
  • 为什么 Ruby 解析文件时常量不像局部变量那样被初始化?

    在 Ruby 中 我知道我可以做这样的事情 if false var Hello end puts var 应用程序不会崩溃 并且var只需设置为nil 我读到 这种情况的发生是由于 Ruby 解析器的工作方式造成的 为什么同样的方法不适用
  • 在函数中声明默认参数在幕后有什么作用?

    这不是调试问题或操作方法问题 这是一个概念性问题 我发现很难理解什么this https developer mozilla org en US docs Web JavaScript Reference Functions Default
  • 如何使用事务范围的持久化上下文进行非事务性读取查询?

    我读了 Spring 文档 它说 PersistenceContext 注解有一个可选的属性类型 默认为 PersistenceContextType TRANSACTION 此默认值是您接收共享所需的 实体管理器代理 这是否意味着我必须让
  • 系统 verilog 中没有类型的输入

    我在一个系统 verilog 代码的输入和输出的示例中遇到过module没有说明它们的类型 例如logic wire module mat to stream input 2 0 2 0 2 0 a b input newdata inpu
  • 在 python 中检查堆栈中的局部变量

    我编写了一个小函数 它在堆栈中查找一级并查看其中是否有变量 但是我如何将这个函数变成一个可以在堆栈中一直查找直到找到一个局部变量并购买某个特定名称的函数 import inspect def variable lookup variable
  • 多个指令 [myPopup、myDraggable] 请求新的/隔离的范围

    我编写了一个对话框指令 myPopup 和另一个用于拖动此对话框的指令 myDraggable 但我总是收到错误 多个指令 myPopup myDraggable 请求新的 隔离的范围 这是一个笨蛋 http plnkr co edit k
  • Powershell 范围处理 v2/v3 的未记录更改?

    背景 我一直在编写一个 powershell 脚本 用于将文件从 Windows Server 08 使用 Powershell 2 x 上的 Sharpoint 2010 实例迁移到 Windows Server 12 使用 Powers
  • JavaScript 闭包与匿名函数

    我和我的一个朋友目前正在讨论 JS 中什么是闭包 什么不是 我们只是想确保我们真正正确地理解它 我们以这个例子为例 我们有一个计数循环 想要在控制台上延迟打印计数器变量 因此我们使用setTimeout and closures捕获计数器变
  • 在 Objective-C 中从异步块增加变量

    我在 Objective C 中开发的服务遇到了一些难题 该服务的目的是解析核心数据实体列表并为每个对象下载相应的图像文件 该服务的原始设计因太多同时下载请求而阻塞了我的网络服务器 为了解决这个问题 我将负责执行下载请求的代码移至递归方法中
  • 具有内部赋值延迟的阻塞和非阻塞语句之间的区别

    以下 2 个 verilog 代码片段有什么区别 1 always in out 5 in AND 2 always in out lt 5 in 考虑到always块中不存在其他行 输出会有什么不同吗 问题参考幻灯片 16 参见 o5 和
  • CodeIgniter,将数据从模型传递到控制器以在视图中使用

    我想将模型中查询的数据传递给控制器 为此我使用 return data 然后在我使用的控制器中 this gt load gt view my view data 据我了解var dump data 视图中应该显示查询的结果 事实并非如此

随机推荐

  • 战斗系统设计

    战斗设计 战斗技能 技能分类 普通攻击 被动技能 1 战斗开始时 2 间隔N次普攻后触发 3 阵亡时 4 生命低于x 触发 5 概率触发 优先级最低 6 替换普攻 7 有FindTargetRange单位靠近自身N米时触发 主动技能 属性技
  • 微信小程序text控件部分字体文字大小和颜色设置四

    在我们android中有的时候会要求textview控件显示文字部分颜色不同而且大小也不同 这个在微信小程序中怎么做呢 因为在微信小程序中所有的显示都是通过标签来实现的 那么标签时可以嵌套的 比如显示hello world 要求hello颜
  • Qt下使用DbgHelp和SetUnhandledExceptionFilter来获取Crash log/dump文件

    第一步 在pro中链接Lib LIBS lDbgHelp 第二步 在main源文件中添加 include
  • 计算机自顶向下WireShark实验2:DNS

    前言 本博客仅记录我自己做实验所用 在码云上看到一份比较好的自顶向下的实验记录 大家可以参考计算机自顶向下实验 实验内容 1 运行nslookup获取亚洲一个Web服务器的IP地址 那台服务器的IP地址是什么 答 对自己的学校采用即可 2
  • win10下web漏洞扫描工具:AWVS安装教程

    01 AWVS安装 windows上安装其实很简单 以安装AWVS12版本为例子 具体步骤如下 01 双击exe安装 02 点击 Next 03 选择我同意 04 设置用户名和密码 这里用户名是以邮箱为准的 密码需要复杂点 不然会提示密码太
  • 八、Linux编程之递归遍历目录

    八 Linux编程之递归遍历目录 目录 八 Linux编程之递归遍历目录 一 步骤分析 二 isFile 函数 三 isDir 函数 int sprintf char str const char format 四 main 主函数 五 运
  • linux audit 日志 查看用户_一项一项教你测等保2.0——Linux安全审计

    一 前言 前边我们已经讲了windows系统下的安全审计 现在我们讲讲Linux系统下的安全审计 其实两个系统下的测评项都是一样的 不一样的就是不同的系统查看系统配置的方法不一样 windows系统使用的都是图形交互界面 而且我们平时使用w
  • 荣誉加冕!八方锦程再次荣获招聘与任用价值大奖

    智享会ALL IN 2023 人力资源服务展汇聚了全国32个省市地区 21个行业的HR从业者 上下游客户 9月19 20日齐聚上海跨国采购会展中心 共同见证ALL IN 2023的盛大开幕 作为人力资源行业的奋进者 八方锦程与智享会同行走过
  • 【C语言机器学习】

    C语言机器学习
  • Java--JDBC编程练习题

    1 下面选项中 能够将游标从当前位置向下移一行的方法是 单选 A next B absolute introw C previous D last 参考答案 A 答案说明 absolute int row 将游标移动到此 ResultSet
  • 解决Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for

    解决Clipping input data to the valid range for imshow with RGB data 0 1 for floats or 0 255 for integers 报错描述 img plt imre
  • sarscape 将dem文件转化成stl_从STL文件生成有限元FEA网格

    随着计算机图形 硬件 以及3D打印技术的发展 基于面片网格的图形渲染及其格式变得越来越普及 有限元分析 FEA 中 工程师们也常常拿到基于面片网格的几何文件 如STL文件等 并进行后续的分析工作 由于面片网格和有限元实体网格有着根本性的区别
  • opencv中人脸识别算法的基本原理

    opencv中人脸识别算法的基本原理 一 使用opencv中自带的三种人脸识别算法进行实验后 特意去了解学习了一下其基本原理 在这里记录下 opencv人脸识别 关于如何使用opencv实现人脸识别的过程可以参考 http blog csd
  • 一文带你走完Nginx的配置方法(Nginx+Flask)

    作为一个南方人 我每天都洗澡 一年四季 从不间断 甚至我在北京读书的7年 都这么过来的 除开几次喝醉的情况 洗澡是一件很舒服的事情 你可以完全放松 听着music 哼着小曲 多么惬意 阿基米德也是在洗澡的时候发现了浮力 以此证明 洗澡是件好
  • kafka安装

    1 安装版本 链接 https pan baidu com s 1NgJKs6WMKZdfaqS8WTqiWA 提取码 0103 安装包 kafka 2 12 2 6 0 tgz 注意 为保证下面命令正确执行 请将该安装包放到 opt 目录
  • 解决MyEclipse编写properties文件时,中文注释显示为Unicode码问题

    在编写properties文件时 注释中的中文显示为Unicode码 并且在Properties窗口下也无法显示注释 如下图 解决方案如下 在Source窗口下编写 先在注释前的 号前加上一个 然后在这行注释的最后一个位置的后面加上一个 同
  • 踏浪点神:5.21 恒指黄金原油早盘分析及最新资讯

    恒指最新资讯 周三美国三大股指集体收涨 道指收涨近370点 纳指涨2 08 标普500指数涨1 67 港股ADR指数按比例计算 收报24 443点 涨43 90点或0 94 美国7月原油期货收涨4 88 报33 52美元 桶 创3月10日以
  • [hive]分区表

    一 分区表的技术与意义 1 分区表技术 1 建表时通过partitioned by col name col type hive的分别区字段使用的是外字段 2 hive的分区 区分大小写 3 hive的分区本质是在表目录下面创建目录 但是该
  • WebAPI规范

    WebAPI规范 一 协议 通常使用HTTPs协议 二 域名 API较简单 可将API放在主域名下 以固定prefix开头 例如 https example com api xxxx API内容丰富 复杂多样 可将API部署在专属域名下 例
  • systemverilog的timescale作用域

    参考文献1 https www chipverify com verilog verilog timescale scope 在数字电路仿真过程中 如果没有模块本身没有指定timescale 则编译器本身可能插入一个默认的timescale