Photo:

In USA, you can almost always print photos for free or very low cost (lower than what it would cost in ink if you were to print yourself).

Free Photo:

You can search on slickdeals.net for "free photo" and you should see any available and past offers. I'll try to put these under deals and also below under "free photo deals". These are some of the popular stores for getting free photo:

1. Walgreens: Almost every other week, they have free 8x10 photo, free 5x7 photo, free 4x6 photo, or 1 cent 4x6 photo. It's usually limited to one use of coupon per account. So, if you are 2 members in household, make 2 accounts on walgreens with 2 email addresses, and that way you can avail 2 free offers every time. These photo offers usually expire in a day or two, so be sure to act fast !!

2. CVS: Just like walgreens, CVS also has free photo offers. However the offers at CVS are fewer, may be once every couple of months. Since 2020, I have seen them, maybe 3-4 times a year.

3. Walmart: Walmart has 4x6 photos available for printing for 10 cents or less. This is an emergency option if you can't afford to wait for free photo. CVS, Walgreens, etc have much higher regular prices.

4. snapfish: This website snapfish.com has free photo offer, along with free shipping a couple of times every year. You also get few free photos for signing up. Search on slickdeals.net.

5. T-mobile: If you download "Tmobile Tuesday" app, you will get multiple freebies every Tuesday. From time to time, you get "10 free photo prints" at CVS. Anyone who is a T-mobile customer (all phone numbers on a family plan) can download the app and take advantage of the freebies.

 

Big Size Photo or Canvas:

If you want big size photo with frames to hang on walls, then you will need to spend money. I'm talking about 18x24 or 20x30 photos or 36x48 photos. These are not printed on paper, but rather on canvas (a  cloth). It looks really nice when hung on a wall, especially if it already comes "stretched on a frame" (frame is not that thick, but good enough). One thing to note is that the image needs to have enough pixels on it, so that it looks smooth when enlarged to these large sizes. Any image with more than 2000x2000 pixels (or more than 4M pixels) will do great. You can click on "properties" for any image on your computer, and that will show you the size and the pixels it has. Any image with size > 2MB usually has enough pixels to get enlarged.

Best website that I've found for printing economical canvas prints is canvasonsale: https://www.canvasonsale.com

You will get much lower prices if you look up their offers on groupon.com. Groupon has 20%-30% off deals almost every month. If you wait for such a deal, and then buy canvas from this merchant, and use a cashback website for purchasing from groupon (topcashback or ebates) , you can essentially get 40% off already reduced price. You can also get groupon gift cards for 10% off, so use those instead of using your credit card.

I had bought 36x48 and 24x36 canvas from above website. They came with "frame" and were carefully shipped. The print quality was amazing. I paid about $25 for 24x36 size and $40 for 36x48 size with shipping included. This is before cashback and before gift card discount. These are priced at around $300-$500 each on their website (which is non sense price anyway). I don't think you can go wrong with this merchant at these prices for these large canvas with frame.

 

Passport Photo:

In USA, passport pictures are pictures needed for use in your passport or other government applications. The photo size requirements for US passport are different than those in India. Here you need 2 inch X 2 inch passport photo. You can get these passport pictures taken in India also, as they know the requirements there too.

US passport photo requirement: https://travel.state.gov/content/travel/en/passports/how-apply/photos.html

Photo should be 2x2 with this additional requirement => Head must be between 1 -1 3/8 inches (25 - 35 mm) from the bottom of the chin to the top of the head

To get your passport picture, you either need to goto walmart, CVS, Walgreens or some other stores, which charge you $10 for a pic. You can put your camera to use, and save some money. If you take the photo yourself, it will cost you 10 cents or less, and in the process you will gain a valuable marketing skill on taking passport pictures !!

Website for Passport Photo:

This website creates correct passport size photo on  regular 4x6 photo size.

https://www.idphoto4you.com/

