FPGA/IC学习总结

一些基本概念

VCS:编译型Verilog模拟器

RTL:

RTL全称为 Register Transfer Level,是指寄存器传输级别。在数字电路设计中,RTL是一种常用的设计风格,它描述数字电路中各个模块之间的数据传输和状态转移。RTL设计以寄存器和组合逻辑电路为基础,通过对这些电路的连线及输入输出延迟的计算,来实现整个系统的功能。

在RTL设计中,每个模块被描述为一个黑盒子,该模块的输入和输出信号被定义为接口。以此为基础,设计者可以将不同的模块组合在一起,实现完整的电路。每个模块都有一组寄存器,用于存储和传输数据。这些寄存器按照时钟信号进行同步,以确保电路的正确性和稳定性。

由于RTL设计采用静态结构,理论上可以实现非常高的时钟频率。同时,由于模块化设计使得电路可重用性更强,方便验证和维护。因此,在数字电路设计中,RTL设计已经成为一种常用的设计风格。

需要注意的是,RTL设计中并不直接表示物理元件,而是表示元件的逻辑行为。实际物理实现可以通过语法转换和综合工具完成。

SystemVerilog:

SystemVerilog是一种硬件描述语言(HDL),被广泛用于硬件设计、验证和仿真。它扩展了Verilog HDL,并添加了一些额外的功能和语法,使其更适合于大规模的设计和验证。

SystemVerilog提供了以下主要功能:

  1. 模块化设计:可以使用模块来组织硬件设计,并通过层次化结构实现复杂的电路设计。

  2. 数据类型和变量:SystemVerilog引入了新的数据类型,如bit、logic、integer、real、struct和union等,可以灵活地定义和操作数据。

  3. 面向对象编程:支持面向对象编程的特性,如类、对象、继承和多态等,可以实现更结构化和可重用的代码。

  4. 时序建模:SystemVerilog提供了用于描述时序行为和同步逻辑的关键字和构造,如always、posedge、negedge、fork-join和disable等。

  5. 断言和验证:引入了断言语句(assertions)和约束语句(constraints),用于设计验证、约束和属性检查等。

  6. 接口和通信:SystemVerilog引入了接口(interface)的概念,使得模块之间可以进行更灵活的通信和互联。

  7. 仿真控制:提供了一些仿真控制语句和系统函数,用于控制仿真过程、读取文件、打印信息等。

SystemVerilog广泛应用于芯片设计、FPGA开发和验证等领域。它提供了强大的硬件建模和验证能力,可以用于从小规模集成电路到复杂的系统级设计的开发。

在terminal中输入:

which vcs

VCS(Verification and Control System)工具提供了命令行界面,用于执行与硬件验证相关的各种任务。以下是一些常用的VCS命令:

  1. vcs:这是主要的命令,用于编译和仿真设计。它接受源文件(RTL设计、测试平台等)作为输入,并生成仿真可执行文件。

  2. vlogan:该命令用于将Verilog、SystemVerilog或VHDL源文件编译为相应的中间表示形式(IR)。通常在vcs命令之前使用,用于编译设计文件。

  3. vcsmx:该命令用于编译混合语言仿真环境,通过将Verilog、SystemVerilog或VHDL设计与C/C++/SystemC模型结合起来。

  4. vcs -debug <选项>:该命令用于在运行时启用调试选项运行仿真。它允许对设计和测试平台进行交互式调试。

  5. vcs -gui:该命令启动VCS的图形用户界面(GUI),提供一个可视化环境,用于交互式分析波形、设置断点和调试仿真。

  6. vcs -R -full64:该命令运行仿真并自动执行测试平台。"-R"标志启用仿真的自动执行,而"-full64"标志启用64位仿真模式。

  7. vcs -l <日志文件>:该命令将控制台输出重定向到指定的日志文件,以供后续分析和查看。

  8. vcs -coverage <选项>:该命令在仿真过程中启用代码覆盖分析,可以测量测试平台对设计代码的覆盖率。

acroread vcsmx_ug.pdf即可打开vcs的工具手册

在terminal中输入:vcs -help>vcs.help(将手册的内容导入到另一个文件中方便查阅)

vi vcs.help

在linux terminal中输入dve即可启动GUI界面

问题1:如何验证一个32位加法器?(随机化策略)

穷举法:2^32×2^32=2^64ns > 500年

systemverilog验证平台中通过仿真命令传递随机seed方法

(1)首先修改makefile脚本,通过plusargs_save方法传递参数

SEED = $(shell date+%s) # 将日期转换为秒数
​
./simv +plusargs_save +seed=$(SEED) # ./simv 是要运行一个名为 simv 的可执行文件。+plusargs_save 是一个命令行参数,将种子seed和激励stimulus_n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anton_wzd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值