Skip to content

Commit

Permalink
Add instruction generator
Browse files Browse the repository at this point in the history
  • Loading branch information
lsk567 committed Feb 18, 2025
1 parent 196e87c commit 829a538
Show file tree
Hide file tree
Showing 10 changed files with 2,385 additions and 33 deletions.
27 changes: 27 additions & 0 deletions core/src/main/java/org/lflang/generator/c/CScheduleGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,22 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.lflang.MessageReporter;
import org.lflang.analyses.statespace.StateSpaceDiagram;
import org.lflang.analyses.statespace.StateSpaceExplorer;
import org.lflang.generator.ReactionInstance;
import org.lflang.generator.ReactorInstance;
import org.lflang.generator.TriggerInstance;
import org.lflang.pretvm.InstructionGenerator;
import org.lflang.pretvm.PartialSchedule;
import org.lflang.pretvm.Registers;
import org.lflang.pretvm.dag.DagGenerator;
import org.lflang.pretvm.scheduler.LoadBalancedScheduler;
import org.lflang.pretvm.scheduler.StaticScheduler;
import org.lflang.target.TargetConfig;
import org.lflang.target.property.CompileDefinitionsProperty;
import org.lflang.target.property.WorkersProperty;

public class CScheduleGenerator {
Expand Down Expand Up @@ -128,6 +131,30 @@ public void doGenerate() {

// Create a scheduler.
StaticScheduler scheduler = createStaticScheduler();

// Determine the number of workers, if unspecified.
if (this.workers == 0) {
// Update the previous value of 0.
this.workers = scheduler.setNumberOfWorkers();
WorkersProperty.INSTANCE.update(targetConfig, this.workers);

// Update CMAKE compile definitions.
final var defs = new HashMap<String, String>();
defs.put("NUMBER_OF_WORKERS", String.valueOf(targetConfig.get(WorkersProperty.INSTANCE)));
CompileDefinitionsProperty.INSTANCE.update(targetConfig, defs);
}

// Create InstructionGenerator, which acts as a compiler and a linker.
InstructionGenerator instGen =
new InstructionGenerator(
this.fileConfig,
this.targetConfig,
this.workers,
this.main,
this.reactors,
this.reactions,
this.triggers,
this.registers);
}

/** Create a static scheduler. */
Expand Down
Loading

0 comments on commit 829a538

Please sign in to comment.