如何处理Verilog中无用的输出?

如何处理Verilog中无用的输出?,verilog,Verilog,道歉这个标题不能很好地解释这个问题,我将在下面详细解释 我是verilog的新手,第一次做实验任务让我很痛苦。一个任务是制作一个4*4进位保存乘法器,它由两种类型的乘法器组成,这两种乘法器依次由全加器和与门组成,全加器由半加器组成。我从最简单的半加法器一直到进位保存乘法器 两种类型的乘数: 进位保存倍增器的手绘 进位保存乘数的代码在这里。我实例化了这两种类型的乘法器,并使用许多内部导线进行连接。(我承认这很幼稚,但这是目前我能做的最好的了,我会继续练习,并在这方面做得更好。)我的问题是:参考最

道歉这个标题不能很好地解释这个问题,我将在下面详细解释

我是verilog的新手,第一次做实验任务让我很痛苦。一个任务是制作一个4*4进位保存乘法器,它由两种类型的乘法器组成,这两种乘法器依次由全加器和与门组成,全加器由半加器组成。我从最简单的半加法器一直到进位保存乘法器

两种类型的乘数:

进位保存倍增器的手绘

进位保存乘数的代码在这里。我实例化了这两种类型的乘法器,并使用许多内部导线进行连接。(我承认这很幼稚,但这是目前我能做的最好的了,我会继续练习,并在这方面做得更好。)我的问题是:参考最左边的“手绘”模块,你可以看到有两个端口——q0_out和q1_out,是该乘法器模块的输出,但不是主输出列表中输出的一部分。实际上,q0_out、q1_out、q2_out、q3_out和m0_out、m1_out、m2_out、m3_out都不在输出列表中。它们实际上分别是q0到q3和m0到m3的相同值。(这可以通过第一张图像进行验证) 当我合成我粘贴在下面的代码时,Xilinx ISE给了我一堆相同的警告,例如:“q3_out的赋值被忽略,因为从未使用标识符”。 当我问TA时,他说我应该“将4*4进位保存乘法器视为一个黑匣子,唯一的输入是m3m2mm1m0、q3q2q1q0,唯一的输出是p7p6p5p4p2p1。像q3_out这样的输出是“内部”的,不应该出现在最终的输出列表中”。我不知道如何处理这种情况。如您所见,我只是将q3指定给q3_out,因为q3_out是从q3开始传播的相同值

请随意评论我的代码(需要改进什么,什么是糟糕的编码风格),并请我对这个问题进行更多的阐述,如果可能的话,请分享一些如何解决这个问题的想法。提前谢谢大家

`timescale 1ns / 1ps
module multiplier44_OMG(
input m0,m1,m2,m3,q0,q1,q2,q3,
output p0,p1,p2,p3,p4,p5,p6,p7
);


 wire w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15,w16,w17,w18,w19,w20;
 wire w21,w22,w23,w24,w25,w26,w27,w28,w29,w30,w31,w32,w33,w34,w35,w36,w37; //Internal wires

 wire cin0,cin1,cin2,mk1_mul2_3; //These inputs are feeding into the carry save multiplier and are all zeroes.
 wire q0_out,q1_out,q2_out,q3_out,m0_out,m1_out,m2_out,m3_out;

   assign cin0=1'b0;
assign cin1=1'b0;
assign cin2=1'b0;
assign mk1_mul2_3=1'b0;// Inputs are assigned to zero.

assign q0_out=q0;
assign q1_out=q1;
assign q2_out=q2;
assign q3_out=q3;
assign m0_out=m0;
assign m1_out=m1;
assign m2_out=m2;
assign m3_out=m3;//THIS IS THE PART I DON'T KNOW HOW TO DEAL WITH


and (p0,m0,q0);
multiplier2 mul2_0(m1,m0,q0,q1,cin0,w1,w2,w3,w4,p1);
multiplier2 mul2_1(m2,m1,w1,w2,w3,w5,w6,w7,w8,w9);
multiplier2 mul2_2(m3,m2,w5,w6,w7,w10,w11,w12,w13,w14);
multiplier2 mul2_3(mk1_mul2_3,m3,w10,w11,w12,q0_out,q1_out,w15,w16,w17);
multiplier mul_0(w9,w4,q2,cin1,w18,w19,w20,p2);
multiplier mul_1(w14,w8,w18,w19,w21,w22,w23,w24);
multiplier mul_2(w17,w13,w21,w22,w25,w26,w27,w28);
multiplier mul_3(w15,w16,w25,w26,q2_out,w29,w30,w31);
multiplier mul_4(w24,w20,q3,cin2,w32,w33,m0_out,p3);
multiplier mul_5(w28,w23,w32,w33,w34,w35,m1_out,p4);
multiplier mul_6(w31,w27,w34,w35,w36,w37,m2_out,p5);
multiplier mul_7(w29,w30,w36,w37,q3_out,p7,m3_out,p6);

 endmodule


周五晚上在实验室里一个人盯着代码看感觉不太好。(加上现在是春节。)我知道我的问题很简单,但即使我需要帮助,伟大的网民们也会给我很大的帮助

警告只是警告,不是错误。如果生成的信号没有负载,那么合成器会警告您,但实际上没有什么需要“修复”的

另外,由于q3_out是mul_7的输出,因此不应该使用单独的assign语句来驱动它。每根导线只能有一个驱动器