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.