Matt Venn
06/10/2021, 7:06 PMMatthew Guthaus
06/10/2021, 7:17 PMMatt Venn
06/10/2021, 7:53 PMManar Abdelatty
06/11/2021, 10:20 AMCLOCK_NET
to a list of clocks and TritonCTS will create a tree for eachMatt Venn
06/11/2021, 10:28 AMJean
06/11/2021, 2:48 PMcreate_clock [get_ports wb_clk_i] -name wb_clk_i -period 10
create_clock [get_ports user_clock2] -name user_clock2 -period 20
set_clock_groups -asynchronous \
-group [get_clocks {wb_clk_i}] \
-group [get_clocks {user_clock2}]
Matthew Guthaus
06/11/2021, 2:49 PMMatthew Guthaus
06/11/2021, 2:50 PMJean
06/11/2021, 2:51 PMMatthew Guthaus
06/11/2021, 2:51 PMJean
06/11/2021, 2:52 PMJean
06/11/2021, 4:15 PMAmogh Lonkar
06/11/2021, 5:43 PMCLOCK_PORT
? With a similar custom .sdc file like above, it will create the macro but skip CTS and STA because no clock ports are declared.Matthew Guthaus
06/11/2021, 7:16 PMMatthew Guthaus
06/11/2021, 7:16 PMMatthew Guthaus
06/11/2021, 7:17 PMJean
06/11/2021, 10:04 PMset ::env(BASE_SDC_FILE) "$script_dir/../../verilog/rtl/user_proj_example.sdc"
Jean
06/11/2021, 10:18 PMset ::env(CLOCK_PORT) "wb_clk_i"
set ::env(CLOCK_NET) "wb_clk_i user_clock2"
set ::env(BASE_SDC_FILE) "$script_dir/../../verilog/rtl/user_proj_example.sdc"
Combined with sdc file
create_clock [get_ports wb_clk_i] -name wb_clk_i -period 10
create_clock [get_ports user_clock2] -name user_clock2 -period 20
set_clock_groups -asynchronous \
-group [get_clocks {wb_clk_i}] \
-group [get_clocks {user_clock2}]
CTS generated 2 independent clock trees and I'm pretty sure I got slack and slew reports for each clock domain indepedently. Even if only one clock was specified in CLOCK_PORT.Jean
06/12/2021, 1:44 PMMatt Venn
06/12/2021, 1:45 PMMatt Venn
06/12/2021, 1:45 PMMatt Venn
06/12/2021, 1:45 PMMatt Venn
06/12/2021, 1:46 PMJean
06/12/2021, 6:07 PMTayyeb Mahmood
06/13/2021, 10:48 PMJean
06/14/2021, 2:56 AMMatthew Guthaus
06/14/2021, 6:47 PMMatthew Guthaus
06/14/2021, 6:53 PMMatthew Guthaus
06/14/2021, 11:07 PMJean
06/14/2021, 11:37 PMMatthew Guthaus
06/14/2021, 11:44 PMJean
06/15/2021, 12:01 AMMatthew Guthaus
06/15/2021, 12:30 AMMatthew Guthaus
06/15/2021, 12:30 AMMatthew Guthaus
06/15/2021, 12:31 AMMatthew Guthaus
06/15/2021, 12:32 AMJean
06/15/2021, 3:43 AMset ::env(BASE_SDC_FILE) "$script_dir/../../verilog/rtl/user_proj_example.sdc"
override the OpenLane script setting?
Yes, ports and pins are valid.
Would something like
create_clock [get_ports *.ORModuleOutputPort] ...
work?Matthew Guthaus
06/15/2021, 4:21 AMJean
06/15/2021, 6:00 AMmodule top(
input wire fastclk,
input wire slowclk,
input wire la,
output wire someoutput,
output wire otheroutput
);
assign otheroutput = fastclk;
ORModule ormod(
.slowclk(slowclk),
.la(la),
.orout(someoutput));
endmodule
module ORModule(
input wire slowclk,
input wire la,
output wire orout
);
assign orout = slowclk | la;
endmodule
Jean
06/15/2021, 6:04 AMcreate_clock [get_ports fastclk] -name fastclk -period 10
create_clock [get_nets {ormod|orout}] -name slowclk -period 333
set_clock_groups -asynchronous \
-group [get_clocks {fastclk}] \
-group [get_clocks {slowclk}]
Matthew Guthaus
06/15/2021, 12:10 PMMatthew Guthaus
06/15/2021, 12:10 PM