日常学习(5)verilator、Makefile、bash
2022/8/21 6:24:16
本文主要是介绍日常学习(5)verilator、Makefile、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
>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
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的文件了
这篇关于日常学习(5)verilator、Makefile、bash的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行