steps:

  1. goto website above using internet explorer. This doesn't work in firefox, as it just doesn't show any option on 2nd screen. If it doesn't work on your browser, try another browser. i can confirm it working on Internet Explorer.
  2. choose passport "2x2" for USA passports, since they require pic of 2 inch by 2 inch. Follow instructions to upload a photo.
  3. Then on next screen, adjust brightness and contrast. Usually not required.
  4. Then on next screen, crop photo. It shows 2 green bars. Your face should be in between those 2 green bars. That ensures head to chin is less than 1 3/8 inches.
  5. After crop, your picture will be ready for download in 1 minute. After a minute, download the photo to your computer. It will have 4 pics of 2x2 on a single 4x6 paper size.
  6. You can print it at any store the same way as you print regular 4x6 pics. You can cut the resulting 4x6 to get 4 passport pics of 2x2 size. It shouldn't cost you more than 20cents as most stores print it for 10 cents or less. I do not print it at my home printer, as it's hard to get good paper. Store printing is cheaper than printing it at home, as printer ink are expensive.

Important tips:

  • Take picture with your camera against a white background. Take picture during day (in shade and outdoors, where light is coming equally from all sides).  Else you may end up getting a shade of your face in the background, which may be a reason for rejection
  • For white background, buy Kid's white paper that they sell under "school supplies" in Grocery stores, Office stores, Walmart, etc. These white papers are about 2 ft X 3 ft, and are thick enough to be placed behind the subject. Just have someone hold the white paper behind the subject, while you take the picture. Don't use clothes as white background, as they develop wrinkles, which reflect light at different angles, causing some weird colors to pop up in printed pictures. These colors may be removed by adjusting contrast/brightness, but not worth it. If you have a thick cotton sheep, that may work out OK.
  • Once you upload picture to any website as CVS, Walgreens, etc, adjust the brightness over there in their software. Do not adjust it in "idphoto4u". I've seen that adjusting brightness in walgreens website, gets rid of any blue or similar color that comes when you take photos with white background. On walgreens website, this is what you do: Under "enhance" option, increase "brightness" and "contrast" to 50% or more (i.e 1/2 of maximum value). You will see that the background getting more and more white. If you get too much contrast or brightness, then the printed photo will get washed out or appear not natural. so, be careful overdoing it.
  • All my photos got rejected for all applications the very first time, because they all had whitish/bluish background, even though I had used "White Paper" as background. I tried adjusting it multiple ways, but nothing worked. The ultimate thing that worked was using walgreens website to adjust brightness/contrast. Don't use any photo editing software to change the background, as those can easily be identified and will be rejected immediately.
  • See the passport website "travel.gov" for various samples of photos. Don't let your application get rejected due to a bad picture. It's just more hassle.

 

Good Luck and happy photography !!

 


 

Walgreens/CVS Free photo Deal => See on link below for updated codes.

This link on doctorofcredit.com lists all codes for 8x10 free photo:

For other codes or other sizes as 4x6, 5x7, etc, search on slickdeals.net or on doctorofcredit.com here =>

Deals:

 


 

 

2023:

 

 


 

01/09/2023: Walgreens 5X7 magnet photo for $1 - Code 5x7MAG (expires 01/10/2023)

https://slickdeals.net/f/16368871-walgreens-5x7-photo-magnet-0-99

 


 

2022:

 


 

12/24/2022: Walgreens 8x10 Free photo - Code SNOWDEAL (expiry unknown)

https://slickdeals.net/f/16336318-walgreens-free-8x10-photo-code-snowdeal-0-00

 


 

12/08/2022: Walgreens 8x10 Free photo - Code ICESK8 (expiry unknown)

 https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

 


 

12/02/2022: Walgreens 8x10 Free photo - Code FREE-8BY10 (expiry unknown)

 https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

 


 

10/17/2022: Walgreens 2 of 5X7 Free photo - Code  PAIR

https://www.doctorofcredit.com/walgreens-2-free-57-photo-prints-with-promo-code-your5x7/

Free as always. It's smaller sized 5X7 this time.

 


 

09/19/2022: Walgreens 5X7 Free magnet photo - Code FREE-MAG (expiry unknown)

https://slickdeals.net/f/16046371-free-5-x-7-magnet-at-walgreens-w-code-free-mag?src=frontpage

 


 

08/22/2022: Walgreens 8x10 Free photo - Code EMAILONLY (expiry unknown)

 https://slickdeals.net/f/15991876-walgreens-photo-8-x-10-photo-print-free-free-pickup

 


 

