赛灵思
直播中

全娟

8年用户 284经验值
私信 关注
[问答]

在顶层导入ooc实现的检查点

嗨,
我有一个实施OOC的模块。
现在我有一个顶级模块,其中此OOC实现的模块作为检查点导入。
在顶层生成了这些OOC模块的许多实例。
现在甚至,顶级模块不是精确的顶级,我的意思是我想运行OOC合成和这个伪顶级模块的实现。
这可能吗?
我正在OOC检查点读取并使用模式out_of_contex和top作为顶部运行synth_design。
我不希望IO缓冲区插入顶部。
我这样做是为了对正常合成和上下文合成之间的时间进行比较研究。
我为重用的ooc模块设置了dont_touch属性。
是否应该为顶级模块设置dont_touch?
接下来的问题是,底层ooc实现中已经读取了约束文件。
顶级重用相同。
我相信没有必要再次读取xdc文件。
另外,在运行top ooc合成之前,是否应该创建一个pblock并将底部ooc模块添加到其中?
最后,是否应将black box属性设置为顶层模块中生成的实例?
这是一个示例代码:
//底层OOC实现模块
(* dont_touch =“true”*)module qpe_dummy(
clk_dnoc_i,
reset_n_dnoc_i,
clk_ref_i,
reset_n_ref_i,
......
);
//重新生成/生成的顶级:
模块qpe_mesh(
clk_dnoc_i,
reset_n_dnoc_i,
clk_ref_i,
reset_n_ref_i,
scan_mode_i
);
....
genvar i;
生成
for(i = 0;我请帮忙。
问候
一个热切的学生

以上来自于谷歌翻译


以下为原文

Hi,

I have module which is implemented OOC. Now I have a top level module where this OOC implemented module imported as a checkpoint. A number of instances of these OOC modules are generated at the top level. Now even, the top level module is not the exact top level, I mean i want to run OOC synthesis and implementation of this  pseudo top module. Is this possible?

I am reading in the OOC checkpoint and running synth_design with mode out_of_contex and top as top. I dont want IO Buffers to be inserted at the top. I am doing this for a comparison study for the time it takes between normal synthesis and out of context synthesis.

I have dont_touch property set for the reused ooc module. Should dont_touch also be set for the top module?

Next question is, a constraints file is already read in the bottom ooc implementation. The top level reuses the same. I believe there is no need to read the xdc file again.

Also, should a pblock be created and the bottom ooc module be added to this before running top ooc synthesis?

Lastly, should black box attribute be set to the instances being generated in the top module? Here is a sample code:

//Bottom level OOC implemented module(*dont_touch = "true"*) module qpe_dummy(clk_dnoc_i,reset_n_dnoc_i,    clk_ref_i,reset_n_ref_i,......);//Top level in which it is resued/generated:module qpe_mesh(clk_dnoc_i,reset_n_dnoc_i,    clk_ref_i,reset_n_ref_i,scan_mode_i);....genvar i;generatefor(i = 0; i < 5; i=i+1)begin:l_top_mesh(*black_box*)qpe_dummy i_qpe_dummy(....ports);end//l_top_meshendgenerate);endmodulePlease help with this.

Regards
An eager student

回帖(9)

胡燕珍

2018-11-9 12:01:09
你好@ prateekj212
我有一个实施OOC的模块。
现在我有一个顶级模块,其中此OOC实现的模块作为检查点导入。
在顶层生成了这些OOC模块的许多实例。
现在甚至,顶级模块不是精确的顶级,我的意思是我想运行OOC合成和这个伪顶级模块的实现。
这可能吗?
我相信只要您在OOC模块的较低级别的OOC模式下没有任何Xilinx IP,您就可以运行伪顶模块(根据您的说法,它不是精确的顶部)。
此外,如果OOC模块上没有参数,或者OOC模块的端口是用户定义的类型。
请参阅以下链接,第25页:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug901-vivado-synthesis.pdf
接下来的问题是,底层ooc实现中已经读取了约束文件。
顶级重用相同。
我相信没有必要再次读取xdc文件。
ooc运行xdc是作用域xdc,即它们只有在设置为ooc的模块中有范围。
您能否验证这些模块(ooc)xdc文件是否在其上设置了SCOPED_TO_CELLS和SCOPED_TO_REF属性。
您还可以检查.runs / synth_1文件夹中的tcl文件,以查看顶部运行是否已读取ooc xdc。
仅供参考还可以选择设置块级综合以在项目中设置特定层次结构的属性,策略。
请参阅上面的链接更多信息。
问候
罗希特
RegardsRohit -------------------------------------------------
---------------------------------------------请注意 - 请注明
答案为“接受为解决方案”,如果提供的信息是有帮助的。给予您认为有用并回复导向的帖子。感谢K--
--------------------------------------------------
----------------------

以上来自于谷歌翻译


以下为原文

Hi @prateekj212
 
I have module which is implemented OOC. Now I have a top level module where this OOC implemented module imported as a checkpoint. A number of instances of these OOC modules are generated at the top level. Now even, the top level module is not the exact top level, I mean i want to run OOC synthesis and implementation of this  pseudo top module. Is this possible? 
 
I believe you can run the pseudo top module (which is not exact top as per you) as ooc as long as you don't have any Xilinx IP in OOC mode in the lower-levels of the OOC module.  Also if  there are no parameters on the OOC module, or the ports of the OOC module are user-defined types. Refer the link below, page 25:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug901-vivado-synthesis.pdf
 
 Next question is, a constraints file is already read in the bottom ooc implementation. The top level reuses the same. I believe there is no need to read the xdc file again. 
 
ooc runs xdc are scoped xdc i.e they have there scope only in the module which is set as ooc. Can you verify whether these modules(ooc) xdc file  have SCOPED_TO_CELLS and SCOPED_TO_REF property set on them.
You can also check for the tcl file in <>.runs/synth_1 folder to see if the ooc xdc been read by top run.
 
Just FYI There is also option to set block level synthesis  to set property, strategy on  particular hierarchy in the project. Refer the above link more info on that.
 
Regards
Rohit
 
Regards
Rohit
----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------
举报

杨梅

2018-11-9 12:11:36
ooc模块中有参数被合成和实现。
这是否意味着使用它的最高级别不能再次作为OOC运行?
我正在努力理解(因为我是Vivado的新手),synth_design和link_design之间的区别以及使用它们的正确上下文。
我通常有一个tcl脚本流程:
read_verilog文件..
read_verilog头文件..
read_xdc约束..
synth_design -mode out_of_context -part some_part -flatten_hierarchy rebuilt -top ooc_module_to_be_resued
#optional opt_design
place_design
#optional phys_opt_design
route_designwrite_checkpoint ooc_moduleNow在顶层:
read_checkpoint ooc_module.dcp#我相信这里也可以使用open_checkpoint ...那么哪个更好?
#the文件说ooc检查点不会自动加载设计...以便于在设计中添加更多ooc .dcp文件....
add_files top.v
要么
read_verilog top.v
link_design -top pseudo_top -mode out_of_context -part somepart
或者synth_design -top top.v flatten same ... .same ... part
又来了
再次路线
#what应该在重用流程中使用?请帮忙。
谢谢
热切的学生

以上来自于谷歌翻译


以下为原文

There are parameters in the ooc module which is synthesised and implemented. Does that mean the top level in which it is used cannot be run as OOC again? 
 
I am struggling with understanding( Since I am new to Vivado) the difference between synth_design and link_design and the correct context in which to use them. 
 
I have a tcl script flow typically:
read_verilog files..read_verilog header files..read_xdc constraints ..synth_design -mode out_of_context -part some_part -flatten_hierarchy rebuilt -top ooc_module_to_be_resued#optional opt_designplace_design#optional phys_opt_designroute_design 

write_checkpoint ooc_moduleNow in the top level:
 
 
read_checkpoint ooc_module.dcp # i believe here open_checkpoint also can be used... So which is better? #the document says ooc checkpoints dont automatically load a design... in order to facilitate adding more ooc .dcp files in to the design....add_files top.vorread_verilog top.vlink_design -top pseudo_top -mode out_of_context -part somepartor synth_design -top top.v flatten same.. .same... partagain placeagain route#what should be used in the reuse flow? Please help. 
 
Thanks
 
Eager student
 
举报

胡燕珍

2018-11-9 12:27:20
你好@ prateekj212
ooc模块中有参数被合成和实现。
这是否意味着使用它的最高级别不能再次作为OOC运行?
我建议全局合成ooc模块而不是ooc,因为这样做可能会导致流程的后续部分出错。
对于顶级,应使用open_checkpoint命令而不是read_checkpoint命令,因为open_checkpoint将读取检查点,在内存设计中创建并初始化项目中的设计。
如果您希望使用read_checkpoint,那么您还需要在脚本中包含link_design。
请参阅以下链接,第49页:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug904-vivado-implementation.pdf
问候
罗希特
RegardsRohit -------------------------------------------------
---------------------------------------------请注意 - 请注明
答案为“接受为解决方案”,如果提供的信息是有帮助的。给予您认为有用并回复导向的帖子。感谢K--
--------------------------------------------------
----------------------

以上来自于谷歌翻译


以下为原文

Hi @prateekj212
 
There are parameters in the ooc module which is synthesised and implemented. Does that mean the top level in which it is used cannot be run as OOC again? 
 
I would suggest to synthesize the ooc module globally and not as ooc as doing this can cause errors in later part of the flow.
 
For your top level, open_checkpoint command should be used over read_checkpoint command as open_checkpoint will read the checkpoint, create in memory design and initialize the design in the project.
If you wish to use read_checkpoint then you need to include link_design as well in your script. Refer the link below, page 49:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug904-vivado-implementation.pdf
 
Regards
Rohit
 
Regards
Rohit
----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------
举报

杨梅

2018-11-9 12:36:29
我不确定你在全球的意思。
你的意思是正常合成吗?
如果我进行正常的合成,它将插入IO缓冲区,这是我不想要的。
问候
一个热切的学生

以上来自于谷歌翻译


以下为原文

I am not sure what you mean by globally. Do you mean normal synthesis? 
 
If I do normal synthesis, it will insert IO buffers, which I do not want. 
 
regards
an eager student
举报

更多回帖

发帖
×
20
完善资料,
赚取积分