Veloce 之 Getting Started

简介: Veloce 之所以能够加速仿真,原因是Veloce把DUT(Design Under Test) 和 TB(TestBench) 一起综合成实际的电路,然后下载到Veloce硬件中,在硬件上跑,所以是比软件仿真快得多。 那么怎样才能把Veloce用起来,让它来加速我们的仿真呢?

Veloce 之所以能够加速仿真,原因是Veloce把DUT(Design Under Test) 和 TB(TestBench) 一起综合成实际的电路,然后下载到Veloce硬件中,在硬件上跑,所以是比软件仿真快得多。 那么怎样才能把Veloce用起来,让它来加速我们的仿真呢? 首先需要软件环境和硬件环境都setup起来,这里说的软件环境是指vleoce需要的license等环境变量设置;硬件环境是指Veloce 机器已经安装好,并且有对应的服务器供我们保存数据,编译代码;然后就是按照Veloce Emulation Flow 编译出正确的database下载到Velcoe中就可以run起来了。

1 Veloce Emulation Flow

主要步骤如下:

image.png

1.1 创建veloce.config 文件

veloce.config 文件顾名思义就是veloce的config文件,这个是必不可少,里面的内容是对veloce analysis/compile/runtime 的一些控制选项。其中有些option是必须的,否则veloce是跑不起来的。例如:

image.png

1.2 Analyze

Velcoe对DUT+TB 文件进行基本的语义分析

1.3. Compile

Veloce对DUT+TB 进行编译,综合生成可以下载到veloce中的文件

1.4 Compile HVL 部分

主要是对C/C++ 代码部分的编译

1.5 Run

将编译好的数据下载到Veloce硬件中,进行emulation

1.6 Debug

根据emulation 结果,进行debug。 通常可以通过log和波形来debug。而波形debug可以分为xwave 和fullup 两种波形生成方式。xwave波形生成速度快,但是需要在编译前指定要dump信号的hierachy,只有指定的信号才是可见的。fullup波形无需编译前指定信号hierachy,全部信号波形可见,但是dump速度慢。

实际应用中,可以先用xwave大概确定出现bug的仿真时间点,然后再用fullup,将全部信号dump出来进行调试。

2 Veloce 流程控制

2.1 Makefile

Veloce 的流程如上,我们可以通过Makefile来轻松的实现这个流程控制。所以,Veloce config option是用veloce.confg 文件来配置,Veloce emulation flow 用Makefile来实现

3 Veloce 生成数据

有了Veloce的配置文件,再加上Makefile 的流程控制,我们就可以将DUT+TB 编译成可以在Veloce上跑的数据了。在编译和跑的过程中veloce会生成很多log和report,主要部分如下:

3.1 veloce.log

Veloce编译和跑的过程生成的log文件,会放到当前目录下的veloce.log文件夹下,这个文件夹是veloce自己创建的,用户只需查看里面的log即可

3.2 veloce.med

Velcoe 编译的结果,会放到当前目录下的veloce.med 文件夹下,这个文件夹是veloce自己创建的。

3.3 velcoe.wave

Velcoe 跑的过程,dump出来的波形文件会放到当前目录下的veloce.wave 文件夹下,这个文件夹是veloce自己创建的。

3.4 电路面积和时序

Veloce 的面积报告: veloce.med/velsyn.out/velsyn.report 中查看MACROS 数目(一个AVB板16个MACROS)。 Veloce的时序报告: veloce.log/compile_velgs_0.log 中查看实际跑到的频率

原文作者:grady
点击查看原文

相关文章
|
编解码 芯片 UED
高性能SoC FPGA原型验证系列——综述
本系列博文将结合自己在FPGA原型验证方面的工作经验,先从总体上探讨FPGA原型验证的优势和挑战,然后介绍市面常见的FPGA原型平台并分析各自的优缺点,随后重点介绍平头哥高性能SoC使用的FPGA原型平台,后续还会就FPGA原型中的关键技术进一步展开讨论,并给出自己的一些经验和技巧总结,希望通过系列博文能带给读者关于FPGA原型验证一个系统的认识。当然,我更希望参与FPGA原型平台工作的同学能够一起切磋技艺,为平台建设出谋划策,快速迭代我们的平台,让我们一起打造更加Smart的FPGA原型平台.
高性能SoC FPGA原型验证系列——综述
|
资源调度 PyTorch 调度
多任务高斯过程数学原理和Pytorch实现示例
本文探讨了如何使用高斯过程扩展到多任务场景,强调了多任务高斯过程(MTGP)在处理相关输出时的优势。通过独立多任务GP、内在模型(ICM)和线性模型(LMC)的核心区域化方法,MTGP能够捕捉任务间的依赖关系,提高泛化能力。ICM和LMC通过引入核心区域化矩阵来学习任务间的共享结构。在PyTorch中,使用GPyTorch库展示了如何实现ICM模型,包括噪声建模和训练过程。实验比较了MTGP与独立GP,显示了MTGP在预测性能上的提升。
471 7
|
算法 SDN C++
以太网帧FCS校验:CRC32的三种实现
这篇文章讨论了CRC32校验码的三种实现方法,用于检测网络通信中的数据错误。首先介绍了基础的按位计算方法,虽然直观但效率低。接着,文章提出了使用非翻转查找表和翻转查找表的快速计算方法,后者在性能上更优。文中提供了C++代码示例,展示如何生成和使用这些查找表。最后,指出在实际应用中,应根据性能需求选择合适的方法。
|
安全 Ubuntu 测试技术
l4re Getting started
l4re Getting started
833 0
|
Ubuntu Unix Linux
在Linux中,Unix和Linux之间的关系是什么?
在Linux中,Unix和Linux之间的关系是什么?
|
Ubuntu 安全 网络协议
|
编译器 API C语言
芯片验证 | 理解SystemVerilog DPI并不难
芯片验证 | 理解SystemVerilog DPI并不难
1630 0
|
安全 物联网 数据安全/隐私保护
深入理解AMBA总线协议(AXI总结篇)
深入理解AMBA总线协议(AXI总结篇)
2566 1
|
数据库管理
【AXI】解读AXI协议乱序机制
【AXI】解读AXI协议乱序机制
【AXI】解读AXI协议乱序机制