自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 Feko 求解半空间遇到的问题

还是得用,MOM,慢一点就慢一点吧,但是求解各向异性目标的时候,把 region 的 properties 里的 solution选项改为别的方法就可以了。(这样应该算是特定区域特定求解方法吧,混合算法)论文名称:半空间电大散射问题的并行多层快速多极子方法及其区域分解关键技术研究——翟 畅。Solver setting 里面的选项不用改,保持就可以了。那为啥,我看到有些的博士论文里,人家就用了。

2023-05-29 22:13:38 388

原创 Linux命令操作

记录Linux命令使用,并随时学习随时更新

2022-10-14 11:41:10 662 1

原创 正则表达式

一些简单的正则表达式记录

2022-10-09 21:14:15 612

原创 MCDF_uvm实验4

对路科 uvm 入门实验4的总结

2022-10-06 16:08:05 762

原创 UVM中的sequence 的使用与SV中的用法对比

uvm 中 sequence 做的事情和sv中的generator做的事情的对比

2022-09-04 11:32:06 631

原创 AMBA总线协议的总结 - APB

总结AMBA总线协议,这一篇先总结APB的协议,以及从APB2到APB3的变化,APB3到APB4的变化。

2022-08-11 21:50:12 3560

转载 同步复位,异步复位同步释放——含verilog代码

同步复位的优缺点,异步复位的优缺点,以及异步复位同步释放和多时钟域下的情况

2022-07-30 00:45:00 5994 2

原创 verilog 中的一些语法问题

1. case 的使用注意点 2. reg 和 wire 的使用区别 3. 组合逻辑和时序逻辑的区分

2022-07-28 21:38:45 548

原创 计数器—verilog

各种计数器的verilog代码实现

2022-07-27 20:39:17 21350 2

原创 UVM——TLM通信(2)

接着来总结TLM通信,总结和一对多相关的端口和组件包含:uvm_analysis_port , uvm_tlm_fifo, uvm_analysis_tlm_fifo, request 和 response 通信管道。

2022-07-14 17:13:49 364

原创 UVM——TLM通信(1)

前言:基于《UVM实战》和路科讲解的TLM通信,总结一下

2022-07-09 19:54:35 635

原创 MCDF——基于uvm入门与进阶实验2的总结

前言:在MCDF—uvm入门进阶实验2中,从SV验证平台转化为UVM时,接口的传递与各个组件的运行是如何展开的,SV与UVM的不同之处。

2022-07-09 14:40:39 1399 6

原创 MCDF_uvm_lab1

工厂机制,phase机制,域的自动化,config机制,消息管理等的描述

2022-07-05 21:55:48 976 5

原创 MCDF实验4(4)

mcdf_checker中添加的检查

2022-07-01 15:12:26 1050 1

原创 MCDF实验4(3)

目录1. 对整个 MCDF_pkg.sv 的 结构的理解 2. mcdf_reg_t 3. 对 mcdf_refmod 的理解3.1 对 run() 里的 do_reset() 进行解释3.2 对 run() 里的 do_reg_updata() 进行解释3.3 对run() 里的do_packet()进行解释4. 对 mcdf_checker 中的 do_compare()进行代码解释5. 对 mcdf_env 的理解6. 对mcdf_base_test 的理解mcdf_checker 包含了 reg_

2022-06-30 17:55:32 2047 6

原创 MCDF实验4(2)

目录给出 class fmt_driver 的完整代码fmt_generatorfmt_monitor接着上篇的 MCDF实验4(1)MCDF实验4(1)fmt_generator它和其他的 chnl_generator , reg_generator 相差不大主要的步骤都一样: 主要的就是数据不同,fmt_generator 有两个数据: fmt_fifo_t fmt_bandwidth_t这两个数据都是对 fmt_driver 模拟 fifo 而配置的,一个深度,一个带宽,

2022-06-27 21:14:14 884 2

原创 MCDF 实验4 (1)

目录fmt_pkg.sv 代码分析fmt_pkg.sv 中的 fmt_driver do_consume() 的代码解析 ​do_receive() 的代码解析 do_config() 的代码解析driver 分为 inititator 和 responder, 之前的 chnl_driver 和 reg_driver 都是 initiator 发送数据或者指令, 而 formatter 的 driver 是一个 接收数据的 从端 slave, 所以我们的 driver 类似要模仿一个 fifo 缓冲数据

