verilog小技巧笔记

很多用法用过也容易忘记,以后在这里记录:
Verilog里div_cnt == {16{1’b1}}是啥意思:16个1赋值给div_cnt

Verilog强制激励语法

  1. 在一个过程块中,可以用两种不同的方式对信号变量或表达式进行连续赋值。
    过程连续赋值往往是不可以综合的,通常用在测试模块中。
    两种方式都有各自配套的命令来停止赋值过程。
    两种不同方式均不允许赋值语句间的时间控制。

  2. assign和deassign 适用于对寄存器类型的信号
    例如:RTL级上的节点或测试模块中在多个地方被赋值的信号进行赋值。

    initial begin

     #10  assign top.dut.fsml.state_reg = `init_state;
    
     #20  deassign  top.dut.fsml.state_reg;
    

    end

  3. force 和 release 用于寄存器类型和网络连接类型(例如:门级扫描寄存器的输出)的强制赋值,强制改写其它地方的赋值。

    initial begin

      # 10 force top.dut.counter.scan_reg.q=0;
    
      # 20 release top.dut.counter.scan_reg.q;
    

    end

在以上两个例子中,在10到20这个时间段内,网络或寄存器类型的信号被强制赋值,而别处对该变量的赋值均无效。

注意:

 1、force的赋值优先级高于assign。
 2、如果先使用assign,再使用force对同一信号赋值,则信号的值为force所赋的值,当执行release后,则信号的值为assign所赋的值。
 3、如果用force对同一个信号赋了几次值,再执行release,则所有赋的值均不再存在。
 4、可以对信号的某(确定)位、某些(确定)位或拼接的信
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值