If PC support(InclPC), InclDBG, and MSITrans are disabled, ddtp.iommu_mode == 2 and dc.tc.pdtv == 1, RTL is not throwing an error instead it is updating the ddtc with the wrong device context.
Below is the counter example where we can see ddt_walk_o goes high at cycle 3, in the 4th cycle dc.tc.pdtv goes high and after loading the device context completely in the 8th cycle i_rv_iommu_ddtc.update_i goes high which shouldn't be high at that time instead it should give an error with cause_code == transaction_type_disallowed(cause == 260) because when InclPC == 0, dc.tc.pdtv must be 0 too but it is 1 here.
If PC support(InclPC), InclDBG, and MSITrans are disabled, ddtp.iommu_mode == 2 and dc.tc.pdtv == 1, RTL is not throwing an error instead it is updating the ddtc with the wrong device context.
Below is the counter example where we can see ddt_walk_o goes high at cycle 3, in the 4th cycle dc.tc.pdtv goes high and after loading the device context completely in the 8th cycle i_rv_iommu_ddtc.update_i goes high which shouldn't be high at that time instead it should give an error with cause_code == transaction_type_disallowed(cause == 260) because when InclPC == 0, dc.tc.pdtv must be 0 too but it is 1 here.![image](https://github.com/zero-day-labs/riscv-iommu/assets/140173282/8de1f587-9907-4800-9a3a-834853f97af7)