  It is well-known that the class of lattices generated by Chip Firing games
(CFGs) is strictly included in the class of upper locally distributive lattices
(ULD). However a necessary and sufficient criterion for this class is still an
open question. In this paper we settle this problem by giving such a criterion.
This criterion provides a polynomial-time algorithm for constructing a CFG
which generates a given lattice if such a CFG exists. Going further we solve
the same problem on two other classes of lattices which are generated by CFGs
on the classes of undirected graphs and directed acyclic graphs.
