自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (6)
  • 收藏
  • 关注

原创 RISC-V原子指令(A扩展)

标准原子指令扩展命名为A,包含对原子原子读-修改-写存储器,以支持不同hart之间对同一片内存空间的同步。A扩展提供了两种原子指令,包括load-reserved/store-conditional和fetch-and-op存储指令。两种指令都支持各种存储器的一致性排序,包括无序、获取、释放和顺序一致性。这些指令使得RISC-V可以支持RCsc内存一致性模型.

2023-04-20 17:41:34 1183

原创 sv的automatic

实验 1 没有加automaticmodule tb;function void myfunc(input [7:0] x,input [7:0] y,output [15:0] z);$display(“x = %0d”, x);$display(“y = %0d”, y);$display(“z = %0d”, z); z = x + y - 1; $display("z = %0d", z);

2022-04-28 21:42:39 629

原创 task的input和output理解

1 input和output和funcion是一致的;另task可以加延时语句2 task也可以用return,用于退出task使用;###########################################################################################案例1module tb;task mytask(input [7:0] x,input [7:0] y,output [15:0] z);$display(“x = %0d”,

2022-04-27 22:32:24 1239

原创 function的input和output的理解

sv的function的input和output的理解

2022-04-27 21:33:44 874

原创 system verilog的竞争

module design_race;logic clk;logic rstn;logic [3:0] a;logic [3:0] b;int clk_cnt; initial begin clk <= 0; forever begin #5ns clk <= !clk; end end initial begin #10ns; rstn <= 1; #10ns; rstn <= 0;...

2022-04-23 11:12:58 154

原创 3个一样的driver,如何获取configure_db_set的数据

a driver里面定义set interface// channel driver class chnl_driver extends uvm_driver #(chnl_trans); local virtual chnl_intf intf; `uvm_component_utils(chnl_driver) function new (string name = "chnl_driver", uvm_component parent); supe...

2022-02-26 11:01:06 238

原创 sv的一维数组

module tb;//一维数组initial begin int descend[5] = '{0, 1, 2, 3, 5}; descend[0:4] = '{4, 3, 2, 1, 0}; //int j = 0; foreach(descend[i]) $display("descend(%d) = %d", i, descend[i]); descend = '{5{6}}; for(int i = 0; i < $si...

2022-02-21 21:16:40 417

原创 sv的二维数组赋值

module tb;//二维数组initial begin int md[2][3] = '{'{0, 1, 2}, '{3, 5, 6}}; $display("old value"); foreach(md[i,j]) $display("md[%0d][%0d] = %0d", i, j, md[i][j]); md[2][3] = '{'{3, 5, 6}, '{1, 2, 3}}; //编译报错 $display("new value"...

2022-02-21 20:46:42 3003

原创 sv数据类型学习一

module tb;logic [7:0] logic_vec = 8'b1000_0000;bit [7:0] bit_vec = 8'b10000_0000;byte signed_vec = 8'b1000_0000;initial begin $display("logic_vec = %d", logic_vec); $display("bit_vec = %d", bit_vec); $display("signed_vec = %d", signed_vec)...

2022-02-20 21:46:37 313

原创 default_sequence理解

UVM实战里面的介绍sequence 必须要做为 sequencer 的某个 phase(比如 main_phase)的 default_sequence一般的例子都是把自己定义的sequence通过config设置成main——phase的default——sequenceeg:uvm_config_db#(uvm_object_wrapper)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", my_sequence

2022-02-13 17:05:07 1795

原创 在测试前通过前门配置寄存器

1 定义一个sequence,里面对应的寄存器配置;class case0_cfg_vseq extends uvm_sequence; `uvm_object_utils(case0_cfg_vseq) `uvm_declare_p_sequencer(my_vsqr) function new(string name= "case0_cfg_vseq"); super.new(name); endfunction virtual task...

2022-02-13 14:14:44 874

原创 reg的前门访问

