自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 问答 (1)
  • 收藏
  • 关注

原创 Verilator入门11:仿真玄铁测试case

使用verilator仿真玄铁测试case。

2024-04-03 23:15:06 380 1

原创 std::exit功能介绍和析构函数调用

std::exit功能介绍和析构函数调用,哪些析构函数会被调用。

2024-04-01 22:51:44 251

原创 C++实现直接使用初始化列表来实现成员变量初始化

在C++类初始化过程中,我们有的时候希望直接通过参数列表初始化所有的参数,或者像vector一样,我们直接通过vector<int> a{1,2,3,4,5}的方式初始化,那么这种方式是如何实现的呢?就这么简单,当然对于={1,2,3}这种操作也是类似的,只需要重载运算符同样这么传参就可以了。

2024-03-18 23:17:02 164

原创 g++和Makefile传递宏定义

g++和Makefile如何传递宏定义参数。

2024-03-07 15:56:37 202

原创 处理器分支预测(Branch predictor)原理和实现

处理器分支预测(Branch predictor)原理和实现,branch predictor算法实现。

2024-02-25 19:27:41 841

原创 C++类通过模板成员函数实现任意类实例的函数调用

C++类通过模板成员函数实现任意类实例的函数调用。

2024-01-04 16:42:07 522

原创 linux输出的重定向无效问题和解决

linux输出的重定无效问题和解决,明明重定向了为何终端还是有输出,本文会详细解决这个问题。

2023-11-22 12:03:47 1026

原创 C++类成员初始化顺序(声明初始化,初始化列表初始化和构造函数初始化)

C++类成员初始化顺序(声明初始化,初始化列表初始化和构造函数初始化)。

2023-10-24 10:37:38 971

原创 C++中constexpr的用法

简单来说声明为constexpr的函数,那么在编译阶段就能得到其返回值,故编译器可以直接将对应位置的函数调用直接转换为函数的返回值,故其实现了和内联函数一样的功能

2023-09-16 16:47:57 282

原创 C++中std::enable_if和SFINAE介绍

C++中std::enable_if和SFINAE功能和原理介绍。

2023-09-08 16:41:41 845

原创 __builtin_expect, __builtin_unreachable和__builtin_prefetch

__builtin_expect, __builtin_unreachable和__builtin_prefetch用法。

2023-09-06 15:14:39 454

原创 openmpi入门之第一个程序

是默认的通信阈,如果不做其他声明,所有进程都属于这个通信阈,大多数情况下,这已足够用了。一个通信阈内的进程是有序的,每一个进程都有自己唯一的序号,对于有p个进程的通信阈,序号取值为0~p-1,通常我们通过这一序号来决定这个进程负责计算哪一部分任务,是MPI的初始化函数,其会完成所有初始化工作,以备后续MPI库的调用进行处理,该函数需要在调用其他MPI函数之前调用。函数,在MPI中,每一个活动的进程都是某个通信阈中的成员,这里-np 4表示运行时开启了4个进程。函数用来让系统释放分配给MPI的资源。

2023-09-03 22:00:10 256

原创 System Verilog中的packed array和unpacked array

System Verilog中的packed array和unpacked array.

2023-07-25 17:46:36 425

