关于某timescale的解释.docx
- 文档编号:28622369
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:10
- 大小:33.52KB
关于某timescale的解释.docx
《关于某timescale的解释.docx》由会员分享,可在线阅读,更多相关《关于某timescale的解释.docx(10页珍藏版)》请在冰豆网上搜索。
关于某timescale的解释
关于`timescale()
在VerilogHDL模型中,所有时延都用单位时间表述。
使用`timescale编译器指令将时间单位与实际时间相关联。
该指令用于定义时延的单位和时延精度。
`timescale编译器指令格式为:
`timescaletime_unit/time_precision
time_unit和time_precision由值1、10、和100以及单位s、ms、us、ns、ps和fs组成。
例如:
`timescale1ns/100ps
表示时延单位为1ns,时延精度为100ps。
`timescale编译器指令在模块说明外部出现,并且影响后面所有的时延值。
例如:
`timescale1ns/100ps
MODULEAndFunc(Z,A,B);
OUTPUTZ;
inputA,B;
and#(5.22,6.17)Al(Z,A,B);
//规定了上升及下降时延值。
endMODULE
编译器指令定义时延以ns为单位,并且时延精度为1/10ns(100ps)。
因此,时延值5.22对应5.2ns,时延6.17对应6.2ns。
如果用如下的`timescale程序指令代替上例中的编译器指令,
`timescale10ns/1ns
那么5.22对应52ns,6.17对应62ns。
在编译过程中,`timescale指令影响这一编译器指令后面所有模块中的时延值,直至遇到另一个`timescale指令或`resetall指令。
当一个设计中的多个模块带有自身的`timescale编译指令时将发生什么?
在这种情况下,模拟器总是定位在所有模块的最小时延精度上,并且所有时延都相应地换算为最小时延精度。
例如,
`timescale1ns/100ps
MODULEAndFunc(Z,A,B);
OUTPUTZ;
inputA,B;
and#(5.22,6.17)Al(Z,A,B);
endMODULE
`timescale10ns/1ns
MODULETB;
regPutA,PutB;
WIREGetO;
initial
begin
PutA=0;
PutB=0;
#5.21PutB=1;
#10.4PutA=1;
#15PutB=0;
end
AndFuncAF1(GetO,PutA,PutB);
endMODULE
在这个例子中,每个模块都有自身的`timescale编译器指令。
`timescale编译器指令第一次应用于时延。
因此,在第一个模块中,5.22对应5.2ns,6.17对应6.2ns;在第二个模块中5.21对应52ns,10.4对应104ns,15对应150ns。
如果仿真模块TB,设计中的所有模块最小时间精度为100ps。
因此,所有延迟(特别是模块TB中的延迟)将换算成精度为100ps。
延迟52ns现在对应520*100ps,104对应1040*100ps,150对应1500*100ps。
更重要的是,仿真使用100ps为时间精度。
如果仿真模块AndFunc,由于模块TB不是模块AddFunc的子模块,模块TB中的`timescale程序指令将不再有效。
参考资料:
1. blog.ednchina./thinkker/159517/message.aspx
关于verilog中timescale的讨论
在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
`timescale100ps/1ps
modulea(clk);
inputclk;
wireclk_a;
assign#5clk_a=clk;
endmodule
`resetall
文件名:
module_b.v
`timescale10ps/1ps
moduleb(clk);
inputclk;
wireclk_b;
assign#5clk_b=clk;
endmodule
`resetall
文件名:
testbench.v
`timescale1ns/10ps
moduletb();
regclk;
initialbegin
clk=0;
end
initial
begin
$fsdbDumpvars;
#12500$finish;
end
alwaysbegin
#10clk=~clk;
end
aa_inst(clk);
bb_inst(clk);
endmodule
波形如下:
结论:
从上面的波形中可以看出,虽然使用了相同的delay表述:
assign#5clk_a(b)=clk;
但由于在module中指定的timescale精度不同,在实际的simulation中delay的长度是不同的,但都是等于5×timescale最小精度
对`timescale的深入理解
在实际应用过程中,如网口IPCORE调试过程中,就会出现不同文件的module在不同的时间单位和精度的情况之下,因此,有必要对这个问题进行深入透彻地了解和分析。
下面进行详细分析。
I.在顶层文件里instantiateseachmodule,本身不写`timescale命令,但据说对modelsim的默认情况是`timescale1ps/1ps,现看看波形图和各模块程序:
待测信号Posedgetime`timescale延迟时间表达式
b,d,f5nsNONENONE
A5ns+1.6ns1ns/100ps#1.55
C5ns+1.55ns1ns/10ps#1.55
e5ns+0.16ns100ps/10ps#1.55
分析:
top文件完全没有干涉各模块的时间单位和精度。
程序如下:
//top.v文件,无`timescale
moduletop(a,b,c,d,e,f
);
outputa,c,e;
inputb,d,f;
timescale_tt_1(.A(a),.B(b));
timescale_ttt_2(.C(c),.D(d));
timescale_tttt_3(.E(e),.F(f));
endmodule
//timescale_t.v文件
`timescale1ns/100ps
moduletimescale_t(
A,B
);
outputA;
inputB;
assign#1.55A=B;
endmodule
//timescale_tt.v文件
`timescale1ns/10ps
moduletimescale_tt(
C,D
);
outputC;
inputD;
assign#1.55C=D;
endmodule
//timescale_ttt.v文件
`timescale100ps/10ps
moduletimescale_ttt(
E,F
);
outputE;
inputF;
assign#1.55E=F;
endmodule
II.在顶层文件里写上`timescale1ns/1ps,其他设置和程序不变,看看波形图:
待测信号Posedgetime`timescale延迟时间表达式
b,d,f5ns1ns/1psNONE
A5ns+1.660ns1ns/100ps#1.55
C5ns+1.550ns1ns/10ps#1.55
E5ns+0.160ns100ps/10ps#1.55
分析:
可见如果顶层写明了`timescale命令,那么它将会影响其模块部各子模块的精度,而不会对时间单位产生任何影响。
但是,如果top.v中的时间精度比某个子模块的大,程序将如何处理呢?
答案是,结果和I中的一样!
III.在顶层文件的各实例化文件前面写上不同的`timescale,其他不变,看看效果:
显示,在一个module部不可以编写`timescale命令!
程序如下:
`timescale1ns/100ps
moduletop(a,b,c,d,e,f
);
outputa,c,e;
inputb,d,f;
`timescale1ns/100ps
timescale_tt_1(.A(a),.B(b));
`timescale1ns/10ps
timescale_ttt_2(.C(c),.D(d));
`timescale100ps/10ps
timescale_tttt_3(.E(e),.F(f));
endmodule
对书中和网上疯狂的一段话进行修正:
“一个设计中的多个模块带有滋生的`timescale指令,模拟器总是定位在所有模块的最小时延精度上。
”
这里的所有模块,指的是跟模块和某一个子模块相比较,并采用二者之间最小的精度,对于多个并行的子模块而言,它们是不会相互干扰对方的精度的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 timescale 解释
![提示](https://static.bdocx.com/images/bang_tan.gif)