4 Technical Basics
4 Technical Basics
and DFT.
• You may already know some of it.
• If you would like me to teach you something a little
more difficult, please let me know what it is.
• I will prepare the documents for you.
• This document is a brief overview, but I think it will be
useful for future work if you keep it in mind.
• Please note that some parts may be slightly different
when explained in detail.
Design Flow
Logical design RTL SDC for system UPF for logical
Manufacture
PnR Flow (basis)
Check for syntax errors in provided data such as Netlist/SDC/UPF/Frame data, etc.
Init Design & Check that the power routing, placementblockage, bounds are correct before executing
FloorPlan PlaceOpt.
Check cell density and routing results. (Can you proceed to TimingECO?)
RouteOpt Check for setup and hold timing. (Can you proceed to TimingECO?)
Also run STA to check correlation.
PnR Flow (basis)
Assume various data provided is correct
PlaceOpt will be the difference between the logical synthesis.
• Therefore, the timing degradation and congestion can be attributed to
floorplan factors or a netlist with poor routability.
PostCTSOpt is the difference from PlaceOpt.
• Therefore, timing degradation and congestion can be attributed to CTS.
RouteOpt is the difference from PostCTSOpt.
• Therefore, timing degradation and congestion can be attributed to
routability.
Comparing(analyzing) the results of each process in
these ways is a shortcut to problem solving.
Similarly, it is important to compare the previous results
when a new PnR is executed.
• Since the optimization of each process is executed several times,
the logs allow us to compare the process even in the middle of the
input CLK; Verilog Netlis
module test (CLK, RESET, IN_DATA, OUT_DATA)
input REST
input [1:0] IN_DATA;
output OUT_DATA;
Verilog RTL
module test (CLK, RESET, IN_DATA, OUT_DATA) FFRST
FF_CLK_DIV(.CK(CLK), .RST(RESET), .DATA(w_clk_inv), .Q(w_clk_div)
);
input CLK; INV CLK_INV(.A(w_clk_div), .YB(w_clk_inv) );
input REST
input [1:0] IN_DATA; FF
output OUT_DATA; FF_DATA_IN_0(.CK(w_clk_div), .DATA(IN_DATA[0]), .Q(w_data_0) );
FF
FF_DATA_IN_1(.CK(w_clk_div), .DATA(IN_DATA[1]), .Q(w_data_1) );
always @(negedge RESET or posedge CLK) {
if (!RESET) FF_CLK_DIV = 1’b0; NAND DATA_NAND(.A(w_data_1), .B(w_data_0), .YB(w_nand) );
else FF_CLK_DIV = ~FF_CLK_DIV;
} FF FF_DATA_OUT(.CK(w_clk_div), .DATA(w_nand), .Q(OUT_DATA) );
endmodule
always @(posedge FF_CLK_DIV) {
FF_DATA_IN = IN_DATA;
}
• OCV(On-Chip Variation)
OCV, as the name implies, is the manufacturing variation within a single product.
These are included in the derating factor and verified in each scenario.
Other Other
① ②
Block Block
edge 1 2 3 4 5
time 0 5 10 15 20 25 30
CLK
FF_CLK_DIV/ Q
launch clock
hold setup • Case with Setup to Multi 2
capture clock set_multicycle_path -end -setup -from launch_clock -to capture_clock 2
launch clock
hold setup
• Case with add Hold Multi 1
capture clock set_multicycle_path -end -setup -from launch_clock -to capture_clock 2
set_multicycle_path -end -hold -from launch_clock -to capture_clock 1
launch clock
hold setup
• Case with Setup to 3 and Hold to 2
capture clock set_multicycle_path -end -setup -from launch_clock -to capture_clock 3
set_multicycle_path -end -hold -from launch_clock -to capture_clock 2
DFT(Used in manufacturing tests)
Verification Remark
Static Timing Analysis May be mitigated.
Physical Verification must be fixed
May be mitigated by verification conditions
Power Integrity
and timing margins.
Formal Verification must be fixed
Logical Design Rule
must be fixed
Check