取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
Highlighted
Visitor
Visitor
1,292 次查看
注册日期: ‎06-07-2019

使用vivado工具综合

跳至解决方案

综合卡在start renaming generated ports超过24小时,CPU使用率保持在11-13%,除resource_sharing设置为on外,使用的都是默认参数,log文件有258M,超出允许范围,暂时无法上传

0 项奖励
1 解答

已接受的解答
Highlighted
Moderator
Moderator
1,203 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming ,

1. 实在不行,试着先完成synth_design, 然后在opt_design 之前再加XDC约束. 看看最终跑完implementation时时序是否还能满足.

   方法:  <1> 准备一个tcl脚本,内容是你的约束.  

             <2> 把这个tcl加在opt_design的TCL.PRE 属性中.

2. black_box 属性在UG901 里有提及,可以用于分布综合你的设计.

   Ex: 设计的层次  Top -> (A , B , C) 

    我可以对B module 设置 Black_box, 这是对Top 层综合后,网表中B 模块的内容就是空的,像一个黑盒子;然后对B 模块单独综合(out_of_context 综合),得到B模块的网表,并把这个网表合并到Top层的网表中.

UG901中给出的例子:

(* black_box *) module black_box1 (in1, in2, dout);
input in1, in2;
output dout;
endmodule


module black_box_1 (DI_1, DI_2, DOUT);
input DI_1, DI_2;
output DOUT;
black_box1 U1 (
.in1(DI_1),
.in2(DI_2),
.dout(DOUT)
);
endmodule

 

 

     

 

 

      

   

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

在原帖中查看解决方案

21 回复数
Highlighted
Moderator
Moderator
1,269 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming ,

看上去是不太正常,你能使用Vivado 2019.1 先试一下吗?

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
1,247 次查看
注册日期: ‎06-07-2019
谢谢老师,正在试
0 项奖励
Highlighted
Moderator
Moderator
1,246 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming

还有实验可以做:

1. 之前是否有跑通的版本?如果有的话是修改了什么模块才导致综合有问题?

2. 是否有 怀疑有问题的模块? 如果有的话,尝试对这个模块加black_box, 然后单独综合这个模块,看看是否能缩小问题范围?  

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
1,224 次查看
注册日期: ‎06-07-2019
谢谢老师
1.在未加时序约束的情况下跑通过,加了xdc约束后,就跑不通了,时序约束也只是很简单的一句。create_clock -name clk -period 10 [get_ports clk],我的时钟是clk
2.老师,black_box不是很熟悉,正在摸索,请问老师,有没有分布实现综合的方法,比如先综合某部分,下次综合的时候可以直接用上次综合的结果
0 项奖励
Highlighted
Moderator
Moderator
1,204 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming ,

1. 实在不行,试着先完成synth_design, 然后在opt_design 之前再加XDC约束. 看看最终跑完implementation时时序是否还能满足.

   方法:  <1> 准备一个tcl脚本,内容是你的约束.  

             <2> 把这个tcl加在opt_design的TCL.PRE 属性中.

2. black_box 属性在UG901 里有提及,可以用于分布综合你的设计.

   Ex: 设计的层次  Top -> (A , B , C) 

    我可以对B module 设置 Black_box, 这是对Top 层综合后,网表中B 模块的内容就是空的,像一个黑盒子;然后对B 模块单独综合(out_of_context 综合),得到B模块的网表,并把这个网表合并到Top层的网表中.

UG901中给出的例子:

(* black_box *) module black_box1 (in1, in2, dout);
input in1, in2;
output dout;
endmodule


module black_box_1 (DI_1, DI_2, DOUT);
input DI_1, DI_2;
output DOUT;
black_box1 U1 (
.in1(DI_1),
.in2(DI_2),
.dout(DOUT)
);
endmodule

 

 

     

 

 

      

   

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

在原帖中查看解决方案

Visitor
Visitor
1,199 次查看
注册日期: ‎06-07-2019
谢谢老师,我马上试
0 项奖励
Highlighted
Visitor
Visitor
1,172 次查看
注册日期: ‎06-07-2019
老师,自己做了一个小实验,发现,1.有黑箱和无黑箱时,时序约束的slack是一样的,想问一下,这个是正常的吗
2.黑箱状态下程序的网表和去除黑箱的主程序部分网表怎么合并,时序约束、使用面积等是通过什么样的方式计算它们总共的使用量呢
0 项奖励
Highlighted
Moderator
Moderator
1,166 次查看
注册日期: ‎11-05-2010

1.有黑箱和无黑箱时,时序约束的slack是一样的,想问一下,这个是正常的吗

你是在综合后设计报的时序吗?Slack是按照从紧到宽的顺序排列的,如果加黑盒的模块中的路径本来Slack较大,排序靠后,本来就没有显示出来,加了黑盒之后,在综合时这些路径不存在了,那么就会出现你提到的这种情况,两者slack 一样. 如果你在是在implementation之后报时序,那么黑盒内的逻辑又被倒回来了,时序结果一样也是正常的

 2.黑箱状态下程序的网表和去除黑箱的主程序部分网表怎么合并,时序约束、使用面积等是通过什么样的方式计算它们总共的使用量呢

可以使用以下命令合并网表:

open_checkpoint top_synth_with_BB.dcp

read_checkpoint submodule_ooc_synth.dcp

write_checkpoint top_synth_no_BB.dcp

你可以在把合并后的网表中报时序,资源使用情况:

report_timing_summary -file tt_timing.rpt 

