注意:组合电路不能使用clocking块,组合逻辑信号的变化是立即的,不等待上升沿触发。
为了便于理解clocking块的提前采样、延后驱动,做图一图二对比说明:
仿真代码如下:
`timescale 1ns/1ps;
interface intf;
bit clk;
bit siga;
clocking mon@(posedge clk);
default input #1ns output #1ns;
input siga;
endclocking
endinterface
module tb;
intf if0();
initial forever #5ns if0.clk=!if0.clk;
initial begin
#12ns;
if0.siga=1;
#2.5ns;
if0.siga=0;
#12ns;
if0.siga=1;
#17ns;
if0.siga=0;
#12ns;
if0.siga=1;
#17ns;
if0.siga=0;
end
endmodule
由图一可以看出,1、interface输入输出的sign值不受其他影响。
由于mon是上升沿采样,导致12+1.5=13.5时,mon正在15ns上升沿提前一秒采样,mon.sign采样值为0。
图一
由图二可以看出1、interface输入输出的sign值不受其他影响。
由于mon是上升沿采样,导致12+1.5=13.5时,mon正在15ns上升沿提前一秒采样,mon.sign采样值为1。
图二