Есть ли возможность преобразовать некоторый код во встроенные примитивы verilog?

#yosys

#yosys

Вопрос:

Я думал, что techmap это будет сделано без каких-либо аргументов, но это не так. вероятно, я не понимаю, что означает «логический синтез».

базовый пример:

AND_GATE.v:

 module AND_GATE( input A, input B, output X);
    assign X = A amp; B;
endmodule
 
 yosys> read_verilog AND_GATE.v
yosys> synth
....................
   Number of wires:                  3
   Number of wire bits:              3
   Number of public wires:           3
   Number of public wire bits:       3
   Number of memories:               0
   Number of memory bits:            0
   Number of processes:              0
   Number of cells:                  1
     $_AND_                          1
yosys> abc -g AND,NAND,OR,NOR,XOR,XNOR
........................
3.1.2. Re-integrating ABC results.
ABC RESULTS:               AND cells:        1
ABC RESULTS:        internal signals:        0
ABC RESULTS:           input signals:        2
ABC RESULTS:          output signals:        1
Removing temp directory.

yosys> clean
Removed 0 unused cells and 3 unused wires.
yosys> write_verilog net.v
 

net.v

 module AND_GATE(A, B, X);
  (* src = "AND_GATE.v:1" *)
  input A;
  (* src = "AND_GATE.v:1" *)
  input B;
  (* src = "AND_GATE.v:1" *)
  output X;
  assign X = B amp; A;
endmodule
 

Ответ №1:

Использование чего-то вроде synth; abc -g AND,NAND,OR,NOR,XOR,XNOR will map для базового набора элементов, эквивалентных примитивам Verilog — techmap само по себе вы тоже далеко не уйдете — но серверная часть Yosys verilog не имеет возможности использовать встроенные примитивы, она всегда записывает элементы в качестве их выражения.

Комментарии:

1. спасибо, но write_verilog все равно создаю тот же файл.