After you extract the package, the content should look like this:
Please open a terminal, find the path of the MMDA-M directory, and type in "./MMM_v1".
A window (MMM_v1) should pop out like this:
You can start to program the flow circuit in the text editor like this:
and then you can save it. Or you can open an existing file. Suppose you choose the file for kinase activity assay.
The text editor should be like this: (you can enlarge the window and scroll it down to see all the texts)
The following is the explanation for the format of the input. Basically, there are three parts in the input:
Module declaration starts with the command "component:", so that the computer knows that the follows are the module declarations. The command for terminating declaration is "fin" (fin is also the general termination command). The following is an example for module declaration:
In the module declaration part, each line is a unit to describe one module. The format is:
Current supported module types include:
Note that switches will be automatically introduced and synthesized in MMDA-M.
"module_name" can be arbitrarily determined by the user, but the name will be identified in later parts.
"x-axis_side-length" and "y-axis_side-length" are determined by the user. Note that these are the dimensions of the bounding box containing the real module. Thus, suppose you need a mixer module with the x-axis_side-length as 6000um, according to the mixer module model described in the manuscript for Columba 2.0, you need to specify the x-axis_side-length for the bounding box as 6800um, since we need to reserve 400um for both the left and the right sides to prevent potential channel spacing problem.
Note that in the input file, an empty line or a line starting with the denotation "#" is ignored by MMDA-M.
Here is an example for the netlist part:
The format is:
By this manner, we describe the communication relation between modules.
Note that at this moment "fluid_amount" causes no impact to the synthesis process and is set to 1 for all exemplary test cases. However, it may become a feature in MMDA-M in the future.
There are several special demands that can be specified in MMDA-M and can be seen in the exemplary test cases. However, at this moment, only "conflict:" and "parallel:" work functionally in the current version. Here is an example:
where "conflict:" means that modules that cannot share the same pressure since these modules have overlapping (but not completely) working period, and "parallel:" means that modules that are recommended to share the same pressure since they are of the same types and work in parallel to achieve a fair experimental environment.
The format for "conflict:" and "parallel:" are the same, i.e.
The "total_num" denotes the group size, and "a_series_of{module_name}" is a series of module names.
In the example, there is no specified conflict group, and there are two group of parallel modules. Note that every two directly-connected modules specified in the netlist (despite the later switch introduction) are considered to naturally conflict with each other, since when one module is acting to send out a fluid as its product, the other is also acting to receive this fluid as its input. This natural conflict is considered in MMDA-M and the user does not need to specify this.
After completing the netlist description, we can save the netlist and open Columba. At this moment Columba is the only function in MMDA-M. Columba provides back-end design automation, i.e., to synthesize a manufacturing-ready design from the input netlist. The following picture shows the Columba window.
In this window, you can set up the runtime threshold for each phase for Columba. After finishing the setting, you just need to click "Run Columba". Then you should be able to see lots of messages popping out on the terminal screen (if you set up Gurobi appropriately), like this:
Also, you can see some brief messages printed out in the Columba window. When Columba finishes its job, the Columba window should be like this:
The next step is to interpret the result of Columba by clicking the right-bottom button "Select Columba Output" to generate AutoCAD script. The default location storing the physical synthesis results is in the "result" directory. Note that in this directory, old result files would be replaced by new result files. Thus, if you want to keep the old files, please back up them in another directory.
After clicking "Select Columba Output", a file navigation window should pop out like this:
Note that this function is independent from the core part, physical synthesis, of Columba. Thus, you can interpret the designs synthesized before, if you keep the old physical synthesis results.
Then please choose a file for interpretation. The "p" in file name represents the phase index and "i" represents the iteration index. All files that are named "p4" can be interpreted, but it is suggested to choose the file with the largest "i" under "p4", since it needs the smallest chip area.
After choosing the physical synthesis result file, the Columba window should look like this:
Please click the button "Generate AutoCAD Script" and choose the path to store the AutoCAD script file. Note that the script file extension should be ".scr" or AutoCAD cannot identify it. Then the Columba window should look like this, meaning that the task for MMDA-M is done.
Now, you can open AutoCAD and