MyTasksMuxManager.maxj 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package fpga;
  2. import com.maxeler.maxcompiler.v2.build.EngineParameters;
  3. //import com.maxeler.maxcompiler.v2.kernelcompiler.Kernel;
  4. import com.maxeler.maxcompiler.v2.managers.custom.DFELink;
  5. import com.maxeler.maxcompiler.v2.managers.custom.blocks.KernelBlock;
  6. import com.maxeler.maxcompiler.v2.managers.custom.blocks.Mux;
  7. import com.maxeler.maxcompiler.v2.managers.custom.blocks.Demux;
  8. import com.maxeler.maxcompiler.v2.managers.custom.stdlib.LMemCommandGroup;
  9. import com.maxeler.maxcompiler.v2.managers.custom.stdlib.LMemInterface;
  10. import com.maxeler.maxcompiler.v2.managers.engine_interfaces.InterfaceParam;
  11. import com.maxeler.platform.max5.manager.MAX5CManager;
  12. public class MyTasksMuxManager extends MAX5CManager
  13. {
  14. public MyTasksMuxManager(EngineParameters params)
  15. {
  16. super(params);
  17. KernelBlock kernel1 = addKernel(new Task1(makeKernelParameters("Task1")));
  18. KernelBlock kernel2 = addKernel(new Task2(makeKernelParameters("Task2")));
  19. KernelBlock kernel3 = addKernel(new Task3(makeKernelParameters("Task3")));
  20. LMemInterface iface = addLMemInterface();
  21. Mux joinInAT1 = mux("joinInAT1");
  22. Mux joinInBT1 = mux("joinInBT1");
  23. joinInAT1.addInput("inCPU") <== addStreamFromCPU("inAT1CPU");
  24. joinInAT1.addInput("inLMem") <== iface.addStreamFromLMem("inAT1LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D);
  25. joinInBT1.addInput("inCPU") <== addStreamFromCPU("inBT1CPU");
  26. joinInBT1.addInput("inLMem") <== iface.addStreamFromLMem("inBT1LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D);
  27. kernel1.getInput("inAT1") <== joinInAT1.getOutput();
  28. kernel1.getInput("inBT1") <== joinInBT1.getOutput();
  29. Demux forkOutCT1 = demux("forkOutCT1");
  30. DFELink outCT1CPU = forkOutCT1.addOutput("outCPU");
  31. DFELink outCT1LMem = forkOutCT1.addOutput("outLMem");
  32. forkOutCT1.getInput() <== kernel1.getOutput("outCT1");
  33. addStreamToCPU("outCT1CPU") <== outCT1CPU;
  34. iface.addStreamToLMem("outCT1LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D) <== outCT1LMem;
  35. Mux joinInAT2 = mux("joinInAT2");
  36. Mux joinInBT2 = mux("joinInBT2");
  37. joinInAT2.addInput("inCPU") <== addStreamFromCPU("inAT2CPU");
  38. joinInAT2.addInput("inLMem") <== iface.addStreamFromLMem("inAT2LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D);
  39. joinInBT2.addInput("inCPU") <== addStreamFromCPU("inBT2CPU");
  40. joinInBT2.addInput("inLMem") <== iface.addStreamFromLMem("inBT2LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D);
  41. kernel2.getInput("inAT2") <== joinInAT2.getOutput();
  42. kernel2.getInput("inBT2") <== joinInBT2.getOutput();
  43. Demux forkOutCT2 = demux("forkOutCT2");
  44. DFELink outCT2CPU = forkOutCT2.addOutput("outCPU");
  45. DFELink outCT2LMem = forkOutCT2.addOutput("outLMem");
  46. forkOutCT2.getInput() <== kernel2.getOutput("outCT2");
  47. addStreamToCPU("outCT2CPU") <== outCT2CPU;
  48. iface.addStreamToLMem("outCT2LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D) <== outCT2LMem;
  49. Mux joinInAT3 = mux("joinInAT3");
  50. Mux joinInBT3 = mux("joinInBT3");
  51. joinInAT3.addInput("inCPU") <== addStreamFromCPU("inAT3CPU");
  52. joinInAT3.addInput("inLMem") <== iface.addStreamFromLMem("inAT3LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D);
  53. joinInBT3.addInput("inCPU") <== addStreamFromCPU("inBT3CPU");
  54. joinInBT3.addInput("inLMem") <== iface.addStreamFromLMem("inBT3LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D);
  55. kernel3.getInput("inAT3") <== joinInAT3.getOutput();
  56. kernel3.getInput("inBT3") <== joinInBT3.getOutput();
  57. Demux forkOutCT3 = demux("forkOutCT3");
  58. DFELink outCT3CPU = forkOutCT3.addOutput("outCPU");
  59. DFELink outCT3LMem = forkOutCT3.addOutput("outLMem");
  60. forkOutCT3.getInput() <== kernel3.getOutput("outCT3");
  61. addStreamToCPU("outCT3CPU") <== outCT3CPU;
  62. iface.addStreamToLMem("outCT3LMem", LMemCommandGroup.MemoryAccessPattern.LINEAR_1D) <== outCT3LMem;
  63. }
  64. public static void main(String[] args)
  65. {
  66. MyTasksMuxManager manager = new MyTasksMuxManager(new EngineParameters(args));
  67. manager.build();
  68. }
  69. }