|
发表于 2018-8-18 14:15:32
|
显示全部楼层
首先,always里,因为是non-blocking,display显示的值是改变之前的值,也就是posedge/negedge时刻的值。所以posedge的值显示的是正确的。但是nededge时pout应该为1,这里却还是0。我很好奇waveform长什么样。
我在edaplayground上做了实验,用vcs和cadence得到一样的结果,甚至icarus也一样
module:
// Code your design here
module test(
input clk,
input d1, // always 1
input d2, // always 0
output reg p);
always @(posedge clk) begin
p <= d1;
$display("posedge: p=%0d, d1=%0d", p, d1);
end
always @(negedge clk)begin
p <= d2;
$display("negedge: p=%0d, d2=%0d", p, d2);
end
endmodule
结果:
negedge: p=x, d2=0
posedge: p=0, d1=1
negedge: p=1, d2=0
posedge: p=0, d1=1
negedge: p=1, d2=0
posedge: p=0, d1=1
negedge: p=1, d2=0
posedge: p=0, d1=1
negedge: p=1, d2=0 |
|