08/14/2022: Walgreens 8x10 Free photo - Code FREE8BY10 (expiry unknown)

https://slickdeals.net/f/15976981-walgreens-photo-8-x-10-photo-print-free-free-pickup

 


 

06/15/2022: Walgreens 8x10 Free photo - Code FUNINTHESUN (expiry unknown)

https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

 


 

05/02/2022: Walgreens 8x10 Free photo - Code MAYFREEBIE (expires 05/05/2022)

https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

 


 

04/04/2022: Walgreens 8x10 Free photo - Code RABBITPRINT

https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

 


 

03/20/2022: Walgreens 8x10 Free photo - Code SPRBREAK

https://slickdeals.net/f/15680635-walgreens-8-x-10-photo-print-free-free-store-pickup

 


 

 

2021:

 


 

12/31/2021: Walgreens 8x10 Free photo - Code ZERO

https://slickdeals.net/f/15539821-walgreens-photo-8-x-10-photo-print-free-free-store-pickup

Last Free Photo of 2021.

 


 

12/25/2021: Walgreens 8x10 Free photo - Code FROSTY8X10

https://slickdeals.net/f/15527032-walgreens-8-x-10-photo-print-free-free-store-pickup

Free as always

 


 

12/12/2021: Walgreens 5 Free 4x6 photo - Code 5FREEPRINT

https://slickdeals.net/f/15496597-walgreens-photo-5-count-4x6-glossy-photo-prints-free-free-store-pickup?src=frontpage

Free as always

 


 

12/03/2021: Walgreens 8x10 Free photo - Code MERRY8X10 => expires in couple of days

https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

Free as always

 


 

11/14/2021: Walgreens 8x10 Free photo - Code GRATEFUL8X10 => expires in couple of days

https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

Free as always

 


 

11/12/2021: Walgreens 5X7 Free photo - Code  IGOTMYSHOT => expires in couple of days

https://slickdeals.net/f/15393793-walgreens-photo-5-x-7-photo-print-free-free-store-pickup?src=frontpage

Free as always. It's smaller sized 5X7 this time.

 


 

11/05/2021: Walgreens 8x10 Free photo - Code FALLSMILES => expires in couple of days

https://slickdeals.net/f/15377812-walgreens-8-x-10-photo-print-free-free-store-pickup?src=frontpage

Free as always

 


 

10/30/2021: Walgreens 8x10 Free photo - Code ONEBIG8X10 => expires in couple of days

https://slickdeals.net/f/15364711-walgreens-photo-8-x-10-photo-print-free-free-store-pickup?src=frontpage

Free as always

 


 

09/21/2021: Walgreens 8x10 Free photo - Code 8X10AUTUMN => expires in couple of days.

https://slickdeals.net/f/15293506-walgreens-photo-8-x-10-photo-print-free-free-store-pickup

Free as always

 


 

08/18/2021: Walgreens 6 customized set of 5x7 Free photo - Code FREEHELLO => will expire soon.

https://slickdeals.net/f/15223435-live-walgreens-photo-set-of-6-customized-5-x7-premium-photo-cards-free-store-pickup?src=frontpage

6 customized 5x7 photo set for free. Site was having issues making a photo set, but appears resolved now.

 


 

08/15/2021: Walgreens 8x10 Free photo - Code BIGGER8X10 => expires in couple of days.

https://www.doctorofcredit.com/walgreens-free-8x10-photo-print-with-promo-code-eightdec/

Free 8X10 photo as always.

 


 

EXPIRED: 07/25/2021: Walgreens 8x10 Free photo - Code JULY8X10 => expired on 07/27/2021.

https://slickdeals.net/f/15182485-walgreens-photo-8-x-10-photo-print-free-free-store-pickup

Free 8X10 photo as always.

 


 

Matlab is proprietary tool, and it's license fees are in thousands of dollars. Many open source alternatives exist, which are as good or better than Matlab.

1. Octave: GNU Octave is most popular alternative, and has been in development for more than 30 years. It strives for exact compatibility, so many of your projects developed for MATLAB may run in Octave with no modification necessary. So, if already learned Matlab, you can seamlessly start using Octave. It's front end interface can be chosen to be same as Matlab.

2. Scilab: Best known alternative outside of Octave. It doesn't strive for exact compatibility with Matlab, but is very similar to Matlab

3. Mathematica: It offers features for machine learning, image processing, data mining, etc. It is a superior tool for symbolic mathematics.

4. Python: Python language itself supports a lot of packages which can do all the scientific computing done in Matlab. NumPy is the main package for scientific computing with Python. SymPy is another Python library for symbolic mathematics. It's preferred to use python, as you have to learn python or any other scripting language anyway.

 

 

 

Examples of few common signals in Fourier domain:

When we transform signals from time domain to frequency domain, it's just like any other transformation in maths. A function takes inputs, and transforms it. If there is 1:1 transformation, then we can recover the original input, by applying inverse function to output. However, one thing that stands out in conversion from time domain to frequency domain is that frequency domain bears resemblance to physics. It's easier to visualize sound waves in terms of frequency, so most of the examples about fourier conversion talk about sound waves, but fourier conversion can be applied to any data.

This link shows proof of FT of some common functions: http://www.thefouriertransform.com/pairs/fourier.php

Let's intuitively try some conversion from time domain to freq domain for the below waveforms for all 4 fourier domains: CTFS, CTFT, DTFS, DTFT. Then we'll do rigorous calculation to verify it:

1. Constant signal: This is a signal which is a constant value for all times (-∞ < t < ∞). Since this signal has no variation at all, we don't expect to have any sine/cosine waveforms to reconstruct this dc signal. Infact just the DC offset would be enough to construct this signal. So, in frequency spectrum, we don't expect to see any freq component except f=0 (DC signal).

CTFS: We assume signal to be periodic with arbitrary period T0. We can do this since an infinite long constant signal can be broken into finite duration signals.

Ck = 1/T0 ∫ x(t) e-0kt dt = 1/T0 ∫ 1 * e-0kt dt = 1/T0  [e-0kt ] /(-jω0k) with limits = +T0/2 to -T0/2. For all non zero values of k, Ck = 0. For k=0, we do not integrate (since integration not possible with k in denominator), instead we do C0 = 1/T0 ∫ 1 * dt = 1.

So, only at f=0, we get C0 = 1, all other freq components are 0 as expected.

CTFT: Since for CTFT, signal can be aperiodic, we can compute CTFT of dc signal directly

X(ω) = ∫ x(t) e-jωt dt = ∫ 1 * e-jωt dt = [e-jωt ] /(-jω) with limits of t = +∞ to -∞. However, this doesn't converge to any value, as e-jωt = cos(ωt) - j.sin(ωt) = which oscillates as t->∞. So, we guess that the answer is delta function. If that is true, then x(t) = 1/(2Π) ∫ X(ω) ejωt dω = 1/(2Π) ∫ δ(ω) ejωt dω = 1/(2Π). That implies that X(ω) = (2Π) δ(ω).

Here again, we see that for constant function, freq component exists only at ω=0, with magnitude=2Π

DTFS: If we take discrete samples of constant signal, then we get a signal which is 1 at all samples. Again, treating the signal as periodic with period T0, with N samples in that period, we can compute DTFS.

x[n]=1 for n=0 to N-1. 

Ck = 1/N  ∑ x[n] e-j(2Π/N)kn = 1/N  ∑ 1 * e-j(2Π/N)kn for n=0 to N-1.

Now, we can calc exponential sum formula ∑ ejkn for n=0 to n=N-1. This is same as sum of geometric series = (1 - ejkN) / (1 - ejk) = sin(1/2*N*k)/sin(1/2*k) * ejk(N-1)/2

So, Ck = 1/N  ∑ 1 * e-j(2Π/N)kn = 1/N  * (1 - e-j(2Π/N)kN) / (1 - e-j(2Π/N)k) = 1/N  * (1 - e-j(2Π)k) / (1 - e-j(2Π/N)k)

For k=0, Ck = C0 = 1/N * ∑ 1 * 1 = 1/N * N  =1

