Handbook of algorithms for physical design automation part 16 pdf

10 459 0
Handbook of algorithms for physical design automation part 16 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 132 24-9-2008 #25 132 Handbook of Algorithms for Physical Design Automation 7.5.3 NEW INNOVATIONS IN MULTILEVEL PARTITIONING With increasing design sizes, it is becoming increasingly difficult to place an entire design f lat using one processor. A novel partitioning approach [Ma07] is applied to placement such th a t the computing effort is spread across several processors. The approach consists of a rough initial flat placement, a partitioning step, followed by detailed placement within the partition blocks where each block is assigned to its own processor.The novelty of this technique lies in the way the blocks are determined. Normally, an engineering change in one block will affect all other blocks. However, this is not the case if the block boundary is determined by elements such as latches, flip-flops, or fixed objects. Once these objects are identified,block boundariesthat minimizethe number ofnets runningbetween blocks are determined. Finally, detailed placement is applied to blocks, each block assigned to its own processor. 7.6 CONCLUSION This chap ter has presented a historical survey of partitioning and clustering techniques ranging from move-based methods to multilevel techniques to mathematical formulations including quadratic, linear, and integer programming approaches. Multilevel methods have proven to be the partitioning technique of choice in the VLSI community owing to the quality of results they produce with very small ru ntimes. A consequenc e of which is that par titioning is currently viewed as a solved pro blem. However, as problem sizes continue to increase, multilevel partitions may no longer be near optimal. Recent works [Ma07] revisit the partitioning pro blem and offer new solutions for very large-scale netlists. ACKNOWLEDGMENTS I would like to thank my colleagues, especially Ulrich Finkler and Chuck Alpert for giving their comments and suggestions, and James Ma for helpful discussions regarding new innovations in multilevel p artitioning. REFERENCES [ACKM00] C. J. Alpert, A. E. Caldwell, A. B. Kahng, and I. L. Markov, Hypergraph partitioning with fixed vertices, IEEE Transactions on C o mputer-Aided Design of Circuits and Systems 19(2): 267–272, 2000. [AHK96] C. J. Alpert, L. W. Hagen, and A. B. Kahng, A hybrid multilevel/genetic approach for circuit partitioning, Proceedings of the Physical Design Workshop, 1996, Reston, VA, pp. 100–105. [AHK97] C. J. Alpert, J. -H. Huang, and A. B. Kahng, Multilevel circuit partitioning, Proceedings of the ACM Design Automation Conference, Anaheim, CA, 1997, pp. 530–533. [AK93] C. J. Alpert and A. B. Kahng, Geometric embeddings for faster and better multi-way netlist partitioning, Proceedings of the ACM Design Automation Confer ence, Dallas, TX, 1993, pp. 743–748. [AK94] _____ , Multi-way partitioning via spacefilling curves and dynamic programming, Proceedings of the ACM Design Automation Conference, San Diego, C A, 1994, pp. 652–657. [AK95] _____ , Recent directions in netlist partitioning: A survey, Integration: The VLSI Journal 19: 1–813, 1995. [AK96] _____ , A general framework f o r vertex orderings, with applications to circuit c lustering, IEEE Transactions on VLSI Systems 4(2): 240–246, 1996. [AK98] _____ , Multilevel circuit partitioning, IEEE Transactions on Computer-Aided Design of Circuits and Systems 17(8): 655–667, 1998. [AKN + 05] C. J. Alpert, A. B. Kahng, G. -J. Nam, S. Reda, and P. G. Villarrubia, A semi-persistent clustering technique for VLSI circuit placement, Proceedings of the International Symposium on Physical Design, San Francisco, CA, 2005, pp. 200–207. Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 133 24-9-2008 #26 Partitioning and Clustering 133 [AKY99] C. J. Alpert, A. B. Kahng, and S. Z. Yao, Spectral partitioning with multiple eigenvectors, Discrete Applied Mathematics 90(1–3): 3–26, 1999. [Alp96] C. J. Alpert, Multi-way graph and hypergraph partitioning, PhD thesis, University of California, Los Angeles, CA, 1996. [AV93] S. Areibi and A. Vannelli, Advanced search techniques for circuit partitioning, DIMACS Series in Discrete Mathematics and Theor etical Computer Science, American Mathematical Society, Rutgers, NJ, 1993, 77–97. [AY95] C. J. Alpert and S. -Z. Yao, Spectral partitioning: The more eigenvectors, the better, Proceedings of the ACM Design Automation Conference, San Francisco, CA, 1995, pp. 195–200. [Bar82] E. R. Barnes, An algorithm for partitioning the nodes of a graph, SIAM Journal of Algebraic and Discr ete Methods 3(4): 541–550, 1982. [BJ93] T. N. Bui and C. Jones, A heuristic for reducing fill-in in sparse matrix factorization, Proceedings of the Sixth SIAM Conference on Parallel Processing for Scientific Computing, Portsmouth, VA, Vol. 1, 1993, pp. 445–452. [Bop87] R. B. Boppana, Eigenvalues and graph bisection: An average-case analysis, Proceedings of the IEEE Symposium on Foundations of Computer Science, Los Angeles, CA, 1987, pp. 280–285. [BS93] S. T. Barnard and H. D. Simon, A fast multilevel implementation of recursive spectral bisection for partitioning unstructured problems, Proceedings of the Sixth SIAM Conference on Parallel Processing for Scientific Computing, Portsmouth, VA, 1993, pp. 711–718. [CGT95] T. F. Chan, J. R. Gilbert, and S. -H. Teng, Geometric Spectral Partitioning, Technical report, Xerox PARC, 1995. [CL98] J. Cong and S. K. Lim, Multiway partitioning with pairwise movement, Proceedings of the International C onference on Computer-Aided Design, San Jose, CA, 1998, pp. 512–516. [CL00] _____ , Edge separability based circuit clustering with application to circuit partitioning, Asia South Pacific Design Automation Conference, Yokohama, Japan, 2000, pp. 429–434. [CSZ94] P. K. Chan, M. Schlag, and J. Zien, Spectral k-way ratio-cut partitioning, IEEE Transactions on Computer-Aided Design of In tegrated Circuits and Systems 13(9): 1088–1096, 1994. [DD96] S. Dutt and W. Deng, VLSI circuit partitioning by cluster-removal using iterative improvement techniques, Proceedings of the I nternational Conference on Computer-Aided Design, San Jose, CA, 1996, pp. 194–200. [Dem97] J. W. Demmel, Applied Numerical Linear Alg ebra, Philadelphia, PA, SIAM, 1997. [DH73] W. E. Donath and A. J. Hoffman, Lower bounds for the partitioning of graphs, IBM Journal of Resear ch and D evelopment 17(9): 420–425, 1973. [EAV99] H. Etawil, S. Areibi, and A. Vannelli, ARP: A convex optimization based method for global placement, IEEE/ACM, International Conference on Computer Aided Design, San Jose, CA, 1999, pp. 20–24. [FF62] L. R. Ford and D. R. Fulkerson, Flows in Networks, Princeton University Press, Princeton, NJ, 1962, p. 11. [Fie73] M. Fiedler, Algebraic connectivity of graphs, Czechoslovak Mathematics Journal, 23, 298–305, 1973. [FK86] J. Frankle and R. M. Karp, Circuit placements and cost bounds by eigenvector decomposition, Pr oceedings of the International Conference on Computer-Aided Design, Santa Clara, CA, 1986, pp. 414–417. [FM82] C. M. Fiduccia and R. M. Mattheyses, A linear-time heuristic for improving network partitions, Proceedings of the ACM Design Automation Confer ence , Washington D.C., 1982, pp. 175–181. [FRW92] J. Falkner, F. Rendl, and H. Wolkowicz, A Computational Study of Graph Partitioning, Technical Report CORR 92–95, Department of Combinatorics and Optimization, University of Waterloo, August 1992, Waterloo, Ontario, Canada. [GM00] S. Guattery and G. L. Miller, Graph embeddings and Laplacian eigenvectors, SIAM Journal on Matrix Analysis and Applications 22( 3): 703–723, 2000. [ GPS90] J. Garbers, J. Promel, and A. Steger, Finding clusters in VLSI circuits, Proceedings of the International C onference on Computer-Aided Design, Santa Clara, CA, 1990, pp. 520–523. [Hal70] K. M. Hall, An r-dimensional quadratic placement algorithm, Management Science 17(11): 219– 229, 1970. Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 134 24-9-2008 #27 134 Handbook of Algorithms for Physical Design Automation [HHK97] L. Hagen, D. J. -H. Huang, and A. B. Kahng, On implementation choices for iterative improvement partitioning algorithms, IEEE Transactions on Computer-Aided Design of Circuits and Systems 16(10): 1199–1205, 1997. [HK91] L. Hagen and A. B. Kahng, Fast spectral methods for ratio cut partitioning and clustering, Pr oceedings of the International Conference on Computer-Aided Design, Santa Clara, CA, 1991, pp. 10–13. [HK92] _____ , New spectral methods for ratio cut partitioning and clustering, IEEE Transactions on Computer-Aided Design 11(9): 1074–1085, 1992. [HK97] D. J. -H. Huang and A. B. K ahng, Partitioning-based standard-cell global placement with an exact objective function, Proceedings of the International Symposium on Physical Design,Napa Valley, CA, 1997, pp. 18–25. [HL95] B. Hendrickson and R. Leland, A multilevel algorithm for partitioning graphs, Proceedings of the 1995 Supercomputing Conference, Los Alamitos, CA, 1995, pp. 485–500. [HMS03] B. Hu and M. Marek-Sadowska, Fine granularity clustering for large scale placement problems, Pr oceedings of the International Symposium on Physical Design, San Diego, CA, 2003, pp. 67–74. [HMS04] _____ , Fine granularity clustering–based placement, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 23(4): 527–536, 2004. [IWW93] E. Ihler, D. Wagner, and F. Wagner, Modelling hypergraphs by graphs with the same mincut properties, Information Processing Letters 45(4): 171–175, 1993. [JAMS89] D. S. Johnson, C. R. Aragon, L. A. Mcgeoch, and C. Schevon, Optimization by simulated annealing: An experimental evaluation Part I, Graph partitioning, Operations Research 37, 865–892, 1989. [KAKS97] G. Karypis, R. Aggarwal, V. Kumar, and S. Shekhar, Multilevel hypergraph partitioning: Application in VLSI domain, Proceedings of the IEEE/ACM Design Automation Conference, Anaheim, CA, 1997, pp. 526–529. [Kar03] G. Karypis, Multilevel hypergraph partitioning, Multilevel Optimization in VLSICAD,Kluwer Academic Publishers, Boston, MA, 2003. [KGV83] S. Kirkpatrick, C. D. Gelatt, and M. P. Vecchi, Optimization by simulated Annealing, Science 220(4598): 671–680, 1983. [KK95] G. Karypis and V. Kumar, A fast and high quality multilevel scheme for partitioning irregular graphs, Proceedings of the International Conference on Par a llel Processing, Urbana-Champaign, IL, 1995, pp. 113–122. [KK98] _____ , hMETIS: A Hypergraph Partitioning Package, Version 1.5.3, Department of Computer Science/Army HPC Research Center University of Minnesota, Minneapolis, MN, 1998. [KK99] _____ , Multilevel k-way hypergraph partitioning, Proceedings of the IEEE/ACM Design Automation Conference, New Orleans, LA, 1999, pp. 343–348. [KL70] B. W. Kernighan and S. Lin, An efficient heuristic procedure for partitioning graphs, Bell System Technical Journal, 49, 291–307, 1970. [KN91] C. Kring and R.Newton, A cell-replicationapproach tomincut-based circuit partitioning, Proceed- ings of the International Conference on C o mputer-Aided Design, Santa Clara, CA, 1991, pp. 2–5. [Kri84] B. Krishnamurty, An improved min-cut algorithm for partitioning VLSI networks, IEEE Transactions on Computers C-33(5): 438–446, 1984. [Kuc05] D. Kucar, New insights into hypergraph partitioning, PhD thesis, University of Waterloo, Waterloo, Ontario, Canada, 2005. [Len90] T. Lengauer , Combinatorial Algorithms for Integrated Circuit Layout, John Wiley & Sons, New York, 1990. [LLLC9 6 ] J. Li, J. Lilis, L. -T. Liu, and C. -K. Cheng, New spectral linear placement and clustering approach, Proceedings of the ACM Design Automation Conference, 1996, pp. 88–93. [LMS05] Q. Liu and M. Marek-Sadowska, Pre-layout physical connectivity prediction with applications in clustering, placement and logic synthesis, Proceedings of the IEEE International Conference on Computer Design, San Jose, CA, 2005. [Ma07] J. Ma, private communications, 2007. [NW88] G. L. Nemhauser and L. A. Wolsey, Integer and Combinatorial Optimization, John Wiley & Sons, Ne w York, 1988. Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 135 24-9-2008 #28 Partitioning and Clustering 135 [PS98] C. Papadimitriou and K. Steiglitz, Combinatorial Optimization, Dover Publications, Mineola, NY, 1998. [PSL90] A. Pothen, H. D. Simon, and K. P. Liou, Partitioning sparse matrices with eigenvectors of graphs, SIAM Journal on Matrix Analysis and Applications 11(3): 430–452, 1990. [RDJ94] B. M. Riess, K. Doll, and F. M. Johannes, Partitioning very large circuits using analytical placement techniques, Proceedings of the ACM Design Automation Conference, San Diego, CA, 1994, pp. 646–651. [San89] L. A. Sanchis, Multi-way network partitioning, IEEE Transactions on Computers 38(1): 62–81, 1989. [SK72] D. G. Schweikert and B. W. Kernighan, A proper model for the partitioning of electrical circuits, Proceedings of the ACM Design Automation Confer ence , San Diego, CA, 1972, pp. 57–62. [SS95] W. -J. Sun and C. Sechen, Efficient and effective placement for very large circuits, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 14(3): 349–359, 1995. [Ten99] S. H. Teng, Coarsening, Sampling, and Smoothing: Elements of the Multilevel Method, Vol. 105, Springer Verlag, Ne w York, NY, 1999, pp. 247–276. [TK91] R. -S. Tsay and E. S. Kuh, A unified approach to partitioning and placement, IEEE T ransactions on Circuits and Systems 38: 521–533, 1991. [VH90] A. Vannelli and S. W. Hadley, A Gomory–Hu cut tree representation of a netlist partitioning problem, IEEE Transactions on Circuits and Systems 37(9): 1133–1139, 1990. [Wal03] C. Walshaw, An exploration of multilevel combinatorial optimisation, Multilevel Optimization in VLSICAD, Kluwer Academic Publishers, Boston, MA, 2003. [Wat91] D. S. Watkins, Fundamentals of Matrix Computations, John Wiley & Sons, New York, NY, 1991. [WC91] Y. -C. Wei and C. -K. Cheng, Ratio cut partitioning for hierarchical designs, IEEE Transactions on Computer-Aided Design 10(7): 911–921, 1991. [YW94] X. Yang and D. F. Wong, Eff icient network flow based min-cut balanced partitioning, Pr oceedings of the International Conference on Computer-Aided Design, San Jose, CA, Vol. 6–10, Nov. 1994, pp. 50–55. Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 136 24-9-2008 #29 Alpert/Handbook of Algorithms for Physical Design Automation AU7242_S003 Finals Page 137 24-9-2008 #2 Part III Floorplanning Alpert/Handbook of Algorithms for Physical Design Automation AU7242_S003 Finals Page 138 24-9-2008 #3 Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C008 Finals Page 139 29-9-2008 #2 8 Floorplanning: Early Research Susmita Sur-Kolay CONTENTS 8.1 Introduction 139 8.2 Floorplan Topology Generation 140 8.3 Rectangular Duals 141 8.3.1 Dualizability 142 8.3.2 Slicibility of Rectangular Duals 145 8.3.2.1 Four-Cycle Criterion for Slicibility of a Floorplan 146 8.4 Nonslicibile Floorplan Topologies 147 8.4.1 Maximal Rectangular Hierarchy 147 8.4.2 Inherent Nonslicibility 148 8.4.3 Canonical Embedding of Rectangular Duals 149 8.4.4 Dualization with Rectilinear Modules 150 8.5 Hierarchical Floorplanning 151 8.6 Floorplan Sizing Methods 153 8.7 Analytic Sizing 154 8.8 Branch-and-Bound Strategy for Sizing 156 8.9 Knowledge-BasedFloorplanningApproaches 157 8.10 Unified Method for Topology Generation and Sizing 158 Acknowledgments 158 References 158 8.1 INTRODUCTION In physical design, floorplanning determines the topology of the layout, i.e., the relative positions of modules on the chip, based on the interconnection requirements of the circuit and estimates for area. A floorplan can provide a guideline in the detailed design of functional modules or blocks when the aspect ratios and pin positions of some of the modules on the chip are still unconstrained. Thus, floorplanning is important not only for physical design, but even more for choosing design alternatives in the early stages that are likely to produce optimal designs. Placement was originally seen as a special case of floorplanning where the sizes and shapes of all the modules are known. In the history of computer-aided design (CAD) for very large scale integration (VLSI) circuits, the placement problem was addressed both for printed circuit boards as well as large scale integration (LSI) circuits. With the rapid increase in the scale of integration, the role of floorplanning came into the picture, particularly for the custom layout design style with variable width and height of modules. Some of the major techniques that were originally proposed for placement have subsequently been tailored for floorplanning. 139 Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C008 Finals Page 140 29-9-2008 #3 140 Handbook of Algorithms for Physical Design Automation The most significant difference between floorplanning and placement is in the modeling of the cells or modules. ∗ The extra degree of freedom in floorplanning, arising from the flexibililty of the interfaceand shapeof modulesthat constitutethe design, enlarges the portion of the chip available for placing the components. The floorplanning algorithm may have to deal with three types of modules: modules from a library with design and interface fixed, modules with known design but flexible layout, and modules with designs not completely known or certain. With respect to the physical design flow, area estimation also has to handle all these three types of modules. Floorplanoptimization has conventionallybeen achieved by twosteps: (1) feasible topology gen- eration and (2) sizing (determining the aspect ratios of the rectangular modules to optimize objective functions such as chip area, total wirelength, etc.). Topology generation focuses on computing the relativelocations of modulesbased on their interconnectionswithout restriction on theirexactshapes; an estimate of the area of each module may however be known. The sizing step then determines the shape, i.e., the aspect ratio of a module in tune with that of its neighbors to attain a globally optimal floorplan solution. This chapter concentrates on the early approaches to the floorplanning phase in the contextoff ull- custom design or semicustom design styles such as building blocks, standard cells, and gate arrays. The early floorplanning methods may be classified into constructive, iterative, and knowledge-based techniques. Constructive algorithms are primarily used for topology generation and are discussed in Sections 8.2 through 8.5. Iterative techniques, on the other hand, mainly tackle the second task of floorplanning, namely sizing, and are discussed in Sections8.6 through 8.8. Knowledge-based approaches [1–4] are considered in Section 8.9 and algorithms for a unified approach to topology generation and sizing are sketched in Section 8.10. 8.2 FLOORPLAN TOPOLOGY GENERATION Some of the commonly used ter ms in floorplanning literature are defined first. For graph-theoretic terminologies used without definition in this chapter, the reader is referred to an appropriate text (e.g., Ref. [5]). A floorplan is a rectangle dissection of an enveloping rectangle by horizontal (parallel to x-axis) and vertical (parallel to y-axis) line segments, termed cuts, into a finite number of indivisible nonoverlapping rectangles (Figure 8.1a and b), which correspond to the modules in the floorplan. If the exact shape of the modules are not considered, then such a rectangledissection depicts a floorplan topology. A floorplan with n cuts has exactly n +1 modules. Conventionally, two perpendicular cuts are allowed to meet to form T-junctions only, but not a cross (+). (a) (b) (c) a b c d e f g h a b c d e f g h a b c d e f g h FIGURE 8.1 (a) Slicible floorplan F s , (b) nonslicible floorplan F n , and (c) both floorplans have the same adjacency graph R. ∗ In the context of this handbook, placement is defined as the narrower problem of placing standard cells (each cell h as the same height) in rows. Alpert/Handbook of Algorithms for Physical Design Automation AU7242_C008 Finals Page 141 29-9-2008 #4 Floorplanning: Early Research 141 A floorplan is slicible if its rectangular dissection can be obtained by recursively divid- ing rectangles into smaller rectangles until each nonoverlapping rectangle is indivisible. Slicible floorplans (Figure 8.1a) are also termed slicing structures, or simply slicings. All floorplans may not be slicible (Figure8.1b). A summary of the major approaches to topology generation is presented next. 1. Slicing embedding [6,7]: This is a constructive method generating a special type of flo orplan only. A point embedding is first determined by relying on the netlist information. The relative positions of the modules are depicted in the form of a slicing tree or equivalently a series-parallel polar graph [8]. Then a floorplan is obtained in polynomial time by cutting the embedding into a slicing structure as th e slicing tree is traversed appropriately. The approach neglects the actual building block dimensions. Additional discussions on slicings appear in Chapters 2 and 9. 2. Partitioning and slicing [9–11]: The divide-and-conquerapproach is employed by adapting a mincut approach (details appear in Chapter 15) for the placement of building blocks [9] to the floorp lanning problem. In the Mason system [10], mincut bipartitioning is combined with the slicing tree representation in an effort to ensure routability. Global improvement of a partition is obtained by in-place partitioning based on the slicing tree. A scheme for global channel assignment and I/O pin assignment aids in floorplan evaluation. The system provides an interactive environment and can act as a human designer's assistant. 3. Dual graph method [12–15]: Among the most important floorplanning paradigms, the dual graph method of floorplanning deserves special mention. This is a constructive method based on graph algorithms. The topology of the modules is extracted from the adjacency relationswith respectto circuitinterconnections,givenasa neighborhoodgraph.Atfirst, this graph is planarized by deleting a minimum number of connections and adding crossover vertices. Then the optimal rectangular dual is sought for the planar graph. Rectangular dualization is of particular interest because of its algorithmic efficiency and the fact that the components are guaranteed to have rectangular layout. It emphasizes the proximity of heavily connected modules. A performance-driven version [15] was designed, where a dual is first generated considering routing constraints and then compacted by a linear programming-based heuristic method. A significant amount of research has been carried out on the dual graph method, including extension to rectilinear modules. The next section elaborates on many elegant results on rectangular dual floorplans. 4. Hierarchical enumeration [16]: This method falls into the group of connectivity clustering methods; the basis is circuit connectivity. For clusters of cells, floorplan templates having simplified topologies are used. Recursion is applied to obtain floorplan for large, com- plex circuits. There is a limit on the number of rectangular, arbitrary-sized blocks at each hierarchy level to enable simple pattern enumeration and exhaustive search later on. The novelty of this approach is that information about global routing can be maintained during floorplanning. The details of hierarchical floorplanning appear later in Section 8.5. 8.3 RECTANGULAR DUALS A floorplan generated by rectangular dualization is often referred to as a rectangular dual. Given such a floorplan F, a rectangular graph R = (V, E) representing the adjacency of modules in F has a vertex for each module and an edge (u, v) ∈ E if and only if the modules denoted by vertices u and v are adjacent (i.e., share a common boundary). The graph R is also known as the adjacency or neighborhood graph [12,17]. For a given floorplan, a unique rectangular graph always exists, but the converse is not necessarily true as illustrated in Figure 8.1, where both the floorplans have the same rectangular graph of Figure8.1c. Although there may be exponentially many different rectangular . Alpert /Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 132 24-9-2008 #25 132 Handbook of Algorithms for Physical Design Automation 7.5.3 NEW INNOVATIONS IN MULTILEVEL PARTITIONING With. #29 Alpert /Handbook of Algorithms for Physical Design Automation AU7242_S003 Finals Page 137 24-9-2008 #2 Part III Floorplanning Alpert /Handbook of Algorithms for Physical Design Automation AU7242_S003. 17(11): 219– 229, 1970. Alpert /Handbook of Algorithms for Physical Design Automation AU7242_C007 Finals Page 134 24-9-2008 #27 134 Handbook of Algorithms for Physical Design Automation [HHK97] L. Hagen,

Ngày đăng: 03/07/2014, 20:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan