In Example section we gave four designs using Synthagate – Codec, SortMax, Absurd and Washroom. Each example was designed twice beginning from:
You can download any of these examples by clicking at its name.
In the process of design Synthagate automatically constructs many folders corresponding to each stage of design. Here we gave only several ones – for the beginning of design (folders Initial and Spec), for High level synthesis (folder FuncSim), for RTL design (folder TopSym) and for Logic design of Control Unit (folder ControlUnitLogic). File HLSTotalTime.tim contains the total time of automatic design from initial ASM descriptions till design of Control unit in folder ControlUnitLogic. Synthagate automatically constructs specifications in folder Spec in dialog with a designer. Here we constructed them before the designs. Shortly about all folders:
- Folder Initial contains asd files of modes (instructions) constructed by the designer which should use button build to get files gsa, mic and txt. Folder General in Initial contains the same for generalized operators.
- Files funcmi.vhd and my_package.vhd (funcmi.cpp and funcmi.h) in Folder FuncSim are the result of High levelsynthesis. Funcmi.vhd (funcmi.cpp) presents the behavior of the whole designed system as some virtual FSM. If you have test bench for simulation at this high level, you can use the same test bench for simulation at the RTL level in folder TopSim. Designer can simulate design with VHDL file (funcmi.vhd) or with System C file (funcmi.cpp)
- Folder TopSim, as other folders, was constructed automatically. It contains:
• Components of Data path in VHDL;
• Dp.vhd – Data path in VHDL;
• Structm.vhd – Control unit in VHDL;
• Top.vhd – the upper level of design as a composition of Data path and Control Unit.
- Folder ControlUnitLogic contains the design of Control Unit with FPGA (area optimization) and the same in subfolder DelayOpt – delay optimization. It contains:
• The report of design is in Excel file report.csv. In this file:
a) m96.total is the number of luts in the Control Unit circuit. In these examples, we used luts with not more than 4-inputs, although it is possible to use luts with any number of inputs;
b) m96.avg is the average number of inputs in all luts;
c) m96.delay is the number of luts at the critical path of FPGA circuit (the delay of the circuit);
d) tim.elapsedtime is the design time of the circuit (min:sec).
• Files structm_mkh.t1 and structm_mkh.t12 are FSMs without and with one hot state assignment.
• Files Structm_mkh.v and Structm_mkh.vhd are FSMs in Verilog and VHDL.
• Gate netlist in file Structm_mkh.g16. In this file:
a) numbers of gates are in the first column;
b) inputs of gates are in the second column;
c) outputs of gates are in the third column.
For example, the line
3 AND t52 x1 x5 d2 y7
means that AND gate number 3 has three inputs – t52 (feedback from d_ff number 52), x1 and x5. Its output goes to the output of circuit (y7) and to the input of d_ff number 2(d2).
• File Structm_mkh.g17 is the same netlist with one additional second column. For example, the line
178 3 OR e85 e122 e127 e164 y73
means that there are maximum three gates between input of circuit and OR gate number 173. Its inputs are the outputs of gates 85, 112, 127 and 164.
• Files Structm_mkh.m96 and Structm_mkh.m97 are similar to Structm_mkh.g16 and Structm_mkh.g17, but the elements of these netlists are luts.
• File Structm_mkhr96_test.log is the result of simulation. During this simulation, our tool checks that FPGA logic circuit (Structm_mkh.m96) really implements FSM Structm_mkh.t12, which is a model for the Control unit of the design system.
- Shortly about examples:
- Example Codec demonstrates a combination of Encoder and Decoder. First, uncompressed data is written into memory M1. Encoder reads this data from memory M1, compressed it and writes this compressed data into memory M2. Then decoder reads compressed data from memory M2, decompressed it and writes decoded data into memory M3.
- SortMax is a processor implementing two operations – sorting words in an array in the memory and searching the maximal element of the array in the memory.
- To check the possibility of automatic design of very complex digital systems we gathered very different modes (operations) from various designs – robots, controllers, processors, communication devices etc in one heap. Of course, nobody would like to implement so different applications in one design. It is the reason why we called this design an Absurd. Nevertheless, the design passes the same stages, the result of high level synthesis is in folder FuncSim (file Funcmi.vhd or Funcmi.cpp), the result of RTL design – in folder TopSim and the result of Control unit synthesis with FPGA (area and delay optimizations with simulation for both cases) – in folder ControlUnitLogic. The time of design is 18.81 sec beginning from GUI and 19.19 sec beginning from ASMs in System C.
- Example Washroom is a design-joke of a virtual robot which should go to the washroom instead of you. We hope that we never use such a robot. It is interesting that this design passes exactly through the same stages although it is a pure controller – its data path is empty.