[SV]SystemVerilog枚舉類型變量(enum)的應用 您所在的位置:网站首页 弹簧止回阀弹簧压力小的原因 [SV]SystemVerilog枚舉類型變量(enum)的應用

[SV]SystemVerilog枚舉類型變量(enum)的應用

#[SV]SystemVerilog枚舉類型變量(enum)的應用| 来源: 网络整理| 查看: 265

        在驗證環境中,我們使用enum可以使得程序的可讀性大大提高,如用枚舉類型定義狀態機的狀態、描述頻率的單位、包裡面各個字段的含義等。那麼具體該怎麼使用枚舉類型呢?請看下面的例子:

在Transaction中定義一個枚舉型變量,表征bus的操作類型: class bsi_mst_trans extends uvm_sequence_item; typedef enum bit [1:0] {IDEL, READ, WRITE} xact_type_e; rand xact_type_e xact_type; rand bit [3:0] op_code; endclass : bsi_mst_trans 在Monitor中,給枚舉類型的變量賦值: class bsi_mst_monitor extends uvm_monitor; virtual bsi_mst_if.mon intf_mon; virtual task monitor(uvm_phase phase); @(intf_mon.monck); if(intf_mon.monck.req && intf_mon.monck.ack && intf_mon.monck.read_state) begin bsi_mst_tr.xact_type = bsi_mst_trans::READ; end endtask : monitor endclass : uvm_monitor 枚舉型變量在constraint中的用法舉例: class bsi_mst_trans extends uvm_sequence_item; typedef enum bit [3:0] {DSB_DATA, DSB_LEN, DSB_DATA, TPC, NOP} kinds_type_e; rand kinds_type_e payload_type; rand bit [3:0] op_code; //BC rand int byte_cnt; //instruction data rand bit [63:0] inst_data; rand int dumy_zero; rand int cmd_interval; rand int msb; constraint cst_bsi_mst_trans { if(payload_type == DSB_ADDR) { op_code == 4'b1000; byte_cnt == 5; dumy_zero == 4; inst_data[63:60] == op_code; msb == 31; } } endclass : bsi_mst_trans

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有