微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 重发帖:警告:input pin(s) that do not drive logic 和No clocks defined in design

重发帖:警告:input pin(s) that do not drive logic 和No clocks defined in design

时间:10-02 整理:3721RD 点击:
Warning (12019): Can't analyze file -- file moundetector_tb.v is missing
Warning (10036): Verilog HDL or VHDL warning at moundetector.v(13): object "i" assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at moundetector.v(13): object "j" assigned a value but never read
Warning (10762): Verilog HDL Case Statement warning at moundetector.v(28): can't check case statement for completeness because the case expression has too many possible states
Warning (10762): Verilog HDL Case Statement warning at moundetector.v(64): can't check case statement for completeness because the case expression has too many possible states
Warning (10240): Verilog HDL Always Construct warning at moundetector.v(15): inferring latch(es) for variable "markdown", which holds its previous value in one or more paths through the always construct
Warning (13024): Output pins are stuck at VCC or GND
Warning (13410): Pin "Counter[0]" is stuck at VCC
Warning (13410): Pin "Counter[1]" is stuck at GND
Warning (13410): Pin "Counter[2]" is stuck at GND
Warning (13410): Pin "Counter[3]" is stuck at GND
Warning (13410): Pin "Counter[4]" is stuck at GND
Warning (13410): Pin "Counter[5]" is stuck at GND
Warning (13410): Pin "Counter[6]" is stuck at GND
Warning (13410): Pin "Counter[7]" is stuck at GND
Warning (21074): Design contains 66 input pin(s) that do not drive logic
Warning (15610): No output dependent on input pin "IN_Up[0]"
Warning (15610): No output dependent on input pin "IN_Up[1]"
Warning (15610): No output dependent on input pin "IN_Up[2]"
Warning (15610): No output dependent on input pin "IN_Up[3]"
Warning (15610): No output dependent on input pin "IN_Up[4]"
Warning (15610): No output dependent on input pin "IN_Up[5]"
Warning (15610): No output dependent on input pin "IN_Up[6]"
Warning (15610): No output dependent on input pin "IN_Up[7]"
Warning (15610): No output dependent on input pin "IN_Up[8]"
Warning (15610): No output dependent on input pin "IN_Up[9]"
Warning (15610): No output dependent on input pin "IN_Up[10]"
Warning (15610): No output dependent on input pin "IN_Up[11]"
Warning (15610): No output dependent on input pin "IN_Up[12]"
Warning (15610): No output dependent on input pin "IN_Up[13]"
Warning (15610): No output dependent on input pin "IN_Up[14]"
Warning (15610): No output dependent on input pin "IN_Up[15]"
Warning (15610): No output dependent on input pin "IN_Up[16]"
Warning (15610): No output dependent on input pin "IN_Up[17]"
Warning (15610): No output dependent on input pin "IN_Up[18]"
Warning (15610): No output dependent on input pin "IN_Up[19]"
Warning (15610): No output dependent on input pin "IN_Up[20]"
Warning (15610): No output dependent on input pin "IN_Up[21]"
Warning (15610): No output dependent on input pin "IN_Up[22]"
Warning (15610): No output dependent on input pin "IN_Up[23]"
Warning (15610): No output dependent on input pin "IN_Up[24]"
Warning (15610): No output dependent on input pin "IN_Up[25]"
Warning (15610): No output dependent on input pin "IN_Up[26]"
Warning (15610): No output dependent on input pin "IN_Up[27]"
Warning (15610): No output dependent on input pin "IN_Up[28]"
Warning (15610): No output dependent on input pin "IN_Up[29]"
Warning (15610): No output dependent on input pin "IN_Up[30]"
Warning (15610): No output dependent on input pin "IN_Up[31]"
Warning (15610): No output dependent on input pin "IN_Down[0]"
Warning (15610): No output dependent on input pin "IN_Down[1]"
Warning (15610): No output dependent on input pin "IN_Down[2]"
Warning (15610): No output dependent on input pin "IN_Down[3]"
Warning (15610): No output dependent on input pin "IN_Down[4]"
Warning (15610): No output dependent on input pin "IN_Down[5]"
Warning (15610): No output dependent on input pin "IN_Down[6]"
Warning (15610): No output dependent on input pin "IN_Down[7]"
Warning (15610): No output dependent on input pin "IN_Down[8]"
Warning (15610): No output dependent on input pin "IN_Down[9]"
Warning (15610): No output dependent on input pin "IN_Down[10]"
Warning (15610): No output dependent on input pin "IN_Down[11]"
Warning (15610): No output dependent on input pin "IN_Down[12]"
Warning (15610): No output dependent on input pin "IN_Down[13]"
Warning (15610): No output dependent on input pin "IN_Down[14]"
Warning (15610): No output dependent on input pin "IN_Down[15]"
Warning (15610): No output dependent on input pin "IN_Down[16]"
Warning (15610): No output dependent on input pin "IN_Down[17]"
Warning (15610): No output dependent on input pin "IN_Down[18]"
Warning (15610): No output dependent on input pin "IN_Down[19]"
Warning (15610): No output dependent on input pin "IN_Down[20]"
Warning (15610): No output dependent on input pin "IN_Down[21]"
Warning (15610): No output dependent on input pin "IN_Down[22]"
Warning (15610): No output dependent on input pin "IN_Down[23]"
Warning (15610): No output dependent on input pin "IN_Down[24]"
Warning (15610): No output dependent on input pin "IN_Down[25]"
Warning (15610): No output dependent on input pin "IN_Down[26]"
Warning (15610): No output dependent on input pin "IN_Down[27]"
Warning (15610): No output dependent on input pin "IN_Down[28]"
Warning (15610): No output dependent on input pin "IN_Down[29]"
Warning (15610): No output dependent on input pin "IN_Down[30]"
Warning (15610): No output dependent on input pin "IN_Down[31]"
Warning (15610): No output dependent on input pin "Clk"
Warning (15610): No output dependent on input pin "Rst"
Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details
Warning (332068): No clocks defined in design.
Warning (332068): No clocks defined in design.
Warning (332068): No clocks defined in design.
Warning (332068): No clocks defined in design.
代码:

  1. module moundetector (IN_Up,IN_Down,Clk,Rst,Counter);
  2.                                        
  3.   input      Clk;
  4.   input      Rst;      
  5.   output reg [7:0] Counter;
  6.   parameter  channel=32;
  7.   parameter  s0=4'b0000,s1=4'b0001,s2=4'b0010,s3=3'b0011,s4=4'b0100,s5=4'b0101,s6=4'b0110,s7=4'b0111,
  8.              s8=4'b1000,s9=4'b1001,s10=4'b1010,s11=4'b1011,s12=4'b1100,s13=4'b1101,s14=4'b1110,s15=4'b1111;
  9.   input      [channel-1:0]IN_Up,IN_Down;
  10.   reg        Up,Down,Up_state,Down_state;
  11.   reg        [3:0]cur_state, next_state;
  12.   reg        markup=1'b0, markdown=1'b0 ;
  13.   reg        [5:0]i,j;
  14.   reg         res;
  15. always @(IN_Up or IN_Down or res )//////应该想的是  信号可以随时变化 每次变化都赋给寄存器 但是当有信号是 只把对应的变化信号持续给Up、Down
  16.   begin
  17.   if(~res)
  18.          begin
  19.                 Up=0;
  20.                 Down=0;
  21.                 markup=0;
  22.                 markdown=0;
  23.                 i=6'b100000;
  24.                 j=6'b100000;
  25.          end
  26.   else
  27.          begin
  28.         case(IN_Up)
  29.                  32'b00000000_00000000_00000000_00000001 : begin Up=IN_Up[0]; i=6'b000000;markup=1;end       
  30.                                 32'b00000000_00000000_00000000_00000010 : begin Up=IN_Up[1]; i=6'b000001;markup=1;end       
  31.                                 32'b00000000_00000000_00000000_00000100 : begin Up=IN_Up[2]; i=6'b000010;markup=1;end       
  32.                                 32'b00000000_00000000_00000000_00001000 : begin Up=IN_Up[3]; i=6'b000011;markup=1;end       
  33.                                 32'b00000000_00000000_00000000_00010000 : begin Up=IN_Up[4]; i=6'b000100;markup=1;end       
  34.                                 32'b00000000_00000000_00000000_00100000 : begin Up=IN_Up[5]; i=6'b000101;markup=1;end       
  35.                                 32'b00000000_00000000_00000000_01000000 : begin Up=IN_Up[6]; i=6'b000110;markup=1;end       
  36.                                 32'b00000000_00000000_00000000_10000000 : begin Up=IN_Up[7]; i=6'b000111;markup=1;end       
  37.                                 32'b00000000_00000000_00000001_00000000 : begin Up=IN_Up[8]; i=6'b001000;markup=1;end       
  38.                                 32'b00000000_00000000_00000010_00000000 : begin Up=IN_Up[9]; i=6'b001001;markup=1;end       
  39.                                 32'b00000000_00000000_00000100_00000000 : begin Up=IN_Up[10]; i=6'b001010;markup=1;end       
  40.                                 32'b00000000_00000000_00001000_00000000 : begin Up=IN_Up[11]; i=6'b001011;markup=1;end       
  41.                                 32'b00000000_00000000_00010000_00000000 : begin Up=IN_Up[12]; i=6'b001100;markup=1;end       
  42.                                 32'b00000000_00000000_00100000_00000000 : begin Up=IN_Up[13]; i=6'b001101;markup=1;end       
  43.                                 32'b00000000_00000000_01000000_00000000 : begin Up=IN_Up[14]; i=6'b001110;markup=1;end       
  44.                                 32'b00000000_00000000_10000000_00000000 : begin Up=IN_Up[15]; i=6'b001111;markup=1;end
  45.                                 32'b00000000_00000001_00000000_00000000 : begin Up=IN_Up[16]; i=6'b010000;markup=1;end       
  46.                                 32'b00000000_00000010_00000000_00000000 : begin Up=IN_Up[17]; i=6'b010001;markup=1;end       
  47.                                 32'b00000000_00000100_00000000_00000000 : begin Up=IN_Up[18]; i=6'b010010;markup=1;end       
  48.                                 32'b00000000_00001000_00000000_00000000 : begin Up=IN_Up[19]; i=6'b010011;markup=1;end       
  49.                                 32'b00000000_00010000_00000000_00000000 : begin Up=IN_Up[20]; i=6'b010100;markup=1;end       
  50.                                 32'b00000000_00100000_00000000_00000000 : begin Up=IN_Up[21]; i=6'b010101;markup=1;end       
  51.                                 32'b00000000_01000000_00000000_00000000 : begin Up=IN_Up[22]; i=6'b010110;markup=1;end
  52.                                 32'b00000000_10000000_00000000_00000000 : begin Up=IN_Up[23]; i=6'b010111;markup=1;end
  53.                                 32'b00000001_00000000_00000000_00000000 : begin Up=IN_Up[24]; i=6'b011000;markup=1;end       
  54.                                 32'b00000010_00000000_00000000_00000000 : begin Up=IN_Up[25]; i=6'b011001;markup=1;end       
  55.                                 32'b00000100_00000000_00000000_00000000 : begin Up=IN_Up[26]; i=6'b011010;markup=1;end       
  56.                                 32'b00001000_00000000_00000000_00000000 : begin Up=IN_Up[27]; i=6'b011011;markup=1;end       
  57.                                 32'b00010000_00000000_00000000_00000000 : begin Up=IN_Up[28]; i=6'b011100;markup=1;end       
  58.                                 32'b00100000_00000000_00000000_00000000 : begin Up=IN_Up[29]; i=6'b011101;markup=1;end       
  59.                                 32'b01000000_00000000_00000000_00000000 : begin Up=IN_Up[30]; i=6'b011110;markup=1;end       
  60.                                 32'b10000000_00000000_00000000_00000000 : begin Up=IN_Up[31]; i=6'b011111;markup=1;end
  61.                                 default  : begin Up=1'b0;i=6'b100000;markup=1'b0;end   /////将i=32设为初始状态  
  62.                    endcase
  63.                        
  64.                   case(IN_Down)
  65.                  32'b00000000_00000000_00000000_00000001 : begin Down=IN_Down[0]; i=6'b000000;markup=1;end       
  66.                                 32'b00000000_00000000_00000000_00000010 : begin Down=IN_Down[1]; i=6'b000001;markup=1;end       
  67.                                 32'b00000000_00000000_00000000_00000100 : begin Down=IN_Down[2]; i=6'b000010;markup=1;end       
  68.                                 32'b00000000_00000000_00000000_00001000 : begin Down=IN_Down[3]; i=6'b000011;markup=1;end       
  69.                                 32'b00000000_00000000_00000000_00010000 : begin Down=IN_Down[4]; i=6'b000100;markup=1;end       
  70.                                 32'b00000000_00000000_00000000_00100000 : begin Down=IN_Down[5]; i=6'b000101;markup=1;end       
  71.                                 32'b00000000_00000000_00000000_01000000 : begin Down=IN_Down[6]; i=6'b000110;markup=1;end       
  72.                                 32'b00000000_00000000_00000000_10000000 : begin Down=IN_Down[7]; i=6'b000111;markup=1;end       
  73.                                 32'b00000000_00000000_00000001_00000000 : begin Down=IN_Down[8]; i=6'b001000;markup=1;end       
  74.                                 32'b00000000_00000000_00000010_00000000 : begin Down=IN_Down[9]; i=6'b001001;markup=1;end       
  75.                                 32'b00000000_00000000_00000100_00000000 : begin Down=IN_Down[10]; i=6'b001010;markup=1;end       
  76.                                 32'b00000000_00000000_00001000_00000000 : begin Down=IN_Down[11]; i=6'b001011;markup=1;end       
  77.                                 32'b00000000_00000000_00010000_00000000 : begin Down=IN_Down[12]; i=6'b001100;markup=1;end       
  78.                                 32'b00000000_00000000_00100000_00000000 : begin Down=IN_Down[13]; i=6'b001101;markup=1;end       
  79.                                 32'b00000000_00000000_01000000_00000000 : begin Down=IN_Down[14]; i=6'b001110;markup=1;end       
  80.                                 32'b00000000_00000000_10000000_00000000 : begin Down=IN_Down[15]; i=6'b001111;markup=1;end
  81.                                 32'b00000000_00000001_00000000_00000000 : begin Down=IN_Down[16]; i=6'b010000;markup=1;end       
  82.                                 32'b00000000_00000010_00000000_00000000 : begin Down=IN_Down[17]; i=6'b010001;markup=1;end       
  83.                                 32'b00000000_00000100_00000000_00000000 : begin Down=IN_Down[18]; i=6'b010010;markup=1;end       
  84.                                 32'b00000000_00001000_00000000_00000000 : begin Down=IN_Down[19]; i=6'b010011;markup=1;end       
  85.                                 32'b00000000_00010000_00000000_00000000 : begin Down=IN_Down[20]; i=6'b010100;markup=1;end       
  86.                                 32'b00000000_00100000_00000000_00000000 : begin Down=IN_Down[21]; i=6'b010101;markup=1;end       
  87.                                 32'b00000000_01000000_00000000_00000000 : begin Down=IN_Down[22]; i=6'b010110;markup=1;end
  88.                                 32'b00000000_10000000_00000000_00000000 : begin Down=IN_Down[23]; i=6'b010111;markup=1;end
  89.                                 32'b00000001_00000000_00000000_00000000 : begin Down=IN_Down[24]; i=6'b011000;markup=1;end       
  90.                                 32'b00000010_00000000_00000000_00000000 : begin Down=IN_Down[25]; i=6'b011001;markup=1;end       
  91.                                 32'b00000100_00000000_00000000_00000000 : begin Down=IN_Down[26]; i=6'b011010;markup=1;end       
  92.                                 32'b00001000_00000000_00000000_00000000 : begin Down=IN_Down[27]; i=6'b011011;markup=1;end       
  93.                                 32'b00010000_00000000_00000000_00000000 : begin Down=IN_Down[28]; i=6'b011100;markup=1;end       
  94.                                 32'b00100000_00000000_00000000_00000000 : begin Down=IN_Down[29]; i=6'b011101;markup=1;end       
  95.                                 32'b01000000_00000000_00000000_00000000 : begin Down=IN_Down[30]; i=6'b011110;markup=1;end       
  96.                                 32'b10000000_00000000_00000000_00000000 : begin Down=IN_Down[31]; i=6'b011111;markup=1;end
  97.                                 default: begin Down=1'b0;j=6'b100000;markdown=0; end   /////
  98.                          endcase
  99.          end         
  100. end

  101. always @(posedge Clk or negedge Rst)//////状态变化 ,为时序逻辑
  102. begin
  103.   if(~Rst)
  104.           begin
  105.             cur_state<=s0;//////初始状态
  106.                  next_state<=s0;
  107.                  Up_state<=0;
  108.                  Down_state<=0;
  109.                  Counter<=8'b0000_0000;
  110.      end   
  111.   else
  112.    begin /////////////////应该限制为当某一信号时 进行选择 操作   否则  就是已选择过正在处理  if  然后怎么样 而不是当来一个时钟下降沿就要进行一次寻找 操作
  113.           Up_state<=Up;
  114.           Down_state<=Down;
  115.           cur_state<=next_state;
  116.           
  117.           case(cur_state)
  118.                          s0 : begin   //////继续等待或进入下一状态  ,可能  上板先到 也可能下板先到
  119.                                  if({markup,Up_state,markdown,Down_state}==4'b1111)//////表明处理后的信号同时到达为μ 子 计数器加1  并且系统复位
  120.                                                 begin
  121.                                                         Counter<=Counter+8'b0000_0001;
  122.                                                         res<=0;
  123.        
  124.                                                 end
  125.                                         else if({markup,Up_state,markdown,Down_state}==4'b1100)/////上板比下板先到
  126.                                                 begin
  127.                                                         next_state<=s1;
  128.                                                 end
  129.                                         else if({markup,Up_state,markdown,Down_state}==4'b0011)/////下板比上板先到
  130.                                                 begin
  131.                                                         next_state<=s5;                                       
  132.                                                 end
  133.                                         else
  134.                                                 begin /////表明仍为等待状态
  135.                                                         next_state<=s0;
  136.                                                 end
  137.                           end
  138.                         s1:begin
  139.                                 if({markup,Up_state,markdown,Down_state}==4'b1111)
  140.                                         begin
  141.                                                 Counter<=Counter+8'b0000_0001;
  142.                                                 res<=0;

  143.                                         end
  144.                                  else
  145.                                          begin
  146.                                                 next_state<=s2;
  147.                                          end
  148.                         end
  149.                    s2:begin
  150.                                 if({markup,Up_state,markdown,Down_state}==4'b1111)
  151.                                         begin
  152.                                                 Counter<=Counter+8'b0000_0001;
  153.                                                 res<=0;
  154.                                         end
  155.                                 else
  156.                                         begin
  157.                                                 next_state<=s3;
  158.                                         end
  159.                         end
  160.                   s3: begin
  161.                                 if({markup,Up_state,markdown,Down_state}==4'b1111)
  162.                                         begin
  163.                                                 Counter<=Counter+8'b0000_0001;
  164.                                                 res<=0;

  165.                                         end
  166.                                 else
  167.                                         begin
  168.                                                 next_state<=s4;
  169.                                         end
  170.                          end
  171.                  s4:begin
  172.                                  if({markup,Up_state,markdown,Down_state}==4'b1111)
  173.                                         begin
  174.                                                 Counter<=Counter+8'b0000_0001;
  175.                                                 res<=0;
  176.                                         end
  177.                                 else
  178.                                         begin  //////大于20ns时  复位
  179.                                                 next_state<=s0;
  180.                                                 res<=0;

  181.                                         end
  182.                         end
  183.                 s5:begin//////下板先到
  184.                                 if({markup,Up_state,markdown,Down_state}==4'b1111)
  185.                                         begin
  186.                                                 Counter<=Counter+8'b0000_0001;
  187.                                                 res<=0;

  188.                                         end
  189.                                 else
  190.                                         begin
  191.                                                 next_state<=s6;
  192.                                         end
  193.                         end
  194.                 s6:begin
  195.                                 if({markup,Up_state,markdown,Down_state}==4'b1111)
  196.                                         begin
  197.                                                 Counter<=Counter+8'b0000_0001;
  198.                                                 res<=0;

  199.                                         end
  200.                                 else/////下板比上板早到超过10ns
  201.                                         begin       
  202.                                                 res<=0;

  203.                                         end
  204.                         end
  205.                         default:begin
  206.                                                 res<=0;

  207.                                           end
  208.                   endcase
  209.     end  
  210. end       

  211. endmodule

复制代码

几点意见:
1. reg res 为什么没有异步复位值,这样会导致X为initial value.
2. reg markup=1'b0, markdown=1'b0 ; 寄存器不能如此赋值
3. s3=3'b0011 明明4 个bit, 怎么是3‘b.



   感谢 回答  第二个问题后来改了,第三个问题是写错了。第一个问题 res  是真的没考虑到。那个Counter[] 都接GND 和 output 与 IN_Down ,IN_Up 无关 怎么解决?


你放了SDC吗,里面有定义CLOCK没。



   并没有SDC,这个还需要SDC?

  1. module moundetector1 (IN_Up,IN_Down,Clk,Rst,Counter);
  2.                                        
  3.   input      Clk;

复制代码


这个不是吗?


你这是什么工具报的warning?



   quartus ii  报的错。听师兄将那个两个case出好像也有错误?但是不知道怎么解决

加SDC,定义时钟等再试试



谢谢啦。 后来问了一下师兄他说要从新写,case 语句并没有包含所有情况。

建議verilog code寫好先跑仿真.
不要用Quartus tools來測試verilog syntax .
這樣即浪費時間,且不能確認Code的完整性.



   关键是写好的verilog  仿真都没法跑,一大堆bug

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top