一开始先来简单讲述下我的个人情况,研一在读,目前C阶段结束,然后想简单记录一下做一生一芯中遇到的困难和想法,以便后人学习。我学习的版本是2306的版本,所以2407我就不做了,2407据说是给大一或者更小年纪的人平滑的学习一生一芯所用的版本,简单看了看,感觉对于时间紧张的研究生来说有点没必要。我并不会Markdown,所以可能博客写的会很丑,后面慢慢学应该会好看点,前面先别喷我。本人的github主页:https://github.com/yuweijie-20030124/ysyx-workbench

所用的系统:Windows10上使用WSL2的Ubuntu22.04,并且用vscode进行远程连接。

预学习阶段其实当时还是过了很久的,可能也得将近一年吧,然后完成C也用了两个月,所以之前东西可能忘了,多多包涵。

一、如何科学的提问:这个其实就是告诉你如何高效的寻求他人帮助,很简单,这里不再赘述。

二、Linux系统安装和使用:对于linux初学者和并不想那么折腾的人来说,我的建议是使用Ubuntu,下载东西直接用sudo apt install下载即可,只要找到合适的源。所以现在选择要么就是虚拟机,要么就是wsl,我的选择是wsl,可以根据你电脑的内存大小来进行选择。我电脑只有512G,之前使用过Linux,所以选择了wsl,wsl的优点就是运行速度快,缺点就是没有图形化界面。虚拟机优点就是有图形化界面,缺点就是内存占比会比较大,运行速度会慢一点,但是对于现代电脑来说也不会慢到哪里去了,看你电脑内存吧。

三、C语言:纯看教程,这个我觉得还挺重要的,因为后面nemu和C阶段都会涉及大量的C语言知识,你看不懂nemu如何运行你就写不了NPC了,所以其实还是非常重要。2407有两个章节要求学C,我的建议是没啥必要,没必要吧太多时间花费在C语言上,你可以先去看nemu是如何跑起来,如何执行一条指令的去一边学C一边用C,不会了再去前面看教程,效率会高一点,这里针对的是时间比较短的同学来说,如果你0基础或者大一那我建议你可以老老实实按照他的要求来,你们的时间还好多呢。

四、搭建verilator仿真环境:前期就是简单写一个让你仿真与门的一个建议testbench,等到C阶段,你自己写出你的RTL代码后要把这个RTL代码放到你类似NEMU的仿真环境下去跑,此时verilator就很重要了,会大量使用DPI-C功能,等你C就知道了,这里不赘述,总之预学习会先告诉你需要学什么,后面慢慢学精通就可以完成任务了。

来简单讲述下Verilator,首先我们来看官方手册的定义:

官方手册连接:https://verilator.org/guide/latest/overview.html

The Verilator package converts Verilog 1 and SystemVerilog 2 hardware description language (HDL) designs into a C++ or SystemC model that, after compiling, can be executed. Verilator is not a traditional simulator but a compiler.

翻译过来就是会将硬件描述语言转换为C++或者SystemC语言,编译之后会生成可执行文件,以此来达到仿真的行为,由此可见他是一个编译器,而非模拟器。

①运行示例:照抄这里的C++ Example即可

仿真代码:

点击查看代码
#include "Vour.h"
#include "verilated.h"
int main(int argc, char** argv) {
VerilatedContext* contextp = new VerilatedContext;
contextp->commandArgs(argc, argv);
Vour* top = new Vour{contextp};
while (!contextp->gotFinish()) { top->eval(); }
delete top;
delete contextp;
return 0;
}

.V文件代码:

点击查看代码
  module our;
initial begin $display("Hello World"); $finish; end
endmodule

别忘了更新环境变量

之后输入

verilator --cc --exe --build -j 0 -Wall sim_main.cpp our.v

上述操作没错的话就会生成一个build文件,其中会有一个可执行文件,运行它就会打印hello world出来。

