svinterface⾼级⽤法
1、interface:
interface 中的信号必须声明为logic,因为reg只允许在always块中赋值,wire⾄允许assign赋值,bit是两态,logic是四态的,且可以阻塞赋值也可以⾮阻塞赋值。
最新电影推荐1、clocking block
clocking规定了信号之间的时序关系。
牛津小学英语1a教案
// To wait for podge of clock
@busIf.cb_clk;
// To u clocking block signals
busIf.able = 1;
2、modport
modport明确了站在不同的⾓度对应信号的输⼊输出⽅向。
3. parametered interface
bigotinterface myBus #(parameter D_WIDTH=31) (input clk);
logic [D_WIDTH-1:0] data;
wagonlogic enable;
endinterface
2、interface中定义task和function
task read_memory(input logic [7:0] raddr, output logic [7:0] data);
@(podge clk);
ren=1'b0;
addr=raddr;
@(negedge mrdy);
@(podge clk);
data=m2c_data;
soon什么意思
ren=1'b1;
stationary
endtask
接⼝可以直接调⽤task,来完成信号的赋值。
drenched什么意思3、interface中定义always块
8bit到10bit的转换有专门的算法encode_8b10b完成。通常来说,可以在driver中完成这种转换,并将串⾏的数据驱动到接⼝上:
==================================================================================================由于8b10b转换的动作适⽤于任意要驱动的数据,换⾔之,这是⼀个“always”的动作,因此可以在interface中使⽤always语句:
相应的,数据在driver中可以只驱动到interface的并⾏接⼝上即可:
================================================================================================== 4、interface中定义initial 块
interface clk_rst_if();
离开的英文logic clk;
logic rstn;
initial begin
clk <= 0;
forever begin
#5ns clk <= !clk;
end
end
initial beginchair怎么读
#20ns ;
rstn <= 1;
#40ns ;
rstn <= 0;
#20ns ;
victoria acostarstn <= 1;
end
endinterface
5、使⽤interface替代driver部分功能
上⾯的uvm实战中的代码⽤interface代替driver部分功能的举例说明
第⼀个好处是可以让driver从底层繁杂的数据处理中解脱出来,更加专注于处理⾼层数据。
第⼆个好处是有更多的数据出现在interface中,这会对调试起到很⼤的帮助。 interface可以查看信号的波形,但是uvm component中很难查看信号波形。