Upload
shams
View
0
Download
0
Embed Size (px)
Citation preview
Exploiting Satisfiability Modulo Theories for Analog
Layout Automation
Sherif M. Saif,
Mohamed Dessouky
Mentor Graphics Egypt,
78, El Nozha St, Heliopolis,
Cairo 11361, Egypt [email protected]
Salwa Nassar Computer and Systems
Dept, ERI
El Tahrir Street, Dokki,
Giza, Egypt, Egypt [email protected]
Hazem Abbas Computer Science &
Engineering, GUC
New Cairo, Egypt
M. Watheq El-Kharashi
Computer & Systems Eng.
Dept., Faculty of
Engineering, Ain Shams
University, Cairo 11517,
Egypt
Mohammad Abdulaziz
Research School of
Computer Science
ANU College of
Engineering & Computer
Science, Australia
Abstract—This paper explores the use of Satisfiability Modulo
Theories to handle mirror symmetry and common-centroid
analog layout placement constraints. The proposed system reads
the constraints and generates the corresponding equations or
inequalities needed for Microsoft Z3 solver. These inequalities
are resolved using quantifier free nonlinear real arithmetic
theory. This theory has doubly exponential complexity in the
worst case and it guarantees generating a solution if one exists.
The proposed system produces multiple layouts that satisfy the
constraints and allows the designer to choose the appropriate one
according to designer’s experience.
Keywords—Analog, Placement, Layout, Automation, SMT, Z3
I. INTRODUCTION
Due to the increasing functional complexity of system-on-chips, the difficulties in analog design and the lack of design automation support for analog circuits continually increase the bottleneck of analog components in chip design. Automation of analog layout and analog placement has been a research interest since late 1980s [1] [2].
Usually, the layout of analog IC’s has been manually designed by experts [3]. Analog placers use a variety of mostly manually entered physical constraints for placement and certain analog-specific layout conventions to automatically generate small sections of the layout. The placement and routing of analog circuits has a severe impact on the overall performance. Thus, layout constraints are defined to make sure that the circuit fulfills the desired performance specifications. As an example, unbalanced parasitics, being a result of asymmetrical layout, may be detrimental to the power supply rejection ratio or the offset voltage of an analog amplifier. The number and diversity of constraints imposed on an analog circuit prevent approaches used in the digital domain from being used for analog design. With advanced nodes, a layout that meets every physical constraint can still fail to meet the electrical requirements of the design. Designers are quick to recognize the appropriate physical constraints; leading to correct electrical behavior using their experience. They have the ability to rapidly evaluate multiple solutions and quickly discard those options whose physical implementations do not meet the electrical constraints assigned to them.
Hence, the latest generation of analog placement tools has been designed to create a variety of alternative layouts from which designers can choose. This puts the designer back into
the picture by presenting choices rather than assuming that the software has chosen the best layout. The designer can make the choice since layout decisions involve compromise. Prototyping the layout gives the designer control over the automated process and provides a reasonable trial placement from which the final layout can be quickly completed [4].
In this work, the Satisfiability Modulo Theories (SMT) are exploited to find valid placement solutions for analog blocks given pre-defined constraints. In the last few years, satisfiability became the core engine underlying a wide range of powerful technologies. SMT is an active and exciting area of research with many practical applications [5]. The proposed system uses Microsoft Z3 SMT solver [6] to find feasible solutions for a set of equations that are produced by the system to describe the given constraints. The user has the option to choose one of the feasible solutions.
In the following sections the constraints, the corresponding equations and the placement generated by the proposed system are shown. This paper is organized as follows. The next section contains a concise description of SMT solvers and Z3 solver. Section III lists the analog constraints of concern and their equations. Section IV discusses the suggested implementation approach. Section V shows the results in addition to a discussion and section VI concludes the paper.
II. SMT SOLVERS
A. Introduction
Satisfiability Modulo Theories (SMT) is an area of automated deduction that studies methods for checking the satisfiability of first-order formulae with respect to some logical theory T of interest. The problem draws on a combination of some of the most fundamental areas in computer science; Boolean satisfiability with other domains, such as, those studied in convex optimization and term manipulating symbolic systems. It also draws on the most prolific problems in the past century of symbolic logic: the decision problem, completeness and incompleteness of logical theories, and finally the complexity theory. Modern analysis and model-based tools are increasingly complex and multi-faceted software systems, but, at their core is invariably a component using symbolic logic for describing states and transformations between them. A well-tuned SMT solver that takes into account the state-of-the-art breakthroughs usually scales orders of magnitude beyond custom ad-hoc solvers [7].
978-1-4799-8200-4/14/$31.00 ©2014 IEEE
2014 9th International Design and Test Symposium
73
It differs from general automated deduction in that the background theory T needs not be finitely or even first-order axiomatizable, and specialized inference methods are used for each theory. By being theory-specific and restricting their language to certain classes of formulae, such as quantifier-free formulae, and specifically quantifier free nonlinear real arithmetic (QFNRA) theory used in this work, these specialized methods can be implemented in solvers that are more efficient in practice than general-purpose theorem provers [8].
B. Z3
Z3 is a state-of-the art theorem prover. It was provided by Microsoft Research. Z3 can be used to check the satisfiability of logical formulae over one or more theories. Z3 is a low level tool and it is best used as a component in the context of other tools that require solving logical formulae. It exposes a number of application programming interface (API) facilities to make it convenient for tools to map into Z3. The language syntax used in the front ends favor simplicity in contrast to linguistic convenience. Z3 source version can be downloaded from [6]. This section provides a brief explanation for the Z3 input syntax and usage.
Z3 input format is an extension of the SMT-LIB 2.0 standard [8]. A Z3 script is a sequence of commands where the user uses these commands to provide assertions. These assertions enclose the equations or constraints that the user provides in order to model the system. These equations are written in prefix notation [9]. A formula is “satisfiable” if there is some assignment of appropriate values to its uninterpreted function and constant symbols under which the formula evaluates to true. Hence satisfiability is about finding a solution to a set of constraints. In order to use the solver to check the satisfiability of a formula the “assert” command is used. The “assert” command adds a formula into the Z3 internal stack. A set of formulae in the Z3 stack is satisfiable if there is an interpretation that makes all asserted formulae true. Another command is “check-sat” which determines whether the formulae on the Z3 stack are statisfiable or not. Z3 returns “sat” if the formulae are satisfiable and returns “unsat” if the formulae are unsatisfiable. A command called “get-model” can be used to retrieve an interpretation that makes all formulae on the Z3 internal stack true. A formula is “valid” if it always evaluates to true for any assignment of appropriate values to its uninterpreted function and constant symbols. If the problem is satisfiable, we can get at least one “valid” solution for the problem. If the command “check-sat” returns “sat”; we can use “get-model” to obtain a “valid” solution for the defined problem. Z3 hence provides an interpretation, which is a solution, using “definitions”. The “definitions” is a syntax used by Z3 to express the interpretation in the form of functions. For example,
(define-fun variable1 () Int [value1])
states that the value of variable1 in the model is [value1].
Section IV will discuss how to represent the equations that models the analog layout constraints in the input syntax of the Z3 solver, and how to parse afterwards the output of the Z3 solver, in order to obtain a valid solution.
III. ANALOG CONSTRAINTS
In common layout approaches, the placement is generated before routing the circuit. The placement is subject to various constraints. These constraints are formulated to improve the matching of devices which are intended to be identical by design. Matching can be considered to be an umbrella term of different means to reduce the influence of variations of the process and operating conditions, as well as parasitics. Hence, the placement of devices can be affected by many constraints [10] such as symmetry constraints, and Common Centroid Constraints. In [11] Strasser et. al. use these constraints among others to achieve placement using “Plantage” algorithm. In this section we list these constraints and their equations. The handling of these constraints by our proposed system will be explained in the following sections.
A. Minimum Separation Constraints
A minimum distance constraint is formulated to make sure that all modules m within the set of modules A keep a distance d(m, n) ≥ dmin(m, n) from all other modules (n ∉ A):
∀m∈A,n∉Ad(m, n) ≥ dmin(m, n), dmin(m, n) ≥ 0
B. Symmetry Constraints
The vertical symmetry constraints are formulated as follows. If module i' denotes a module that is to be placed symmetrically to some module i, symmetry constraints will be represented by the following equations [11]
∀i (1
2(xi +
wi
2+ xi′ +
wi′
2) = xsym)
∀i (yi +hi
2= yi′ +
hi′
2)
where the lower left coordinates of modules i and i' are represented by (xi, yi) and (xi’, yi’), respectively. Width and height of module i are wi and hi, respectively. Width and height of module i' are wi' and hi', respectively. The x-coordinate of the symmetry axis is xsym.
C. Common Centroid Constraints
Common centroid constraints can be formulated, as shown in the following. If the coordinates of the center of gravity (COG) of a module m are defined as
xCOG(m) = xm + wm
2
yCOG(m) = ym + hm
2
where for every module m, the lower left corner coordinates are described by xm and ym, and the width and height are referred to as wm and hm, respectively. Using vectors, the center of gravity can be formulated as XCOG(m):
XCOG(m) = (xCOG(m)
yCOG(m))
2014 9th International Design and Test Symposium
74
Hence for groups of modules, a center of gravity can be defined as:
XCOG(G) = (∑ wm .hm .X(COG)(m) m∈modulesOf(G)
∑ wm .hmm∈modulesOf(G))
For two groups A and B the common centroid constraint dictates that the two groups of modules have the same center of gravity, or in other words the centers of gravity of the two groups should coincide.
Hence, for example, given two groups A and B, each composed of 8 blocks; this should yield the structure depicted in Fig. 1 as one of the many possible solutions.
IV. IMPLEMENTATION
A. System flow diagram
Fig. 2 shows the operation of the flow of the proposed system:
1) The “Define constraints” module The first module defines the set of constraints according to
equations (1)—(7). It defines the set of constraints according to an argument that is passed to the module that defines whether the system is dealing with minimum separation, mirror symmetry, or common centroid constraints. This is depicted in Fig 3. The “Sep Utility”, “MS Utility” and “CC Utility” handle the minimum separation, mirror symmetry, and common centroid constraints, respectively. The utilities are coded in shell scripts and generate the equations that model the corresponding constraints. This module provides an important feature of the proposed system. This feature is the system modularity or the capability to add more constraints handling to the system by just adding a plug-in “constraint utility”. For example if a perfect symmetry constraint should be added to the system; the generating Perfect Symmetry Utility (PS Utility) should be added to the system by adding a script that models its equations.
2) The “Call Z3 SMT solver” module After the proper constraints are echoed –in the form of
equations– and passed to the Z3 solver; the solver defines
whether the problem is satisfiable [7] or not. If it is satisfiable the solver recommends the values that solve the problem.
3) The “Output parser” module There is a module that parses the output of the Z3 solver
and converts it into commands that physically place the geometries on a layout sheet. This module is coded in Perl.
4) The “Place geometries” module This final module uses the output of the parser to invoke an
IC layout tool and draw the geometries. The tool that was used for drawing the resulting geometries is Mentor Graphics Pyxis Layout (IC Station Layout Editor) [12].
B. Minimum Separation Constraint
The minimum separation equation (1) can be broken down into the following rules between any two blocks. The two blocks should:
1) not overlap horizontally 2) not overlap vertically 3) be separated by a minimum separation in the horizontal
direction 4) be separated by a minimum separation in the vertical
direction
This can be translated into the following: The x-coordinate of the second (first) block is greater than the x-coordinate of the first (second) block + its width + minimum separation. On the other hand, the y-coordinate of the second (first) block is greater than the y-coordinate of the first (second) block + its height + minimum separation. Therefore, this translates to the following assertions:
assert that (x_Bn > (x_Bm + (BlockWidth[m] + MinSeparation))) or (x_Bm > (x_Bn + (BlockWidth[n] + MinSeparation)))
assert that (y_Bn > (y_Bm + (BlockHeight[m] + MinSeparation))) or (y_Bm > (y_Bn + (BlockHeight[n] + MinSeparation)))
where Bm is the first block, Bn is the second block, x_B# is the x-coordinate of the left of B# block and y_B# is the y-coordinate of the down side of B#, MinSeparation is the minimum allowed spacing between two devices.
Z3 accepts prefix mathematical notation. Therefore these equations will be coded as follows:
(assert (or (or (> x_Bn (+ x_Bm (+ BlockWidth[m] MinSeparation))) (> x_Bm (+ x_Bn (+ BlockWidth[n]
Fig. 3. System utilities for defining constraints.
Fig. 1. 2-D Common centroid.
Fig. 2. System flow diagram.
2014 9th International Design and Test Symposium
75
MinSeparation)))) (or (> y_Bn (+ y_Bm (+ BlockHeight[m] MinSeparation))) (> y_Bm (+ y_Bn (+ BlockHeight[n] MinSeparation))))))
The following constraints should follow the same procedure to extract the corresponding SMT equation.
C. Symmetry Constraint
The argument “ms” causes the tool to invoke a utility called “MS utility”, refer to Fig. 3. It implements (2) and (3)
1/2 [x1 + w1/2 + x2 + w2/2] = xsym
y1 + h1/2 = y2 + h2/2 where:
(x1, y1) are the coordinates of the left below corner of the first block
(x2, y2) are the coordinates of the second block
w1, w2, are the widths of the first block and second block, respectively.
h1, h2 are the heights of the first block and second block, respectively.
This resolves to the assertion of two ANDed conditions:
(assert (and (= (+ (+ x1 (/ w1 2)) (+ x2 (/ w2 2))) xsym) (= (+ y1 (/ h1 2)) (+ h2 (/ h2 2)))))
D. Common-Centroid Constraint
The tool accepts an argument “cc” for common-centroid. Accordingly, it calls the “CC utility”, which implements the common centroid function.
For example, given two groups A and B, each composed of four devices, there is a total of eight devices that should be coded according to (4)—(6). For eight devices: four for group “A” and four for group “B”, (7) holds:
XCOG(A) = XCOG(B)
If the widths of blocks a1…a4 and b1…b4 are w_a1, w_a2, w_a3, w_a4, w_b1, w_b2, w_b3, and w_b4 respectively, and the heights of blocks a1…a4 and b1…b4; are: h_a1, h_a2, h_a3, h_a4, h_b1, h_b2, h_b3, and h_b4, respectively, and left x-coordinates of blocks are x_a1, x_a2,… x_a4, x_b1,… x_b4, and the below y-coordinates of blocks are y_a1, y_a2,… y_a4, y_b1…y_b4; therefore (4)—(7) should be:
w_a1*h_a1*(x_a1+w_a1/2) + w_a2*h_a2*(x_a2+w_a2/2) + w_a3*h_a3*(x_a3+w_a3/2) + w_a4*h_a4*(x_a4+w_a4/2) /
(w_a1*h_a1 + w_a2*h_a2 + w_a3*h_a3 + w_a4*h_a4) = w_b1*h_b1*(x_b1+w_b1/2) + w_b2*h_b2*(x_b2+w_b2/2) + w_b3*h_b3*(x_b3+w_b3/2) + w_b4*h_b4*(x_b4+w_b4/2) / (w_b1*h_b1 + w_b2*h_b2 + w_b3*h_b3 + w_b4*h_b4) AND w_a1*h_a1*(y_a1+h_a1/2) + w_a2*h_a2*(y_a2+h_a2/2) + w_a3*h_a3*(y_a3+h_a3/2) +
w_a4*h_a4*(y_a4+h_a4/2) / (w_a1*h_a1 + w_a2*h_a2 + w_a3*h_a3 + w_a4*h_a4) = w_b1*h_b1*(y_b1+h_b1/2) + w_b2*h_b2*(y_b2+h_b2/2) + w_b3*h_b3*(y_b3+h_b3/2) + w_b4*h_b4*(y_b4+h_b4/2) / (w_b1*h_b1 + w_b2*h_b2 + w_b3*h_b3 + w_b4*h_b4)
The utility will generate the following equation to be passed to the Z3 solver:
(assert (and (= (/ (+ (+ (* w_a1 (* h_a1 (+ x_a1 (/ w_a1 2)) ) ) (* w_a2 (* h_a2 (+ x_a2 (/ w_a2 2)) ) )) (+ (* w_a3 (* h_a3 (+ x_a3 (/ w_a3 2)) ) ) (* w_a4 (* h_a4 (+ x_a4 (/ w_a4 2)) ) ))) (+ (+ (* w_a1 h_a1) (* w_a2 h_a2)) (+ (* w_a3 h_a3) (* w_a4 h_a4)) ) ) (/ (+ (+ (* w_b1 (* h_b1 (+ x_b1 (/ w_b1 2)) ) ) (* w_b2 (* h_b2 (+ x_b2 (/ w_b2 2)) ) )) (+ (* w_b3 (* h_b3 (+ x_b3 (/ w_b3 2)) ) ) (* w_b4 (* h_b4 (+ x_b4 (/ w_b4 2)) ) ))) (+ (+ (* w_b1 h_b1) (* w_b2 h_b2)) (+ (* w_b3 h_b3) (* w_b4 h_b4)) )) ) (= (/ (+ (+ (* w_a1 (* h_a1 (+ y_a1 (/ h_a1 2)) ) ) (* w_a2 (* h_a2 (+ y_a2 (/ h_a2 2)) ))) (+ (* w_a3 (* h_a3 (+ y_a3 (/ h_a3 2)) ) ) (* w_a4 (* h_a4 (+ y_a4 (/ h_a4 2)) ) ))) (+ (+ (* w_a1 h_a1) (* w_a2 h_a2)) (+ (* w_a3 h_a3) (* w_a4 h_a4)) ) ) (/ (+ (+ (* w_b1 (* h_b1 (+ y_b1 (/ h_b1 2)) ) ) (* w_b2 (* h_b2 (+ y_b2 (/ h_b2 2))) )) (+ (* w_b3 (* h_b3 (+ y_b3 (/ h_b3 2)) ) ) (* w_b4 (* h_b4 (+ y_b4 (/ h_b4 2)) ) ))) (+ (+ (* w_b1 h_b1) (* w_b2 h_b2)) (+ (* w_b3 h_b3) (* w_b4 h_b4)) ) ) ) ) )
V. RESULTS
The proposed system is implemented in a command line
tool that accepts several arguments. These arguments define
the following:
The constraint(s): mirror symmetry and/or common-centroid.
The maximum area that can be defined by each group of blocks.
The value of the minimum separation between blocks.
The number of generated layouts.
A. Minimum Separation
Minimum separation constraint is a constraint that should be satisfied in parallel with other constraints, such as symmetry and common-centroid.
B. Mirror Symmetry
The result of running the mirror symmetry constraints on two sub-devices is shown in Fig 4.
The tool was invoked again but this time with defining 2
groups of sub-devices, each constituted of 4 sub-devices. An
argument defines that up-to-5 layouts can be generated. The
output of the tool in this case is shown in Fig. 5.
Fig. 4. Output of solver for mirror symmetry constraint for 2 devices.
2014 9th International Design and Test Symposium
76
C. Common-Centroid
The result of running the common-centroid constraints for 2
groups each of them constituted of 4 subdevices is shown in
Fig 6. The subdevices are not aligned because no alighnment
constraint is used. Supporting other constraints such alignment
constraint is a part of the future work.
The result of running the common-centroid constraint for 2
groups each of them constituted of 8 sub-devices, while
defining the number of generated layouts to be up-to-9
layouts. The output layouts of the tool in this case are shown
in Fig 7.
D. Simultaneous Common-Centroid and Mirror Symmetry
The tool is used to work simultaneously on common centroid
and mirror symmetry. The tool was invoked with two
constraints. A common-centroid constraint is to be applied on
two groups each of them is constituted of 8 sub-devices. A
mirror symmetry constraint is to be applied on other two
groups each of them is constituted of 8 sub-devices. The
number of generated layouts in this example was defined to be
up-to-9. However, the system will try generating a higher
number if the user specifies a higher limit. No upper value is
expected by the system for this argument. The output of the
tool using these arguments is shown in Fig. 8, 9, 10.
E. Discussion
Results that were achieved using the SMT solver accomplish
the purpose of finding valid placements according to some
given analog constraints. The solver uses the satisfiability
mathematics to move from coding of constraints to placement
in a manner that can be easily expanded. The easiness of
expanding this system can be shown by comparing it to the
several intermediate structures that are formed in the
“Plantage” algorithm [10] for instance. Our proposed system
needs only to form equations and inequalities that describe the
given analog constraints. In addition, in this work we use
quantifier free nonlinear real arithmetic (QFNRA) theory for
representing these formulae. This theory has doubly
exponential complexity in the worst case. In all the examples
that were presented, the time for generating a layout did not
exceed several seconds. Future work should define time for
real benchmarks. Because QFNRA is a decidable theory and
Z3 has a complete decision procedure for it, it always
guarantees generating a solution if one exists. It also secures
that the placement has formal guarantees of conforming to the
user constraints.
VI. CONCLUSION
The proposed system is implemened in scripts and Perl. It
creates a wrapper that translates the analog constraints into
mathematical equations needed for the Z3 SMT solver.
Afterwards, it parses the output of the solver and translates it
into geometries that correspond to a placement that satisfies
the analog constraints. The system is extensible since it allows
any “Constraint Utility” plugin to be added to the system. We
claim that the simplicity of expandability of the system gives
it an edge over other proposed systems, in addition to using a
method that provides formal guarantees of having a placement
that is conforming to the user constraints.
Future work would include expanding the sytem by adding
more modules in the “define constraints” section to support
other constraints such as alignment and perfect symmetry. In
addition the program would be coded in C and use Z3 API’s
instead of scripting, and the running time can be then assessed
using real benchmarks.
Fig. 6. Output of solver for common-centroid constraints for 2 groups
each of 4 sub-devices.
Fig. 7. Output of solver for common centroid constraints for 2 groups
each constituted of 8 sub-devices. Nine layouts are generated.
Fig. 5. Output of solver for mirror symmetry constraints for 2 groups.
Each group has 4 sub-devices. Five layouts are generated.
2014 9th International Design and Test Symposium
77
REFERENCES
[1] J. Rijmenants, J. B. Litsios, T. R. Schwarz and M. G. R. Degrauwe,
“ILAC: An Automated Layout Tool for Analog CMOS Circuits”, IEEE Journal of Solid State Circuits, vol. 24, no. 2, pp. 417–425, April 1989.
[2] M. Kayal, S. Piguet, M. Declercq and B. Hochet, “SALIM: A Layout Generator Tool for Analog ICs”, in Proc. IEEE Custom Integrated Circuits Conference, pp. 751–754, May 1988
[3] S. Koda, C. Kodama and K. Fujiyoshi, “Improved Method of Cell Placement with Symmetry Constraints for Analog IC Layout Design”,. Proceedings of the 2006 International Symposium on Physical Design, ISPD 2006, San Jose, California, USA, April 9-12, 2006
[4] R. Morse, “Interoperable Design Constraints for Custom IC Design”, IEEE Design & Test of Computers, vol. 29, Issue 2, pages 53-61, March/April 2012, .
[5] N. Bjørner and L. de Moura. “z310: Applications, enablers, challenges and directions”. In CFV ’09 Sixth International Workshop on Constraints in Formal Verification, 2009.
[6] Z3: provided by Microsoft, Open source at: http://z3.codeplex.com
[7] L. de Moura and N. Bjørner. “Satisfiability modulo theories: An appetizer. In Formal Methods: Foundations and Applications, 12th Brazilian Symposium on Formal Methods”, SBMF 2009, Gramado, Brazil, August 19-21, 2009, Revised Selected Papers, vol. 5902 of Lecture Notes in Computer Science, pages 23-36. Springer, 2009.
[8] The Satisfilability Modulo Theories Library, http://www.smtlib.org/
[9] F. Gecseg, M. Steinby, Tree Languages, In: vol. 3: Beyond Words. Handbook of Formal Languages. pp. 1-68, Springer, Berlin, Heidelberg, 1997.
[10] M. P. Lin and Y. Chang, “Hierarchical Placement with Layout Constraints”, in “Analog Layout Synthesis: A Survey of Topological Approaches , by Helmut E. Graeb, Editor. Springer. 2011
[11] M. Strasser, M. Eick, H. Graeb, U. Schlichtmann, and F. M. Johannes. “Deterministic Analog Circuit Placement using Hierarchically Bounded Enumeration and Enhanced Shape Functions”. In IEEE/ACM International Conference on Computer-Aided Design (ICCAD), pages 306–313, November 2008.
[12] IC Station: for Analog Layout, provided by Mentor Graphics Corporate, http://www.mentor.com
Fig. 8. Output of solver for common centroid and mirror symmetry
– layouts no. 1,2 out of 9.
Fig. 10. Output of solver for common centroid and mirror symmetry
– layouts no. 5,6,7,8 out of 9.
Fig. 9. Output of solver for common centroid and mirror symmetry
– layouts no. 3,4 out of 9.
Fig. 11. Output of solver for common centroid and mirror symmetry
– layout no. 9 out of 9.
2014 9th International Design and Test Symposium
78