Verilog强制激励语法

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、可以对信号的某(确定)位、某些(确定)位或拼接的信号,使用force和release赋值;但不能对信号的可变位使用force和release 来赋值。

     5、不能对寄存器类型的信号某位或某些位使用 assign 和deassign 来赋值。

猜你喜欢

转载自www.cnblogs.com/321waiting/p/9050759.html