一生一芯学习记录(一):简单介绍 + Verilator + Nvboard的更多相关文章

  1. Mahout学习之Mahout简单介绍、安装、配置、入门程序測试

    一.Mahout简单介绍 查了Mahout的中文意思--驭象的人,再看看Mahout的logo,好吧,想和小黄象happy地玩耍,得顺便陪陪这位驭象人耍耍了... 附logo: (就是他,骑在象头上的 ...

  2. Springboot学习记录1--概念介绍以及环境搭建

    摘要:springboot学习记录,环境搭建: 官方文档地址:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/ht ...

  3. salesforce lightning零基础学习(一) lightning简单介绍以及org开启lightning

    lightning对于开发salesforce人员来说并不陌生,即使没有做过lightning开发,这个名字肯定也是耳熟能详.原来的博客基本都是基于classic基于配置以及开发,后期博客会以ligh ...

  4. ZooKeeper学习之-Zookeeper简单介绍(一)

    一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同 ...

  5. SQLServer存储过程和触发器学习记录及简单例子

     一.存储过程 存储过程即为能完成特定功能的一组SQL语句集.如果需要对查出的多条数据进行操作的话,这里需要理解游标(CURSOR)的概念,对于oracle有for each row命令,可以不用游标 ...

  6. 2018/1/8 学习汇总,kettle简单介绍,集合遍历方式的选择及原理,防止表单重复提交的后台解决方案

    昨天因为当前这个二次开发项目的接近尾声,要求我们将生产环境数据库里的数据迁移到现在新的数据库来,但老数据库里是sqlserver而新数据库则是ORACLE,不仅仅面对着数据库数据类型结构不一致的问题, ...

  7. 轻松学习JavaScript十八:DOM编程学习之DOM简单介绍

    一DOM概述 DOM(文档对象模型)是HTML和XML的应用程序接口(API).DOM将把整个页面规划成由节点层级构成的文档. DOM描绘了一个层次化的节点树,执行开发者加入,移除和改动页面的某一部分 ...

  8. 1.Rabbitmq学习记录《本质介绍,协议AMQP分析》

    1.RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现. RabbitMQ的优势-: 除了Qpid,RabbitMQ是唯一一个实现了AMQP ...

  9. Spring学习记录2——简单了解Spring容器工作机制

    简单的了解Spring容器内部工作机制 Spring的AbstractApplicationContext是ApplicationContext的抽象实现类,该抽象类的refresh()方法定义了Sp ...

  10. Tensorflow学习教程------softmax简单介绍

    做机器学习的同志们应该对这个都不陌生,这里简单举个例子.一般来说,使用softmax函数来将神经元输出的数值映射到0到1之间,这样神经元输出的值就变为了一个概率值. 公式和例子如下图 公式和例子如下图

随机推荐

  1. html背景图片居中

    * { margin: 0; padding: 0 } .box { width: 100%; height: 1728px; border: 1px solid rgba(0, 128, 0, 1) ...

  2. sql注入绕过某waf

    简单布尔判断 直接输入and 1=1拦截 使用mysql黑魔法 and{a 1=1} and{a 1=2}不拦截 本地mysql测试语句正常执行 简单延时判断 and sleep(1) 简单测试后在( ...

  3. C#中录制带有声音的视频并保存下来,使用OpenCVSharp和NAudio库或者是Accord.Net

    using OpenCvSharp; using NAudio.Wave; // 定义视频和音频的参数 int fps = 30; Size videoSize = new Size(640, 480 ...

  4. 学习spring cloud记录8-nacos环境隔离nasespace

    前言 nameSpace为最外层隔离,包括多个group,group包括多个service/data.namespace可以完成生产环境和开发环境这种隔离. 设置nameSpace 查看目前nacos ...

  5. PyCharm新建项目中无法调用Anaconda3中的包

    最近为了做一个新的Python项目,就在PyCharm上新建了一个项目,结果发现以前引入的包竟然在新项目中报错,提示没有发现这个包,因为我用的是Anaconda3来管理我的第三方包,所以就首先查看了A ...

  6. Ansys

    简介 Ansys 使用 explore (爆炸)功能分离 装配体,然后自己手动生成接触面 采用摩擦 image

  7. Markdown常用emoji表情

    .emoji { width: 45px } #emojilist { margin: 0 auto; text-align: center } #emojilist li { float: left ...

  8. Restcloud ETL开箱即用-永久免费

    2022年4月18日,国内领先的数据集成企业RestCloud发布了全新的ETL社区版本. RestCloud ETL社区版是一款完全国产化自主研发创新的全WEB化.开箱即用.永久免费的数据集成工具, ...

  9. POLIR-Society-Organization-Politics-Self-Health : Mental{Love:SelfLove自爱+Esteem自强+StopWorrying停止焦虑} + Physical:{ BestState最佳状态+Care保持健康+TimeManagement时间管理}

    0. Self-Love: Mental Health Self-Confidence: 自信 Self-Esteem: 自尊 self-Reliance: 自立 Self-Improvement: ...

  10. SciTech-BigDataAIML-CV+CG-Digital Image Processing-编辑与合成RGBA图片与视频:RGB图片转换成RGBA:增加Alpha Mask(透明遮罩, 即Alpha Channel透明度通道)

    层层堆叠RGBA图片层就可实时修改图片与视频流 用AI自动生成RGBA格式的PNG图片:一层层堆叠. 这也是Adobe Photoshop的Mask原理? https://learnopencv.co ...