seabeam / yuu_ahb

UVM AHB VIP
MIT License
75 stars 18 forks source link

ahb slave is_out judgment lack of condition #5

Closed LitchiKnight closed 4 months ago

LitchiKnight commented 4 months ago

Hi, 我在使用ahb slave功能时发现了一个问题,想请教一下。在ahb_slave_driver中的is_out()函数在driver每次驱动DUT前会进行判断,只有ahb的address超出所配置的maps的范围是会给req.response[0]赋ERROR。但是,由于response是random的,当response random成ERROR,但是此时address没有超出maps的范围,这里的判断条件无法将req.response[0]由ERROR修改成OKAY,进而导致ahb slave无法写入或读出数据。这里是否需要加上else分支,当address在maps范围内时,将OKAY赋给req.response[0]。

屏幕截图 2024-05-09 194619
seabeam commented 4 months ago

hi. 在你的环境里response是在哪里random的?是自己写的sequence? 能否提供你的复现case?

LitchiKnight commented 4 months ago

我的sequence是直接派生自yuu_ahb_slave_sequence_base的。我最近突然看到你在yuu_slave_rsp_seqence中随机transaction的时候使用with对response进行了约束response[0] == OKAY;,而我的sequence中没有这样做。或许我也需要在我的sequence中加上对response的约束。

屏幕截图 2024-05-20 172952
seabeam commented 4 months ago

我的sequence是直接派生自yuu_ahb_slave_sequence_base的。我最近突然看到你在yuu_slave_rsp_seqence中随机transaction的时候使用with对response进行了约束response[0] == OKAY;,而我的sequence中没有这样做。或许我也需要在我的sequence中加上对response的约束。 屏幕截图 2024-05-20 172952

是的。这里可以从两方面看,首先目前版本的VIP并没有支持非常多的错误场景,而address out of range被强制认为是error。另外关于非address out of range但错误的场景,在test中并没有测试,因此不能保证driver一定支持。如果确实不支持,则需要自行派生driver重写drive_bus()以实现相应功能了。

那么我就close掉这个issue了,有其他问题请再联系