zoukankan      html  css  js  c++  java
  • SV中的Interface和Program

    Interface:SV中新定义的接口方式,用来简化接口连接,使用时注意在module或program之外定义interface,然后通过'include来添加进工程。

            interface  arb_if(input bit clk);              //clk信号,一般单独拿出来

                               logic [1:0]grant, request;       //只定义信号类型。类型在不同的modport中分别定义。

                               logic rst;

                               clocking cb @(posedge clk);    //定义时钟块,其中的信号都是clk上升沿有效

                                                 output request;

                                                 input  grant;

                               enclocking

                               modport TEST (clocking cb, output rst);   //直接引用clocking, 在定义rst的方向

                               modport DUT (input request, rst, output grant);  //定义各个信号的方向

            endinterface

            module  test(arb_if.TEST arbif);

                               initial  begin

                                            arbif.cb.request <= 0;    //直接引用clocking中的信号,而且clock blocking中的信号,最好使用<=非阻塞赋值。

                                            @arbif.cb;         //相当于@posedge clk

                                            $display("");

                                         end

            endmodule

    interface可以直接与verilog-2001的端口进行连接:

            module   top;

                    bit  clk;

                    always #5  clk = ~clk;

                    arb_if  arbif(clk);

                    arb_port     a1(.grant(arbif,grant),

                                          .request(arbif.request),

                                          .rst(arbif.rst),

                                          .clk(arbif.clk) );

                    test   t1(arbif);

             endmodule:top

    Program:主要是为了在逻辑和仿真时间上,区分开RTL与验证平台。在SV搭建的验证环境中,testcase一般就定义一个program来开始执行。

                   program中不能使用always,因为program相比较来说,与C语言更靠近一些。所以多用initial就可以。program中的仿真时间与RTL中的是有区别的,

                   SV将同一仿真时刻分为四个区域,Active(design), Observed(assertion), Reactive(testbench), Postponed(sample)。相当于在原verilog的基础

                   上又为program增加了一个执行区间,一个采样区间。所以clk的定义不能放在program中。当program中的initial结束时,SV会调用$finish完成仿真。

  • 相关阅读:
    java鼠标操控小程序
    java多线程三之线程协作与通信实例
    java线程一之创建线程、线程池以及多线程运行时间统计
    newCachedThreadPool的使用
    java多线程 三种实现方式
    Oracle查询练手1
    aspose word for java去除目录文字蓝色样式以及文字下方蓝色下划线
    aspose word for java解决Word中部分表格跨页线框缺失问题
    aspose word for java添加页码并自动生成目录
    aspose word for java调整表格适应页面宽度
  • 原文地址:https://www.cnblogs.com/-9-8/p/4421766.html
Copyright © 2011-2022 走看看