Пример #1
0
        private void ButtonTranslateClick(object sender, EventArgs e)
        {
            //try
            //{
            var quartusText = richTextBoxQuartusScheme.Text;
            //var kovchegText = QuartusToKovchegTranslator.Translator.Translate(quartusText);

            var quartusNetlist = File.ReadAllText(textBoxInputFilePath.Text);

            richTextBoxLog.Text += "Файл считан успешно" + Environment.NewLine;

            var analyzer      = new NetlistAnalyzer();
            var quartusScheme = analyzer.Analyze(quartusNetlist);

            richTextBoxLog.Text += "Анализ завершён успешно" + Environment.NewLine;

            var transformer   = new NetlistTransformer();
            var kovchegScheme = transformer.Transform(quartusScheme);

            richTextBoxLog.Text += "Преобразование завершено успешно" + Environment.NewLine;

            var generator      = new NetlistGenerator();
            var kovchegNetlist = generator.GenerateNetlist(kovchegScheme);

            richTextBoxLog.Text += "Генерация завершена успешно" + Environment.NewLine;

            richTextBoxKovchegScheme.Text = kovchegNetlist;
            tabControlView.SelectedTab    = tabPageKovcheg;

            File.WriteAllText(textBoxOutputFilePath.Text, kovchegNetlist);

            richTextBoxLog.Text += "Запись в файл завершена успешно" + Environment.NewLine;
            //}
            //catch (Exception exception)
            //{
            //    richTextBoxLog.Text += GetFullExceptionTrace(exception) + Environment.NewLine + Environment.NewLine;
            //    tabControlView.SelectedTab = tabPageLog;
            //}

            richTextBoxLog.Text += string.Join(Environment.NewLine,
                                               $"Объектное представление схемы из Quartus:",
                                               JsonConvert.SerializeObject(quartusScheme, Formatting.Indented),
                                               Environment.NewLine,
                                               $"Объектное представление схемы для Ковчег:",
                                               JsonConvert.SerializeObject(kovchegScheme, Formatting.Indented));

            listBoxQuartusInstances.Items.Clear();
            listBoxQuartusNets.Items.Clear();
            listBoxKovchegInstances.Items.Clear();
            listBoxKovchegNets.Items.Clear();

            listBoxQuartusInstances.Items.AddRange(quartusScheme.Instances.Select(i => $"{i.ModuleIdentifier} {i.Identifier}").ToArray());
            listBoxQuartusNets.Items.AddRange(quartusScheme.Nets.Select(i => $"{i.NetType} {i.Identifier} {i.ConnectedNet}").ToArray());
            listBoxKovchegInstances.Items.AddRange(kovchegScheme.Instances.Select(i => $"{i.ModuleIdentifier} {i.Identifier}").ToArray());
            listBoxKovchegNets.Items.AddRange(kovchegScheme.Nets.Select(i => $"{i.NetType} {i.Identifier} {i.ConnectedNet}").ToArray());
        }
Пример #2
0
        static void Main(string[] args)
        {
            WriteUsage();
            while (true)
            {
                var line  = Console.ReadLine();
                var parts = line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                if (parts.Length != 3 || parts[0] != "convert")
                {
                    WriteUsage();
                    continue;
                }

                if (!File.Exists(parts[1]))
                {
                    Console.WriteLine("Input file not exists");
                    continue;
                }

                if (!IsCorrectPath(parts[2]))
                {
                    Console.WriteLine("Invalid output path");
                    continue;
                }

                var quartusNetlist = File.ReadAllText(parts[1]);
                var analyzer       = new NetlistAnalyzer();
                var quartusScheme  = analyzer.Analyze(quartusNetlist);
                var transformer    = new NetlistTransformer();
                var kovchegScheme  = transformer.Transform(quartusScheme);
                var generator      = new NetlistGenerator();
                var kovchegNetlist = generator.GenerateNetlist(kovchegScheme);

                File.WriteAllText(parts[2], kovchegNetlist);

                Console.WriteLine("Success!");
            }
        }