Инструмент для программного рисования логических схем в PDF

Я ищу инструмент (желательно с открытым исходным кодом) для визуализации логических схем, таких как эта

схема

со следующими ограничениями:

  • Описание диаграммы должно быть задано программно (через java или путем предоставления какого-либо текстового описания, которое читается из файла; в основном я хочу иметь возможность вызывать метод Java, который, в свою очередь, может запускать внешнюю программу; я делаю НЕ нужен визуальный инструмент, требующий ввода данных пользователем).
  • На выходе должен быть PDF.
  • Если возможно, маршрутизация должна выполняться автоматически.
  • Он должен работать в Windows .

Хотя это кажется достаточно простым, я не нашел ничего удовлетворительного в результате обширных исследований. Ближе всего подошли следующие инструменты:

  • пакет tikzLatex (с запуском Latex в моем контексте все в порядке, но по какой-то причине комбинация Java и tikz сломалась, см. здесь: https://stackoverflow.com/questions/33298548/pdflatex-run-crashes-when- execute-from-java-on-windows ; также, насколько мне известно, tikz не может выполнять автомаршрутизацию).
  • Программа blockdiag( http://blockdiag.com/en/index.html ), которая, однако, если я прав, недоступна для Windows (и не имеет предопределенных логических элементов).

Я, очевидно, посмотрел на graphviz, но проблема в том, что вы не можете сказать graphviz, где именно ребра должны состыковываться с узлами, что важно, если вы хотите указать входы и выходы.

В SE также есть этот вопрос: https://stackoverflow.com/questions/6422603/circuit-block-diagram-drawing . Но, не вдаваясь в подробности, все предложения не сработали для меня из-за вышеупомянутых ограничений.

Я ожидал, что эта проблема будет решена много раз раньше... (И, возможно, я просто плохо гуглил.)

Подход Tikz должен работать нормально. Решение для вашей зависшей Java-программы достаточно простое. Ответ дан в связанном вопросе.
@DanielRenshaw Спасибо, я изучаю это (я пытался перенаправить вывод раньше, хотя и не таким образом; в конце концов, предложения кажутся разумными; я дам вам знать; с tikz мне придется выполнить маршрутизацию вручную что ли?)

Ответы (2)

Я бы посоветовал взглянуть на SchemDraw , который представляет собой пакет Python , который:

  • может выводить результаты в формате svg, eps или pdf,
  • позволяет вам определять свои собственные компоненты,
  • является кроссплатформенным (включая окна),
  • бесплатно, бесплатно и FOSS

Вы можете либо создавать диаграммы непосредственно из python, либо определять свой собственный формат для хранения информации и анализировать ее.

Это выглядит ДЕЙСТВИТЕЛЬНО здорово! У меня нет опыта работы с Python, но, возможно, это будет основной причиной, чтобы наконец начать его изучать!

Есть новый проект под названием netlistsvg , который может отвечать всем требованиям; он все еще находится на ранней стадии, но ориентирован на логические диаграммы и особенно на синтез Verilog.