⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tx.sv

📁 VMM 文档加源码, synopsys公司很好的验证资料
💻 SV
字号:
`ifndef TX__SV`define TX__SV`include "vmm.sv"class TX extends vmm_data;   static vmm_log log = new("TX", "class");   // ToDo: Modify/add symbolic transaction identifiers to match   typedef enum { READ, WRITE } kinds_e;   rand kinds_e kind;   // ToDo: Add relevant class properties to define all transactions   // ToDo: Modify/add symbolic transaction identifiers to match   typedef enum { IS_OK, ERROR } status_e;   rand status_e status;   constraint TX_valid {      // ToDo: Define constraint to make descriptor valid      status == IS_OK;   }   // ToDo: Add constraint blocks to prevent error injection   function new();      super.new(this.log);   endfunction:new   virtual function string psdisplay(string prefix = "");            // ToDo: Implement this method   endfunction:psdisplay   virtual function bit is_valid(bit     silent = 1,                                 input int kind   = -1);           // ToDo: Implement this method   endfunction:is_valid   virtual function vmm_data allocate();      TX tr = new;      allocate = tr;   endfunction:allocate   virtual function vmm_data copy(vmm_data cpy = null);            TX to;      // Copying to a new instance?      if (cpy == null)          to = new;       else          // Copying to an existing instance. Correct type?         if (!$cast(to, cpy)) begin            `vmm_fatal(this.log, "Attempting to copy to a non TX instance");            return null;         end      super.copy_data(to);      to.kind = this.kind;      // ToDo: Copy additional class properties      copy = to;          endfunction:copy   virtual function bit compare(vmm_data   to,                                output string diff,                                input int  kind = -1);            TX tr;             compare = 0;      if (to == null) begin         `vmm_fatal(this.log, "Cannot compare to NULL instance");         return 0;      end      if (!$cast(tr,to)) begin         `vmm_fatal(this.log, "Attempting to compare to a non TX instance");         return 0;      end      if (this.kind != tr.kind) begin         $sformat(diff, "Kind %0s != %0s", this.kind, tr.kind);         compare = 0;         return 0;      end      // ToDo: Compare additional class properties      compare = 1;   endfunction:compare   virtual function int unsigned byte_size(int kind = -1);              // ToDo: Implement this method   endfunction:byte_size   virtual function int unsigned byte_pack(ref logic [7:0]    bytes[],                                           input int unsigned offset = 0,                                           input int          kind   = -1);         // ToDo: Implement this method      endfunction:byte_pack   virtual function int unsigned byte_unpack(const ref logic [7:0] bytes[],                                             input int unsigned    offset = 0,                                             input int             len    = -1,                                             input int             kind   = -1);         // ToDo: Implement this method     endfunction:byte_unpackendclass:TX`vmm_channel(TX)`vmm_atomic_gen(TX, "TX")`vmm_scenario_gen(TX, "TX")`endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -