ETS:

ETS is encounter timing system, which is a STA timing tool from cadence. It's similar to PT.

Steps: Below are the steps to run ETS.


dir: /db/proj_ch/design1p0/HDL/ETS/digtop
cmd: ets -10.1_USR1_s096 -nowin -f scripts/check_timing_mmmc.tcl | tee logs/run_et_mmc_timing.log => -nowin means no window, else gui window comes up

File: scripts/check_timing_mmmc.tcl:
----
setDesignMode -process 250 => sets process tech to 250nm. For 180nm, use 180. For 150nm, use 150.

#read min/max lib
read_lib -max /db/../synopsys/src/PML30_W_150_1.65_CORE.lib /db/../synopsys/src/PML30_W_150_1.65_CTS.lib

read_lib -min /db/.../synopsys/src/PML30_S_-40_1.95_CORE.lib /db/.../synopsys/src/PML30_S_-40_1.95_CTS.lib

#read verilog
read_verilog ../../FinalFiles/digtop/digtop_final_route.v

set_top_module digtop => only when we run this, is when all max/min lib, netlist files are analyzed.

source scripts/create_views.tcl => source views file, same as from Autoroute dir

set_analysis_view -setup {func_max func_min scan_max scan_min} -hold {func_max func_min scan_max scan_min}

#set propagated clk by entering interactive mode
set_interactive_constraint_modes [all_constraint_modes -active]
set_propagated_clock [all_clocks]
set_clock_propagation propagated
set_interactive_constraint_modes {}

#read min/max qrc spef files
read_spef -rc_corner max_rc ../../FinalFiles/digtop/digtop_qrc_max_coupled.spef
read_spef -rc_corner min_rc ../../FinalFiles/digtop/digtop_qrc_min_coupled.spef

#wrt sdf
write_sdf -min_view func_min -max_view func_max -edges check_edge ./sdfs/digtop_func.sdf => has both min/max not in same file
write_sdf -min_view func_max -max_view func_max -edges check_edge ./sdfs/digtop_func_max.sdf => min/max are both equal to max
write_sdf -min_view func_min -max_view func_min -edges check_edge ./sdfs/digtop_func_min.sdf => min/max are both equal to min

NOTE: synopsys sdc file used in create_views.tcl is used to gen the delay in sdf file. set_load units may not get set appr, causing mismatch in delay num for all o/p buffers b/w SNPS sdf and CDNS sdf. Look in PnR_VDI.txt for more info.

#set_analysis_mode: sets analysis mode for timing analysis.
#-analysisType => single: based on one op cond from single lib, bcwc: uses max delay for all paths during setup checks and min delay for all paths during hold check from min/max lib, onChipVariation: for setup, uses max delay for data path, and min delay for clk path, while for hold, uses min delay for data path, and max delay for clk path. default is onChipVariation.
#-cprr < none | both | setup | hold > => removes pessimism from common portion of clock paths. none: disables removoal of cprr, while both enables cprr for both setup and hold modes. default is none.

set_analysis_mode -analysisType bcWc -cppr both

#setAnalysisMode => this is the equiv cmd in vdio as set_analysis_mode in ETS. diff is that default analysisType is set to single (if only 1 lib is provided) or bcwc (if 2 lib are provided).

#set_delay_cal_mode -engine aae -SIAware true => this is used to set timing engine, as well as to specify if we want SI(similar to PTSI)

#log file in log dir to report timing, clk, violations, etc. If this file is clean, no need to look at files in rpts dir.
check_timing -verbose >> $check_timing_log
report_analysis_coverage >> $check_timing_log
report_case_analysis >> $check_timing_log
report_clocks >> $check_timing_log
report_constraint -all_violators >> $check_timing_log => If we see any max_cap violation, we can run "report_net_parasitics -rc_corner " to find out cap of that net. We can get gate cap of all load atached from .liberty files. NOTE: wire/via cap(in rc table) and gate cap(in stdcell lib) changes with corners.
report_inactive_arcs >> $check_timing_log => This is put at end of file since it's very long.

# generate separate reports for setup and hold for func/scan
# report_timing: reports timing (used in vdio/ets)
#-early/-late => use -early for hold paths and -late for setup paths.
#-path_type full_clock => shows full expanded path (in PT, we use full_clock_expanded to get same effect)
#-max_paths => max # of worst paths irrespective of end points (i.e paths with same end points will show up multiple times here). If we do not want to see multiple paths with same end point, we can exclude those by using -max_points. In this case, it shows only 1 worst path to each end point. If we want to see specific # of paths to each end point, use -nworst option along with -max_points. We can only use one of the 2 options => max_paths or max_points.
#-net => adds a row for net arc. This separates net delay from cell delay (else by default: net delay is added to the next cell delay)
#-format { .. } => default format is: {instance arc cell delay arrival required}. With -net option, it shows net also. net delay is shown with i/p pins (A,B,C), while cell delay is shown for o/p pins (Y). additional options as load, pin_load, wire_load are also helpful.
#-view => By default, the command reports the worst end-point(s) across all views. if we want to view results for a particular view. use that view. The view should have already been created using "create_analysis_view" and set using "set_analysis_view". i.e:
=> create_analysis_view -name func_max -delay_corner max_delay_corner -constraint_mode functional
=> create_analysis_view -name func_min -delay_corner min_delay_corner -constraint_mode functional
=> set_analysis_view -setup {func_max func_min} -hold {func_max func_min} => now, we can run setup or hold analysis on both func_max and func_min. For this run, we already set view to "-setup {func_max func_min scan_max scan_min} -hold {func_max func_min scan_max scan_min}"
report_timing -from -to -path_type full_clock -view func_max -early => reports partcular hold path for view func_max. NOTE that this will work only if hold is calc for analysis_view "func_max".

#func setup/hold at func_min/func_max
#if we do not specify -view below, then all views set currently will be used. So, for "early" all views "func_max, func_min, scan_max, scan_min" will be used and shown in the single report. Each path will show a view so it's easy to see which view was used for that particular timing of path. However, it's better to separate out func view and scan view reports. We could have also set_analysis_view to just func_max/func_min for this run, and then for the 4 scan reports, we could have set views to just scan_max/scan_min. It's same either way.
report_timing -path_type full_clock -view func_max -max_paths 2000 -early -format {instance cell arc load slew delay arrival required} >> $func_rptfilename
report_timing -path_type full_clock -view func_max -max_paths 2000 -late -format {instance cell arc load slew delay arrival required} >> $func_rptfilename
report_timing -path_type full_clock -view func_min -max_paths 2000 -early -format {instance cell arc load slew delay arrival required} >> $func_rptfilename
report_timing -path_type full_clock -view func_min -max_paths 2000 -late -format {instance cell arc load slew delay arrival required} >> $func_rptfilename

#scan setup/hold at scan_min/scan_max
report_timing -path_type full_clock -view scan_max -max_paths 2000 -early -format {instance cell arc load slew delay arrival required} >> $scan_rptfilename
report_timing -path_type full_clock -view scan_max -max_paths 2000 -late -format {instance cell arc load slew delay arrival required} >> $scan_rptfilename
report_timing -path_type full_clock -view scan_min -max_paths 2000 -early -format {instance cell arc load slew delay arrival required} >> $scan_rptfilename
report_timing -path_type full_clock -view scan_min -max_paths 2000 -late -format {instance cell arc load slew delay arrival required} >> $scan_rptfilename

exit

---------
Timing reports in ETS:

ex: recovery check
Path 1842: MET Recovery Check with Pin Iregfile/tm_bank3_reg_6/C
Endpoint: Iregfile/tm_bank3_reg_6/CLRZ (^) checked with trailing edge of 'clk_latch_reg' => generated clk(div by 2 of osc_clk). so waveform is 1 101 201
Beginpoint: Iclk_rst_gen/n_reset_neg_sync_reg/Q (^) triggered by trailing edge of 'osc_clk' => created clk with waveform 1 51 101
Analysis View: func_max => shows view, doesn't show path group
Other End Arrival Time 104.067 => denotes capture clk timing
- Recovery 0.592 => recovery time for LAH1B from lib (+ve number in lib). +ve means it should setup sometime before the clk edge. So, we subtract recovery time from clk path delay. For setup, we subtract setup time, while for hold we add hold time.
+ Phase Shift 0.000 => This is the clock period for setup(for 10MHz clk, it's 100ns phase shift added for next clk edge)
+ CPPR Adjustment 0.000
= Required Time 103.475 => clk path delay
- Arrival Time 61.653 => data path delay
= Slack Time 41.822

=> start of data path (launch path)
Clock Fall Edge 51.000 => start point of clk fall
+ Drive Adjustment 0.041 => adjusted by driver for clk (invx1 or so), this number is added within clk/data path for PT, after the source latency number.
= Beginpoint Arrival Time 51.041
Timing Path: => data path as in PT
------------------------------------------------------------------------------------------------------------
Instance Cell Arc Load Slew Delay Arrival Required
Time Time
------------------------------------------------------------------------------------------------------------
clkosc v 3.312 0.064 51.041 92.863 => clk fall at 51.04ns
clkosc__L1_I0 CTB02B A v -> Y v 53.942 0.224 0.308 51.349 93.171 => clktree latency
clkosc__L2_I3 CTB45B A v -> Y v 62.517 0.346 0.488 51.837 93.659 => clktree latency
Iclk_rst/n_sync_reg DNC12 CLK v -> Q ^ 72.593 2.889 2.026 53.863 95.685
Iregfile/U171 NO211 A ^ -> Y ^ 55.505 4.133 2.999 56.862 98.684
Iregfile/FE_OFC0_n12 BU110J A ^ -> Y ^ 77.212 3.081 2.460 59.322 101.144
Iregfile/FE_OFC1_n12 BU110J A ^ -> Y ^ 72.938 2.919 2.235 61.557 103.379
Iregfile/tm_reg_6 LAH1B CLRZ ^ 72.938 2.927 0.096 61.653 103.475 => final arrival time of clrz
------------------------------------------------------------------------------------------------------------

=> start of clk path (capture path)
Clock Rise Edge 1.000 => start point of clk rise
+ Drive Adjustment 0.082
# + Source Insertion Delay -1.267 => insertion delay added if indicated in constraints (usually not present)
= Beginpoint Arrival Time 1.082 => final clk after adjusting for driver
Other End Path: => clk path as in PT
-----------------------------------------------------------------------------------------------------------------------------------
Instance Cell Arc Load Slew Delay Arrival Required Generated Clock
Time Time Adjustment
-----------------------------------------------------------------------------------------------------------------------------------
clkosc ^ 3.312 0.154 1.082 -40.740 => clk rise at 1.08ns
clkosc__L1_I0 CTB02B A ^ -> Y ^ 53.942 0.266 0.300 1.383 -40.440 => clktree latency
clkosc__L2_I4 CTB45B A ^ -> Y ^ 58.511 0.390 0.409 1.791 -40.031 => clktree latency
Ireg/wr_stb_sync_reg DTCD2 CLK ^ -> Q v 5.878 0.250 0.564 102.355 60.533 clk_latch_reg Adj. = 100.000 => falling edge of latch clk is setup edge for data. So, clk adjustment is done by 100ns (1/2 clk_latch_reg cycle). In PT, this adjustment is done in start of clk path.
Ireg/U176 AN2D0 B v -> Y v 46.242 1.848 1.702 104.057 62.235
Ireg/tm_bank3_reg_6 LAH1B C v 46.242 1.847 0.011 104.067 62.245
-----------------------------------------------------------------------------------------------------------------------------------

Ex: For SR latches, data to data checks done:
#Path 4: VIOLATED Data To Data Setup Check with Pin Imtr_b/itrip_latch_00/SZ => indicates SZ is clk
#Endpoint: Imtr_b/itrip_latch_00/RZ (^) checked with leading edge of 'clk_latch_reg' => indicates RZ is data (endpoint of data is RZ). clk_latch_reg refers to clk of SZ pin.
#Beginpoint: mtr_b_enbl (v) triggered by leading edge of 'osc_clk' => indicates startpoint of data is mtr_b_enbl pin. osc_clk refers to the clk firing the mtr_b_enbl signal. So, osc_clk is also the clk firing RZ, as there's only comb logic b/w mtr_b_enbl signal and RZ pin.
#Path Groups: {in2reg}
#Other End Arrival Time 1.861 => this is clk delay for SZ starting from created or generated clk. here, it's gen clk "clk_latch_reg".
#- Data Check Setup 0.036 => this is internal data setup req of latch wrt clk. here, RZ should come 0.036ns before SZ, so subtracted
#+ Phase Shift -100.000 => now, actual phases of clks taken into account (in PT, phase shifts are part of data/clk delays, but not in ETS). here, osc_clk has period of 100ns, while clk_latch_reg has period of 200ns. since SZ(clk) comes from clk_latch_reg, it may change at 0ns or 200ns or 400ns and so on, while RZ(data) coming from osc_clk may change at 0ns or 100ns or 200ns and so on. For data to data setup, we try to meet data setup wrt first clk edge. First SZ +ve edge is at 0ns, while worst case RZ +ve edge occurs at 100ns (if RZ +ve edge at 0ns chosen, then easy to meet timing, also if RZ +ve edge at 200ns chosen, then 2nd +ve edge of SZ would be chosen, which makes this pattern repeat, so we choose worst possible setup which is 100ns in this case). Phase shift is added to clk.
#= Required Time -98.175
#- Arrival Time 22.125 => this is data delay for RZ rising starting from mtr_b_enbl pin
#= Slack Time -120.299 => final slack

PrimePower (PP):

Synopsys PrimePower Product family analyzes power consumption of design at various stages starting from RTL all the way to final PnR netlist. PrimePower provides vector-free and vector-based peak power and averaged power analysis capabilities for RTL and gate-level designs. It calculates the power for a circuit at the cell level and reports the power consumption at the chip, block, and cell levels. Supported power analysis modes include average power, peak power, glitch power, clock network power, dynamic and leakage power, and multivoltage power;

There are 2 flavors of PrimePower:

  1. PrimePower RTL: This measures power consumption at RTL level. PrimePower RTL leverages the Predictive Engine from the RTL Architect tool and synthesis engine to synthesize RTL under the hood and analyze RTL for power.
  2. PrimePower (Gate level): When we say PrimePower only (without RTL), it means PrimePower for gate level power. During implementation and signoff, PrimePower provides accurate gate-level power analysis report based on actual netlist. 2 power analysis modes are supported for gate level - avg mode and time based mode.

 

Using PrimePower:

PrimePower may be used standalone, or may be invoked from within other Synopsys tool as PrimeTime. Also PT may be invoked from within PP. Both tools share many of the same libraries, databases, and commands, and support power and timing analysis. We need separate licenses of PrimePower and PrimeTime irrespective of which way they are invoked. These are the 2 ways:

  1. PWR_SHELL by Invoking PP: invoke PP by typing pwr_shell on the terminal. From within PP, we can invoke PT too.
    • pwr_shell> set power_enable_timing_analysis true => This invokes PT from within PP. Either we can read PT session from some other run, or generate timing data directly.
  2. PT_SHELL by Invoking PT: invoke PT by typing pt_shell on the terminal. Then PP may be invoked from within PT. This keeps timing and power numbers in one place and eliminates need for PP standalone setup.
    • pt_shell> set power_enable_analysis true => This invokes PP from within PT. Either we can read PP session from some other run, or generate Power data directly.

PrimePower (PP) and PrimeTime-PX (PT-PX):

When Synopsys initially came with their Power tool in 2000's, it used the 2nd option above (i.e Power tool was invoked from within PT). They called this tool PT-PX or PT with Power Analysis. Even though it was invoked from within PT_SHELL, it required separate license of PT-PX  to run power. This tool calculated power only at gate level. Later they added the capability to calculate power at RTL level. This required power tool to be invoked separately. So, they introduced PrimePower (PP) as a standalone tool for Power analysis. PP could be invoked for both RTL and gate level Power. PT-PX was rebranded as belonging to "PrimePower family". Synopsys confirmed that PP is actually a superset of PT-PX, so PP should be used going forward (Do NOT use PT-PX anymore as of 2025). For our purpose, PT-PX is treated same as PP in notes below (as the notes are from 2023, when I was still using PT-PX). 

Startup File: When PP or PTPX is invoked, we can have an optional synopsys startup file that will be sourced on startup. It's similar to PT startup file:.synopsys_pt.setup

PP/PT-PX combines simulation time window to report power within a window. All the options and cmds are almost same for PP and PT-PX. Inputs and Outputs are same too.

Inputs:

  • Library: A cell library containing timing and pwr characterization info for each cell.
  • Gate level netlist: In verilog, VHDL or Synopsys db format.
  • Design constraints: An SDC file containing design constraints to calculate the transition time on the primary inputs and to define the clocks.
  • Switching activity: The design switching activity information which can be specified in an event file in the VCD or FSDB format.
  • Net parasitics: A parasitics file (SPEF) containing net capacitances for all the nets.

Outputs

  • Various power reports.

 2 Imp terms in Power:

  • Static probability (SP) => This is the probabilty of a signal to be at logic 0 (SP0) or logic 1 (SP1). If SP1=0.7, it implies that the signal is at logic 1 for 70% of the time. By default, SP0 and SP1 are 0.5, implying logic is 1 for one half the time.
  • Toggle rate (TR) => This is the number of 0-to-1 and 1-to-0 logic transitions of a design object per unit of time, such as a net, a pin, or a port.
  • Switching activity => This consists of both the SP and TR.

 

 


 

PP:

PP can be invoked for both RTL and Gate. When we say PP, we mean gate level power runs. Only when we say PP-RTL is when we refer to PP running on RTL.

Steps:

Following are the steps to invoke PP:

0. Invoke pwr_shell normally => As you would for PT timing runs

pwr_shell -2012.12-SP3 -f scripts/run_power.tcl | tee logs/run_power.log => run_pwer.tcl has cmds for running power flow, so that we can run in batch mode (i.e automated). If we don't want it automated we can type the cmds on pt_shell too. By default, all cmds processed by tool including those in setup file are dumped in pwr_shell_command.log. PP can be invoked in gui mode too by using -gui option (pwr_shell -gui). In gui mode, it's easy to enter further cmds as it's just selecting required items from menu list. 

GUI: To start gu from within shell (if not invoked at startup), type "gui_start" from pwr_shell window.

1. PT run: set library, read gate level verilog netlist and spef file => same as in normal PT flow. pwr is calc for chosen PVT corner.

### I. Below cmds are for regular PT runs
set search_path "$search_path /db/pdkoa/1533e035/current/diglib/pml48h/synopsys/bin"
set target_library PML48H_W_85_3_CORE.db
set link_library {* PML48H_W_85_3_CORE.db}

set_operating_conditions ...

read_verilog /db/MYCHIP/.../FinalFiles/digtop_final_route.v => read final routed netlist

load_upf /.../digtop_final.upf => if UPF is available
current_design digtop
link_design

read_parasitics /db/MYCHIP/.../FinalFiles/digtop_final_route_max.spef => read max spef file (this has parasitics, i.e R,C for all nets)

read_sdc /../digtop.sdc => has all constraints as clk defn, False paths, etc. This is needed for PT runs (not for PP)

#update_timing

check_timing

report_timing

2. PP run: set power analysis so that PTPX license is invoked

### II. Below cmds are for PP/PTPX runs

set power_enable_analysis true => This is what invokes PP from within PT.
set power_analysis_mode averaged | time_based

#set_power_derate => This can be sued to set derating factor for power rails or on specific cells, where the power is adjusted by a factor when calculating it. This allows us to adjust power as needed to match silicon power more closely (similar to how we use derating for timing).

check_activity

3. Read VCD or FSDB file from one of the simulation (it needs to be gate level VCD file with back annotation of parasitics)
read_vcd /sim/MYCHIP/.../sim1_max.vcd.gz -strip_path digtop_tb/IDUT/spi_regs -time {100489 800552} => strips module of interest so that pwr is reported starting from that module as top level. time is in ns.
#report_switching_activity > reports/power_swtching.rpt => to examine tr/sp (see below) and vcd file syntax

#write_activity_waveforms => generates activity waveforms from the activity file.

4. report power
#check_power -verbose => prior to analysis, verifies that analysis i/p are valid
#update_power => This is needed for RTL VCD or when no vcd provided to propagate activity to nets/registers not annotated from RTL VCD file.
#report_switching_activity => to examine propagated values of tr/sp
#create_power_waveforms -cycle_accurate => to show pwr waveform
report_power > ./reports/power_summary.rpt
report_power -hier > ./reports/power_hierarchy.rpt
#report_power -cell -flat -net -hier -verbose -nosplit > power_detail.rpt

 

save_session =>
exit

 

### 2. Now we start the powr runs (PP)

set_app_var power_limit_extrapolation_range true => By default, PP extrapolates indefinitely if the data point for internal power lookup is out of range (default value is FALSE). When set to TRUE, the tool limits the extrapolation. That is needed for more accurate pwr values when there are many high fanout nets as clks, reset in design.

 

2. Invoke PT or restore PT session

 

restore_session

check_power


 

PT-PX:

This is the flow when we want to invoke PT, and then from within PT, we invoke PT-PX.

Steps:

Following are the steps to invoke PT-PX:

0. Invoke pt_shell normally => As you would for PT timing runs

pt_shell -2012.12-SP3 -f scripts/run_power.tcl |tee logs/run_power.log => can be invoked in gui mode too. run_pwer.tcl has cmds for running power flow, so that we can run in batch mode (i.e automated). If we don't want it automated we can type the cmds on pt_shell too.

run_power.tcl script above has following cmds:


1. set library, read gate level verilog netlist and spef file => same as in normal PT flow. pwr is calc for chosen PVT corner.
set search_path "$search_path /db/pdkoa/1533e035/current/diglib/pml48h/synopsys/bin"
set target_library PML48H_W_85_3_CORE.db
set link_library {* PML48H_W_85_3_CORE.db}

read_verilog /db/ATAGO/.../FinalFiles/digtop_final_route.v => read final routed netlist
current_design digtop
link

read_parasitics /db/ATAGO/.../FinalFiles/digtop_final_route_max.spef => read max spef file

2. set power analysis so that PP license is invoked
set_app_var power_enable_analysis true => This is what enables Power Analysis from within PT. This cmd is needed, else PT-PX won't run.
set power_analysis_mode averaged

3. Read VCD file from one of the simulation (it needs to be gate level VCD file with back annotation of parasitics)
read_vcd /sim/ATAGO/.../sim1_max.vcd.gz -strip_path digtop_tb/IDUT/spi_regs -time {100489 800552} => strips module of interest so that pwr is reported starting from that module as top level. time is in ns.
#report_switching_activity > reports/power_swtching.rpt => to examine tr/sp (see below) and vcd file syntax

4. report power
#check_power -verbose => prior to analysis, verifies that analysis i/p are valid
#update_power => This is needed for RTL VCD or when no vcd provided to propagate activity to nets/registers not annotated from RTL VCD file.
#report_switching_activity => to examine propagated values of tr/sp
#create_power_waveforms -cycle_accurate => to show pwr waveform
report_power > ./reports/power_summary.rpt
report_power -hier > ./reports/power_hierarchy.rpt
#report_power -cell -flat -net -hier -verbose -nosplit > power_detail.rpt
exit

 


 

Restoring pt_shell:

We sometimes want to restore pt_Shell/pp_shell to do some debug work or to get more data on specific parts of design. We can restore pt_shell and then run below cmds:

pt_shell> report_power -cell_power [get_cells top/i_and2] => reports pwr components for given cell

                       Internal  Switching Leakage   Total
Cell                    Power     Power     Power     Power    (     %)   Attrs
--------------------------------------------------------------------------------
top/i_and2        0.0020    0.0300 1.426e-10 0.032 (100.00%)
--------------------------------------------------------------------------------
Totals (1 cell)    0.0020    0.0300 1.426e-10 0.032 (100.0%)

If we are writing a script to gather these numbers, then we can use "get_att" cmd to get pwr attr
pt_shell> list_attributes -application -class cell -nosplit => This lists all attr for cells. We see *power* attr

pt_shell> get_att [get_cells top/i_and2] internal_power => gives internal power. Similarly for switching_power, leakage_power and total_power. Also gives other pwr as dynamic_power, glitch_power, peak_power, etc.

 


 

Report: power summary report:

1. static power: Cell Leakage power. It's leakage in the cell from VDD to VSS when cell i/p is at 0 or 1 (subthreshold lkg from src to drn since gates never turn off completely). It includes gate lkg also (gate lkg is captured only for i/p pins for each transistor, as o/p pin will finally connect to i/p pin of some other transistor. gate lkg is just the current flowing into the gate when i/p of gate is 0 or 1). cell lkg pwr number comes from *.lib file. Pwr(lkg)=V*I(subthreshold_lkg)+V*I(gate_lkg).
It has a default lkg pwr number for each cell, as well as different lkg pwr numbers depending on diff i/p values. ex:
cell (AN210_3V) {
cell_leakage_power : 1.731915E+00; => default lkg pwr
leakage_power () { => we can have many of these conditions for each cell
value : 1.718650E+00; => lkg pwr = 1.7pW when A=1 and B=0. pwr unit defined as pw by "leakage_power_unit : "1pW";" in .lib file
when : "A&!B";
}

2. dynamic power: 2 components to this:


A. internal pwr: This includes short ckt pwr when cell o/p is switching, as well as pwr due to charging/discharging of internal nodes in the cell (due to src/drn cap on all o/p nodes and gate cap on internal nodes). cell int pwr number comes from *.lib file. Pwr(int)=Eint*Tr where Tr=number of toggles/time.
Just like timing() section, we have internal_power() section for o/p pin. It shows int pwr for each combination of i/p values slew rate and o/p cap load (as pwr will change due to short ckt current, drn/src cap changing). ex:

cell (AN210_3V) {
pin (Y) { => pwr is always for o/p pin, since i/p pin pwr is calculated separately as switching pwr.
internal_power () { => pwr unit is in pJ = power unit(pW) * time_unit(s) (it's energy, not power).
related_pin : "A"; => this is when o/p changes due to i/p pin A changing
rise_power (outputpower_cap4_trans5) { ... 34.39 .. } => pwr under diff cap load on o/p pin, and diff slew on i/p pin
fall_power (outputpower_cap4_trans5) { ... 34.39 .. } => fall_power is when o/p pin falls due to pin A rising/falling
}
internal_power () {
related_pin : "B"; => this is when o/p changes due to i/p pin B changing
rise_power (outputpower_cap4_trans5) { ... 34.39 .. } => rise_power is when o/p pin rises due to pin B rising/falling
fall_power (outputpower_cap4_trans5) { ... 40 .. } => 40pJ energy per toggle. Since time is in ns, pwr=mw??
}
}
}

B. switching pwr: This is due to charging/discharging of all the o/p load in design. This includes wire cap and gate cap on i/p pins which switch whenever o/p pin of any gate switches. Pwr(sw)=0.5*C*V^2*Tr. Tr=number of toggles/time.

Total_pwr = Pwr(lkg) + Pwr(int) + Pwr(sw) = Pwr(lkg) + Eint*Tr + 0.5*C*V^2*Tr (Pwr(lkg) and Eint come from.lib).
To calc avg pwr, static probability (Sp) is calcualted for all the nodes to be at 1 or 0. This is then used to calc lkg pwr for each cell. Toggle rate is caluclated for each node to calc dynamic pwr.
To calc peak pwr, vcd file is required to analyze events. It's useful for dynamic IR drop. If vcd file not provided, then tool doesn't know the seq of events. Merely toggle rate doesn't tell it whether all nodes toggle at same time or not.
When VCd file is not provided, default Tr/Sp is applied to starting points (PI, black box o/p). default Tr/Sp can be modified using (power_default_toggle_rate, power_default_static_probability)

 


 

PT-SI:

PT-SI is PT with Signal Integrity. PT-SI is basically  timing tool with crosstalk (requires separate license of PT-SI, regular PT license won't work)

link for discussion of si_xtalk_delay_analysis_mode option in PT-SI:
https://solvnet.synopsys.com/retrieve/015943.html?otSearchResultSrc=advSearch&otSearchResultNumber=4&otPageNum=1

PT-SI runs thru these steps:
1. electrical filtering, where aggressor nets whose effects are too small to be significant, based on the calculated sizes of bump voltages on the victim nets re removed. You can specify the threshold level that determines which aggressor nets are filtered. If the bump height contribution of an aggressor on its victim net is very small (less than 0.00001 of the victim’s nominal voltage), this aggressor is automatically filtered.
2. After filtering, PT SI selects the initial set of nets to be analyzed for crosstalk effects from those not already eliminated by filtering. You can optionally specify that certain nets be included in, or excluded from, this initial selection set.
3. The next step is to perform delay calculation, taking into account the crosstalk effects on the selected nets. This step is just like ordinary timing analysis, but with the addition of crosstalk considerations. This step runs in 2 iterations:
I. For the initial delay calculation (using the initial set of selected nets), PrimeTime SI uses a conservative model that does not consider timing windows.
II. In the second and subsequent delay calculation iterations, PT SI considers timing windows, and removes from consideration any crosstalk delays that can never occur, based on the separation in time between the aggressor and victim transitions or the direction of the aggressor transition. The result is a more accurate, less pessimistic analysis of worst-case effects. By default only 2 iterations done, as these provide good results. This variable is used to set no. of iterations. si_xtalk_exit_on_max_iteration_count => default to 2

logical correlation for buffers and inverters is considered in PTSI. For ex, if there is an inverter and both i/p and o/p nets of buffer are aggressing to a net, than these switch in opposite dirn, cancelling the x coupling effect, and resulting in very small delta delay or noise effect.

PT-SI is same as normal flow, except that we have to enable SI. These are the steps:
1. set target lib, link lib same way. set op cond to ocv.
2. Enable PT-SI (if we want to run SI)
set si_enable_analysis TRUE

3. set parameter for xtalk analysis
#For xtalk, default is to calc max delta delay for all paths (all_paths).
#set si_xtalk_delay_analysis_mode
#all_paths -> Calculate Max delta delay for all path through victim net. Could be pessimistic for critical paths for 2 reasons: Firstly, switching region of the victim is derived from the early and late timing windows without considering the individual subwindows that constitute it. Therefore, this might include regions where there is no switching on the victim. Second, the entire on-chip variation of the path is considered, creating the effect of multiple paths even when only a single path exists, for example, in a chain of inverters.
#all_path_edges -> considers only the edges of transition on victim net. This eliminates false overlap due to timing window caused due to multiple paths, and results in more accurate xtalk delay.
# worst_path -> DEPRECATED. do not use. Calculate Max delta delay only for critical path through victim. Accurate for critical path but could be optimisitic for non-critical paths. We pick victim critical path, so victim window is discrete edge, and false overlap of timing window is eliminated.
# violating_path -> DEPRECATED. do not use. Calculate Max delta delay for worst path and all <0 slack paths (recommended)
set si_xtalk_delay_analysis_mode all_path_edges

4. read verilog and parasitics as normal.
read_verilog /db/DAYSTAR/NIGHTWALKER/design1p0/HDL/FinalFiles/digtop/digtop_final_route.v
current_design $TOP
link

read_parasitics -keep_capacitive_coupling -format spef /db/DAYSTAR/NIGHTWALKER/design1p0/HDL/FinalFiles/digtop/digtop_qrc_max_coupled.spef => -keep_capacitive_coupling is needed to preserve all coupling cap from spef file. else, they will be grounded, and we wont see any noise effect. NOTE: spef file used here should have been generated with coupling caps in it (they should not be grounded). In EDI, it's done by generating spef after doing "setExtractRCMode -coupled true".
report_annotated_parasitics -check => make sure that coupling cap is shown here

5. read sdc constraints, check_timing, and then report timing for setup/hold.
report_timing -crosstalk_delta -delay max|min -path full_clock_expanded -nets -capacitance -transition_time -max_paths 500 -slack_lesser 2.0 => reports delta delay due to noise in GBA (can use -cross also instead of -crosstalk_delta). dtrans col in report shows delta transition caused due to xtalk, while delta col shows delta delay caused.
report_timing -crosstalk_delta -pba_mode exhaustive -delay max|min -path full_clock_expanded -nets -capacitance -transition_time -nworst 1 -max_paths 50 -slack_lesser 0.2 => reports delta delay due to noise in PBA.

PBA mode improves noise delay significantly because of 3 reasons: (https://solvnet.synopsys.com/retrieve/012134.html?otSearchResultSrc=advSearch&otSearchResultNumber=6&otPageNum=1)
A. slew rate is improved.
B. only single victim edge is considered for a single path of victim. Aggressor still have windows, as they can have multiple paths, but this reduces the overlap b/w victim and aggressor, resulting in elimination of lot of false victim window.
C. CPRR is improved, resulting in hold time improvement.

NOTE: PBA can't be used in sdf, as sdf has single delay value associated with each cell (it's a graph based rep).

6. static noise analysis: noise related reports. It uses noise modling from .lib or estimates noise based on delays/slew.
PTSI uses the following order of precedence when choosing which noise immunity information to use:
1.Static noise immunity curve annotated using the set_noise_immunity_curve command
2.DC noise margin annotated using the set_noise_margin command
3.Arc-specific noise immunity curve from library
4.Pin-specific noise immunity curve from library
5.CCS noise model from library
6.DC noise margin from library

#bottleneck for xtalk delta delay
report_si_bottleneck -cost_type delta_delay -significant_digits 3 => determine the major victim nets or aggressor nets that are causing multiple violations. reports the nets having the highest “cost function”. Four different cost functions:
1. delta_delay – Lists the victim nets having the largest absolute delta delay, among all victim nets with less than a specified slack.
2. delta_delay_ratio – Lists the victim nets having the largest delta delay relative to stage delay, among all victim nets with less than a specified slack.
3. total_victim_delay_bump – Lists the victim nets having the largest sum of all unfiltered bump heights (as determined by the net attribute si_xtalk_bumps), irrespective of delta delay, among all victim nets with less than a specified slack.
4. delay_bump_per_aggressor – Lists the aggressor nets that cause crosstalk delay bumps on victim nets, listed in order according to the sum of all crosstalk delay bumps induced on affected victim nets, counting only those victim nets having less than a specified slack.
By default, the specified slack level is zero, which means that costs are associated with timing violations only. If there are no violations, there are no costs and the command does not return any nets.

#nets reported by the bottleneck cmd are investigated with this cmd.
report_delay_calcualtion -crosstalk -from -to => provides detailed information about crosstalk calculations for a particular victim net. It shows active aggressors, reason for inactive aggressor, delta delay/slew and victim analysis.
I - aggressor has Infinite arrival with respect to the victim
N - aggressor does not overlap for the worst case alignment

#update_timing => updates timing due to xtalk, after "what if" fixes are made using size_cell and set_coupling_separation.
#update_noise => detects functional errors resulting from the effects of crosstalk on steady-state nets.

report_si_double_switching => determine those victim nets with double-switch violations in the design. Double-switching errors such can cause incorrect circuit operation by false clocking on the inactive edge of a clock signal, by double clocking on the active edge of a clock signal, or glitch propagation through combinational logic.

#static noise analysis:
#set_noise_parameters -ignore_arrival -include_beyond_rails -enable_propagation -analysis_mode report_at_source | report_at_endpoint
#-ignore_arrival => causes the arrival window information of the aggressors to be ignored during the noise analysis. Therefore, the aggressors are assumed to be always overlapping to maximize the effect of coupled noise bump.
#-include_beyond_rails => By default, the analysis of noise above the high rail and below the low rail is disabled. This option, enables the analysis of noise beyond the high and low regions.
#-enable_propagation => Specifies whether or not to allow noise propagation. Propagated noise on a victim net is caused by noise at an input of the cell that is driving the victim net. PrimeTime SI can calculate propagated noise at a cell output, given the propagation characteristics of the cell, the noise bump at the cell input, and the load on the cell output.
#-analysis_mode report_at_source | report_at_endpoint => In report_at_source mode, viol are reported at the source of violations. In report_at_endpoint mode, violations are propagated through fanout and reported at endpoints. default value is report_at_source.

NOTE: no noise models needed, as default is "report_at_source" mode, where noise bumps are not propagated, but rather fixed at source. controlled by "set_noise_parameters".
set_noise_parameters -enable_propagation => noise propagated.

#set_noise_margin, set_noise_immunity_curve => Specifies the bump-height noise margins or 3 coefficient values for an input port of the design or an input pin of a library cell, that determine whether a noise bump of a given height at a cell input causes a logical failure at the cell output. noise immunity of cell is provided here.

#set_si_noise_analysis => Includes or excludes specified nets for crosstalk noise analysis.

check_noise => checks the design for the presence and validity of noise models at driver and load pins. No pins should be found w/o noise constraints i.e. The number of pins reported in the “none” row of the report must be zero.

update_noise => performs a noise analysis and updates the design with noise bump information using the aggressor timing windows previously determined by timing analysis.
report_noise -all_violators => generates a report on worst-case noise effects, including width, height, and noise slack. It also determine those victim nets with double-switch violations in the design. -all_violators reports only those pins/nets that have -ve noise slack (i.e noise bump is above noise threhold). To get more detailed report, use -verbose.

#report_noise_calculation => generates a detailed report on the calculation of the noise bump on a net arc (single net). same as report_delay_calculation except that it reports noise instead of delay. The startpoint is the driver pin or driver port of a victim net and the endpoint is a load pin or load port on the same net.

7. inlcuding/excluding certain nets: (if you still have failures), and run delay/noise analysis again.
#set_si_delay_analysis – Includes or excludes specified nets for crosstalk delay analysis.
#set_si_noise_analysis – Includes or excludes specified nets for crosstalk noise analysis.
#set_si_aggressor_exclusion – Excludes aggressor-to-aggressor nets that switch in the same direction. Only specified number of aggressors (default 1) is active at a time.
#set_coupling_separation – Excludes nets or net pairs from crosstalk delay and crosstalk noise analysis.

Black Friday 2020

This is an exclusive list of all BF 2020 deals. This year BF deals have been nothing short of hype with no delivery. I've found better deals on Laptop before BF. That's true for many other deals that used to take place every BF where you could get bunch of stuff for free after MIR (mail in rebate), but those deals have mostly disappeared for this year.So, my advice (which is always wrong) would be wait until after Christmas, and see if there are any markdowns for all the items these retailers have hoarded.

Anyway I'll list BF deals below. Not that they are at all time low prices, but still at decent prices. You still have extended return window for the holidays (mos retailers like Walmart, Target, BestBuy allow you to return items until Jan 2021), so it's relatively low risk. You can always return the item if you find it at a lower price later in Dec or Jan.

Best place to find all BF ads is from here (too much advertisement makes it hard to navigate yell)

https://blackfriday.com/

 

Deals:

 Some good deals summarized (more details in bottom part of page along with deals)

  • TV: 65 inch TV (lowest price $230),   70 inch TV (lowest price $300), 75 inch TV (lowest price $500, still close to 2019's price point), 
  • Laptop: 15.6 inch screen (lowest $250), gaming laptop (lowest $449)
  • HooverBoard: At target for $67.50 (cheapest price)

 


 

Best Buy:

https://blackfriday.com/ads/black-friday/best-buy

NOTE: All best buy purchase from 13th Oct, 2020 to 2nd Jan, 2021 are eligible for returns until Jan 2, 2020. So, even if the deal is not that great, you can still buy it as a backup. If you find a better deal at BestBuy or elsewhere, just return that and get the other one.

Some of the noteworthy deals are:

  • Hisense 65inch 4K TV for $250 (among cheapest 65 inch TV yet). Target has gotten it even chaper at $230 as of 11/06. See below in Target section.

 

 

 

 

 

 

 


 

Walmart:

NOTE: All walmart deals below are very hard to get online. Very few people on slickdeals have been able to snag these, so don't get your hopes high.

UPDATE: Looks like walmart is releasing these deals slowly every half hour or so. People are able to get all these online deals now by trying again and again over a day, as the deals keep on going in and out of stock. So, keep trying !!

For sale on 11/04/2020: https://blackfriday.com/ads/pre-black-friday/walmart

Some of the noteworthy deals are:

  • Onn 65 inch 4K TV ( 11/04/2020)= $228 (cheapest 65 inch TV). Target one is a better deal since TCL is a better brand than Walmart's Onn

 

 

 

For sale on 11/07/2020:

  • HP 15 inch gaming laptop for $449 =>same deal as above on 11/04. If you missed the one on 11/04, one more chance at it !!

 

For sale on 11/11/2020 (valid until 11/15/2020): https://blackfriday.com/ads/thanksgiving/walmart

Some of the noteworthy deals are:

 

 

 


 

Target:

This year Target really has some great deals. Their prices are even lower than Walmart's prices, and they don't sell out as Walmart online deals do.

Some of the noteworthy deals are:

 

 

 

 

 


 

Costco:

 NOTE: costco doesn't really have any Black friday deals. They have slightly better deals during BF than at other times, but nothing at ludicrous prices that sell out.

 


 

Fast food chains:

Below I'm listing some fast food chains and the vegetarian menu iems available at those chains, that me or my kids liked. These were reasonably priced, and filling enough and not too bad in taste I guess (since my kids finshed them w/o complaining) !! If you are looking for dine in formal restaurants, check out the "restaurant" section.

 

Mcdonalds:

A couple of options here. One of them is pie - Apple pie, pumpkin pie, etc. These sell for about $1 including tax. These are filling enough where 1 pie is good for one kid.

Macdonalds GC are not on sale that often. I've bough these GC on sale for 20% off at HEB, grocery chain in Texas. I usually buy enough that will last me a couple of years, considering I spend < $50 a year at Mcdonalds.

 

Chipotle:

Here you can get cheap mexican food. Nothing fancy about the food. It's filling and it costs < $10. You can buy Chipotle GC for 20% off couple of times a year at grocery stores, amazon, paypal, drug stores, etc. They also have BOGO offers from time to time. If you make an account at chipotle, and don't have any activity on your online account, then they will drop you few offers from time to time. I've gotten few BOGO offers that way. Sometimes they will have online quizzes and first 10K or so get BOGO offers (you can search for these on slickdeals). On an avg, BOGO offers are may be 1-2 times a year.

 

Subway:

Subway is one of the cheapest fast Food restaurant. They primarily serve sandwiches - veggie and meat. Their veggie sandwiches are really great.

Regularly you can get their GC for 20% off ($50 GC for $40). Couple of times a year, subway.com itself gives these out. Sometimes they are available on sale at grocery stores, paypal website, etc. On top of that, Subway usually has Buy 1, Get 1 Free (BOGO) offer. Normally their foot long sandwiches are $7, but with this promo, they give you 2 subway for the price of $7 or less. You also get 2 free cookies for filling survey. With 20% off GC, and rewards you earn + free cookies with survey, you end up getting two 1 foot subs for < $5. Not sure if you can make it that cheap at home. Make it 2X for all the fillings to make it twice as many calories. 2 footlong subs are good to feed 4 people, or < $1.25 per person per meal. Can't get any cheaper than that !! For the rewards, you will need to make an account at subway.com.

For vegetarian sandwiches - you can get veggie patties too to go in between the sandwiches. It will cost a dollar extra, but it's well worth the price. It tastes really good, and is very high in protein and calories - fills you up really well. Subway is my favorite fast food go to place, as it gives you the best value per dollar.

 

Dominos Pizza:

Dominos pizza is the cheapest Pizza chain (among the big pizza chain - Papa Johns, Pizza Hut and Dominos).

You can regularly get $25 Dominos GC for $20. They are available on sale at grocery stores, paypal website, etc. It's the most readily available sale of all the fast food GC sale. Dominos also has rewards program where you earn 10 points for every order $10 or more. 60 points gets you a free Medium 2 topping pizza. So, $60 in spending gets you $6 worth of pizza, or equivalent to 10% cashback.

For medium pizza, Dominos always has the deal: $5.99 $6.99 (prices raised in 2023) each when you buy 2, with 2 toppings each. You can also add more items for $5.99 $6.99 each (doesn't have to be pizza. this applies to even the first 2 items).

For large pizza, Dominos always has the deal: $7.99 for a large pizza with 3 toppings (as of 2022). Price for large pizza remained the same for 2023, but number of toppings has gone down from 3 to 1.

There's a deal every once in a while, where you get max of 7 toppings on a large pizza for $10 only. This is a great deal, and I'll share it below when available.

Below are different Pizza offered by Dominos:

1. Medium/Large Hand Tossed Pizza: This pizza is available in both medium and large.  It has 190 calories/slice. So total for 8 slices = 190*8=1500 calories per pizza. This is second favorite crust at my home after the "Crunchy Thin crust" pizza.

2. Medium/Large Crunchy Thin crust pizza: This pizza is available in both medium and large. This is very thin crust and crunchy. This is the best tasting pizza, but also has the fewest calories.

3. Medium Handmade pan pizza: This pizza is only available in medium as it's crust is very thick. It Costs $2 extra. So, medium pizza will cost $7.99 $8.99 (as of 2023). It has 310 calories/slice. So total for 8 slices = 310*8=2500 calories per pizza. It has significantly more calories, as it has much thicker crust. This is more filling but not as tasty.

 

Papa Johns Pizza:

Papa Johns pizza is the most popular pizza, but it's little bit more expensive than Dominos pizza.Papa Johns also has their reward program, where you get 1 point for every dollar spent. When you reach 75 points, you get $10 worth of dough that you can use on getting free pizza or anything under $10. So, $75 in spending gets you $10 worth of pizza, or equivalent to 15% cash back.

For medium pizza, Papa Johns always has the deal: $6.99 each when you buy 2, with 1 topping each. You can also add more items for $7 each (doesn't have to be pizza. this applies to even the first 2 items).

For large pizza, Papa Johns always has the deal: $8.99 for a large pizza with 1 topping. However this is location specific, and may be higher or lower.

Their large pizza is 2200 cal, while medium is 1500 cal (almost same as that at Dominos).

Some added bonus with Papa Johns pizza:

  • They include 1 garlic sauce + 1 banana pepper free with each veg pizza.
  • They give unlimited packets of cheese and pepper.
  • They have base which you may choose to be cheese, meat or veg. If you choose veg, the base itself will have vegetables in it (toppings that you choose will be in the base too). That seems to make it yummier.
  • The large pizza is $1 more expensive than Dominos, but when you consider the free items included, it's almost at par with Dominos.

 

Taco Bell:

Taco Bell is a very popular mexican food place. It used to be cheap, but is getting pricier now. Burritos, Nachos and Tacos are the most popular mexican food in these fast food places. Few popular veg menu items:

  • Cheese Quesadilla => It costs about $4 and has 500 calories. It's favorite of my younger one.
  • Veg Burrito => Burritos are things with veg/beans filled inside and wrapped around the tortilla. Few varieties are Bean burrito, rice and bean burrito and Fiesta Veggie burrito. Burritos are the cheapest items on Taco Bell's menu. They cost between $1-$2 and provide around 500 cal of energy.
  • Nachos => Nachos is one other very favorite mexican dish. It's basically chips with beans, cream, veg, etc spread on it. It tastes nice. However, it's expensive as it's not very filling, and costs about $5. Nachos Bell Grande costs about $5 and has 750 cal.
  • Tacos =>  Tacos are crsipy or soft shell filled with beans, veg, etc. Nacho Cheese Doritos Locos Tacos cost about $2.50 and has 170 cal, so per calorie it's expensive. Cheapest item here is "spicy potato soft taco" costing a dollar. Tacos in general do taste good.

Taco Bell has offers on their website all the time, where you can get a combo or a box with more items in it for a lower price. However, you get those prices, only when ordering thru the app. So, always look on their website or app for offers before ordering (check in offers/rewards section of their app). They also have free items from time to time.

 

IHOP:

Another fast food chain. It sells pancakes which are decent price. Their pancakes are very filling. They also have kids menu, which is cheaper. It's good chain when your kids are bored with everything else, and you just want to try something different. Tmobile thru it's Tmobile Tuesday app offers free pancakes at IHOP from time to time.

You can get IHOP GC for 20% off a couple of times in grocery stores, amazon, etc.

 

 


 

DEALS:

 

All Gift Card deals for fast food are in gift card section. Consider buying those GC where possible and then get these deals.

 

 

 


 

Subway Offer - BOGO (select restaurants) offer multiple times a year => expires every few months

https://slickdeals.net/f/16059892-subway-buy-one-footlong-get-one-free-w-code-ymmv

The deal always shows up with new promo code (or some older code). Every time it comes, it's valid for 1-2 months. Need to order online or from app. Best value is 2 foot long sub for $7 (Now $8 as of 2023). The ones with veggie patty in it go for about $10. You also get rewards if you have signed up, which equates to $2 every 4-5 of BOGO orders. Not bad :)

UPDATE Sept 2025: Subway doesn't have veggie patty at any of the stores anymore. Their website errors out most of the times with "access denied" error. Their app also has glitches, where it will shut down saying "encountered problem" or seem to be stuck or very slow during order placement. On final screen after placing the order it will be processing and seem to be stuck, but on refreshing (by swiping on the app from top to bottom), it will show that the order went thru. With all these issues, not sure if it's worth the food.

NOTE: Many codes of subway still work many times even though they expired a whileback. Try these codes if you can't find a code:

  • B2GO codes (3 Footlong): FTL1799
  • BOGO codes (2 Footlong): BOGOFTL, FREEFL, FLBOGO, FTLBOGO, FL1299, 1299FL, FL1399, FOOTLONG (need to add drink),
  • Individual codes (1 Footlong): FTL699,

Deals:

 


 

Dominos Offer - multiple times a year => expires in a week or so 

Noteworthy offers:

 

 


 

 

2025:

 

 


 

07/22/2025: Pizza Hut Offer - 1 Topping Personal Pan Pizza for $2 (limit 4) => every Tuesday

https://slickdeals.net/f/18475066-pizza-hut-select-locations-1-topping-personal-pan-pizza-2-valid-for-carryout-only-till-promotion-ends-tuesday-s-only?src=frontpage

Not all locations, and ones which have may be sold out quickly.

 


 

02/14/2025: 7-11 Offer - Free Slurpee every Friday in Feb (No app needed) => expires end of Feb

https://www.doctorofcredit.com/7-eleven-free-slurpee-friday-during-february-2025/

No app needed. Just walk in and get a small slurpee for free.

 


 

02/10/2025: Dominos Offer - Large 7 topping Pizza for $10 => expires 03/02/2025

https://slickdeals.net/f/18111496-domino-s-pizza-large-any-crust-any-toppings-pizza-10-valid-thru-3-2-for-online-purchase-only

Great deal after a long time. These 7 toppings themselves are worth $5.

 


 

01/07/2025: Taco bell Offer - BOGO or free item on app  => expires 01/13/2025

https://slickdeals.net/f/18042708-taco-bell-rewards-members-cravings-value-menu-b1g1-free-cantina-chicken-bowl-5-more-in-app-at-participating-locations?src=frontpage

There are multiple choices. "Love" which gives you a BOGO item for anything on "cravings menu" is the best deal, since you get $3 free item.  On app only. You have 7 days from the day you choose your offer to redeem it, so if you sign up on 01/13/25, you have until 01/20/25 to use it.

 


 

 

2024:

 

 


 

08/20/2024: Chipotle Offer - BOGO by answering quiz questions => valid from 08/20/2024 - 08/22/2024

https://slickdeals.net/f/17702445-chipotle-coupon-offer-burrito-bowl-salad-or-tacos-bogo-free-w-quiz-limited-availability-daily-thru-8-22

The answers to the quiz for each day are provided in the comments section. Offer is thru out the day, but BOGO is given every hour to first few folks, so try right on the hour. If you get only 25 points and no BOGO showed up, then you missed your chance as you will not be eligible any more for that day. Try again another day. The code is valid instore, online and from app.

 


 

08/10/2024: Cici's Pizza - Buffet for $5 only (valid on Mondays and Tuesdays only) => expires Nov 12, 2024

Valid on Dine in only on Mondays and Tuesdays. Great deal, since Buffet includes not only pizza, but also desert, salads, etc. You can also ask them to make you a custom pizza with your selected topping for no additional price. Do NOT waste please.

https://slickdeals.net/f/17683254-cicis-pizza-brings-back-4-99-buffet-on-mondays-and-tuesdays-until-november-12-2024-in-store-coupon-code-23063-show-coupon-before-ordering

 


 

07/01/2024: 7-Eleven Stores - Free small slurpee only on 07/11 (Thursday) => expires July 11, 2024

Valid only on 07/11. This offer comes every year on 07/11. No app requirement. Just show up in store and get one.  7-eleven is a gas station chain and may not have a presence in all the states.

https://www.doctorofcredit.com/7-eleven-free-small-slurpee-7-11-only/

 


 

04/28/2024: Taco Bell - Discovery box for $5, valid only on Tuesdays => expires June 4, 2024

Valid only on Tuesday.  3 different types of tacos included for $5. You can swap as well as customize to make it veg only (by substituting chicken with beans). Make sure you swap that basic crunchy taco for another Doritos Loco or even a soft taco supreme for free. Makes it an even better deal.

https://slickdeals.net/f/17449566-participating-taco-bell-restaurants-taco-discovery-box-5-tuesdays-only-through-june-4?src=frontpage

 


 

04/22/2024: Dominos Offer - Large 2 topping Pizza for $7 => expires 04/28/2024

https://slickdeals.net/f/17446341-domino-s-pizza-large-2-topping-pizza-6-99-carryout-only

 


 

01/24/2024: Dominos Offer - Large 2 topping Pizza for $7 => expires 01/28/2024

https://slickdeals.net/f/17248609-dominos-large-2-toppings-pizzas-6-99-carryout-only?src=frontpage

 



 

 

2023:

 

 


 

10/30/2023: Taco Bell - Free Doritos locos Tacos in app => expires Nov 5, 2023

Free Doritos locos tacos for everyone (only via the app). This in addition to the offer, where they offer a free Doritos locos tacos for guessing who will steal the first base in the 2023 World Series.

https://slickdeals.net/f/16970113-free-doritos-locos-taco-for-taco-bell-steal-a-base-steal-a-taco-promo-free?src=frontpage

 


 

10/11/2023: Dominos Offer - 1 Free Medium Pizza with online order of $7.99 or more (incl Tax) => expires 02/11/2024

https://slickdeals.net/f/16975834-domino-s-pizza-medium-2-topping-pizza-free-w-7-99-qualifying-order-valid-for-delivery-or-carryout

Plenty of time to redeem this offer, as it ends after 4 months. Even if you cancel the original order, you still get free medium pizza. However, it's limit of 1 per account. People try to get multiple of these offers by making multiple fake accounts.

 


 

10/03/2023: National Taco Day deals - Oct 4 only

Lots of BOGO and other cheap Taco offers on Oct 4.

Various Fast Food chains on Oct 4: https://slickdeals.net/f/16961173-national-taco-day-megathread-wednesday-october-4th

Taco Bell $10 monthly subscription for 1 free taco per day (sign up by Oct 4): https://slickdeals.net/f/16961758-national-taco-day-2023-taco-lover-s-pass-taco-bell-10

 


 

08/09/2023: Taco Bell - Free Doritos locos Tacos every Tuesday from 08/15 - 09/05:

Free Doritos locos tacos for everyone (only via the app, probably click on the offer under "offers"?).

https://www.doctorofcredit.com/taco-bell-free-taco-every-tuesday-8-15-9-5/

 


 

01/01/2023: Dominos Offer - $3 Tip for carryout order of $5 or more (incl Tax) => expires 03/26/2023

https://carryouttips.dominos.com/

This offer is back for 2023, It's same as what was offered last few times. You get $3 Tip for any order placed for > $5 (incl tax). You can order a large pizza with 1 topping (for $7.99). You will get $3 tip to use next week from Monday-Sunday. You can place next order for $7.99, and put this code in the PROMO section. It'll charge you $4.99+tax, and will also give you $3 tip to use on your next order. Thus every week, you can order 1 pizza for $4.99+tax until expiry date. Combined with 20% off for Dominos GC, You are getting a large pizza for ~$4, which is at par with what it would cost if you were to make one at home. Enjoy your Pizza !!

NOTE: Unless to live in one of the 5 states with no sales tax, you can order $7.99 large pizza for this offer. However, if you have no sales tax in your state, then your total will be $4.99 (after applying the tip), which will disqualify you from getting $3 Tip on your current order. In such a case, add an extra topping (for $1 more) or go with Brooklyn style extra large pizza (for $2 more).

 


 

 

2022:

 

 


 

11/03/2022: Subway Offer - BOGO (select restaurants): PROMO: FLBOGO => expiry unknown

https://slickdeals.net/f/16145170-select-subway-restaurants-buy-one-footlong-sub-get-one-footlong-sub-free

This offer is back with new promo code, It's same as what was offered last few times. Need to order online or from app. Best value is 2 footlong sub for $7.

 


 

10/31/2022: Taco Bell - Free Doritos locos Tacos (via app only): Expires 11/09/2022

Free Doritos locos tacos for everyone (only via the app, click on redeem offer under "offers").

https://www.doctorofcredit.com/taco-bell-free-taco-when-somebody-steals-a-base-in-the-world-series-2/

 


 

09/30/2022: Subway Offer - BOGO (select restaurants): PROMO: FREEFOOTLONG => expiry unknown

https://slickdeals.net/f/16059892-subway-buy-one-footlong-get-one-free-w-code-ymmv

This offer is back with new promo code, It's same as what was offered last few times. Need to order online or from app. Best value is 2 footlong sub for $7.

 


 

08/30/2022: Subway Offer - BOGO (select restaurants): PROMO: FREESUB => expiry unknown

https://slickdeals.net/f/16002784-select-subway-restaurants-buy-one-footlong-sub-get-one-footlong-sub-free-with-coupon-code-freesub

This offer is back with new promo code, It's same as what was offered last few times. Need to order online or from app. Best value is 2 footlong sub for $7.

 


 

08/22/2022: Chipotle Offer - BOGO by answering quiz questions => valid from 08/22/2022 - 08/26/2022

https://slickdeals.net/f/15993382-chipotle-burrito-bowl-salad-or-tacos-bogo-free-w-quiz-online-mobile-orders-only

The answers to the quiz for each day are provided in the comments section. You can retry infinite times if you don't get all 10 questions right. Offer start at 9AM PST each day and runs out of codes in 3-4 hours. Codes are valid for 7 days. You can get 1 code each day for each phone number provided. Need to order online or from app.

 


 

06/20/2022: Taco Bell - $5 box (online or via app): Expires 06/22/2022

This deal is for $5 box with chalupa, taco, twists and drink. An ok deal.

https://slickdeals.net/f/15846961-toasted-cheddar-chalupa-crunchy-taco-cinnamon-twists-fountain-drink-m-5

 


 

06/18/2022: Subway Offer - BOGO (select restaurants): PROMO: FREEFOOTLONG => expires 08/22/2022

https://slickdeals.net/f/15854488-new-subway-coupon-codes-for-june-buy-one-footlong-get-one-free-more-subway-via-app-purchase

This offer is back with same promo code, It's same as what was offered last few times. Need to order online or from app. Best value is 2 footlong sub for $7.

 


 

03/29/2022: Subway Offer - BOGO (select restaurants): PROMO: FREEFOOTLONG

https://slickdeals.net/f/15695377-select-subway-restaurants-5-99-footlong-7-99-meal-3-49-6-inch-5-99-meal-bogo-and-more

This offer is back, It's same as what was offered last few times. Need to order online or from app. Seems like fewer restaurants are participating in this promo code, so try few around you to see if it works for any.

 


 

12/31/2021: Subway Offer - BOGO: PROMO: FREEFOOTLONG => expires 02/13/2022

https://slickdeals.net/f/15532663-select-subway-restaurants-buy-one-footlong-sub-get-one-footlong-sub-free-more

This offer is back, after a gap of few months. It's same as what was offered last few times, and just like previous offers, runs for more than a month. It's buy one, get one free = effectively 2 subway for price of one. Can't beat the price. Need to order online or from app.