不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

随笔分类 -  SV语法

1

system verilog
SV语法 / 数据类型 / 类型转换
摘要:资料来源: (1)sv绿皮书; (2)公众号-芯片学堂; (3)硅芯思见:【113】SystemVerilog中不同句柄之间的动态类型转换 (qq.com) 1. 隐式转换 (1)隐式和显示类型转换的区分通常在于有没有使用到系统函数或者操作符。 (2)隐式类型转换在SystemVerilog编程中经 阅读全文

posted @ 2022-10-06 22:02 皮皮祥 阅读(741) 评论(0) 推荐(0) 编辑

SV语法 / 数据类型 / byte bit logic
摘要:例子: unsigned' 和 $unsigned : //都是最高位补零,等式左值 byte signed_vec = 8'b1000_0000;bit [8:0] result_vec;logic [7:0] logic_vec = 8'b1000_0000;bit [7:0] bit_vec 阅读全文

posted @ 2022-10-06 14:46 皮皮祥 阅读(704) 评论(0) 推荐(0) 编辑

线程的控制与同步
摘要:线程的控制与同步 1. 线程的使用 1.1. 什么是线程 ? 1.2. 线程的概念澄清 2. 线程的控制 2.1. fork并行线程语句块 2.2. 等待所有衍生线程 2.3. 停止单个线程 2.4. 停止多个线程 2.5. 停止被多次调用的任务 3. 线程间的通信 3.1. 概述 3.2. eve 阅读全文

posted @ 2022-10-04 23:36 皮皮祥 阅读(83) 评论(0) 推荐(0) 编辑

线程间同步和通信,event semaphore mailbox
摘要:线程间同步和通信,event semaphore mailbox 1. 概述 2. 事件event 3. wait_order() 4. 旗语(semaphore) 5. semaphore::get(); 6. semaphore::try_get() 7. 信箱mailbox 7.1. 信箱的内 阅读全文

posted @ 2022-10-04 23:34 皮皮祥 阅读(231) 评论(0) 推荐(0) 编辑

线程控制 fork
摘要:线程控制 1. 线程控制 1.1. 并行线程 1.2. 一些代码示例 1.2.1. 多个initial并行执行 1.2.2. 单个initial内串行执行 1.2.3. fork...join内并行执行 1.2.4. join_any和join_none 1.2.5. wait fork 1.2.6 阅读全文

posted @ 2022-10-04 23:31 皮皮祥 阅读(114) 评论(0) 推荐(0) 编辑

SV学习(8)——随机约束和分布、约束块控制
摘要:SV学习(8)——随机约束和分布、约束块控制 1. 随即约束和分布 1.1. 为什么需要随机? 1.2. 要随机做什么? 1.3. 声明随机变量的类 1.4. 什么是约束 1.5. 权重分布 1.6. 集合成员和inside运算符 1.7. 条件约束 1.8. 双向约束 2. 约束块控制 2.1. 阅读全文

posted @ 2022-10-04 23:25 皮皮祥 阅读(817) 评论(0) 推荐(0) 编辑

SV学习(7)——包的使用
摘要:1. 包的定义 SV提供了一种在多个module、interface和program中共享parameter、data、type、task、function、class等的方法,即利用package(包)的方法来实现。完整的验证环境会讲不同模块的类定义规整到不同的package中; 讲一簇相关的类组 阅读全文

posted @ 2022-10-04 23:23 皮皮祥 阅读(415) 评论(0) 推荐(0) 编辑

SV学习(6)——类的继承、句柄的使
摘要:SV学习(6)——类的继承、句柄的使用 1. 类的成员访问类型 2. 类的继承 extends 3. 子类索引父类的同名函数 super 4. 成员覆盖 补充一个有趣的代码 5. 句柄的传递 6. 句柄的动态修改 1. 类的成员访问类型 public:如果没有指明访问类型,默认是public,子类和 阅读全文

posted @ 2022-10-04 23:21 皮皮祥 阅读(441) 评论(0) 推荐(0) 编辑

SV学习(5)——类和对象、类的成员
摘要:SV学习(5)——类和对象、类的成员 1. 类和对象概述 2. 声明类并创建对象 3. 赋值和拷贝,深拷贝浅拷贝 4. 对象的销毁 5. 句柄的使用 6. 静态变量 7. 静态方法 8. 验证为什么需要OOP面向对象 9. 一些差别对比 9.1. Verilog的例化和SV class例化的差别: 阅读全文

posted @ 2022-10-04 23:20 皮皮祥 阅读(652) 评论(0) 推荐(0) 编辑

SV学习(4)——数据作用域和类型转换 $cast()
摘要:SV学习(4) 1. 数据作用域 2. 数据类型转换 2.1. 静态类型转换 2.2. 动态类型转换 2.3. 流操作符 1. 数据作用域 在一个静态任务、函数或者块内声明的变量默认情况下具有静态的生命周期并具有本地的作用范围。 Verilog允许将函数和任务声明成自动的(automatic),这使 阅读全文