2022-06-19 15:35:36 1726 3

原创 路科验证V0实验lab3总结(下)

概述:实验目标:整个代码框架如下:1.对数据的分析:2.对initial begin end 的分析:3.对 task reset() 的分析:4.对 task gen() 的分析5.对 task send() 的分析6.对 task send_addrs() ,task send_pad(),task send_pay_load() 的分析7. 对 task recv() 的分析8.对 function bit compare(ref string message)...

2022-06-17 11:03:47 913

原创 MCDF实验2(下)

在实验3 tb3.sv 中, 已经把 chnl_initiator 和 chnl_generator 改造为了类 class 改造好的内容chnl_intiator 在模块中和在类中的对比如下:chnl_generator 在类中和在模块中的对比如下:新添加的 class chnl_trans 如下:到了 tb4 把这三个类都封装在一个包 package chnl_pkg 中,另外还添加了以下的类: 层次关系是: chnl_agent 类 具体代码如下: chnl_root_test 具体代码如下: chn

2022-06-17 11:02:55 585

原创 MCDF实验3

class chnl_trans 里面内容的变化 复习 实验2 的 发送数据过程逻辑: agent 可以控制发送 trans 的数量(ntrans), 并且 get_trans()和 chnl_write() 都只进行有限次数 ntrans。 也就是整个agent 的run() 只执行 ntrans 次。现在实验3的 agent() 不控制 发送 trans 的数量,只让 gen.run() 和 init.run() 运行起来 generator 来控制 ntrans , 产生有限的数据, 而

2022-06-17 11:01:25 1264 3

原创 MCDF实验2(上)

目录接口的使用仿真的结束 类的例化和类的成员问题1.1:可以看到之前的实验 channel initiator 发送的数据例如 valid 和 data 与时钟 clk 均在同一个变化沿,没有任何延迟,这种0延迟的数据发送不利于波形查看和阅读,因此在已有代码的基础上使用 intf.ck 的方式来做数据驱动,并且再观察波形,查看驱动的数据与时钟上升沿的延迟是多少?采用 intf.ck 来做数据驱动,代码如下:上升沿后1ns驱动数据波形如下:问题1.2:为了更好地控制相邻数据之间的空闲间隔,引入一个变量 idl

2022-06-12 22:23:12 832

原创 MCDF实验1

目录从Verilog到SV的进场任务task 和 函数function数组的使用验证结构1. 修改tb1.v 为 tb1.sv ,编译仿真,查看仿真行为是否同tb1.v的仿真行为一致?这说明了什么呢?没有变化,仿真行为一致,说明编译器对 SV 的语法和Verilog语法是全部兼容的2. 将tb1.sv中的信号变量类型由reg或者wire 修改为 logic 类型, 再编译仿真,查看行为是否同修改前的一致呢?这是为什么? 没有变化,仿真行为一致,说明在SV中, reg 和 wire 类型都可以简化为 logi

2022-06-11 13:09:54 3198

原创 Systemverilog-- OOP--对象的拷贝

目录浅拷贝:定义拷贝函数:拷贝函数总结:在创建p2对象时,将从p1拷贝其成员变量例如 interger,string和句柄等,这种拷贝方式称为浅拷贝(shallow copy)。如果要拷贝对象,指的是首先创建一个新的对象(开辟新的空间),再将目标对象的成员变量拷贝给新对象的成员,使新对象与目标对象的成员变量数值保持一致,即完成了对象的拷贝(成员变量的拷贝)例如如下的代码:copy_data函数: 只拷贝变量,把当前的变量def/fin, 传递给t所指的新对象的成员变量,copy函数:创建一个对象

2022-06-10 21:33:20 345

原创 MCDF实验0

目录功能描述设计结构从上图中可以看出MCDF的结构如下接口描述1.系统信号接口2.通道从端接口3.整形器接口4.控制寄存器接口接口时序1.通道从端接口时序2.整形器接口时序3.控制寄存器接口时序寄存器描述:1.地址0x00通道1控制寄存器32bits读写寄存器2.地址0x04通道2控制寄存器32bits读写寄存器3.地址0x08通道3控制寄存器32bits读写寄存器4.地址0x10通道1状态寄存器32bits只读寄存器5.地址0x14通道2状态寄存器32bits只读寄存器6.地址0x18通道3状态寄存器32

