Systemverilog interface与clocking定义的问题
interface bus_A (input clk);//定义interface的外部接口
logic [15:0] data;
logic write;
modport test (input data, output write);
modport dut (output data, input write);
endinterface
interface bus_B (input clk);//定义interface的外部接口
logic [8:1] cmd;
logic enable;
modport test (input enable);
modport dut (output enable);
endinterface
program test( bus_A.testa, bus_B.test b );//例化interface分别为a,b
clocking cd1 @(posedge a.clk);(声明时钟块,其中的信号是此时钟域里的同步信号)
input a.data;
output a.write;
inout state = top.cpu.state;
endclocking
clocking cd2 @(posedge b.clk);
input #2 output #4psb.cmd;// ?(这一句是什么意思?有谁能给我解释一下吗?)
input b.enable;
endclocking
initialbegin
// program begins here
...
// user can access cd1.a.data , cd2.b.cmd , etc…
end
endprogram
The testmodule can be instantiated and connected as before:
module top;
logic phi1, phi2;
bus_A a(phi1);
bus_B b(phi2);
test main( a, b );
cpu cpu1( a );
mem mem1( b );
endmodule
红色的部分是我不太明白的,有谁能给我点启发吗?谢谢。
输入输出采样点。
能不能简单给我解释一下?psb是什么意思?
整句的意思是两个周期采样input,再过四个周期采样output?
谢谢!
input #2 output #4psb.cmd;
input #2 output #4psb.cmd;
这是设置输入输出歪斜(skews)的,#2和#4不是代表周期,是timescale中设置的时间单位;
代表采样和驱动的时间。
4psb.cmd是不是4ps b.cmd?是的话可以理解了
对的,原句就是“input #2 output #4ps cmd=b.cmd”