在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6929|回复: 8

[转贴] 关于verilog 中timescale的讨论

[复制链接]
发表于 2010-12-2 14:50:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
verilog中是没有默认timescale的。一个没有指定timescale的verilog模块就有可能错误的继承了前面编译模块的无效timescale参数。
所以在verilog的LRM中推荐“在每个module的前面指定`timescale,并且相应的在最后加一个`resetall来确保timescale的局部有效

为了确认这种用法,我编写了一个小小的包含两个模块module_a和module_b的testbench,其中module_a,module_b与testbench指定了不同的timescale精度。通过simulation的波形可以发现,Simulator的确在不同的module中使用了不同的times精度。

代码如下:
文件名:module_a.v
`timescale 100ps/1ps

module a (clk) ;
input clk;
wire clk_a ;

assign #5 clk_a = clk;

endmodule

`resetall

文件名:module_b.v
`timescale 10ps/1ps

module b (clk) ;
input clk;
wire clk_b ;

assign #5 clk_b = clk;

endmodule

`resetall

文件名:testbench.v
`timescale 1ns/10ps

module tb();
reg clk;

initial begin
clk = 0;
end

initial
begin
$fsdbDumpvars;
#12500 $finish;
end


always begin
#10 clk = ~clk;
end

a a_inst(clk);
b b_inst(clk);

endmodule

波形如下:

                               
登录/注册后可看大图


结论:
从上面的波形中可以看出,虽然使用了相同的delay表述:
assign #5 clk_a(b) = clk;
但由于在module中指定的timescale精度不同,在实际的simulation中delay的长度是不同的,但都是等于5×timescale最小精度。
发表于 2010-12-2 17:01:05 | 显示全部楼层
牛逼啊
发表于 2010-12-2 17:53:21 | 显示全部楼层
回复 1# psd0208


    呵呵!

有研究价值!
发表于 2010-12-2 19:30:28 | 显示全部楼层
一看就知道楼主没仔细看过reference manual,建议看看英文原版的。英文的是既知其然,又知其所以然。
发表于 2010-12-3 13:34:20 | 显示全部楼层
研究下
发表于 2010-12-8 16:20:02 | 显示全部楼层
学习啦.
谢谢大家
谢谢楼主分享
发表于 2011-12-2 14:39:33 | 显示全部楼层
为什么我在module前定义了`timescale 1ns/100ps,但我用#延迟时,程序就跑不动了呢?
发表于 2012-3-23 00:38:01 | 显示全部楼层
回复 1# psd0208
原来这样
发表于 2012-9-10 16:55:20 | 显示全部楼层
若不写resetall,楼主是否试过呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 18:25 , Processed in 0.034729 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表