- 博客(17)
- 收藏
- 关注
原创 SystemVerilog随机约束
随机约束的正确使用可以提高验证效率,确保测试可重复性,同时支持覆盖率驱动的测试策略。使用固定种子调试问题。使用不同种子扩展覆盖率。结合仿真工具的种子选项和日志功能,优化调试流程。
2025-07-16 13:48:25
888
原创 SystemVerilog Assertions
属性和断言的命名应该清晰且具有意义,能够明确其功能。如果对应property直接命名为pro1,根本无法知道描述的是什么功能。但是如果命名为check_req_ack,则可以清晰知道是在对req和ack进行检测。
2025-07-16 09:56:40
1118
原创 浮点数的四则运算-除法
所以在结果中,会存在最高位为0的情况,需要进行左移,同时指数位-1的操作。但是不会存在溢出的情况。是尾数的二进制表示,我们可以在它的最高位之上,再添加一个隐含的1。由于指数位的表示都增加的偏移值BIAS,那么在计算前,就需要恢复到真实的指数值。符号位为0表示正数,为1表示负数。的形式,即最高位位1,其他位可能是0,也可能是1,具体根据真正的尾数确定。从这里我们可以知道,浮点数的表示,包括了3个部分符号位,指数位和尾数位。由于规格化后的尾数是的取值范围是[1,2),那么就可以知道。0表示正数,1表示负数。
2025-07-03 11:23:06
799
原创 浮点数的四则运算-乘法
从这里我们可以知道,浮点数的表示,包括了3个部分符号位,指数位和尾数位。其表示方式为:其中:S:表示符号位。0表示正数,1表示负数。M:表示尾数。常用形式是。E:表示指数。通常会存在偏移。我们以单精度浮点数位列,则其bit的表示形式如下。
2025-07-02 11:12:32
618
原创 浮点数的四则运算-加法
从这里我们可以知道,浮点数的表示,包括了3个部分符号位,指数位和尾数位。其表示方式为:其中:S:表示符号位。0表示正数,1表示负数。M:表示尾数。常用形式是。E:表示指数。通常会存在偏移。我们以单精度浮点数位列,则其bit的表示形式如下。
2025-06-20 17:00:09
405
原创 浮点数的bit表示
IEEE 754 浮点数由三部分组成:符号位 (Sign)、指数 (Exponent) 和 尾数 (Mantissa/Fraction)。其表示方式为:其中:S:表示符号位。0表示正数,1表示负数。M:表示尾数。常用形式是。E:表示指数。通常会存在偏移。
2025-06-13 09:16:27
1024
原创 寄存器读写控制
基于UVM寄存器模型的寄存器访问非常方便,在验证过程中也很实用。但是在实际的设计过程中,寄存器的访问权限有时候会组合的比较复杂。以常见的访问权限只读(RO),只写(WO),可读可写(RW)为例。最简单的情况就是单一权限。如图所示,3个寄存器都是3个field,且访问权限都比较单一。此时,我们只需要对只读权限发起读操作(当然,可以发起写操作,只是写不会生效;
2025-05-20 13:16:27
798
原创 设计模式三、模板方法模式
模板方法模式的定义如下:定义一个算法的框架,而将一些步骤延迟到子类中。使得子类在不改变算法结构情况下,就可以重新定义该算法的某些特定步骤。#include <iostream>class CarModel{public: //定义存在的基本方法 virtual void start() = 0; virtual void stop() = 0; virtual void alarm() = 0; //定义模板方法 void run
2021-12-21 20:34:35
171
原创 设计模式二、简单工厂,工厂方法和抽象工厂模式
1、简单工厂模式简单工厂模式的特点是只有一个工厂,根据输入的条件不同,实例化不同的类。#include <iostream>class AbstractProduct{public: virtual void doSomething() = 0;};class ProductA : public AbstractProduct{public: virtual void doSomething(){ std::cout << "P
2021-09-30 16:35:50
110
原创 设计模式一、单例模式
单例模式简单来说对于一个类,只有一个实例。优点:只有一个实例,减少了内存的开支;不需要频繁的创建销毁实例,减少了系统消耗;优化了对资源的访问和共享,例如,写一个文件,避免的同时写的问题等。缺点:不利于扩展;可能内部逻辑和职责比较复杂,与单一职责原则有冲突。使用场景:可以用于生成全局唯一id;提供共享访问数据;如果类占用的系统资源多时,由于只有一个实例,可以节省系统资源等。注意事项:单例模式在并发场景下,需要考虑线程安全问题。推荐实现方式:(局部静态变量模式)#include &
2021-09-24 17:11:52
116
原创 6大设计原则小结
目录1.单一职责原则2.里氏替换原则3.依赖倒置原则4.接口隔离原则5.迪米特法则(最少知识原则)6.开闭原则1.单一职责原则一个类有且仅有一个职责(但是职责的定义很广泛,可以根据实际进行细分)。比如,我们需要维护我们的用户信息,则可以分为2个职责:用户信息的存储;用户信息的修改删除等动作。2.里氏替换原则主要有以下几点要求子类必须完全实现父类的方法 子类可以有自己的个性 覆盖或实现父类方法时,输入参数可以放大——子类中重载的方法,参数必须是父类参数的类型或者
2021-09-23 11:28:41
109
原创 C++虚函数表
C++为每个类对象添加一个隐藏成员,这个成员就是虚函数表指针。虚函数表可以理解成一个表格,里面存放了类中的虚函数指针。我们可以通过虚函数表找到需要调用的虚函数。一、存储虚函数表指针位于类存储的最前面4个字节,编译期生成,运行期载入。假设存在A类,则其存储如下:A的虚函数表指针 A的属性a A的属性b …… 而其中A的虚函数表指针指向的内存存储如下:虚函数A::func1地址 虚函数A::func2地址 虚函数A::func3地址 虚函数A::func4地址
2021-09-13 20:18:22
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
3