Jump to content

    

.lib для Yosys

Добрый день.

Разыскивается пример lib файла с описание FDE триггера для Yosys.

Есть ли на форуме те, кто может проконсультировать по работе в Yosys?

Edited by Dantist2k17

Share this post


Link to post
Share on other sites

А что там в это Yosys какие-то особенные либы нужны?

Если речь идет об формате liberty то хорошие примеры можно найти в стандарте:

https://media.c3d2.de/mgoblin_media/media_entries/659/Liberty_User_Guides_and_Reference_Manual_Suite_Version_2017.06.pdf

Share this post


Link to post
Share on other sites
17 hours ago, MickeyMouse said:

А что там в это Yosys какие-то особенные либы нужны?

Если речь идет об формате liberty то хорошие примеры можно найти в стандарте:

https://media.c3d2.de/mgoblin_media/media_entries/659/Liberty_User_Guides_and_Reference_Manual_Suite_Version_2017.06.pdf

Была (есть) проблема, связанная с тем, что Yosys ругался на lib триггера, в котором при описании ff (IQ,IQB) { ... }  next_state определяется выражением, например:

next_state: (CE*D + !CE*IQ);

а не просто как: next_state: D;

Как мне рассказали программисты, проанализировавшие исходный код Yosys, там явно указано о том, что подобные выражения текущая версия не поддерживает, мол в разработке.

Так что судя по всему дело не в либах.

Однако сам Yosys имеет на вооружении команду dff2dffe, которая оптимизирует схему, выявляя ff с мультиплексорами в обратной связи и заменяя их на ffe. При этом в выходной netlist пишутся примитивы \$_DFFE_PP_.

Всегда можно сделать автозамену, но это как-то...

 

Share this post


Link to post
Share on other sites
1 час назад, Dantist2k17 сказал:

Была (есть) проблема, связанная с тем, что Yosys ругался на lib триггера, в котором при описании ff (IQ,IQB) { ... }  next_state определяется выражением, например:

next_state: (CE*D + !CE*IQ);

а не просто как: next_state: D;

Как мне рассказали программисты, проанализировавшие исходный код Yosys, там явно указано о том, что подобные выражения текущая версия не поддерживает, мол в разработке. 

Так что судя по всему дело не в либах.

Однако сам Yosys имеет на вооружении команду dff2dffe, которая оптимизирует схему, выявляя ff с мультиплексорами в обратной связи и заменяя их на ffe. При этом в выходной netlist пишутся примитивы \$_DFFE_PP_.

Всегда можно сделать автозамену, но это как-то...

 

В описании на этот тул сказано:

Mapping to Xilinx 7-Series and Lattice iCE40 FPGAs

Если это не для красного словца, то где yosys берет библиотеки для мапинга? Ведь в xilinx вроде тоже все на либерти(по крайней мере либерти можно найти в папках вивадо). Попробуйте поискать нужный Вам флип-флоп в таргетах для yosys, если он есть значит они его как-то должны описывать.

PS У меня была проблема с next_state, не знал как описать бифронтовый флип-флоп при характеризации, я как-раз в вивадо такой пример и нашел(это я к тому что там точно либерти есть на элементы).

Edited by MickeyMouse

Share this post


Link to post
Share on other sites

@Dantist2k17 

Флоп с разрешением имеет две схемы замещения - флоп с мультиплексором в обратной связи, и флоп с клок-гатором в цепи управления. Поэтому если не поддерживаются формулы в next_state, можете попробовать вставить формулу в clocked_on

 clocked_on : "CLK * EN";

а еще лучше, купите DC.

Share this post


Link to post
Share on other sites
12 hours ago, Aleх said:

@Dantist2k17 

Флоп с разрешением имеет две схемы замещения - флоп с мультиплексором в обратной связи, и флоп с клок-гатором в цепи управления. Поэтому если не поддерживаются формулы в next_state, можете попробовать вставить формулу в clocked_on

 clocked_on : "CLK * EN";

а еще лучше, купите DC.

Спасибо, попробую.

Про DC не поспоришь.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this