流程:参考模型调用寄存器模型的读任务。· 寄存器模型产生sequence, 并产生uvm_reg_item: rw。· 产生driver能够接受的transaction: bus_req=adapter.reg2bus(rw) 。· 把bus_req交给bus_sequencer。· driver得到bus_req后驱动它, 得到读取的值, 并将读取值放入bus_req中, 调用item_done。· 寄存器模型调用adapter.bus2reg(bus_req, rw) 将bus_req中的..

2022-02-12 00:03:53 511

原创 verilog的层次命名在uvm平台的应用

1 :top的定义:import uvm_pkg::*;`include "my_driver.sv"module top_tb;reg clk;reg rst_n;reg[7:0] rxd;reg rx_dv;wire[7:0] txd;wire tx_en;dut my_dut(.clk(clk), .rst_n(rst_n), .rxd(rxd), .rx_dv(rx_dv), .txd...

2022-02-10 22:51:11 477

原创 virtual sequence 和 virtual sequencer start 启动流程

功能: 实现sequence之间同步的最好的方式就是使用virtual sequence。 从字面上理解, 即虚拟的sequence。 虚拟的意思就是它根本就不发送transaction, 它只是控制其他的sequence, 起统一调度的作用手动启动 virsual sequence1 子sequence定义:子1:class read_file_seq extends uvm_sequence #(my_transaction); my_transaction m_trans...

2022-02-09 21:50:02 975

原创 uvm的driver报错,解决办法

Error-[ICTTFC] Incompatible complex type usagebus_agent.sv, 35 Incompatible complex type usage in task or function call. The following expression is incompatible with the formal parameter of the function. The type of the actual is 'class uvm_pkg...

2022-02-08 23:07:56 2350 1

原创 uvm_object的field automation机制

field automation机制带来的便利性1 首先注册的方式,如下: `uvm_object_utils_begin(my_transaction) `uvm_field_int(data,UVM_ALL_ON ) ... `uvm_object_utils_end2 对于object类,将类中的变量注册后,可以使用UVM预定义好的函数,如下:函数名 描述copy 用于实例的复制 ,如...

2022-02-07 20:12:13 1516

原创 event 和uvm_event的区别

1 event的例子event config_over;//a global eventclass config_seq extends uvm_sequence#(cpu_transaction);task body();…//some uvm_do statement, config DUT’s register->config_over;//trigger the global eventendtask`uvm_object_utils(config_seq)endclassc

2022-02-07 12:39:37 1072

原创 uvm sequence的手动启动和自动启动

1 手动启动 定义在my_env的类里面task my_env::main_phase(uvm_phase phase); my_sequence my_seq;super.main_phase(phase); my_seq = new("my_seq"); my_seq.starting_phase = phase; my_seq.start(i_agt.sqr); //这个 sequence 会向哪个 sequencer 发送数据endtask或者是定义在m...

2022-02-06 22:21:48 485

原创 uvm_tlm_analysis_fifo 使用

(1) uvm_tlm_analysis_fifo中的*_export,虽然名字中有export,但是本质上都是IMP.(2) uvm_tlm_analysis_fifo内的缓冲使用system verilog中的mailbox实现;(3)需要补充fifo的相关函数,如put,get,try_put,try_get;在FIFO里面实现了get函数和set函数:因此定义了对应的port可以直接调用get函数,put函数...

2022-02-04 00:25:41 4053

atom linux免安装版

atom linux免安装版

2022-07-02

PCIe基础扫盲文(PCIE基础、TLP、FlowCtrl)

PCIe扫盲文

2022-03-01

Intel IXP2400 Network Processor Datasheet

Intel IXP2400 Network Processor Datasheet

2022-03-01

Intel IXP2400 Network Processor Hardware Reference Manual

Intel IXP2400 Network Processor Hardware Reference Manual

2022-03-01

使用tcl脚本产生随机数

使用tcl脚本产生随机数

2021-11-13

python创建文件夹及其下的所有目录以及文件

python

2021-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除