在建用例时,可能存在多路用同一个bus读写寄存器的情形,这个时候可能会出现在某个时刻多个线程同时调用write_reg的情形,这个时候我们使用semaphore,可以很好的规避dereference depth 0报错,比如:
semaphore sem;
sem = new(1);
task write32(bit[31:0]addr bit[31:0]data);
sem.get(1);
write_reg(addr,data);
sem.put(1);
endtask
在建用例时,可能存在多路用同一个bus读写寄存器的情形,这个时候可能会出现在某个时刻多个线程同时调用write_reg的情形,这个时候我们使用semaphore,可以很好的规避dereference depth 0报错,比如:
semaphore sem;
sem = new(1);
task write32(bit[31:0]addr bit[31:0]data);
sem.get(1);
write_reg(addr,data);
sem.put(1);
endtask