热度 1| ||
上一篇日志中有针对激励的构造做简单的介绍,对于在SV/UVM平台下,通常采用如下的示例方式:
for ( int i = 0; i < data_size; i++ ) begin
@(posedge vif.clk);
vif.valid <= 1'b1;
vif.data <= data_q[i];
end
通过关键词posedge等待clk上升沿,通过for循环在每个时钟上升沿去驱动interface的data和valid信号。
Cocotb平台也实现了相似的功能,如下图所示:
Edge是等待信号的双沿;RisingEdge是等待信号的上升沿;FallingEdge是等待信号的下降沿;ClockCycles是等待多次信号的上升沿。
以RisingEdge的使用为例:
line58通过RisingEdge采集clk的上升沿,line62 await到clk的上升沿后采集signal的数值,通过line63的.value属性来完成signal数值的采集。进而完成后续的处理及比对操作。
内容如有错误还请各位指正,欢迎各位读者交流经验。邮箱:xiaochuan7206043@163.com