`timescale 1ns/1ps(仿真时间单位/精度。)
第一个数值代表仿真的时间单位是1ns;第二个数值代表的时间精度1ps.
方式一:如果编译选项没设置-timescale 1ns/1ps -override_timescale,则根据代码文件中设置的`timescale决定。如果某个文件中没有设置,则根据verilog文件的编译顺序来决定。没有定义`timescale的文件,会使用前面文件编译的`timescale。
方式二:如果编译脚本选项设置了-timescale 1ns/1ps -override_timescale,则其优先级最高,覆盖所有的文件的时间信息;
方式一 验证测试及仿真
一、如图中filielist (tb.f)的排序,决定了编译顺序
其中每个文件中的定义如下:
tb.v 定义的时间为 `timescale 1ns/1ps
test0.v 没对其定义 (该文件采用其前面的设置,即tb.v定义)
test1.v 定义的为 `timescale 1ns/10ps (该文件仿真参数采用自身定义覆盖上一层tb.v 定义)
test2.v 定义的为 `timescale 1ns/100ps (该文件仿真参数采用自身定义,覆盖)
test3.v 没对其定义 (该文件采用其前面的设置,即test2.v定义)
对于每个文件中的内容如下:
tb.v 调用了其它几个文件。
其它文件(如,test0.v)设置不同的时间精度,用来查看仿真结果,是否有不同精度的方波发出。每个文件中的内容相同。
仿真结果如下:
1)tb.v中能产生精度>=1ps的方波 , 其采用自身定义的 `timescale 1ns/1ps
2)test0.v 也可以产生>=1ps的方波,其采用前面先编译的tb.v的精度
3)test1.v 只能产生最小精度>=10ps方波,其采用自身定义的 `timescale 1ns/10ps
4)test2.v 只能产生最小精度>=100ps方波,其采用自身定义的 `timescale 1ns/100ps
5)test3.v 只能产生最小精度>=100ps方波,其采用前面先编译的test2.v的精度
所以,如果一些文件没定义时间精度,则可以调整编译文件的顺序,来调整应用的精度。
方式二 验证测试及仿真
如果在编译仿真选项中,加入了-timescale 1ns/1ps -override_timescale设置,则全部文件会采用编译仿真选项的设置。
如下:xrun仿真编译
仿真结果:可以看出最小的时间精度都可以达到1ps。