The PCI Specification Project
Formal Specification of Interfaces
Goals
With this project, we aimed to write a formal specification of a well-used
interface protocol. Our goals for such a specification are as follows,
PCI
As a case study, we chose PCI because of its relative simplicity and its
popularity.
And as a specification style which can easily be analyzed, we chose the
monitor style.
Results
We have formally specified a subset of the PCI bus protocol in this monitor
style specification. The result is a concise, easily readable specification.
In addition, we have found several problems with the PCI protocol.
Never giving up the bus
The protocol is intended to never allow
any one agent to "hog" the bus and not let other agents use the bus.
However, if an agent asserts "IRDY#" from an idle state of ths bus, there is
no rule forcing that agent to deassert "IRDY#" so that another agent can
start a transaction on ths bus; the agent can forever stay in this state
blocking out other agents.
Changing its mind when it's not supposed to
The current PCI protocol allows the target to change from signaling
"target abort" to "disconnect with data" within the same transaction. Other
combinations of signaling "change of mind"s exist. This
leaves open the question of how a master should react to such confusing
singaling from the target.
There were also other problems such as minor inconsistencies and confusing
ambiguities in the PCI protocol. For example, in section 3.2.4, it is stated
that TRDY# should use the address phase as a turnaround cycle (i.e. no agent
is driving TRDY#), but for a back-to-back transaction,
TRDY# will need to be driven (deasserted) during the
address phase! ( more details).
Publications
"Monitor-Based Formal Specification of PCI", Kanna Shimizu, David L.
Dill, and Alan J. Hu, FMCAD 2000
(PDF,
Postscript,
Bibliography Entry)
Presentation Slides
Here are the presentation slides from the FMCAD
2000 talk on this topic.
Tutorial
A tutorial on the monitor-style specification method we have developed.
- A brief overview of the monitor-style
specification including applications of such a specification.
- How to write the monitor-style specification.
Download
Here is how you can obtain a copy of our formal PCI specification.
- Please read the
Documentation first.
- Here are the
Instructions .
If for some reason, the generator doesn't work, please fetch the main Verilog
monitor file here. The
only difference is, you won't be able to specify the number of agents and
address ranges.
For Advanced Users
For fellow researchers working with PCI,
here
are some other files you might want to see.
Investigators
Kanna Shimizu
Professor David L. Dill
We would very much like feedback on this project. Please send any thoughts,
comments, suggestions to
kannas@ofb.net. If you know of
any protocols which will challenge our method, we really want to know about
them!
Thank you.
Site Index
Last modified : June 20, 2000