FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
5892 Discussions

Ignored Buffers in Delay Line Design

cosx
New Contributor I
601 Views

Hi everyone,

 

I am currently designing a delay chain using Cyclone V and come across a strange problem.

 

The design in verilog is shown below:

module delay_chain(delay_in,delay_out);

 

input wire delay_in;

output wire delay_out;

wire buff1,buff2,buff3;

 

bufif0 d1(buff1,delay_in,1'b0);

bufif0 d2(buff2,buff1,1'b0);

bufif0 d3(buff3,buff2,1'b0);

bufif0 d4(delay_out,buff3,1'b0);

 

endmodule

To prevent compiler from ignoring them during synthesis, my setting is shown in the attachment file.

 

Though I turned off all buffers', including soft ones, optimization choices, the post-mapping and post-fitting viewer still do not show my design. More confusing thing is the RTL Viewer indeed shows that my design module exists.

 

During the placement and fitting stage, Quartus generates warning that my module does not exist, which means it is some how ignored by the compiler. (Warning (15706): Node "delay_detection:UUT|delay_chain:delay_DUT" is assigned to location or region, but does not exist in design)

 

Does anyone know why this the case? If this issue cannot be solved by the compiler's settings, could anyone recommend a way of cascading four logic units? (I have tried AND, Or and ordinary buffers, but all failed. I do not want to use adder chain, as I want to know the minimum resolution of a logic gate in the cyclone V.)

 

Thank you very much!

Mingqiang

0 Kudos
7 Replies
KhaiChein_Y_Intel
570 Views

Hi Mingqiang,

 

Could you share a simple test case for investigation? What is the software edition and version you are using?

 

Thanks.

Best regards,

KhaiY

0 Kudos
cosx
New Contributor I
570 Views

Hi KhaiY,

 

Thank you so much for your help!

 

May I ask the test case here you refer to is simulation or real test on board?

 

If it is simulation, I have done RTL simulation using Modelsim, but does not show any effect on delay. (I guess this is due to failure of low level simulation in modelsim)

 

The software edition is Quartus Lite 19.1, do you think the Lite Edition is not that smart to map the code into the hardware?

 

Thanks!

Mingqiang

 

 

0 Kudos
KhaiChein_Y_Intel
570 Views

Hi Mingqiang,

 

You have mentioned the software issues Warning (15706): Node "delay_detection:UUT|delay_chain:delay_DUT" is assigned to location or region, but does not exist in design) during the compilation. I would like to check if this is being optimized away during the compilation. Could you share the design.qar and testbench file for investigation? To generate the file, click on Project > Archive Project > Archive.

 

Thanks.

Best regards,

KhaiY

0 Kudos
cosx
New Contributor I
570 Views

Hi KhaiY,

 

Thank you very much! I have attached the file for your reference.

 

Thank you!

Mingqiang

0 Kudos
KhaiChein_Y_Intel
567 Views

Hi Mingqiang,

The buffers in the delay_chain are optimized by the software. You have to use keep synthesis attribute to prevent the software from minimizing or removing the buffer. 

You may refer to the synta here: 

https://www.intel.com/content/www/us/en/programmable/quartushelp/current/index.htm#hdl/vlog/vlog_file_dir.htm

 

Thanks.

Best regards,

KhaiY

0 Kudos
KhaiChein_Y_Intel
555 Views

Hi Mingqiang,

We do not receive any response from you to the previous question/reply/answer that I have provided. This thread will be transitioned to community support. If you have a new question, feel free to open a new thread to get the support from Intel experts. Otherwise, the community users will continue to help you on this thread. Thank you

Best regards,

KhaiY

0 Kudos
KhaiChein_Y_Intel
551 Views

Hi Mingqiang,


Below is the HDL that works

module delay_chain(delay_in,delay_out);

input wire delay_in;

output wire delay_out /* synthesis keep*/;


 wire buff /* synthesis keep*/;

 wire buff2/* synthesis keep*/;

 wire buff3/* synthesis keep*/;

 

 assign delay_out = buff3;

 assign buff3 = buff2;

 assign buff2 = buff;

 assign buff = delay_in;


endmodule


Thanks

Best regards,

KhaiY


0 Kudos
Reply