For k≠0, Ck = 1/N  * (1 - e-j(2Π)k) / (1 - e-j(2Π/N)k) = 1/N * (1 - 1) / (1 - e-j(2Π/N)k) = 0

Here, just as in CTFS, only at f=0, we get C0 = 1, all other freq components are 0 as expected.

DTFT:  Here, again we have discrete samples, but signal is considered aperiodic. So, we can compute DTFT directly.

x[n]=1 for n=-∞ < n < ∞.

X(e) = ∑ x[n] e-jωn = ∑ 1* e-jωn = with limits of t = +∞ to -∞. However, this doesn't converge to any value, for same reasons as CTFT. So, we guess answer as δ(e)

=> x[n] = 1/(2Π) ∫ X(e) ejωn dω = 1/(2Π) ∫ δ(ω) ejωn dω = 1/(2Π). That implies that X(e) = (2Π) δ(e).

So, as expected, freq component exists only at ω=0, with magnitude=2Π

DFT: DFT is same as DTFS. We can compute DFT by taking N samples of DTFT

DFT Xk or X[k] = samples of X(Ω) at discrete freq =  X(Ω) | ω=2Πk/N where 0 <= k <= N-1.

Since X(e) = (2Π) δ(e) => X0 = (2Π), X1 to XN-1 = 0 as delta function is 0 everywhere else. Result is same as DTFS, except for factor of (2Π) .

2. Impulse signal: It's denoted by δ(t). This is a signal which has a finite value at t=0, but is 0 everywhere else. For analog signals, it's impossible to construct such a signal (since analog signals need to go from 0->1 and then back from 1->0, which will always take a finite amount of time), but mathematically in the limit t->0, we can approximate such a signal. For discrete signal, such a signal is possible to construct by having sample at t=0 as "1", and "0" everywhere else. It's hard to visualize what freq components such a signal would have. But, we do observe that impulse func is an infinitely steep signal in limiting case where t->0. So, it should have infinite freq component in it. It should also have a DC freq component in it, as it's avg value is "1", and not "0". It turns out that such an impulse signal has all freq components from 0 to ∞, of equal magnitude. We can derive this by employing duality property of FT, where taking fourier of frq domain func, gives time domain function back. So, if we have constant signal in time domain, we get impulse func in freq domain, as we saw above. So, constant signal in freq domain will give impulse signal in time domain. That is how we get constant function in freq domain by using duality theorem.

3. train of impulses: It can be rep as periodic impulse func.

4. Sine/Cosine wave: This is a sine/cosine wave with a given freq. It may have a net dc value depending on whether the waveform is shifted up/down from y=0. If it has a net dc value, the only difference in freq spectrun would be that it would have a dc component (f=0) in it's freq spectrum.

A. periodic:

CTFS: It will have only 1 freq component at the freq of sine wave itself. So, Ck will be non zero only at that freq (all others will be 0). This can be seen intuitively as FS is summation of sine/cosine, and this waveform is exactly same as one of the terms, so no other terms of sine/cosine needed to make up this waveform. It also has dc freq component (at f=0) if the square signal has net +ve avg value.

CTFT: We can compute CTFT for any func, periodic or aperiodic. So, we compute CTFT for this signal, and expect to get same result as CTFS. However, as we explained in signal processing page, CTFT is an integral, and hence continuous. So, we'll get impulse function at each of the freq component instead of getting a single discrete line, as we get in CTFS.

B. non periodic: DTFT computed. It will be cont freq spectrum, with freq component similar to DTFS. However, now it's an impulse function centered at ω=+ωk and ω=-ωk.

For x(t)=sin(ω0t) => X(ω) = (2Π)/i * 1/2 * [δ(ω-ω0) - δ(ω+ω0)] => 2 soln are +Π/i and -Π/i at ω=ω0 and ω=-ω0

For x(t)=cos(ω0t) => X(ω) = (2Π) * 1/2 * [δ(ω-ω0) + δ(ω+ω0)] => 2 soln are +Π and +Π at ω=ω0 and ω=-ω0

3. Step signal: This is a step signal, going from 0 to 1 at certain time t.

4. square signal: This signal can have any duty cycle. It's 1 for a while, and 0 elsewhere. It can be thought of as a +ve step signal followed by -ve step signal.

