Hardware interview practice
Prove an arbiter avoids deadlock and livelock
For a two-requester arbiter, distinguish deadlock from livelock and write formal checks that prove requests make bounded progress under a hold-until-grant environment contract.
Reviewed example
Work through one case
Input
both requests stay asserted under hold-until-grant; two-requester round-robin starts with requester0 priorityExpected output
grants=01 then10; mutual exclusion and grant-implies-request hold; each request is served within two cyclesThe finite round-robin bound proves persistent work cannot deadlock or livelock under the stated environment assumption.
What to cover
Requirements
- Deadlock means the controller becomes stuck with pending work and no grant; livelock means it keeps changing state but never completes service.
- Assume a requester holds req until granted, or state another fairness assumption explicitly.
- Assert mutual exclusion, grant-implies-request, and a finite service bound for each persistent request.
- Make reset exempt from liveness obligations and choose a bound justified by the arbitration policy.
