一个vcs编译仿真的MK脚本

news/2025/3/1 0:09:04/文章来源:https://www.cnblogs.com/yingchi/p/18744377

摘要

该脚本由DS生成,实用性有待检验,仅供参考。

# Makefile for VCS compilation and Verdi simulation with testcase control# 基础配置
VCS          := vcs
VERDI       := verdi
TOP_MODULE  ?= top_module      # 默认顶层模块(可通过命令行覆盖)
TEST        ?= default_test    # 默认测试用例名称
SRC_DIR     := src
INC_DIR     := include
BUILD_DIR  := build
LOG_DIR    := log
WAVE_DIR   := waves
TB_DIR     := testbench# 路径配置
SIMV       := $(BUILD_DIR)/simv.$(TEST)
FSDB_FILE  := $(WAVE_DIR)/waves_$(TEST).fsdb
COMP_LOG   := $(LOG_DIR)/compile_$(TEST).log
SIM_LOG    := $(LOG_DIR)/sim_$(TEST).log# 编译选项
VCS_BASE_OPTS := -full64 -sverilog +v2k -debug_access+all -lca -kdb
VCS_EXTRA_OPTS ?=              # 额外编译选项(命令行覆盖)
VCS_OPTS := $(VCS_BASE_OPTS) \-top $(TOP_MODULE) \+define+TESTNAME=$(TEST) \-o $(SIMV) \$(VCS_EXTRA_OPTS)# 仿真选项
SIM_BASE_OPTS := +fsdb+autoflush +fsdb+parallel=on
SIM_EXTRA_OPTS ?=              # 额外仿真选项(命令行覆盖)
SIM_OPTS := $(SIM_BASE_OPTS) \+TESTNAME=$(TEST) \+FSDB_NAME=$(FSDB_FILE) \$(SIM_EXTRA_OPTS)# 文件收集
SRC_FILES  := $(wildcard $(SRC_DIR)/*.v $(SRC_DIR)/*.sv)
TB_FILES   := $(wildcard $(TB_DIR)/*.sv)
INC_FILES  := $(addprefix -I ,$(INC_DIR))# 伪目标
.PHONY: all compile run verdi clean help# 默认目标
all: compile run# 编译规则
compile: $(BUILD_DIR) $(LOG_DIR)$(VCS) $(VCS_OPTS) \$(INC_FILES) \$(SRC_FILES) \$(TB_FILES) \-l $(COMP_LOG)@echo "Compilation log: $(COMP_LOG)"# 运行仿真
run: $(WAVE_DIR)$(SIMV) $(SIM_OPTS) -l $(SIM_LOG)@echo "Simulation log: $(SIM_LOG)"@echo "Waveform file: $(FSDB_FILE)"# 查看波形
verdi:$(VERDI) \-ssf $(FSDB_FILE) \-top $(TOP_MODULE) \-nologo &# 目录创建
$(BUILD_DIR) $(LOG_DIR) $(WAVE_DIR):mkdir -p $@# 清理
clean:rm -rf $(BUILD_DIR) $(LOG_DIR) $(WAVE_DIR)rm -rf csrc simv.daidir ucli.key *.fsdb *.log# 帮助信息
help:@echo "VCS/Verdi项目管理Makefile"@echo "可用命令:"@echo "  make compile       - 编译项目 (TEST=testname VCS_EXTRA_OPTS=...)"@echo "  make run           - 运行仿真 (TEST=testname SIM_EXTRA_OPTS=...)"@echo "  make verdi         - 查看波形 (TEST=testname)"@echo "  make all           - 编译并运行"@echo "  make clean         - 清理项目"@echo ""@echo "高级控制:"@echo "  TEST=test_case1    - 指定测试用例名称"@echo "  TOP_MODULE=mytop   - 指定顶层模块"@echo "  VCS_EXTRA_OPTS=...- 添加额外编译选项"@echo "  SIM_EXTRA_OPTS=...- 添加额外仿真选项"@echo ""@echo "示例:"@echo "  make compile TEST=smoke_test VCS_EXTRA_OPTS='-timescale=1ns/1ps'"@echo "  make run TEST=smoke_test SIM_EXTRA_OPTS='+ntb_random_seed=123'"@echo "  make verdi TEST=smoke_test"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891403.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强大数定律与弱大数定律的区别

先来讲一下弱大数定律吧,这个比较好理解 弱大数定律的标准形式是这样的: \[\forall \epsilon>0,\underset{n\rightarrow\infty}{\lim}P(|\bar{X}_n-\mu|<\epsilon)=1 \]这里注意的是我们的极限符号是包含概率的,我们按照数列极限的定义将其写开: \[\forall \epsilon&…

分布式锁—1.原理算法和使用建议

大纲 1.Redis分布式锁的8大问题 2.Redis的RedLock算法分析 3.基于Redis和zk的分布式锁实现原理 4.Redis分布式锁的问题以及使用建议1.Redis分布式锁的8大问题 (1)非原子操作(set+lua) (2)忘了释放锁(手动+超时) (3)释放了其他线程的锁(lua+唯一值) (4)加锁失败的处理(自旋+睡眠…

理解Rust引用及其生命周期标识(上)

写在前面 作为Rust开发者,你是否还没有完全理解引用及其生命周期?是否处于教程一看就会,但在实际开发过程中不知所措?本文将由浅入深,手把手教你彻底理解Rust引用与生命周期。 关于本文的理解门槛 本文主要面向的是已经基本上了解过Rust这门语言,对引用以及生命周期(及其…

TCP/IP协议栈相关知识

为什么提出TCP/IP参考模型OSI参考模型比较复杂TCP和IP两大协议在网络上广泛使用 三种参考模型如今用的最多的是TCP/IP五层模型,而OSI七层模型更多用于学习。 TCP/IP常见协议要了解协议对应的传输层端口号,因为计算机是通过端口号分辨所使用的是那种协议。 应用层要了解常见协…

Vulkan环境配置 | vscode+msvc 解决方案

Vulkan环境配置 | vscode+msvc 解决方案 前言 如果作为Windows 11侠的你是一个vscode爱好者,凑巧电脑上还安装有Visual Studio,这个时候你突然想配置一个Vulkan开发环境。作为minimalist的你可不希望在电脑上安装任何额外的组件,那么这篇安装指南一定适合你。 准备工作 你需…

mysql索引原理简单说明

本次使用的是mysql5.7.17 首先说下索引中的组合索引,即多个字段组合的索引就叫做组合索引,但是什么时候会生效,什么时候会失效,我不是很清楚 首先建个表造点数据看下情况,CREATE TABLE `bank` (`id` INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT 主键,`bank_end` VARCHAR…

Vulnhub-Troll-1靶机-ftp匿名登录+流量包分析+hydra爆破+ssh登录脚本提权

一、靶机搭建 选择扫描虚拟机选择路径即可二、信息收集 扫ip 靶机ip:192.168.108.144扫开放端口 开放了ftp服务扫版本服务信息信息如下 21/tcp open ftp vsftpd 3.0.2 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0) 80/tcp open …

八、(了解即可)MyBatis懒加载(或者叫延迟加载)

八、(了解即可)MyBatis懒加载(或者叫延迟加载)@目录八、懒加载(了解即可)8.1 为啥需要懒加载?8.2 懒加载是什么?8.3 开启方式8.4 既然fetchType可以控制懒加载那么我仅仅配置fetchType不配置全局的可以吗?8.5 aggressiveLazyLoading是做什么么的?8.6 注意点8.7 案例验证懒加…

基于惯性加权PSO优化的目标函数最小值求解matlab仿真

1.程序功能描述基于惯性加权PSO优化的目标函数最小值求解matlab仿真。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 (完整程序运行后无水印) 3.核心程序yfits = []; % 主循环开始 for iter =1: Miteryfit = zeros(Npop,1); % 初始化函数值数组% 更新粒子速度…

题解:at_abc391_e Hierarchical Majority Vote

对于一个长度为 \(3^n\) 的 01 字符串 \(B = B_1B_2\dots B_{3^n}\),定义一种操作获得长度为 \(3^{n-1}\) 的 01 字符串 \(C = C_1C_2\dots C_{3^{n-1}}\):对于 \(i = 1,2,\dots,3^{n-1}\),令 \(C_i\) 为 \(B_{3i}\)、\(B_{3i-1}\)、\(B_{3i-2}\) 中出现次数最多的字符。现给…

解决VScode设置ctrl+,被占用

关闭启用更多系统热键设置可以用OpenArk找找