[临时]sv:interface个人理解

    xiaoxiao2021-12-14  19

    interface个人推荐写法问题1为什么clk和rstn要写在括号里问题2如果clk和rstn写在括号里那么在drivermonitor里怎样使用这两个变量

    下述纯属个人笔记;具体还需要验证思想。

    interface个人推荐写法

    interface ubus_if(input clk,input rstn); logic [31:0] data; logic valid; logic write; logic read; logic [31:0] addr; logic ready; ..... //driver、monitor、sequencer里都会用到这组interface; //所以推荐使用三个时钟块和三个modport划分。 //这样,就可以区分input/output端口方向;同样可以定义相关功能的测试时钟域。 clocking endclocking endinterface

    问题1:为什么clk和rstn要写在括号里?

    个人理解: 1. clk和rstn,一般只在testbench里定义驱动。所以不需要写在interface代码段里,可以减少不必要的接口层次。 2. clk和rstn,一般只在testbench里定义驱动。interface的clk和rstn,只会做input,很固定。

    问题2:如果clk和rstn写在括号里,那么在driver、monitor里,怎样使用这两个变量?

    个人理解: 1. clk和rstn,虽然跟interface的其它端口,定义的位置不一样。但是在仿真环境里,同样具有interface实例化.clk和interface实例化.rstn的信号。 2. interface实例化.clk不建议使用,要用时钟块的名称替换。这样的好处,是避免发生仿真的竞争冒险现象。这样,就不需要写#0.01这样的小延迟在驱动代码里了。 3. rstn一般在testbench里驱动,为什么不是rstn释放后,再调用run_test()?回答:run_test()是按照phase执行的,有严格的顺序;rstn一般在driver的main_phase里做判断。rstn释放,一般在testbench里驱动。

    转载请注明原文地址: https://ju.6miu.com/read-962715.html

    最新回复(0)