首页 > 其他分享 >日常学习(4)verilator、Makefile、bash

日常学习(4)verilator、Makefile、bash

时间:2022-08-21 01:11:07浏览次数:111  
标签:bin Vour Makefile blog https net verilator bash

Verilator使用

https://blog.csdn.net/daturasee/article/details/124488821
https://github.com/verilator/verilator

our.v

module our;
    initial begin $display("Hello World"); $finish; end
endmodule

sim_main.cpp

#include "Vour.h"
#include "verilated.h"
int main(int argc, char** argv, char** env) {
    Verilated::commandArgs(argc, argv);
    Vour* top = new Vour;
    while (!Verilated::gotFinish())
    {
        top->eval();
    }
    delete top;
    exit(0);
}

Makefile

make命令中的-C,切换了工作目录

def:
        verilator -Wall --cc our.v --exe sim_main.cpp
        make -j -C obj_dir -f Vour.mk Vour
run:
        ./obj_dir/Vour

输出

Hello World
- our.v:2: Verilog $finish

说明

Verilator 会将翻译得到的一系列文件输出到obj_dir文件夹下(默认)。Makefile第二行。
对生成的C++一源代码进行编译。Makefile第三行
执行生成的可执行文件。
调用 eval() 方法来评估模型。

Makefile

通配

\(@: --目标文件 \)^:--所有的依赖文件
$<:--第一个依赖文件。
%:Make命令允许对文件名,进行类似正则运算的匹配,主要用到的匹配符是%

赋值

https://blog.csdn.net/b876144622/article/details/80372161
?= 表示如果该变量没有被赋值,则赋予等号后的值。
“=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用”=”进行赋值,变量的值是整个makefile中最后被指定的值。
”:=”就表示直接赋值,赋予当前位置的值。

vpath与VPATH

跟我一起写Makefile:https://seisman.github.io/how-to-write-makefile/rules.html#id5
VPATH 是Makefile 中的一种特殊变量,使用时需要指定文件的路径;
vpath 是关键字,按照模式搜索,也可以说成是选择搜索。

标准错误输出

https://blog.csdn.net/zhaominpro/article/details/82630528
image

>log 2>&1
是把错误也从2定向到1里面。等同于&>log
log里包括了正确的和错误的内容

include

Makefile的包括头文件的方法

定义代码块和传递参数

\((1)、\)(2)含义
执行shell脚本的call函数传递的参数。

define aaa
echo $(1)
endef

default:
        $(call aaa,123123)

效果
echo 123123
123123

!/usr/bin/env xxx

https://blog.csdn.net/flyconley/article/details/117405007
在linux的一些bash的脚本,需在开头一行指定脚本的解释程序,如:
#!/usr/bin/env bash
#!/usr/bin/env python 等等
这样写的意义是:
通过/usr/bin/env 运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中;
通过/usr/bin/env 运行程序另一个好处是,它会根据你的环境寻找并运行默认的版本,提供灵活性。

history在不同终端的同步

http://t.zoukankan.com/ljs05-p-7374707.html
使用-r -w
image

bash的declare

https://www.runoob.com/linux/linux-comm-declare.html
变量声明

# declare -i ab //声明整数型变量
# ab=56 //改变变量内容
# echo $ab //显示变量内容

wait等待后台进程结束后继续执行

https://blog.csdn.net/myzrl/article/details/119376894

#!/bin/bash
for ((i=0;i<5;i++))
do
{
sleep 3;echo a
} &
done
wait

打开5个子进程并行,运行只需要3秒。

1 >&- 关闭标准输出

https://blog.csdn.net/rav009/article/details/78873788

>&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;
<&n 标准输入复制自文件描述符 n;
<&- 关闭标准输入(键盘);
>&- 关闭标准输出;
n<&- 表示将 n 号输入关闭;
n>&- 表示将 n 号输出关闭;

exec 1>outfilename  # 打开文件outfilename作为stdout。
exec 2>errfilename  # 打开文件errfilename作为 stderr。
exec 0<&- # 关闭 标准输入。
exec 1>&- # 关闭 标准输出。
exec 2>&- # 关闭 错误输出。

文件描述符前必须有个 &, 否则2>1就变成 标准错误输出 到 一个名为 1的文件了

标签:bin,Vour,Makefile,blog,https,net,verilator,bash
From: https://www.cnblogs.com/bai2022/p/16609203.html

相关文章

  • 5、HTB - Bashed Writeup
    开始,第一步一、信息搜集nmap扫描:nmap-sV-v10.10.10.68只发现了一个80端口,是Apache2.4.18版本nmap再扫描一下看下有什么漏洞:nmap--script=vuln-p80-v10.10.10.......
  • 【鸟哥 Linux 10.4】Linux Bash Shell 操作环境(包含通配符相关内容)
    【鸟哥Linux10.4】LinuxBashShell操作环境(包含通配符相关内容)Linux命令的路径搜寻顺序当我们在linux终端输入一行命令,系统是怎么直到我们要执行的是什么呢?其实系......
  • Bash: array contains element
     functioncontainsElement(){localn=$##numberofargumentslocalvalue=${!n}#lastofargumentsecho"${@:2}"echo"${@:0}"......
  • macOS change default shell from zsh to bash All In One
    macOSchangedefaultshellfromzshtobashAllInOne$cat/etc/shells#Listofacceptableshellsforchpass(1).#Ftpdwillnotallow......
  • Bash Perl Tcl syntax diff
    BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[......
  • Makefile入门
    1.Makefile引入简单编译C文件时一般用的gcc:gcc-otesta.cb.c。但是当项目变得十分庞大时,逐个文件编译,效率极低。这时候必须引入Makefile作为编译管理。当项目设计诸......