2.1.2 -3【Makefile&VCS仿真、关注的波形数据流】

Makefile 结构与VCS仿真启动方式

Makefile结构

  • 理解成变量和命令部分
    在这里插入图片描述

  • $TB :由第1行的 TB 替换

comp

  • vlogan : 对 verilog 文件做一个分析

  • -kdb : 为了便于编译的内容, 既能用 VCS(2018版本,默认能 dve ( dve -full64 & ) 界面打开 , VCS是总工具的统称 , dve 是鉴于为了表达 VCS 编译的内容、结果 的一个前段界面。 2019版本之后 dve界面 优先级下降, 2019之后的VCS 默认打开 verfi。 用dve跑仿真速度快,占内存小) 窗口

  • -full64 : 机器是64位

  • -sverilog : 编译的文件按 sv 类型编译

  • -timecsale=1ps/1ps : 任何的时序都需要添加时间单位,用来标定仿真时间 。 在SV中 可以不用再模块外定义 timecsale ,可以在编译的时候统一指定 timecsale

  • -nc : no check ,不检查设计的一部分内容

  • -l : 编译的时候,不但把编译的日志、内容、结果 在窗口打印出来 , 而且写入 comp.log 文件中

elab:comp

  • 在2016版本之前,做elabration 时 , comp 是把每个模块独立编译到库里面, elab 要把所有模块、目标链接起来 生成一个目标可执行文件,后缀名 .simv ,只有生成一个可执行文件才能跑仿真。 这个命令需要 vcs 才能达成

  • elab:comp 依赖关系,执行 elab 之前会先做 comp

  • -top : 编译哪个顶层

  • -o :生成可执行文件

  • -debug_all : 不但要把仿真跑起来,在跑仿真的过程中 希望看到更多变量的内容(类, 对象的变量,数组,队列里面的内容,如果不添加 -debug_all 这个选项就看不到 ,默认为了性能不会添加)

在这里插入图片描述

  • -debug_access+all :在 2018 版本之后 它更建议用这个选项

有几种方式可以把 .simv调用起来? 一共 2种方式

    1. run (后台模式 batch) 和 rung (前段模式) 都是用dve界面 。
    1. runvd :verdi 启动
  • run 的替换 ./$(TB).simv -l run.log -sml +ntb_random_seed= $ (SEED),

  • 运行 ,simv 文件 生成 run.log文件

  • -sml : smart log 到 verdi 就了解了,有一些帮助

  • ntb_random_seed:随机种子

make run

在这里插入图片描述
不会自动结束仿真, 要 ctrl + c 退出 ,会出现 ucli% :命令界面,输入 run 会继续跑仿真
在这里插入图片描述

make rung &

  • 加了一个 gui 选项 ,默认 dve 界面跑 。 后面会讲结构大概什么样 ,看一些什么东西来完成
    在这里插入图片描述

make runvd &

&:当前的终端窗口不在被程序占用,程序后台运行,可以继续敲命令

在这里插入图片描述

Makefile.mti :启动questa 仿真器

git pull : 抓最新文件夹,

VCS 编译可以分成2种情况:

  • 3 步编译仿真法:先做 comp (把文件逐一给它),在做 elab , 再做 run
  • 2 步编译仿真法:把 comp , elab, 放到一个仿真步骤里面

第一行是tb4, 如果想编译tb1.sv,不想在 makefile 文本里修改 TB = tb1,那么在命令行输入 make comp TB=tb1

如果想编译 tb1.v 那么要将makefile 中的 $(TB).sv 更改为 $(TB).v

VCS 在仿真中需要关注的波形和数据流

执行: make comp TB=tb1 ,生成 tb1.simv 。 因为 elab 的时候 执行了 : -o $(TB).simv 。 接着 make rung TB=tb1 & (还要替换 TB=tb1 )

  • -top:编译哪个顶层 , tb1.sv 里面 module 名是 tb1,
  • 顶层在这里插入图片描述

首先把 dut 的波形加进来,可以保存波形文件

  • dve 命令行输入 :dump -add /* (保存所有波形)
  • run 1us

在这里插入图片描述
红色是 x 信号, x信号是输入的,为什么输入的时候有 x 信号 ,tb 里面为什么有 x 信号,这些信号是怎么变成确定信号的? 由于激励的修改造成的。

设计的输出也有 x ,为什么有 x ,设计输出的确定信号是怎么变化进来的 , 为什么遇到 clk 变成稳定了 。 ch0_margin_o 表示 fifo 的余量, 将数据送到了 mcdt_data_o 的输出。

输入信号能不能改成连续的? 并行的? 可以通过 SV 的特性并行发送数据

波形文件里将 tb2_ref 改成 tb4_ref
:1,$s;tb2_ref;tb4_ref;gc

lab1 讲的是怎样把仿真调起来,要看的是什么,关注设计的边界,边界激励怎么来,输出是由哪些输入信号得来的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值