对于vcs中initreg选项的理解

在后仿过程中,我们通常会使用initreg选项,在0时刻对dut中没有复位端的reg/bit/int/logic/integer类型变量进行初始化,减少门级仿真时初始化的时间,避免门级仿真x态的传播,导致逻辑行为异常。具体怎么使用呢?说说我最近使用的体会。

vcs仿真可以分为编译和仿真两步。编译阶段,vcs规定了只能加"+vcs+initreg+random"这一个选项,不支持"+vcs+initreg+0"和"+vcs+initreg+1"。仿真阶段,可以三选一。具体什么意思呢?该怎么选呢?我们通过下面的例子来理解一下。

 sram_ecc_error_m_level为reg类型。如果我们在仿真阶段添加了选项"+vcs+initreg+1",即表示在0时刻将sram_ecc_error_m_level赋值为1。

那么是不是三个选项我都能用呢?

这里有一点要强调的是,initreg选项作用的是整个dut(.v)中reg/bit/int/logic/integer类型变量,不管有没有复位端。对于没有复位端的变量,我的理解是三个应该都能用。但是对于有复位端的,初始化值一定要与复位值保持一致,否则可能会导致不能正常复位,比如上图所示的代码,我们在0时刻初始化为1,假设aclk_en=0, aresetn=0;#100ns, aresetn=1。那么我们会看到sram_ecc_error_m_level的值自始至终都是1,不会在复位的时候变成0,因为没有aclk,也等不到aresetn的下降沿。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值