UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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

使用vivado工具综合

转到解答

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

0 项奖励
1 个已接受解答

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

回复: 使用vivado工具综合

转到解答

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 条回复21
Moderator
Moderator
814 次查看
注册日期: ‎11-05-2010

回复: 使用vivado工具综合

转到解答

Hi, @wuxiaoming ,

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

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Visitor wuxiaoming
Visitor
792 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

转到解答
谢谢老师,正在试
0 项奖励
Moderator
Moderator
791 次查看
注册日期: ‎11-05-2010

回复: 使用vivado工具综合

转到解答

Hi, @wuxiaoming

还有实验可以做:

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

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

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Visitor wuxiaoming
Visitor
769 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

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

回复: 使用vivado工具综合

转到解答

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 wuxiaoming
Visitor
744 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

转到解答
谢谢老师,我马上试
0 项奖励
Visitor wuxiaoming
Visitor
717 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

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

回复: 使用vivado工具综合

转到解答

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.
-------------------------------------------------------------------------
Visitor wuxiaoming
Visitor
705 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

转到解答
谢谢老师,老师,我正在尝试另外一种方法,先把黑盒部分的综合出来的网表(edif文件)读入现在的项目,然后在有黑盒状态下,进行综合
0 项奖励
Moderator
Moderator
696 次查看
注册日期: ‎11-05-2010

回复: 使用vivado工具综合

转到解答

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.
-------------------------------------------------------------------------
Visitor wuxiaoming
Visitor
690 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

转到解答
谢谢老师,马上试
0 项奖励
Visitor wuxiaoming
Visitor
584 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

转到解答

老师,想请教一下,在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 项奖励
Moderator
Moderator
582 次查看
注册日期: ‎11-05-2010

回复: 使用vivado工具综合

转到解答

Hi, @wuxiaoming ,

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

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

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

回复: 使用vivado工具综合

转到解答

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

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

回复: 使用vivado工具综合

转到解答

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

 

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

回复: 使用vivado工具综合

转到解答

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

create_clock -name clk -period 10 [get_ports clk]

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

回复: 使用vivado工具综合

转到解答

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

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

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

回复: 使用vivado工具综合

转到解答

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 项奖励
Moderator
Moderator
506 次查看
注册日期: ‎11-05-2010

回复: 使用vivado工具综合

转到解答

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

还是在打开的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 项奖励
Visitor wuxiaoming
Visitor
494 次查看
注册日期: ‎06-07-2019

回复: 使用vivado工具综合

转到解答

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 项奖励
Moderator
Moderator
484 次查看
注册日期: ‎11-05-2010

回复: 使用vivado工具综合

转到解答

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.
-------------------------------------------------------------------------