2022-06-10 10:55:01 1388 2

原创 Systemverilog 里的OOP------多态-----虚方法的理解

对象的三大特性的最后一个特性就是--多态多态,同一方法名同时出现父类和子类中,为了使父类句柄指向子类对象的时候,也能调用子类的方法,故使用虚方法,在父类的方法名前加上 virtual以此来回答下面链接中的问题...

2022-06-02 12:46:20 662

原创 随机约束——数组约束

内容:可以约束动态数组的长度和内容数组的属性约束:在多数情况下,数组的大小应该给定范围,防止生成过大体积的数组或者空数组。在约束随机标量的同时,可以对随机化数组进行约束。例:class dyn_size; rand logic [31:0] d[]; constraint d_size {d.size() inside {[1:10]}; }endclass可以在约束中结合数组的其他方法sum(), product(), and(), or() 和 xor()。约...

2022-06-01 11:14:00 1262 2

原创 Systemverilog里的 类和对象(一)

目录类的三大特性:类的定义:验证为什么需要OOP:Verilog例化与SV class 例化的 异同:创建对象:1. 注意什么是'声明',什么是‘创建’(即例化)2. 创建对象时,可以通过自定义构造函数(constructor), 来完成变量的初始化和其他初始操作3. 构造函数new() 是系统预定义函数,不需要指定返回值(void), 函数会隐式地返回例化后的对象指针。4. 构造函数也可以定义多个参数,作为初始化时外部传入数值的手段。句柄的传递句柄的使用对象

2022-05-27 14:49:45 917 1

原创 路科验证V0实验lab4总结

目录任务一.:创建一个数据包类(class)文件(用packet类来封装数据包的信息)任务二:定义数据包的属性约束任务三:定义数据包类方法的雏形任务四:定义数据包类new()结构体任务五:定义Packet的方法compare()任务六:定义数据包的方法display()任务七:修改test.sv来使用Packet类任务八:修改gen()任务去产生数据包对象任务九:修改recv()任务任务十:修改check()任务任务十一:检查和保存文件任务十二:编译和仿真(略

2022-05-27 12:03:57 1217 1

原创 路科验证V0实验lab3总结(上)

先总结实验任务的代码,再来总结一些拓展思考目录一、构造一个从路由器输出端进行取样的监视器(Monitor)?任务一:创建顶层测试环境(Top-Level Test Environment)任务二:发展一个监视器(Monitor)二、构造一个可以验证路由器输出的比较器(Checker)?任务三:发展比较器(Checker)三、运行Driver和Monitor程序,检验Checker能否正确比数 ?任务四:编译和仿真(略)任务五:测试所有端口总结一、构造一个从路.

2022-05-23 11:08:07 1165 3

原创 路科验证V0实验lab2总结

数字IC systermverilog

2022-05-21 17:20:55 1124 2

原创 路科验证V0实验lab1总结

1.总共分三个部分,test.sv router_io.sv router_test_top.sv , router.v是DUT部分1.1 test.sv部分是给出一个复位信号代码如下:program的作用:1)验证程序执行的主要结构和入口2)它提供了一个封装验证程序数据,函数,任务的结构3)它提供了一个语法来指定在Reactive区域中的调度执行使用方法和目的:1)在程序块中,要采用非阻塞赋值语句(<=)对时钟块(clocking block)中的信号做驱动2

2022-05-19 16:13:29 2169 16

原创 Markdown使用指南

Markdown学习标题几级标题就写几个#号加空格加标题内容就可以例如三级标题字体Hello,World!Hello,World!Hello,World!Hello,World!引用选择狂神说Java,走向人生巅峰分割线图片[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFpyojy7-1642560980295)(C:\Users\柿子\OneDrive\图片\图片1.png)]超链接点击跳转到我的博客在写博客引用别人的博客时引用

2022-02-11 11:55:22 279

空空如也

空空如也

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

TA关注的人

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