A. periodic: For periodic sqaure wave, we have CTFS, which has freq component at freq=1/T, 3/T, 5/T (i.e odd harmonics). It also has dc freq component (at f=0), if the square signal has net +ve avg value. F

B. non-periodic: For non-periodic square wave, we calc CTFT, which turns out to be a sinc func, where sinc func is defined as sinc(t) = sin(Πt)/(Πt)

5. rectangular signal:

6.

 

Matlab: We can use Matlab software to plot these functions. We use fourier function to calc FT for any function. There is no func for giving FS of periodic func. Instead, we have to solve the series for FS, and have the result plotted. FT is easier to calc using in built "fourier" func, and it can be done for both periodic and aperiodic signals.

Matlab code for plotting the CTFT is:

syms x;
f = exp(-2*x^2); %this is the func whose FT we want. We'll replace this func with our desired func below.
FT = fourier(f); %calculates FT(w) for given f(x). FT is calculated in terms of radians (w)
ezplot(FT,[-1000,+1000]); %plots FT(w) over -1000 rad to +1000rad. By default, it plots from -2Π to +2Π rad

1. Unit Impulse  (aka Dirac delta): use f=dirac(x) => gives o/p=1, i.e a dc plot with value=1 at all x.

2. Sine wave: use f=sin(2*pi*x); => gives o/p as Π(-i)(dirac(w-2Π) - dirac(w+2Π)), since dirac func is infinite at +2Π and -2Π and 0 elsewhere, we just see 0 everywhere

3. Cosine wave: use f=cos(2*pi*x); => gives o/p as Π(dirac(w-2Π) + dirac(w+2Π)), again we just see 0 everywhere

2. Square signal: use f = rectangularPulse(a,b,x). Here a=starting of high pulse, b=end of high pulse. By default, if no a or b provided, i.e rectangularPulse(x), then a=-1/2, b=+1/2

syms x;
f=dirac(x);
FT = fourier(f);
ezplot(FT,[-1000,+1000]);

 

 

Welcome to Maaldaar !!

This site is organized in various sections.

- Education:

- Finance:

- Bank and Credit card Deals

- Shopping deals

- Travel

- Attractions

- Misc info

 

JASPER Gold: JASPER Design Automation bought by Cadence in 2014, and tool now called Jasper Gold (JG):

JG gives more ROI compared to sims, as bugs are caught early and require only 50% manpower.

Jasper provides a wide range of Applications (Apps) covering: Formal Property Verification, Sequential Equivalence Checking, Low-Power Verification, Connectivity Verification, Config/Status Register Verification, X-Propagation Analysis, Structural Property Synthesis, and Behavioral Property Synthesis (just to name a few). Lint and CDC (synchronizers and data coherency issues) too.

formal property verification  (FPV):
-----------------------
it checks if RTL meets certain properties specified. It uses design only, no tb as illegal states specified in assertions are checked for. It helps catch bugs early.
In any line of RTL code, we can right click, and select Activate->visualize line and that will bring up waveform, showing how that RTL target is reached w/o the need for tb.
proofgrid => properties are being proven by running engines.

Sequential Equivalence Checking (SEC):
----------------
Formally prove RTL vs RTL. This is for ECO where we want to formally prove that only intended changes are there.

Low-Power Verification:
----------
automatically creates power aware RTL (UPF/CPF), creates set of checks and evaluates them for all possible i/p combos/ does power aware structural, func and Seq checks
Reduce transitions on clk/mem, does pwr opt, minimizes retention flops

Config/Status Register Verification (CSR):
-------------------
given a reg spec and RTL, automatically derives all properties and runs formal to prove them. IP_XACT i/p as in reg modelling of UVM.
any discrepancy b/w RTL and spec are highlighted with counter examples

X-Propagation Analysis:
--------------
Detect X. verify design init and reset behaviour. Flop reset minimization flow. It can replace GLS.