report_utilization -file util.rpt

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
1,160 次查看
注册日期: ‎06-07-2019
谢谢老师,老师,我正在尝试另外一种方法,先把黑盒部分的综合出来的网表(edif文件)读入现在的项目,然后在有黑盒状态下,进行综合
0 项奖励
Highlighted
Moderator
Moderator
1,151 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming ,

这种方法也可以,不过在做顶层工程做综合时,对于子模块不用加black_box的属性,你只要加子模块的wrap文件(submodule_bb.v: 只包含子模块的端口设置,不包含实际的逻辑) 和子模块的Edif.

子模块的Edif的产生方法: 子模块做OOC综合,打开综合设计 然后write_edif submodule.edf

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Visitor
Visitor
1,145 次查看
注册日期: ‎06-07-2019
谢谢老师,马上试
0 项奖励
Highlighted
Visitor
Visitor
1,039 次查看
注册日期: ‎06-07-2019

老师,想请教一下,在OOC综合时,怎么设置时序约束

vivado工具报的是

WARNING: [Timing 38-242] The property HD.CLK_SRC of clock port "clk" is not set. In out-of-context mode, this prevents timing estimation for clock delay/skew

0 项奖励
Highlighted
Moderator
Moderator
1,037 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming ,

OOC的模块不知道输入的时钟是什么结构,HD.CLK_SRC属性是为了让OOC模块新一步了解来源时钟的信息.

这个warning对OOC 综合的影响不大,你可以暂时忽略,然后直接看整个设计的时序.

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
1,034 次查看
注册日期: ‎06-07-2019

老师,如果不设这个的话,在时序报告中,就没有slack的值,所以我觉得应该在XDC文件中加上对OOC综合的时序约束

0 项奖励
Highlighted
Moderator
Moderator
1,024 次查看
注册日期: ‎11-05-2010

你在OOC综合时,有没有给这个模块加一个临时的时钟约束?

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
1,021 次查看
注册日期: ‎06-07-2019

做OOC综合时,把原程序的时序约束加上了,也就是下面这一句

create_clock -name clk -period 10 [get_ports clk]

0 项奖励
Highlighted
Moderator
Moderator
997 次查看
注册日期: ‎11-05-2010

你子模块的时钟端口也是"clk"? 

Open_synthesized design 之后运行report_clock 是什么结果?

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
986 次查看
注册日期: ‎06-07-2019

report_clock
INFO: [Common 17-199] 'report_clock' is aliased to 'report_clocks'. Aliases may be deprecated in a future release.
WARNING: [Vivado 12-3502] Design has no clocks defined.
Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.
-----------------------------------------------------------------------------------------
| Tool Version : Vivado v.2017.1 (win64) Build 1846317 Fri Apr 14 18:55:03 MDT 2017
| Date : Wed Jun 12 12:41:49 2019
| Host : PS20190427YIQV running 64-bit major release (build 9200)
| Command : report_clocks
| Design : ffL1
| Device : xcvu13p-flga2577
| Speed File : -1 ADVANCE 1.10 04-04-2017
| Temperature Grade : E
-----------------------------------------------------------------------------------------

Clock Report


Attributes
P: Propagated
G: Generated
A: Auto-derived
R: Renamed
V: Virtual
I: Inverted

Clock Period(ns) Waveform(ns) Attributes Sources


==================================================
Generated Clocks
==================================================

 

==================================================
User Uncertainty
==================================================

==================================================
User Jitter
==================================================

1.老师,report_clock的结果是这样的

2.我所有模块的时钟都是clk,不知道这样设置可不可以

0 项奖励
Highlighted
Moderator
Moderator
961 次查看
注册日期: ‎11-05-2010

看上去你的时钟约束并没有加成功.

还是在打开的synthesized design 里的TCL CONSOLE中 直接输入:

create_clock -name clk -period 10 [get_ports clk]

report_clock

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Visitor
Visitor
949 次查看
注册日期: ‎06-07-2019

create_clock -name clk -period 10 [get_ports clk]
create_clock: Time (s): cpu = 00:00:13 ; elapsed = 00:00:16 . Memory (MB): peak = 5252.176 ; gain = 0.000
clk
report_clocks
Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
-----------------------------------------------------------------------------------------
| Tool Version : Vivado v.2019.1 (win64) Build 2552052 Fri May 24 14:49:42 MDT 2019
| Date : Wed Jun 12 17:33:48 2019
| Host : DESKTOP-F9H0DB1 running 64-bit major release (build 9200)
| Command : report_clocks
| Design : ffL5
| Device : xcvu29p-fsga2577
| Speed File : -1 ADVANCE 1.25 05-09-2019
| Temperature Grade : E
-----------------------------------------------------------------------------------------

Clock Report


Attributes
P: Propagated
G: Generated
A: Auto-derived
R: Renamed
V: Virtual
I: Inverted
S: Pin phase-shifted with Latency mode

Clock Period(ns) Waveform(ns) Attributes Sources
clk 10.000 {0.000 5.000} P {clk}


====================================================
Generated Clocks
====================================================

 

====================================================
User Uncertainty
====================================================

 

====================================================
User Jitter
====================================================

老师,按你说的操作了,结果是这样的,这是正确添加了时钟吗

0 项奖励
Highlighted
Moderator
Moderator
939 次查看
注册日期: ‎11-05-2010

Hi, @wuxiaoming ,

约束是对的,第二次生效了:

Clock Period(ns) Waveform(ns) Attributes Sources
clk 10.000 {0.000 5.000} P {clk}

但是第一次没有生效,确认你做OOC 的具体步骤是什么, 是如何加入XDC 的

注意: 对于OOC模块添加的约束文件,USED_IN 属性要有out_of_context, 因为在顶层设计中,子模块的时钟会继承顶层的,子模块的网表不必带着周期约束

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------