Jump to content

    
Sign in to follow this  
new123

Правильное описание constraint

Recommended Posts

Форумчане, день добрый. Помогите правильно описать путь пжлст.

Очень упрощенно имею такой код.

assign x = (a == 16'd49000)? 1'b0: 1'b1;
assign z = {...., x, ....};
            
always @ (posedge clk) begin
  a <= ...
end

Хочу помочь квартусу не напрягаться. И сказать что расчет Z мне актуален после трех тактов, как получу A. То есть, чтобы он не напрягался и не пробовал все уложить в один такт.

set_multicycle_path подойдет? Если да, не могли бы привезти точный пример, как его точно прописать в данной задаче, у меня как то с ним не сложилось.

Или может в таких условиях вообще set_false_path подойдет?

 

Заранее спасибо.

Share this post


Link to post
Share on other sites
29 minutes ago, new123 said:

set_multicycle_path подойдет? Если да, не могли бы привезти точный пример, как его точно прописать в данной задаче, у меня как то с ним не сложилось.

Или может в таких условиях вообще set_false_path подойдет?

https://embedders.org/content/timequest-dlya-chainikov-prilozhenie-3-dobryi-i-zlobnyi-multicycle

мультициклы можно накладывать только между регистрами. в целом ложный путь тоже пойдет. 

Share this post


Link to post
Share on other sites

Меня в таких случаях тянет завести несколько CE разнесённых по фазе на несколько клоков.

Интересно, если так сделать - надо будет думать о constraint или квартус/вивадо - сам поймёт?

Share this post


Link to post
Share on other sites

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

Если логику z  как-то  фиксировать, например (* keep *) чтобы при синтезе она не оптимизировалась, то тогда можно попробовать задать 

set_multicycle_path 3 -start -setup -from [get_pins path_name/a_reg|q*]  -through [get_cells  path_name/z]

set_multicycle_path 2 -start  -hold  -from [get_pins path_name/a_reg|q*]  -through [get_cells  path_name/z]

Ну или нужен такой код, чтобы можно было явно задавать set_multicycle_path конкретно до z

assign x = (a == 16'd49000)? 1'b0: 1'b1;
            
always @ (posedge clk) begin
  a <= ...
  z <= {...., x, ....};
end

set_multicycle_path 3 -end -setup -from [get_pins path_name/a_reg|q*]  -to [get_pins path_name/z_reg|d*]

set_multicycle_path 2 -end -hold   -from [get_pins path_name/a_reg|q*]  -to [get_pins path_name/z_reg|d*] 

Удачи! Rob.

Share this post


Link to post
Share on other sites
36 minutes ago, des00 said:

https://embedders.org/content/timequest-dlya-chainikov-prilozhenie-3-dobryi-i-zlobnyi-multicycle

мультициклы можно накладывать только между регистрами. в целом ложный путь тоже пойдет. 

спасибо, я об этом не подумал. Надо в Time Analyzer поковырять мне пути.

4 minutes ago, RobFPGA said:

Ну или нужен такой код, чтобы можно было явно задавать set_multicycle_path конкретно до z

спасибо.

Всем спасибо большое, как всегда, быстро и профессионально

32 minutes ago, _4afc_ said:

надо будет думать о constrain

я конечно особо не мастак, но у меня сложилось мнение, чем больше опишешь, тем лучше. У меня уже чип скоро под завязку, квартусу все тяжелее и тяжелее. А более детальные констрейны выручать начинают.

Share this post


Link to post
Share on other sites

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

59 minutes ago, lexx said:

False path  лучше не использовать - при синтезе не  будет никаких  констрейнов, только логика.

Не могли бы пояснить что вы имели в виду?

Успехов! Rob.

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