当尝试合成Verilog设计(我想生成一个示意图)时,我得到以下警告:
Synthesizing Unit <rising>.
Related source file is "C:\PPM\PPM_encoder\detectors.v".
WARNING:Xst:647 - Input <in> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
Summary:
no macro.
Unit <rising> synthesized.相关的模块很简单:
module rising (in, out);
output out;
input in;
not #(2,3) (ininv, in);
and #(2,3) (out, in, ininv);
endmodule我在几个不同的位置调用它,包括:
rising startdetect(
.in(start),
.out(or01a));当我完成综合,然后选择"View schematic“时,实际上只有一个元件存在。展开该组件,我只看到输出连接到地,这是初始条件。其他的都不存在。这是我的测试台作为我的“顶层模块”。
当我选择我实际的主项目(在testbench下面,它被称为ppmencode)作为顶部模块时,我得到相同的警告,以及每个模块实例的额外警告:
WARNING:Xst:1290 - Hierarchical block <startdetect> is unconnected in block <ppmencode>.
It will be removed from the design.出现这两个警告的原因是什么?我如何修复它们并生成正确的原理图?
这张图显示了我得到的原理图。

发布于 2013-12-12 09:54:04
仅将信号命名为module...it的输入是不够的,需要将其实际连接到FPGA上的引脚上。另一方面,你的rising模块正在接受输入的AND,它的complement...the合成器可能已经找到了一种方法来简化这一逻辑,这与你的愿望相反。
发布于 2013-12-13 04:17:14
综合正在优化所有的逻辑,因为它忽略了延迟。从功能上讲,您的in & ~in始终为0。你想要的是一个脉冲发生器。实现这一点的一种方法是使用dont_touch属性,该属性告诉合成器必须在设计中保留特定的模块实例化。有关更多信息,请参阅此Properties Reference Guide。
module rising (in, out);
output out;
input in;
(* DONT_TOUCH = "TRUE" *)
not #(2,3) (ininv, in);
and #(2,3) (out, in, ininv);
endmodule请注意,即使使用dont_touch,合成结果也可能与模拟不匹配。综合忽略了你的网表中的人为计时。实际的脉冲宽度可以更长、更可能更短或更小以被记录。检查您的标准单元库并查找要应用于ininv的延迟单元,这将增加脉冲宽度。该库可能已经具有已经定义的脉冲发生器单元。
https://stackoverflow.com/questions/20533534
复制相似问题