Генератор логических схем
Требуется разработать генератор логических схем цифровой аппаратуры. Результатом работы генератора является ориентированный граф, описывающий логическую схему в терминах заданного внутреннего представления (ВП). Генератор принимает на вход следующие параметры (в начальной версии можно ограничиться параметрами 1--3):
- количество входных вершин (primary inputs) графа;
- количество выходных вершин (primary outputs) графа;
- количество внутренних вершин графа;
- глубина схемы;
- random seed (для обеспечения воспроизводимости результатов генерации);
- тип схемы (комбинационная или последовательностная);
- иерархичность (да/нет);
- базис схемы;
- алгоритм генерации.
Построенный граф не должен содержать изолированных вершин. Для каждой входной или внутренней вершины должен существовать хотя бы один путь в некоторую выходную вершину.
Для начальной реализации данного генератора можно использовать подход, основанный на случайной генерации матрицы смежности. Построенную матрицу необходимо проанализировать и сгенерировать дополнительные рёбра, чтобы обеспечить связность графа в целом. В начальной версии генератора предполагаем, что схема строится в базисе "И-НЕ" -- внутренние вершины соответствуют вентилям, реализующим функции AND/NOT.
В качестве ВП используем model2
. Код генератора поместить в подкаталоге model2/generator
.