- 博客(19)
- 资源 (6)
- 收藏
- 关注
原创 RISC-V原子指令(A扩展)
标准原子指令扩展命名为A,包含对原子原子读-修改-写存储器,以支持不同hart之间对同一片内存空间的同步。A扩展提供了两种原子指令,包括load-reserved/store-conditional和fetch-and-op存储指令。两种指令都支持各种存储器的一致性排序,包括无序、获取、释放和顺序一致性。这些指令使得RISC-V可以支持RCsc内存一致性模型.
2023-04-20 17:41:34 1336
原创 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 664
原创 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 1318
原创 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 178
原创 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 247
原创 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 460
原创 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 3127
原创 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 332
原创 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 1874
原创 在测试前通过前门配置寄存器
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 891
原创 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 528
原创 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 497
原创 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 1034
原创 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 2430 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 1584
原创 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 1097
原创 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 503
原创 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 4204
Intel IXP2400 Network Processor Hardware Reference Manual
2022-03-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人