<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      systemverilog interface雜記

      隨著IC設計復雜度的提高,模塊間互聯變得復雜,SV引入接口,代表一捆連線的結構。

      Systemverilog語法標準,新引入一個重要的數據類型:interface。

      interface主要作用有兩個:一是簡化模塊之間的連接;二是實現類和模塊之間的通信;

       

      接口(interface)為硬件模塊的端口提供了一個標準化的封裝方式。
      用interface來封裝接口的信號和功能。
      interface的定義是獨立于模塊的,通過關鍵字interface和endinterface關鍵詞來定義。
       
      注意:
      interface里面可以帶時鐘、斷言、任務(task)、函數(function)等定義。
      一個interface 也可以有input,output或是inout端口。
      當interface例化時,只有當變量或是線網聲明在一個interface的端口列表中才能通過名字或是位置來互連。
      interface是可綜合的。
       
       
      一種新加的和interface有關系的構造體是Modport 。
      它提供了module的interface端口和在特定的module中控制task和function使用的方向性信息。這些端口的方向可以在module中可以看到。
      接口使用無信號的連接方式。
      Modport將接口中信號分組并指定方向。就像下圖中的黑色矩形塊里面一樣,黑盒,我們從外面看并不關心Modport的定義,只需要考慮clk。
      Systemverilog <wbr>interface

       
      interface membus(input logic clk, output wor status);
       logic mrdy;
       logic wen;
       logic ren;
       logic [7:0] addr;
       logic [7:0] c2m_data;
       logic [7:0] m2c_data;
       
       task reply_read(input logic [7:0] data, integer delay);
         #delay;
         @(negedge clk)
         mrdy=1'b0;
         m2c_data=data;
         @(negedge clk)
         mrdy=1'b1;
      endtask
       
       //Task和function可以定義在interface中,從而允許構造更抽象級的模型
       
       task read_memory(input logic [7:0] raddr, output logic [7:0] data);
         @(posedge clk);
         ren=1'b0;
         addr=raddr;
         @(negedge mrdy);
         @(posedge clk);
         data=m2c_data;
         ren=1'b1;
       endtask
       
      modport master(output wen, ren, addr, c2m_data, input mrdy, m2c_data, status, read_memory);
      modport slave(input wen, ren, addr, c2m_data, output mrdy, m2c_data, status, reply_read);
      //控制task和function使用的方向性信息,以便在下面的module中使用
       
      endinterface
       

      總的來說,interface指明了TBDUT之間的連接信號,clocking規定了信號之間的時序關系,而modport則明確了站在不同的角度對應信號的輸入輸出方向。通過虛擬接口的定義將以上內容封裝起來。

      接口interfacemodule,program一樣,都是層次化結構,主要用來完成設計module和驗證program之間的連接。interface中有兩個重要的功能塊clocking blockmodport

      clocking block,用來對同步信號進行采樣和驅動,可以避免設計和驗證的競爭。clocking block需要指定一個時間,通常是posedgenegedge,同時還可以為塊中信號設置建立保持時間,在默認建立保持時間均為1ns

      如下面的例子所示:

      ...

      clocking msclk_cb @(posedge clk); //clocking block塊定義

      default intput #setup output #holdtime; //輸入建立時間,輸出保持時間設定

      intput xxxxx;

      output xxxx;

      ...

      endclocking

      ...

      modport block,對于同一個接口,不同的事物處理器可能會有不同的視角,比如對driver而言是輸出的信號,在driver_monitor看來則是輸入信號,所以可以引入modport來聲明端口模塊。

       

      默認情況下interface的所有信號都是異步的

      可以通過clocking block定義一組信號與時鐘同步

      modport定義與test的連接。

       

       

      關于interface的實例化:

      1,在module中,可以直接實例化,

      即my_if input_if;

      2,在class中,需要使用virtual interface來實例化。

      即 class my_driver extends uvm_driver

            virtual my_if vif;

            XXXXX;

        endclass

       

       

       

      posted @ 2017-12-27 11:29  宙斯黃  閱讀(12336)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 日韩高清视频 一区二区| 日本另类αv欧美另类aⅴ| 国精产品999国精产品官网| 粉嫩国产av一区二区三区| 成人区人妻精品一区二区| 少妇特黄a一区二区三区| 国产精品一码在线播放| 国产360激情盗摄全集| 成人福利国产午夜AV免费不卡在线| 欧美一区内射最近更新| 国产短视频精品一区二区| 亚洲综合一区二区三区不卡| 精品国内自产拍在线观看| 2020国产欧洲精品网站| 久久www免费人成看片中文| 久久99国产精一区二区三区!| 无码精品人妻一区二区三区中| 亚洲熟妇自偷自拍另亚洲| 国产精品中文字幕久久| 超碰人人超碰人人| 亚洲AV无码秘?蜜桃蘑菇| 国产激情一区二区三区成人| 国产精品人妻熟女男人的天堂| 日本亚洲欧洲无免费码在线| 国产高清乱码又大又圆| 丁香婷婷无码不卡在线| 四虎国产精品永久在线| 999国产精品999久久久久久| 国产福利社区一区二区| 精品国产一区二区三区四区阿崩| 日韩一区二区三区精品| 国产精品一区二区中文| 四川少妇被弄到高潮| 国产乱妇无乱码大黄aa片| 99久re热视频这里只有精品6| 国产乱子伦一区二区三区四区五区 | 99精品人妻少妇一区二区| 成人做受120秒试看试看视频 | 成人亚洲欧美一区二区三区| 韩国三级网一区二区三区| 天堂国产一区二区三区|