怎么设置systemverilog类的时间单位(timescale)

timeunit和timeprecision是不允许在systemverilog类中直接使用的,那么我们有什么方法可以设置systemverilog类的时间单位和精度呢?
答案就是讲systemverilog类包起来。
你可以用以下方式设置sv类中的时间精度。

1. 将类定义在program块中,并且在class定义之前,声明timeunit和timeprecision。

 `timescale 1ns/1ns
   program test;

   timeunit 1ps;
   timeprecision 1ps;

   class C;
   ...........
   $printtimescale;  // Will print timescale of 1ps/1ps
   endclass
   endprogram
 -------------------------------------------------------

  A sample example is shown as follows:

  test.sv:
  --------------------------------------------
  `timescale 1ns/10ps

  module tb_top;
    test_p test_p();

    initial begin
     $printtimescale;
    end
  endmodule

  program test_p;
   timeunit 1ps;
   timeprecision 1ps;

   class test;
   function disp;
   $printtimescale;
   $display("%t",$time);
   endfunction

  endclass

  test T;
  initial
  begin
  T = new();
  T.disp;
  end
  endprogram

  --------------------------------------------

  To run vcs -sverilog test.sv -R

  Output:
  --------------------------------------------
  TimeScale of tb_top is 1 ns / 10 ps
  TimeScale of test_p is 1 ps / 1 ps
  --------------------------------------------

 2.将类用包管理起来,即可以直接将类声明在package中,也可以声明在包外,用include“***.sv”包含进来。

`timescale 1ns/10ps

  module tb_top;
    test test();

   initial begin
     $printtimescale;
   end
  endmodule

  package PACK;
  timeunit 1ps;
  timeprecision 1ps;

  class test;
  function disp;
  $printtimescale;
  $display("%t",$time);
  endfunction

  endclass
  endpackage

  program test;
  import PACK::*;
  test T;
  initial
  begin
  T = new();
  T.disp;
  end
  endprogram
                
  -------------------------------------------
  To run vcs -sverilog package_test.sv -ntb_opts dtm

  Output:
  -----------------------------------
  TimeScale of tb_top is 1 ns / 10 ps
  TimeScale of test_p is 1 ps / 1 ps
  ------------------------------------

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值