posted @ 2022-10-04 23:18 皮皮祥 阅读(709) 评论(0) 推荐(0) 编辑

SV学习(3)——接口interface、modport、时钟块clocking
摘要:SV学习(3)——接口interface、modport、时钟块clocking 1. 接口interface 2. modport 3. 时钟块clocking 3.1. 驱动和采用的竞争问题 3.2. clocking待补充.... 链接: interface中的clocking 1. 接口in 阅读全文

posted @ 2022-10-04 23:17 皮皮祥 阅读(1560) 评论(0) 推荐(0) 编辑

SV学习(2)——过程语句、函数和任务、变量声明周期
摘要:SV学习(2)——过程语句、函数和任务 1. 过程语句 1.1. 硬件过程块 1.2. 赋值语句 1.3. 控制语句 1.3.1. for循环 1.3.2. while循循环 1.3.3. do-while循环 1.3.4. repeat循环 1.3.5. foreach循环 2. 函数和任务 2. 阅读全文

posted @ 2022-10-04 23:15 皮皮祥 阅读(1569) 评论(0) 推荐(0) 编辑

SV学习1 数据类型
摘要:SV语法(1)——数据类型 1. 内建数据类型 2. 用户自定义 2. 枚举类型 4. 定宽数组 5. 动态数组 6. 关联数组 7. 队列 8. 字符串 8.1. 非组合型数组(unpacked) 8.2. 组合型数组(packed) 1.8.3. 数组初始化 8.4. 数组赋值 8.5. 数组拷 阅读全文

posted @ 2022-10-04 23:12 皮皮祥 阅读(966) 评论(0) 推荐(0) 编辑

SV中的Interface和Program
摘要:Interface:SV中新定义的接口方式,用来简化接口连接,使用时注意在module或program之外定义interface,然后通过'include来添加进工程。 interface arb_if(input bit clk); //clk信号,一般单独拿出来 logic [1:0]grant 阅读全文

posted @ 2022-10-04 18:40 皮皮祥 阅读(318) 评论(0) 推荐(0) 编辑

SV中program & module
摘要:相同之处: 1.和module相同,program也可以定义0个或多个输入、输出、双向端口。 2.一个program块内部可以包含0个或多个initial块、generate块、specparam语句、连续赋值语句、并发断言、timeunit声明。 3.在program块中数据类型、数据声明、函数和 阅读全文

posted @ 2022-10-04 18:37 皮皮祥 阅读(171) 评论(0) 推荐(0) 编辑

Program Block-systemverilog
摘要:systemverilog中的Program Block与module有些类似,但module是基于硬件思想,Program Block纯粹是为了仿真。如果不熟悉program,可以不用program. The program block serves three basic purposes: » 阅读全文

posted @ 2022-10-04 18:36 皮皮祥 阅读(69) 评论(0) 推荐(0) 编辑

程序块
摘要:Gre*_*reg 10 查看IEEE Std1800-2012§3.4和§24program.有关块的完整描述. 在一个简短的,不完整的摘要中,一个program块: 不能包含always过程,primitive实例,module 实例,interface实例(virtual interface和 阅读全文

posted @ 2022-10-04 18:14 皮皮祥 阅读(45) 评论(0) 推荐(0) 编辑

systemverilog中的静态变量static和动态变量automatic
摘要:本文参考: SystemVerilog静态变量和动态变量_行走的BUG永动机的博客-CSDN博客_systemverilog静态变量和动态变量 systemverilog之Automatic - 腾讯云开发者社区-腾讯云 (tencent.com) https://blog.csdn.net/zha 阅读全文

posted @ 2022-10-04 09:06 皮皮祥 阅读(785) 评论(0) 推荐(0) 编辑

关于仿真软件在跑systemverilog的时候,是如果通过将HDL代码分成5个区域来编译
摘要:关于仿真软件在跑systemverilog的时候,是如果通过将HDL代码分成5个区域来编译,从而实现用软件模拟硬件的运行结果的。 首先是基础概念,systemverilog标准划分了仿真软件的5个跑仿真所要执行的5个区域,说白了就是规定了软件在跑代码的时候要把代码分成5类,放到5个堆栈里面分别跑,这 阅读全文

posted @ 2022-10-03 21:06 皮皮祥 阅读(68) 评论(0) 推荐(0) 编辑

system verilog 之assert
摘要:##variable: 正常情况写 ##5,##后跟常数数字 需要用到变量的延时可以这么写 property time_wait; int cnt=limit; @(posedge clk) $rose(a) |-> (cnt>0, cnt--)[*] ##1 cnt==0; endproperty 阅读全文

posted @ 2022-06-22 18:01 皮皮祥 阅读(398) 评论(0) 推荐(0) 编辑

1