Jump to content

    
Sign in to follow this  
shamrel

Слаки для несуществующих путей

Recommended Posts

Приветствую!

Есть модуль А, с него выходит сигнал (14 бит), сигнал идет на модуль B, который имеет единственный выход (14 бит), подключенный непосредственно к выводам. Также сигнал идет на модуль C. Выходы модуля С расходятся по другим модулям. Схема полностью синхронна, один домен.

При анализе выдает слаки. Для меня странно это: From Node: reg_B, To Node: reg_C. При этом. связи между регистрами reg_B (находится в модуле B) и reg_C (в модуле С) нет.

Зачем анализатор это оценивает? Где он нашел этот путь? Естественно, просмотр RTL и Technology Map не дает результата, нет такого пути.

                 _______
                | MOD B | 
_______     +-->|       |----> Pin Out (dacM_code_A_o)
| MOD A |    |   | reg_B |  
|       |----+   |_______|
|       |    |    _______
|       |    |   | MOD C |
|       |    +-->|       |----> Other Moduls
|_______|        | reg_C |
                |_______|

И на всякий случай, содержимое sdc:

set_time_format -unit ns -decimal_places 3

derive_clock_uncertainty

create_clock -period 50MHz -name {clk_50MHz_i} [get_ports {clk_50MHz_i}]

derive_pll_clocks

set clk_125MHz pll_50MHz_inst|altpll_component|auto_generated|pll1|clk[0]

create_generated_clock -name {clk_ext}  -invert -source $clk_125MHz [get_ports {dacM_clk_o}]

set_output_delay -clock [get_clocks {clk_ext}] -max  0.2 [get_ports {dacM_code_A_o[*]}]
set_output_delay -clock [get_clocks {clk_ext}] -min -1.5 [get_ports {dacM_code_A_o[*]}]

 

P.S.: Я понимаю. что пока вопрос рассчитан на телепатов, подскажите, какими сведениями дополнить?

Share this post


Link to post
Share on other sites
Locate in Technology Map viewer не помогает ?

Помог, но лучше не стало. Есть оказывается путь. Есть, но быть его не должно! На RTL нет, а в Technology Map есть.

Пот холодный пробивает, волосы на спине дыбом встают, аж сидеть неудобно! Это оказывается я настолько Verilog не знаю ... или вообще не понимаю, как работает компилятор.

Упрощенно иерархия модулей выглядит так:

mod_A mod_A_inst (
...
.data_o(mod_A_out) // других выходов нет
);

mod_B mod_B_inst (
...
.signal_i(mod_A_out), // вход модуля
.data_o(mod_B_out)    // других выходов нет
);

mod_C mod_C_inst (
...
.signal_i(mod_A_out), // вход модуля
.data_o(mod_C_out)    // других выходов нет
);

Как выглядит RTL, я показал в предыдущем посте, а вот так выглядит Technology Map:

                  _______
                | MOD B |data_o 
_______     +-->|       |----> Pin Out
| MOD A |    |   | reg_B |reg_B  
|       |----+   |_______|----+
|       |                     |    _______
|       |                     |   | MOD C |
|       |                     +-->|       |----> Other Moduls
|_______|                         | reg_C |
                                 |_______|

 

Причем, reg_B не дублирует вход, да, туда записываются данные, но с преобразованием. В модуля А на выходе стоит регистр. Это получается в модуль С вообще че попало подается.

Как дальше жить?

 

Share this post


Link to post
Share on other sites
Помог, но лучше не стало. Есть оказывается путь. Есть, но быть его не должно! На RTL нет, а в Technology Map есть.

Как дальше жить?

Квартусовский фиттер может формировать границы модулей, как ему вздумается, в данном случае он взял и перенёс кусок логики из модуля C в модуль B. Причём запретить ему это делать вроде как невозможно. Естественно, поведение схемы от этого не меняется.

Share this post


Link to post
Share on other sites
Как дальше жить?

Думать головой и понимать причины такого поведения.

 

Причём запретить ему это делать вроде как невозможно.

Возможно. Например запретив оптимизацию между модулей (так называем плоский нетлист) или зафиксировать конкретные сигналы, запретив их оптимизацию.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this