public override void Execute()
        {
            base.Execute();

            if (!string.IsNullOrEmpty(TopModule))
            {
                PrjFile prj = new PrjFile(Program.Repository);

                foreach (string core in Cores)
                {
                    Logger.Instance.WriteVerbose("Selecting Core: {0}", core);
                    prj.AddAllInLibrary(prj.Environment.GetLibrary(core));
                }

                // Select top module
                string[] splitModule = TopModule.Split('.');

                ILibrary library = prj.Environment.GetLibrary(splitModule[0]);
                if (library != null)
                {
                    IModule module = library.Modules.First((m) => string.Compare(m.Name, splitModule[1], true) == 0);
                    if (module != null)
                    {
                        Logger.Instance.WriteVerbose("Selected module '{0}' in library '{1}'", module.Name, library.Name);

                        string workingDirectory = XilinxSynthesizer.GenerateWorkingDirectory();
                        Logger.Instance.WriteVerbose("Starting Build");
                        XilinxSynthesizer.BuildResult result = XilinxSynthesizer.BuildProject(workingDirectory, prj, module);
                        Logger.Instance.WriteVerbose("Build Complete");

                        Logger.Instance.WriteDebug(result.BuildLog);

                        Logger.Instance.WriteVerbose("Cleaning temporary directory");
                        Directory.Delete(workingDirectory, true);
                    }
                    else
                    {
                        Logger.Instance.WriteError("Top Level module does not existing in library '{0}'", library.Name);
                    }
                }
                else
                {
                    Logger.Instance.WriteError("Top Level module library does not exist in the repository");
                }
            }
            else
            {
                Logger.Instance.WriteError("Top Level Module not specified, terminating...");
            }
        }
        public override void Execute()
        {
            base.Execute();

            if (!string.IsNullOrEmpty(TopModule))
            {
                PrjFile prj = new PrjFile(Program.Repository);

                foreach (string core in Cores)
                {
                    Logger.Instance.WriteVerbose("Selecting Core: {0}", core);
                    prj.AddAllInLibrary(prj.Environment.GetLibrary(core));
                }

                // Select top module
                string[] splitModule = TopModule.Split('.');

                ILibrary library = prj.Environment.GetLibrary(splitModule[0]);
                if (library != null)
                {
                    IModule module = library.Modules.FirstOrDefault((m) => string.Compare(m.Name, splitModule[1], true) == 0);
                    if (module != null)
                    {
                        Logger.Instance.WriteVerbose("Selected module '{0}' in library '{1}'", module.Name, library.Name);

                        ISimInstance instance = new ISimInstance(prj, module);
                        if (UseGraphicalUserInterface)
                        {
                            Logger.Instance.WriteVerbose("Using Graphical User Interface");
                        }
                        instance.UseGraphicalUserInterface = UseGraphicalUserInterface;
                        instance.Start();
                        instance.Stop();
                    }
                    else
                    {
                        Logger.Instance.WriteError("Top Level module does not existing in library '{0}'", library.Name);
                    }
                }
                else
                {
                    Logger.Instance.WriteError("Top Level module library does not exist in the repository");
                }
            }
            else
            {
                Logger.Instance.WriteError("Top Level Module not specified, terminating...");
            }
        }
        public override void Execute()
        {
            base.Execute();

            ExecutionType executionType = ExecutionType.All;
            if (SimulationExecutionOnly && SynthesisExecutionOnly)
            {
                Logger.Instance.WriteWarning("Selected both Simulation only and Synthesis only, defaulting to All");
            }
            else if (SimulationExecutionOnly)
            {
                Logger.Instance.WriteVerbose("Selecting only Simulation modules.");
                executionType = ExecutionType.SimulationOnly;
            }
            else if (SynthesisExecutionOnly)
            {
                Logger.Instance.WriteVerbose("Selecting only Synthesis modules.");
                executionType = ExecutionType.SynthesisOnly;
            }

            if (!string.IsNullOrEmpty(OutputPath))
            {
                PrjFile prj = new PrjFile(Program.Repository);

                foreach (string core in Cores)
                {
                    Logger.Instance.WriteVerbose("Selecting Core: {0}", core);
                    prj.AddAllInLibrary(prj.Environment.GetLibrary(core));
                }

                Logger.Instance.WriteVerbose("Generating...");
                File.WriteAllText(OutputPath, prj.ToString(executionType));
                Logger.Instance.WriteVerbose("Generated!");
            }
            else
            {
                Logger.Instance.WriteError("Output Path not specified, terminating...");
            }
        }