UVM中ubus例子的一个问题
时间:10-02
整理:3721RD
点击:
UVM自带的ubus例子中,关于驱动ubus_if.rw有一点疑惑。
ubus_if中sig_data是双向信号,写操作时由master驱动,读操作时由slave驱动。为此,增加了两个信号,rw和sig_data_out。
assign sig_data = rw ? sig_data_out : 8'bz;
当rw为1时,表示sig_data作为输出使用;当rw为0时,表示sig_data作为输入使用。
但是,master和slave通过ubus_if连接,他们驱动rw是有冲突的。
写操作:master输出数据,rw驱动为1;slave输入数据,rw驱动为0;
读操作:master输入数据,rw驱动为0;slave输出数据,rw驱动为1;
那么在仿真时,驱动同一个信号到不同的值会有什么结果?不可预测吗?
关键是仿真结果是PASS的,不能理解。
希望大神指点一下。谢谢!
ubus_if中sig_data是双向信号,写操作时由master驱动,读操作时由slave驱动。为此,增加了两个信号,rw和sig_data_out。
assign sig_data = rw ? sig_data_out : 8'bz;
当rw为1时,表示sig_data作为输出使用;当rw为0时,表示sig_data作为输入使用。
但是,master和slave通过ubus_if连接,他们驱动rw是有冲突的。
写操作:master输出数据,rw驱动为1;slave输入数据,rw驱动为0;
读操作:master输入数据,rw驱动为0;slave输出数据,rw驱动为1;
那么在仿真时,驱动同一个信号到不同的值会有什么结果?不可预测吗?
关键是仿真结果是PASS的,不能理解。
希望大神指点一下。谢谢!
驱动同一个信号到不同的值会有什么结果?
要看你的信号定义成什么类型的, WAND, WOR, WIRE, TRI1...
在这个例子中,ubus_if.rw被定义成logic类型的。