SV中Clock的处理

问题: 如何实现某个范围内的clock的随机化

难点: # 后面必须跟常量。

解决方法:

   1) 如果clock是某些特定频率,那么构造这些特定频率的virtual clock,并通过变量选择相应频率的virtual clock,作为phiscal clock.

 

          具体如下:

=================env.sv====================

  

 

       

======================interface.sv=======================

          此外,由于testbench生成了clk,并且作为各个xactor的输入,所以必须在interface里面定义一个clk的输出的modport,以及clk输入的modport. 同理reset,也应如此。只不过一般clk是异步的,reset是同步于clk的。

         

 

 

   2) 如果clock是一个随机范围,那么要生成一个timescale范围内的virtual clock. 然后采取repeat(var)  @(virtual_clock)的方法间接构建clock。

 

 

Note:

        如果系统中只有一个clock,那么我们可以指定xxx为default clock. 这样就可以用 ##var  来代替  repeat(var) @(posedge xxx)语法如下:

 

          default clocking default_clk @(posedge axi_if_1.clk_block.aclk);          endclocking : default_clk

相关文章
相关标签/搜索