У меня есть следующие часы ворот в конструкции:Как отобразить часы ворота в технической библиотеке ячейки
module my_clkgate(clko, clki, ena);
// Clock gating latch triggered on the rising clki edge
input clki;
input ena;
output clko;
parameter tdelay = 0;
reg enabled;
always @ (clki, ena) begin
if (!clki) begin
enabled = ena;
end
end
assign #(tdelay) clko = enabled & clki;
endmodule
Когда синтезирования с Yosys, в результате Netlist конкретизирует (для reg enabled
) в \$_DLATCH_P_
клетке, которая не входит в стандартном файле сотовой библиотеки я использую, хотя в библиотеке есть защелки.
Вместо того чтобы пытаться сопоставить enabled
этого дизайна со стандартной ячейкой защелки от библиотеки, я бы хотел использовать временные ворота, предоставляемые библиотекой, а также логический элемент AND, который имеет такой интерфейс:
module LIB_GATE (
input CK,
input E,
output ECK);
endmodule
Я уже пробовал следующее:
- Просто заменив содержимое
my_clkgate
модуль источника с экземпляром дляLIB_GATE
и пересылки всех соединений портов. Йосис жаловался, чтоLIB_GATE
«не является частью дизайна». - В дополнение к точке 1 объявление
LIB_GATE
в виде пустого модуля (как показано выше). Это привело к оставлению двух пустых модулей:LIB_GATE
иmy_clkgate
в результирующем списке соединений. - Я также попытался использовать команду
extract
с моделями Verilog библиотеки, к сожалению, это не удается разобрать (я подозреваю, что файл содержит некоторые неподдерживаемые конструкции Verilog, такие какspecify
блоков).
Конечно, я мог бы написать сценарий, пост-процессы список соединений для замены my_clkgate
с LIB_GATE
экземпляров, но мне было интересно, если Yosys может сделать это для меня?
Для справки, вот файл «synth.ys», который я использую:
read_liberty -lib my_library.lib
script yosys_readfiles.ys
proc; opt; memory; opt; fsm -norecode; opt
techmap; opt
dfflibmap -liberty my_library.lib
abc -liberty my_library.lib
hilomap -hicell LIB_TIEHI Y -locell LIB_TIELO Y
clean
write_verilog -noattr -noexpr output.v
stat
Где «yosys_readfiles.ys» представляет собой файл, содержащий read_verilog
строку со всеми входными файлами, за которым следует hierarchy
-check -top my_design
линия.
Я не знаю о Yosis, но в Design Compiler (Synopsys) есть команда 'set_clock_gating_style', которая позволяет вам выбирать элементы, используемые в качестве часовых механизмов (и другие параметры). Вы проверяли что-то подобное в Йозе? – Krouitch