原创 C++不定参数宏定义(#define XXX (...)表示什么意思)

如果遇到#define XXX (...)这样的宏定义,其实表示的是输入参数不定的情况,本节直接给出实例来说明。

2023-07-03 15:30:41 1035

原创 C++20中的协程(Coroutine)功能解析:co_await

C++20 协程的co_await实现

2023-06-25 00:49:47 1663

原创 std::this_thread::yield解析

如果调用std::this_thread::yield函数,当前线程会马上让出当前的CPU时间片,由运行态变为就绪态,但只是说明该线程当前的这次调度运行结束了,该线程会和其他线程一起共同由操作系统调度运行,至于该线程下次什么时候被调度运行,完全取决于系统的调度算法,yield函数并不会影响操作系统对该线程的下一次调度。其实和return效果类似,都是退出,但是对于一个线程来说,在该线程的回调函数调用return函数就会返回,该线程就会结束,而yield并不会,正因为此,yield函数有着特殊的用途。

2023-06-14 00:31:57 574

原创 EDA开源仿真工具verilator入门11: vcd波形文件分析

通过这个简单的例子,可以帮助我们很快的理解vcd波形文件的基本格式。当然还有很多其他的波形文件(fsdb、SHM、VPD等),目前verilator并不支持,如果感兴趣我们后面也可以讨论下,增加相应的内容。我们来看vcd文件的内容,首先会给出层次结构下的所有信号,每有一个新的层次结构都以。表示,且第一个时间戳会保存所有信号的值,之后的时间戳只保存变化的信号值,显然信号的。都是一个时间戳,表示一个新的cycle的开始,每个信号变量通过对应。每一个信号都有一个对应的。都是为了节省空间占用。

2023-06-11 10:59:51 923 1

原创 perf火焰图的使用

可以看到,整个堆栈的调用关系以及耗时都很清楚地能看到。

2023-05-02 10:54:53 224 1

原创 perf record对C++程序耗时进行分析

本节将介绍如何使用perf工具的perf record对C++代码进行性能分析,一切操作都是在ubuntu 20下进行。

2023-05-01 23:11:18 2016

原创 EDA开源仿真工具verilator入门10:verilator 实现vcd波形保存

verilator 实现vcd波形保存。

2023-04-03 23:59:26 593

原创 std::forward功能介绍

之前介绍了移动构造函数和std::move的作用,本小节将基于此介绍相关的std::forward功能。std::forward的作用是:如果参数不是左值引用那么返回右值引用,如果参数是左值引用,不作修改返回,我们将基于move的实例来说明。​

2023-02-13 16:27:16 694 1

原创 EDA开源仿真工具verilator入门9:资料总结和最新版本安装

前面的文章已经对verilator相关功能和流程进行了较详细的介绍,由于最近版本更新较多,并且很多粉丝希望有一个更完整的总结,特别是针对最新版本,本节将基于verilator最新版本,对资料和相关内容进行总结,并介绍一下最新版本的安装。

2023-02-05 01:01:09 732

原创 VsCode执行gdb命令查看指针指向的具体派生类内容

​之前有介绍过如何使用gdb来查看当前指针具体属于哪个派生类以及派生类的具体内容(gdb查看指针内容),那么对于复杂项目的调试,配合VsCode的断点和单步调试功能(VsCode单步调试),如果能够实时查看当前指针指向的所有内存信息,将大大提升debug的效率,本节将介绍如何实现。​

2023-01-19 15:20:19 953

原创 EDA开源仿真工具verilator入门8:verilator 5.0 最新版本仿真玄铁性能对比

verilator最新已经升级到到了5.005,新版本的verilator在功能上更加完善,加入对Semantic Scheduling算法标准的支持,但因此效率肯定会有所损失,本节将接上一节测试最新版本性能变化​

2023-01-16 01:13:17 1391 2

原创 EDA开源仿真工具verilator入门7:使用verilator仿真玄铁

EDA开源仿真工具verilator入门,使用verilator仿真玄铁,加快RISC相关设计开发的迭代速度。

2023-01-08 12:08:03 1357 2

原创 C++地址对齐算法:((x + align -1) & ~(align -1))

C++地址对齐算法:((x + align -1) & ~(align -1))。

2023-01-03 23:56:58 561

原创 C++中的内存对齐问题:alignof和alignas的用法

C++中的内存对齐问题,alignof和alignas的用法讲解。

2023-01-02 12:33:21 1514

原创 C++中this+1的使用

C++中我们有时候会遇到类似this+1这种或者类似this+n的用法,乍一看感觉很是不解,那么通常这种用法是什么作用呢,本节来做介绍。

2023-01-01 23:04:07 260

原创 C++在指定位置内存新建类实例

C++在指定位置内存新建类实例。

2022-12-31 21:57:47 289

原创 gdb如何查看指针指向的是具体基类实例还是派生类实例

GDB如何查看指针指向的是具体基类实例还是派生类实例。

2022-11-10 23:42:55 771

原创 通过typeid打印派生类具体是哪一个

通过typeid打印派生类具体是哪一个

2022-11-09 23:55:16 177

原创 C++17类型std::variant介绍

C++17类型std::variant介绍。

2022-10-25 15:04:13 2162

原创 SystemVerilog开源编译解析工具slang入门2:单步调试

使用VisualStudio对slang进行单步调试。

2022-10-25 00:50:30 719

原创 SystemVerilog开源编译解析工具slang入门1:编译和安装

slang是一个软件库,它提供了用于词法分析、语法分析、类型检查和阐述(elaborate) SystemVerilog代码的各种组件。并且附带了一个可执行工具,可以编译和代码检测(lint)任何SystemVerilog项目,也可以用作综合工具、仿真器、代码检测工具(linters)、代码编辑器和重构工具的前端。

2022-10-17 14:00:19 2773 3

原创 高性能RTL仿真器ESEENT专题2:firrtl编译和安装

高性能RTL仿真器ESEENT专题2:firrtl编译和安装

2022-09-26 01:36:12 654

原创 高性能RTL仿真器ESEENT专题1:安装

高性能RTL仿真器ESEENT专题1:安装

2022-09-23 01:16:18 445

原创 挑战一个人搭建一套完整直播系统6: 直播网页播放的实现

挑战一个人搭建一套完整直播系统6,直播网页的实现,如何通过网页播放直播。

2022-09-22 22:36:46 1382

原创 C++中的trivivally destructible类和is_trivially_destructible函数

C++中的trivivally destructible类和is_trivially_destructible函数介绍。

2022-08-25 17:54:27 481

原创 std::conditional用法

std::conditional用法

2022-08-23 02:27:18 365

原创 Ubuntu20安装gcc11

Ubuntu20安装gcc11

2022-07-28 01:54:36 4527

空空如也

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

TA关注的人

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