Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16595 Discussions

Quartus doesn't recognize clocks generated by division of the same master clock as synchronous

jch4416
New Contributor I
989 Views

Hello,

I am working on a rather slow (1.8432MHz master clock) cpld design. There are 4 clocks that I generate by dividing the master clock by different integers. The divisions are done with synchronous counters, so the edges of each generated clock should be synchronous with the master but delayed by one clock to q time.

Are the resulting clock domains not considered synchronous? Quartus gives me warnings to that effect when I try to pass data between the various domains. Does the data from one domain require synchronization when being used by another even when the clocks are related as I explained?

I realize this is a newbie question, but I've been an analog and power guy for the last 15 years without doing much digital design.

Thanks,

Jim

0 Kudos
5 Replies
RRomano001
New Contributor I
975 Views

 Hello, when clock are divided small delay apply to output and transportation too.

 Information about language and CPLD series is missing, exact error too.

Supposed you are using a ring divider or Johnson small delay is present from clock edge to FF Q output.

 If you are using a standard counter delay come from logic too.

 Please complete description to help address what happen.

 

0 Kudos
jch4416
New Contributor I
971 Views

Thanks for your reply. I am working with the MAX II family, an EPM570 cpld, and coding in Verilog.

Here is the error message:

Critical Warning (308060): (High) Rule D101: Data bits are not synchronized when transferred between asynchronous clock domains. (Value defined:2). Found 17 asynchronous clock domain interface structure(s) related to this rule.

I have my clocks defined in the sdc file as shown below. All are integer divisions of the same master and the dividers are synchronous counters. I changed the divisor on the last one just for the constraint because Quartus can't seem to deal with very slow clocks

----------------------------------------------------------------------------

create_clock -name {cpld_master_clock} -period 542.000 -waveform { 0.000 271.000 } [get_nets {cpld_master_clock}]


#**************************************************************
# Create Generated Clock
#**************************************************************

create_generated_clock -name {uart_rx_clock} -source [get_nets {cpld_master_clock}] -divide_by 2 -master_clock {cpld_master_clock} [get_registers {clock_divider:CDIV2|clk_out}]
create_generated_clock -name {uart_tx_clock} -source [get_nets {cpld_master_clock}] -divide_by 32 -master_clock {cpld_master_clock} [get_registers {clock_divider:CDIV3|clk_out}]
create_generated_clock -name {millisec_clock} -source [get_nets {cpld_master_clock}] -divide_by 1920 -master_clock {cpld_master_clock} [get_registers {clock_divider:CDIV4|clk_out}]
create_generated_clock -name {heartbeat_clock} -source [get_nets {cpld_master_clock}] -divide_by 3840 -master_clock {cpld_master_clock} [get_registers {clock_divider:CDIV5|clk_out}]

0 Kudos
RRomano001
New Contributor I
965 Views

No idea about code so see if this can help

https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5_cmd_create_generated_clock.htm

 

or table

https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5.htm

try also google for

create_generated_clock -name {

or

Altera create_generated_clock -name {

First search add some solution from other vendor and generic forum can be of help understanding issue.

 

0 Kudos
KhaiChein_Y_Intel
944 Views

Hi,


The potential cause of this warning could be either


Cause #1: In the current design, the Design Assistant found the specified number of structures where single-bit data is transferred between asynchronous clock domains, but none of the data bits are synchronized. To reduce metastability problems, each data bit should be synchronized with two or more cascading registers in the receiving asynchronous clock domain. The submessage(s) of this message list the structure(s) that the Design Assistant found.


>> Synchronize all the data bits.


Cause #2: In the current design, the Design Assistant found the specified number of structures where multiple-bit data is transferred between asynchronous clock domains, but none of the data bits are synchronized. To reduce metastability problems, the data bits that act as REQ (Request) and/or ACK (Acknowledge) signals for the transfer should be synchronized with two or more cascading registers in the receiving asynchronous clock domain. The submessage(s) of this message list the structure(s) that the Design Assistant found.


>> Synchronize the data bits that act as REQ and/or ACK signals.


Thanks

Best regards,

KhaiY


0 Kudos
KhaiChein_Y_Intel
929 Views

Hi,


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
Reply