- 博客(24)
- 资源 (1)
- 收藏
- 关注

原创 SGMII协议解析
什么是SGMII?先说什么是GMII/MII。 MII是ethernet协议里面MAC层和PHY层之间的接口标准。MII是4bits的数据位宽,支持10/100M的数据传输。GMII前面G表示Gigabit,代表支持1000M的传输速率。需要说明的是MII是GMII的子集,也即是说支持GMII标准的设备,同时支持10/100/1000M三种模式。SGMII前面的S代表Serial,即串行的意思。前面说了MII的数据位宽是4bits,GMII是8bits,SGMII则是1bit。需要澄清的是SGMII是
2021-07-22 22:36:04
61584
3

原创 [学习笔记:处理器设计]寄存器重命名
寄存器重命名(Register Rename)重命名缓存类型(Rename Buffer Type)merged architectural and rename register file每个物理寄存器处于4状态中的一个,4个状态如下:available: uncommitted stateAR(architectural register): 作为指令集寄存器RB(rena...
2019-11-01 17:18:45
3890
原创 背板以太网总结
以太网协议规范十分的繁多。按照传输介质来分,主要有三种场景:基于双绞线的、基于光纤的、基于背板的。本文主要介绍背板相关的以太网协议。
2022-10-12 23:45:47
3918
原创 verilog 中的 log2
对数的作用log2是指2的对数,对于二进制的计算机系统来说非常有用。比如,10bits的地址线,可寻址的地址空间为2^10。那么反过来对于1024深的地址空间,需要多少bits的地址线?需要用log2(depth)来计算。如何求对数system verilog 有系统函数$clog2可以实现2的对数。但是系统函数使用上有一定的缺陷。比如1的对数,数学上 log2(1)=0 没有问题。但是工程上就有问题了。仍然拿memory举例,深度为1的memory,地址位宽仍然需要1bits(不存在0bit的信号)
2022-05-19 11:25:23
9221
原创 Mac M1 安装 Ruby
在M1芯片的Macbook安装Ruby会遇到很多问题。比如,用ruby-install会失败,rbenv install 2.7.2也会失败。我结合网上的一些方法把成功的流程梳理一下,供参考。第一步:安装gpgbrew install gpg第二部:配置keygpg --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB第三步:安装rvmcurl -L ht
2022-05-12 23:19:44
3880
1
原创 【安装boost库】
安装boost./bootstrap.sh --prefix=/xx/yy./b2 install./bjam install --build-type=complete --layout=tagged
2022-03-02 17:04:14
122
原创 Linux 5.13版本发布,准备支持Apple M1
在6月27日,Linus Torvalds宣布Linux5.13版本内核发布。新版本在一些著名的平台上,如ARM、MIPS、RISC-V上有显著更新。同时也包括了一些准备工作,为支持苹果的M1芯片所做的更新。详细特性可以参考(https://www.cnx-software.com/2021/06/28/linux-5-13-release-notable-changes-arm-mips-and-risc-v-architectures/)...
2021-07-08 23:15:41
211
原创 MacOS M1 安装riscv toolchain
基于 Rosetta2.arch --x86_64 /usr/local/bin/brew tap riscv/riscvarch --x86_64 /usr/local/bin/brew install riscv-tools然后添加环境变量:PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin
2021-07-01 23:14:52
2232
4
原创 verilog中慎用对genvar变量的位操作
对一一种generate coding style仿真时发现一个奇怪的现象。这很有可能是VCS的bug,不过尽量在语法上规避这个问题。
2021-04-25 19:13:34
2778
原创 如何将fsdb波形转成csv等可读性文本格式
如何将fsdb波形转成csv等可读性文本格式工具用处工具利用verdi的fsdbreport,verdi命令如下:~% fsdbreport test.fsdb -bt 1000ns -et 1100ns -s "top/abc[31:0]" -csv -of h -o test.csv解释一下:fsdbreport是verdi的一个工具,可以分析fsdb波形。其中参数bt是波形的开始时间;et是波形的结束时间;s是导出的信号名,可以用通配符匹配;of是输出的数据格式,h为16进制;o为导出的
2021-01-20 18:33:41
5359
原创 升级WSL到WSL2
升级WSL到WSL2WSL2依赖操作流程可能遇到的问题WSL2windows 10 build 18917开始使用WSL2,WSL2与WSL1相比,支持的feature更多:依赖如果要升级到WSL2,需要满足一下几个条件:Windows 10 build 18917 或更高版本;启用“虚拟机平台”可选组件;在bios上启用虚拟化;操作流程首先打开PowerShellwsl --list --verbos会看到如下:可以看到已安装的wsl版本情况。如果想升级wsl为wsl2
2020-11-09 19:50:53
2441
原创 画波形图的工具
在数字电路设计中,常常会看波形图,通过波形图来表达时序关系。波形图也是设计者直接的标准语言。比如:A模块的开发者会用波形图来表示接口的输入信号或者输出信号的时序关系。B模块,对应A模块的驱动或者接收者会根据接口时序做相应的数据传输控制。那么波形图就称为数字电路的设计人员必备的技能。那么,画波形图有哪些工具呢?首先通用绘图工具都可以胜任,比如viso等。但是确实相应的库,只能一根线一根线地画上去,非常费力。今天,我推荐一个轻量级的波形图绘制软件wavedrom。用它可以直接用json文件描述波形。比如
2020-07-05 23:32:14
6634
原创 SystemVerilog中的program和module有什么区别?
SystemVerilog中的program和module有什么区别?在传统的verilog验证环境中,测试激励也往往封装在module里。测试module用来产生激励,发送到DUT待测实例的端口上,也可以接收DUT的输出,并做结果比对。在systemverilog中,多了一个program,作用和module有些类似,是专门用来编写测试bfm/monitor的。按照 IEEE Std 1800-2012 § 3.4 & § 24的描述,program和module有几点不同:cannot
2020-05-30 00:12:59
3494
原创 如何在verilog仿真中生成fsdb波形?
如何在verilog仿真中生成fsdb波形?verilog仿真波形有多种格式,其中标准格式为VCD,可以作为跨工具的数据交换格式。但是VCD本身非压缩格式,通常比较大。对于纯数字仿真来说可以有其他的波形文件格式作为替代。比如Synopsys的VPD格式,还有FSDB。fsdb是verdi工具(被synopsys收购)的波形格式。而verdi的易用性收到广大数字工程师的青睐,本文介绍一下如何导出fsdb波形。以vcs+verilog为例,其他工具类似。方法一:在verilog文件中在测试文件中(一般是顶
2020-05-24 10:16:51
7106
2
原创 如何通过DPI-C连接Verilog/SystemVerilog和C/C++
1. 在Verilog中调用C函数首先:准备好纯C/C++代码。比如:#include <iostream> int helloFromCpp(int a) { // 0 is 0 // 1 is 1 // 2 is Z // 3 is X int a_int = a; cout << "(C++) a is " << a_int << endl; return 0; }其次:在verilog调用C函数module
2020-05-09 13:28:07
5801
原创 修复linux下的bash脚本
Bash 文件从window下copy到linux下会出现如下提示:Bash script and /bin/bash^M: bad interpreter: No such file or directory表示window下的换行符和linux下的不兼容。运行如下脚本修复:sed -i -e ‘s/\r$//’ scriptname.sh...
2020-02-09 10:16:56
424
转载 C++: “undefined reference to” templated class function
In case you have a project where you use a templated class that is split in its own header (.h) and source (.cpp) files, if you compile the class, into an object file (.o), separately from the code th...
2019-11-29 15:19:33
335
原创 SystemC 中自定义接口数据结构
如果在port(sc_in, sc_out)中使用自定义的数据结构,如struct xxx。还必须要重载4个函数:operator =operator <<operator ==sc_trace详细说明参考:https://www.doulos.com/knowhow/systemc/faq/#q1%C2%A0...
2019-11-21 17:20:06
779
原创 c++ friend function的重载与继承
class 中通过定义virtual function来实现多态。派生类可以继承/重载父类的函数定义。如果父类中的function是friend类型的,子类无法继承改函数。可以同过friend function调用成员函数方式来实现集成。参考:https://isocpp.org/wiki/faq/friends#friendship-not-inherited-transitivecla...
2019-11-21 17:08:21
631
转载 Install LaTeX on Ubuntu or Debian
Install LaTeX on Ubuntu or Debian1. Open your terminal2. Install TeX Live3. Install Texmaker4. Create your first documentLaTeX is a document markup language. LaTeX is recommended to create technical ...
2019-10-18 10:03:14
240
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人