MyTasksMuxManager.maxj 4.1 KB

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