AFL (automatic Formal Linting):
------------------------------
This consists of
1. Basic Lint checks (HAL = HDL Analysis and Linting) - Naming, coding style, structural, DFT, sim-synth mismatch, etc.
   - Naming and File format checks = RTL_NAMING, RTL_FILEFORMAT
   - Coding style checks - semantics, portability of code = RTL_CODINGSTYLE
   - synthesizability/sim-synth mismatch checks - identifies unsynthesizable constructs, pre-synth/post-synth mismatch = RTL_SYNTH, RTL_SIMSYNTH
   - Structural checks - pesudo synthesize RTL to get structural view, look for feedthru, combinatorial paths = STRUCTURAL
   - FSM checks - compliance to FSM modeling style = FSM
   - Race condition checks - detect all sim race statically possible - read-write, write-write etc = RTL_SIMRACE
   - DFT checks - both in func and test mode that make nodes Uncontrollable and Unobservable = DFT. ADVANCE_DFT
   
2. Advanced Lint checks - (also known as SPS) Structural Property synthesis (SPS):
- automatic checks from RTL such as arithmetic/range overflow, dead code, FSM livelock/deadlock, pragma, bus contention etc. No TB required. These checks do require specifying clock and reset.
   - X assignment = checks whether X assignment are reachable
   - Arithmetic overflow = whetheroverflow can occur in case of arithmetic op
   - Bus contention = whether multiple drivers can drive conflicting values on bus
   - Range overflow = for array access
   - FSM Livelock/deadlock = when design gets stuck in a state.
   - Case = whether certain synthesis pragmas are honored
   - code coverage reachability:
     - Block = If all branches in RTL are reachable
     - FSM = If all branches of FSM are reachable
     - Toggle = If all signals can be toggled
- automated and manual property ranking and classification
- these properties can be fed back into formal or sim env

Behavioral Property synthesis (BPS):
---------------
while SPS is automatically extracted from RTL, BPS is extracted from sim traces (which can be in VCD, FSDB or SHM format), so quality of properties tied to quality and maturity of sims. It's suggested to run periodically thru out the project.
- synthesis of multi cycle, hand shake, implication, black box and white box properties from sim (flow is there w/o sim also).
  - multi cycle = more than 1 or 2 cycle that may never fire in sims
  - automatic properties (assert, assume, cover) as FIFO, counters, FSMs, 1-hot.
    = assert: onehot = $onehot0 ({c0.hit,c1.hit,c2.hit}) => implies one hot
    = assert: FIFO = (q.head == q.tail) |-> q.empty => implies empty state if head eq tail
    = cover: FIFO = !$stable(fifo.rd_ptr) && !$stable(fifo.wr_ptr) => implies tests never change both fifo ptr together
  - user defined properties by specifying interacting signals
- automated and manual property ranking and classification
- properties are classified, and coverage holes are identified via sim. TB is refined and sim rerun to inc func cov. formal cov is also enhanced by analyzing these properties.
- these properties can be fed back into formal or sim env

Formal coverage:
--------
Coverage is of 3 types:
 - Code coverage => checked via imc
 - Func coverage: via cover properties written in TB as SVA/PSL
 - Formal coverage: proof coverage, bound coverage, stimuli coverage

Is my property set complete?

Unreachability:
---------
analyze sim coverage. determine formally unreachable code. No formal expertise reqd, as it just proves reachability/unreachabilty of coverage holes

-------------------------------------
running JG for AFL checks: run irun as usual, just add -jg option.
-------
irun ¡Vjg ¡Vafl ¡Vgui -64 ¡Vjgargs ¡¥-use_license_option¡¦ ¡Vinput <setup>.tcl => this invokes JG with AFL

inputs:
1. custom rule file - selected checks
2. design info file - blackbox, lint pragma
3. custom tcl file - clock, reset, selected checks => This does advanced lint checks
   - syntax: clock <clk_signal> reset <rst_signal>

on the gui, under AFL section on top, we see buttons for these:
1. configure Auto Formal checks
2. extract Auto Formal checks
3. export properties to a task
4. prove exported Auto Formal coverage and checks
5. generate reports: from the extra pull down button at end, click "generate_report -> auto or violation checks". This generates concise report for all viols in html format.

On the bottom of gui, we have violation viewer, waiver list, Auto Formal properties, ..
To create waiver, click on any violation, right click waiver and add waiver for that viol.


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