SystemVerilog仿真时间单位-`timescale+$timformat
2020-11-13 21:28阅读:
使用SystemVerilog搭建的Testbench,仿真过程离不开仿真时间单位,使用'`timescale
单位/精度'可以指定本次仿真过程的仿真时间单位/精度。
如下面的例子,在testbench.sv中定义”`timescale 10ns/1ps“,就是向仿真器说明,本次仿真的时间单位是10ns,精度是1ps。所以,line7的”#5“;实际指的就是delay 50ns;精度的最大用处,会被当成%t打印时默认的单位,所以我们看到line8用%t打印出来是50000ps。
timescale可以在多个位置指定,如compile options,任何一个文件中。优先级是后者生效,即后面的会覆盖前面的。如例子中,compile options中指定单位是1ns,由于testbench.sv中又重新指定,所以,compile options的1ns会被覆盖。也可以在多个文件中定义timescale,如先后include的两个文件,分别是module_A.v和module_B.v中都定义timescale,则module_A.v会使用自己定义的timescale,module_B.v由于会用自己的timescale覆盖前面timescale,所以,两个module都会用各自的timescale。
例1
另一个与仿真时间关系密切的是$timeformat,
如下面的例子,在testbench.sv中定义”`timescale 10ns/1ps“,就是向仿真器说明,本次仿真的时间单位是10ns,精度是1ps。所以,line7的”#5“;实际指的就是delay 50ns;精度的最大用处,会被当成%t打印时默认的单位,所以我们看到line8用%t打印出来是50000ps。
timescale可以在多个位置指定,如compile options,任何一个文件中。优先级是后者生效,即后面的会覆盖前面的。如例子中,compile options中指定单位是1ns,由于testbench.sv中又重新指定,所以,compile options的1ns会被覆盖。也可以在多个文件中定义timescale,如先后include的两个文件,分别是module_A.v和module_B.v中都定义timescale,则module_A.v会使用自己定义的timescale,module_B.v由于会用自己的timescale覆盖前面timescale,所以,两个module都会用各自的timescale。
另一个与仿真时间关系密切的是$timeformat,
