I'm confusing that whether virtual clock declaration can use instead of real clock's create_clock.
Because I came across the SDC file what there is no definition of create_clock for real clock.
Basically, We use Clock Definition as the below.
###################################
#
# CLOCK DEFINITION
#
###################################
# A 333Mhz clock is a 3.0ns period:
#
create_clock -period 3.0 [get_ports clk]
But I found a different declaration of definition clock.
###################################
# #
# CLOCK DEFINITION #
# #
###################################
# A 333Mhz clock is a 3.0ns period:
#
create_clock -period 3.0 -name my_clk -waveform {0 1.2} [get_ports clk]
As you can see this is a definition of virtual clock it's not similar with definition from above it.
Here is definition of a virtual clock. What is a virtual clock: By definition, a virtual clock is a clock without any source. Stating more clearly, a virtual clock is a clock that has been defined, but has not been associated with any pin/port. A virtual clock is used as a reference to constrain the interface pins by relating the arrivals at input/output ports with respect to it with the help of input and output delays.
Can I use a Virtual clock instead of using a create_clock? Or Should I have to use a Virtial Clock Only for non clock source system.?
# A 333Mhz clock is a 3.0ns period:
#
create_clock -period 3.0 -name my_clk -waveform {0 1.2} [get_ports clk]
As you can see this is a definition of virtual clock it's not similar with definition from above it.
There's nothing related to virtual clock in your second create_clock example, the only relevant difference is the -waveform specification definining an asymetrical duty cycle. Particularly it has a source, thus can't be virtual. Did you quote the wrong sdc statement?
--- Updated ---
Virtual clocks are e.g. used to constrain the timing of I/O signals, see example from Quartus SDC manual
# create a virtual clock
create_clock -name virtual -period 1
# apply input/output delays with the virtual clock to get
# I/O interface uncertainties
set_input_delay -clock virtual -add_delay 0 [all_inputs]
set_output_delay -clock virtual -add_delay 0 [all_outputs]
There's nothing related to virtual clock in your second create_clock example, the only relevant difference is the -waveform specification definining an asymetrical duty cycle. Particularly it has a source, thus can't be virtual. Did you quote the wrong sdc statement?
--- Updated ---
Virtual clocks are e.g. used to constrain the timing of I/O signals, see example from Quartus SDC manual
then I got some report.
But that report doesn't use a virtual clock definition. so I think that the input Cin1[4:0] and Cin2[4:0] and output Cout[4:0] must be wrong.
So I asked that I need to define the virtual clock for get a right report.
and one thing issue is that why I can't get the register to output report?
And I've got the report report_reg2output but it seems something wrong.
Why can't report with any path? Did I something to do wrong?
Code:
****************************************
Report : timing
-path full
-delay max
-max_paths 10
Design : MY_DESIGN
****************************************
Wire Load Model Mode: enclosed
No paths.
1
If I wrong to get the reports from all 4 paths, Could you guide me how can I get correct reports from it?
-name has nothing to do with virtual clock specification. Synopsys Timing Constraints and Optimization User Guide clarifies:
You can optionally specify a name for the clock with the -name option. If you do not specify a name explicitly, the clock gets its name from the source object.
By definition, a virtual clock is a clock without any source. Stating more clearly, a virtual clock is a clock that has been defined, but has not been associated with any pin/port.