Monday, December 22, 2008

How to Rebuild your Computer and Reinstall Windows Without Headache

If you are planning to rebuild a ’slow’ computer by reinstalling Windows (XP or Vista) from scratch, here’s a pre-installation checklist + some time saving tips.

Fix Problems by Reinstalling Windows

As a tech blogger, part of my job involves reviewing software which is so interesting but frequent installation (followed by un-installation) of software programs also tend to slow down the computer.

To deal with this problem, I did a clean installation of Windows last weekend and re-installed all the important software programs from scratch. As expected, the boot-up time has reduced and the computer’s performance has improved significantly. Luckily, this task is not as complex as it may sound but here are a few things you should remember before taking the plunge:

Pre-Installation Checklist

1. Get Magical Jelly to retrieve a list of product keys that were used to install Windows and Microsoft Office on your computer. Print this information.

2. Get Belarc Advisor to create a detailed report of all software programs, hotfixes and hardware devices available in your system. Print this report as well.

3. Uninstall all software programs that had to be activated at the time of installation (e.g. Adobe Creative Suite or Microsoft Office). It’s important that you do a proper un-installation of these programs through Add/Remove Programs because simply deleting the folder from Program Files directory will not free up the license on the manufacturer’s activation server.

4. Install Driver Max to create a backup of all device drivers currently installed on your system. This will come handy after reinstallation incase you are not able to locate the driver installers on the vendor’s website.

5. Create a backup folder on c: (say c:\old_files) and add the following files to this folder

i. Your Outlook pst file that has all the mails, contacts, tasks and other Outlook items.
ii. If you have purchased any custom fonts, copy the relevant ttf files from the c:\windows\fonts folder. c. All documents, Live Writer drafts, pictures, music and videos from your My Document folder.
iii. Backup your custom dictionaries from Firefox, Microsoft Word, Live Writer, etc.
iv. Export all browser bookmarks and copy them to the backup folder.
v. Open your Firefox add-ons window, take a screenshot and paste that image in the backup folder. This is a good way to remember your favorite Firefox extensions.
vi. Export your podcast subscriptions in iTunes as as OPML (XML) file.
vii. Product keys (serial numbers) of all licensed software.

6. If you have a partitioned hard drive (say C: and D:), just copy* the backup folder created in step 5 to the D: drive. If you don’t have a partitioned hard disk or if the size of partition is small, install Live Mesh, add c:\old_files folder to your Live Mesh account and wait until all the files are uploaded on to the web. Mesh offers 5 GB of space and it may therefore be a good idea to burn all the heavy files (like videos, music, etc) onto a DVD instead of transferring them online.

*You can copy large folders across drives through Windows Explorer or the xcopy utility.

Re-Install Windows from Scratch

Now is the time to do a clean installation of Windows. This is probably the easiest part. You can either boot your computer from the original Windows installation CD** or, while you are running Windows, pop-in the installation CD and run the setup.exe program just like you would install any other Windows app. Always choose "Fresh Installation" instead of "Repair".

**If you installation media doesn’t include the latest service packs, try creating one yourself. Windows XP with SP3 is available as a downloadable ISO while you can slipstream SP1 into Vista fairly easily.

Post-Installation Tips

It can take around 30 minutes (or more) for the whole installation to finish. Now jump to the Windows Update website and let your browser download all the hotfixes, security updates, driver updates, etc. If your computer is unable to connect to the Internet, chances are that your computer doesn’t have the proper network drivers. No problem as you can easily get the drivers from the dump that you created using DriverMax utility.

If your display is acting funny or there’s no audio, just install the right drivers from the vendor’s website (preferred approach) or use your backup media. Once all the patches are installed, Windows Vista users can free up few gigabytes of disk space by making SP1 permanent. Windows XP users may skip this step.

Now turn on the Firewall and install all the other software programs and associated updates in any order. The next important step is to clone your disk image via DriveImage XML (free software), Acronis True Image or Norton Ghost. Windows Vista Ultimate also comes with a "Backup & Restore Center" that you may use to create a complete backup image of your entire computer to another drive, external disk or a DVD.

These disk images will come very handy after few months when your Windows PC get slow again. You won’t have to repeat the rebuilding exercise as the PC can be easily restored to the original state through these disk images.

Don’t experiment on your main PC

If you are tech enthusiast who loves to try new software / browser add-ons, I would strongly recommend that you don’t install these software on your main system - instead get Virtual PC (it’s free), create a Windows XP / Windows Vista virtual machine and use that environment as your new playground.

Another recommendation - do get a cane of compressed air to remove all the dirt from components inside the computer case. Sometimes software may not be the reason behind your slow and slugging PC - the culprit could be the dust sticking on the CPU heat sink.

Saturday, December 20, 2008

Net Delay or Interconnect Delay or Wire Delay or Extrinsic Delay or Flight Time

Net delay is the difference between the time a signal is first applied to the net and the time it reaches other devices connected to that net.

It is due to the finite resistance and capacitance of the net. It is also known as wire delay.

Wire delay = function of (Rnet, Cnet+Cpin)

This is output pin of the cell to the input pin of the next cell.



Net delay is calculated using Rs and Cs.

There are several factors which affect net parasitic:

  • Net Length

  • Net cross-sectional area

  • Resistively of material used for metal layers (Aluminum vs. copper)

  • Number of vias traversed by the net

  • Proximity to other nets (crosstalk)

Post-layout design is annotated with RCs extracte
d from layout for better accuracy. Annotated RCs override information from WLM.

Interconnect introduces capacitive, resistive and inductive parasites. All three have multiple effects on the circuit behavior.

  1. Interconnect parasites cause an increase in propagation delay (i.e. it slows down working speed)

  2. Interconnect parasites increase energy dissipation and affect the power distribution.

  3. Interconnect parasites introduce extra noise sources, which affect reliability of the circuit. (Signal Integrity effects)

Dominant parameters determine the circuit behavior at a given circuit node. Non-dominant parameters can be neglected for interconnect analysis.

  • Inductive effect can be ignored if the resistance of the wire is substantial enough-this is the case for long aluminum wires with a small cross section or if the rise and fall times of the applied signals are slow.
  • When the wires are short, the cross section of the wire is large or the interconnect material used has a low resistivity, a capacitive only model can be used.
  • When the separation between neighboring wires is large or when the wires only run together for short distance, inter-wire capacitance can be ignored, and all the parasitic capacitance can be modeled as capacitance to ground.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Capacitance

Capacitance can be modeled by the parallel plate capacitor model.

C = (ε / t).WL

Where

ε --> permittivity of dielectric material (SiO2)

t --> thickness of dielectric material (SiO2)

W --> width of wire

L --> length of wire

ε --> εr εo where εr --> relative permittivity of SiO2

εo --> 8.854 x 10-12 F/m; permittivity of free space

As technology node shrinks (scaling), to minimize resistance of the wires, it is desirable to keep the cross section of the wire (WxH) as large as possible. But this increases area. Small values of W lead to denser wiring and less area overhead. In advanced process W/H ratio has reduced below unity. Under such circumstances parallel plate capacitance model becomes inaccurate. The capacitance between the sidewall of the wires and substrate called fringing capacitance can no longer be ignored and contributes to the overall capacitance.




Inter-wire capacitance become dominant factor in multilayer interconnect structures. These floating capacitors (not connected to substrate or ground) form a source of noise (cross talk). This effect is more pronounced for wires in the higher interconnect layer, as these are farther away from the substrate.

Generally higher metal layers (i.e. interconnects) have higher thickness (i.e. height) and higher dielectric layers have higher permittivity. Hence these wires display the highest inter-wire capacitance. Hence use it for global signals that are not sensitive to interference. (eg. Supply rails). Or it is advisable to separate wires by an amount that is larger than minimum spacing.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Resistance

Resistance R=.L)/ (H.W) = (ρ. L)/ Area

L --> length

W --> width

ρ --> resistivity (ohm-m)

Since H (height, thickness) is constant for a given technology we can write: R = Rs.(L/W) where Rs=ρ/H ohm/sqare is called “sheet resistance”.

At very high frequencies “skin effect” comes into play such that the resistance becomes frequency dependent. High frequency currents tend to flow primarily on the surface of a conductor, with the current density falling off exponentially with depth into the conductor.

Skin effect is only an issue for wider wires. Since clocks tends to carry the highest frequency signals on a chip and also fairly wide to limit resistance, the skin effect likely to have its first impact on these lines.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Inductance

With the adoption of low resistance interconnect materials and the increase of switching frequencies to GHz range, inductance starts to an important role. Consequences of on chip inductance include ringing and overshoot effect, reflection of signals due to impedance mismatch, inductive coupling between lines, and switching noise due to (Ldi/dt) voltage drops.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Lumped Capacitor Model

As long as the resistive component of the wire is small, and switching frequencies are in the low to medium range, it is meaningful to consider only the capacitive component of the wire, and to lump the distributed capacitance into a single capacitance.



The only impact on performance is introduced by the loading effect of the capacitor on the driving gate.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Lumped RC Model

If wire length is more than a few millimeters, the lumped capacitance model is inadequate and a resistive capacitive model has to be adopted.

In lumped RC model the total resistance of each wire segment is lumped into one single R, combines the global capacitive into single capacitor C.

Analysis of network with larger number of R and C becomes complex as network contains many time constants (zeroes and poles). Elmore delay model overcome such problem.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Elmore Delay Model



Properties of the network:

  • Has single input node
  • All the capacitors are between a node and ground.
  • Network does not contain any resistive loops.


Path resistance” is the resistance from source node to any other node.

Shared path resistance” is the resistance shared among the paths from the source node to any other two nodes.

Hence,

Delay at node 1: Tow d1 = R1C1

Delay at node 2: Tow d2= (R1+R2)C2

Delay at node 3: Tow d3 = (R1+R2+R3)C3

In general:

τdi=R1C1+(R1+R2)C2+……..+(R1+R2+R3+…..+Ri)Ci

If

R1=R2=R3=….=R

C1=C2=C3=…..C then

τdi=RC+2RC+……..+nRC

Thus Elmore delay is equivalent to the first order time constant of the network.

Assuming an interconnect wire of length L is partitioned into N identical segments. Each segment has length L/N.

Then,

τd=L/N.R.L/N.C+ 2 (L/n.r+L/N.C)+……

=(L/N)2(RC+2RC+…….+NRC)

=(L/N)2. N(N+1)

or τd=RC.L2/2

=> The delay of a wire is a quadratic function of its length

=> doubling the length of the wire quadruples its delay

Advantages

  • It is simple
  • It is always situated between minimum and maximum bounds

Disadvantages

  • It is pessimistic and inaccurate for long interconnect wires.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Distributed RC model

Lumped RC model is always pessimistic and distributed RC model provides better accuracy over lumped RC model.

But distributed RC model is complex and no closed form solution exists. Hence distributed RC line model is not suitable for Computer Aided Design Tools.


The behavior of the distributed RC line can be approximated by a lumped RC ladder network such as Elmore Delay model hence these are extensively used in EDA tools.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Transmission Line Model


When frequency of operation increases to a larger extent
, rise (or fall) time of the signal becomes comparable to time of flight of the net, then inductive effects starts dominating over RC values.
This inductive effect is modeled by Transmission Line models. The model assumes that the signal is a "wave" and it propagates over the medium "net".

There are two types of transmission models:


Lossless transmission line model: This is good for Printed Circuit Board level design.

Lossy transmission line model: This model is used for IC interconnect model.

Transmission line effects should be considered when the rise or fall time of the input signal is smaller than the time of flight of the transmission line or resistance of the wire is less than characteristics impedance.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wire Load Models

Extraction data from already routed designs are used to build a lookup table known as the wire load model (WLM). WLM is based on the statistical estimates of R and C based on “Net Fan-out”.


For fanouts greater than those specified in a wire load table, a “slope factor” is specified for linear extrapolation.

wire_load (“5KGATES”) {

resistance : 0.000271 -------------> R per unit length

capacitance : 0.00017 -------------> C per unit length

slope : 29.4005 ---------------------> Used for linear extrapolation

fanout_length (1, 18.38) ----------> (fanout = 1, length = 18.38)

fanout_length (2, 47.78)

fanout_length (3, 77.18)

fanout_length (4, 106.58)

fanout_length (5, 135.98)

}

Eg:

Fanout = 7


Net length = 135.98 + 2 x 29.4005 (slope) = 194.78 ----------> length of net with fanout of 7
Resistance = 194.78 x 0.000271 = 0.05279 units

Capacitance = 194.78 x 0.00017 = 0.03311 units

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wire load models for synthesis

Wire load modeling allows us to estimate the effect of wire length and fanout on the resistance, capacitance, and area of nets. Synthesizer uses these physical values to calculate wire delays and circuit speeds. Semiconductor vendors develop wire load models, based on statistical information specific to the vendors’ process. The models include coefficients for area, capacitance, and resistance per unit length, and a fanout-to-length table for estimating net lengths (the number of fanouts determines a nominal length).

Selection of wire load models in the initial stage (before physical design) depends on the fallowing factors:

1. User specification

2. Automatic selection based on design area

3. Default specification in the technology library

Once the final routing step is over in the physical design stage, wire load models are generated based on the actual routing in the design and synthesis is redone using those wire load models.

In hierarchical designs, we have to determine which wire load model to use for nets that cross hierarchical boundaries. There are three modes for determining which wire load model to use for nets that cross hierarchical boundaries:

Top:

Applying same wire load models to all nets as if the design has no hierarchy and uses the wire load model specified for the top level of the design hierarchy for all nets in a design and its sub designs.

Enclosed:

The wire load model of the smallest design that fully encloses the net is applied. If the design enclosing the net has no wire load model, then traverses the design hierarchy upward until we finds a wire load model. Enclosed mode is more accurate than top mode when cells in the same design are placed in a contiguous region during layout.

Use enclosed mode if the design has similar logical and physical hierarchies.

Segmented:

Wire load model for each segment of a net is determined by the design encompassing the segment. Nets crossing hierarchical boundaries are divided into segments. For each net segment, the wire load model of the design containing the segment is used. If the design contains a segment that has no wire load model, then traverse the design hierarchy upward until it finds a wire load model.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Interconnect Delay vs. Deep Sub Micron Issues

Performances of deep sub micron ICs are limited by increasing interconnect loading affect. Long global clock networks account for the larger part of the power consumption in chips. Traditional CAD design methodologies are largely affected by the interconnect scaling. Capacitance and resistance of interconnects have increased due to the smaller wire cross sections, smaller wire pitch and longer length. This has resulted in increased RC delay. As technology is advancing scaling of interconnect is also increasing. In such scenario increased RC delay is becoming major bottleneck in improving performance of advanced ICs.


Here the gate delay and the interconnect delay are shown as functions of various technology nodes ranging from 180nm to 60nm. The interconnect delays shown assumes a line where repeaters are connected optimally and includes the delay due to the repeaters. From the graph it can be observed that with the shrinking of technology gate delay reduces but interconnect delay increases.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Limits of Cu/low-k interconnects

At submicron level of 250 nm copper with low-k dielectric was introduced to decrease affects of increasing interconnect delay. But below 130 nm technology node interconnect delays are increasing further despite of introducing low-k dielectric. As the scaling increases new physical and technological effects like resistivity and barrier thickness start dominating and interconnect delay increases. Introduction of repeaters to shorten the interconnect length increases total area. The vias connecting repeaters to global layers can cause blockage in lower metal layers. Thus as the technology improves material limitations will dominate factor in the interconnect delay. Increasing metal layer width will cause increase in metallization layer. This can’t be a solution for the problem as it increases complexity, reliability and cost.


Cu low-k dielectric films are deposited by a special process known as Damascene process. Adhesion property of Cu with dielectric materials is very poor. Under electric bias they easily drift and cause short between metal layers. To avoid this problem a barrier layer is deposited between dielectric and Cu trench. Even though it decreases effective cross section of interconnects compared to drawn dimensions, it improves reliability. The barrier thickness becomes significant in deep submicron level and effective resistance of the interconnect rises further. In addition to this increasing electron scattering and self heating caused by the electron flow in interconnects due to comparable increase in internal chip temperature also contribute to increase interconnect resistance.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
References

[1] Jan M. Rabaey, Anantha Chandrakasan and Borivoje Nikolic, "Digital Integrated Circuits- A Design Perspective", Prentice Hall, Second Edition
[2] Design Compiler User Manual

Delays in ASIC Design

We encounter several types of delays in ASIC design. They are as follows:

  • Gate delay or Intrinsic delay
  • Net delay or Interconnect delay or Wire delay or Extrinsic delay or Flight time
  • Transition or Slew
  • Propagation delay
  • Contamination delay

Wire delays or extrinsic delays are calculated using output drive strength, input capacitance and wire load models. Other delays are intrinsic properties of each and every gate.

Delays are interdependent on different electrical properties. [Nekoogar]:

  • Input capacitance of the logic gate is a function of output state, output loads and input slew rate.
  • Internal timing arcs and output slew rate is a function of switching input(s).
  • Capacitance of the wire is dependent on frequency.


  • Internal timing arcs are a function of input slew rates.
  • Output slew rate is a function of input slew rate on each input.
  • Wires exhibit RLC characteristics instead of lumped RC.


Gate Delay

Transistors within a gate take a finite time to switch. This means that a change on the input of a gate takes a finite time to cause a change on the output. [Magma]

Gate delay =function of (input transition (slew) time, Cnet+Cpin).

or

Gate delay =function of (input transition (slew) time, Cload).

where Cload=Cnet+Cpin

Cnet-->Net capacitance

Cpin-->pin capacitance of the driven cell

Cell delay is also same as Gate delay.





How gate delay is calculated?


Cell or gate delay is calculated using Non-Linear Delay Models (NLDM). NLDM is highly accurate as it is derived from SPICE characterizations. The delay is a function of the input transition time (i.e. slew) of the cell, the wire capacitance and the pin capacitance of the driven cells. A slow input transition time will slow the rate at which the cell’s transistors can change state logic 1 to logic 0 (or logic 0 to logic 1), as well as a large output load Cload (Cnet + Cpin), thereby increasing the delay of the logic gate.


There is another NLDM table in the library to calculate output transition. Output transition of a cell becomes the input transition of the next cell down the chain.



  • Table models are usually two-dimensional to allow lookups based on the input slew and the output load (Cload). A sample table is given below.


timing() {

related_pin : "CKN";

timing_type : falling_edge;

timing_sense : non_unate;

cell_rise(delay_template_7x7) {

index_1 ("0.012, 0.032, 0.074, 0.154, 0.318, 0.644, 1.3");

index_2 ("0.001278, 0.0046008, 0.0112464, 0.0245376, 0.05112, 0.10454, 0.212148");

values ( \

"0.225894, 0.249015, 0.285537, 0.352680, 0.484244, 0.748180, 1.279570", \

"0.231295, 0.254415, 0.290938, 0.358081, 0.489646, 0.753585, 1.284980", \

"0.243754, 0.266878, 0.303398, 0.370542, 0.502105, 0.766044, 1.297440", \

"0.267240, 0.290389, 0.326908, 0.394052, 0.525615, 0.789561, 1.320950", \

"0.307080, 0.330200, 0.366721, 0.433861, 0.565425, 0.829373, 1.360760", \

"0.380552, 0.403875, 0.440426, 0.507569, 0.639136, 0.903084, 1.434500", \

"0.497588, 0.521769, 0.558548, 0.625744, 0.757301, 1.021260, 1.552680");

}

rise_transition(delay_template_7x7) {

index_1 ("0.012, 0.032, 0.074, 0.154, 0.318, 0.644, 1.3");

index_2 ("0.001278, 0.0046008, 0.0112464, 0.0245376, 0.05112, 0.10454, 0.212148");

values ( \

"0.040574, 0.068619, 0.125391, 0.246672, 0.497688, 1.005982, 2.030120", \

"0.040570, 0.068618, 0.125390, 0.246672, 0.497688, 1.005940, 2.030240", \

"0.040565, 0.068616, 0.125389, 0.246650, 0.497770, 1.006180, 2.030120", \

"0.040532, 0.068612, 0.125387, 0.246670, 0.497710, 1.006164, 2.030100", \

"0.040578, 0.068621, 0.125392, 0.246636, 0.497688, 1.006182, 2.030040", \

"0.041763, 0.069211, 0.125662, 0.246758, 0.497726, 1.005930, 2.030000", \

"0.045813, 0.071321, 0.126671, 0.247154, 0.497846, 1.005962, 2.030180");

}



index_1 --> input transition values

index_2--> output load capacitance values

values--> delay values


Situation 1:

Input transition and output load values match with table index values


If both input transition and output load values match with table index values then corresponding delay value is directly picked up from the delay “values” table as highlighted by yellow shaded data.


Situation 2:

Output load values doesn't match with table index values


  • When the actual load capacitance values does not fall directly on or at one of the load-axis index points, the delay is determined by interpolation from the closest points. Note that to carry out interpolation input transition point should match with the any one of the table index values.

  • Determine the equation for the line segment connecting the two nearest points in the table.



To do this first we need to find the slope value.

Slope m = (y2-y1)/(x2-x1) where (y2-y1) is delay segment (generally in ns) on y axis and (x2-x1) is load segment (generally in pf) on x-axis.

  • Solve for the delay at the load point of interest.


The linear equation is:

y = mx+c

where

y-->delay (ns)

m-->slope

x-->load capacitance (pf)


i.e. delay=slope*load point of interest (constant value is zero)


Load point of interest means load capacitance value for which delay has to be calculated.


Situation 3:

Both input transition and output load values doesn't match with table index values


  • If both input transition and load capacitance values do not match exactly with the look up table index values then bilinear interpolation is used.

  • Multiple linear interpolations (~3) are performed on multiple closest table data points (~4) as shown in highlighted violet color in the look up table.


Situation 4:

Output load values doesn't match with table index values and is outside the table boundary


  • When the load point is outside of the boundary of the index, the delay is extrapolated to the closest known points.

  • Lookup value too far out of range of the given table value could lead to inaccuracy. [Cadence]


Intrinsic delay


  • Intrinsic delay is the delay internal to the gate. This is from input pin of the cell to output pin of the cell.
  • It is defined as the delay between an input and output pair of a cell, when a near zero slew is applied to the input pin and the output does not see any load condition. It is caused by the internal capacitance associated with its transistor.
  • This delay is largely dependent on the size of the transistors forming the gate because increasing size of transistors increase internal capacitors.

References


[Nekoogar] Farzad Nekoogar, “Timing Verification of Application Specific Integrated Circuits”, Prentice Hall

[Magma] Magma Blast Fusion User Guides

[Cadence] Cadence SOC Encounter User Guides

Transition Delay

Transition delay or slew is defined as the time taken by signal to rise from 10 %( 20%) to the 90 %( 80%) of its maximum value. This is known as “rise time”.





Similarly “fall time” can be defined as the time taken by a signal to fall from 90 %( 80%) to the 10 %( 20%) of its maximum value.

Transition is the time it takes for the pin to change state.


Setting Transition Time Constraints

The above theoretical definitions are to be applied on practical designs. Now, the transition time of a net becomes the time required for its driving pin to change logic values (from 10 %( 20%) to the 90 %( 80%) of its maximum value). This transition time used foe delay calculations are based on the timing library (.lib files).


Transition related constraints can be provided in Design Compiler (logic synthesis tool from Synopsys) by using below commands:


1. max_transition : This attribute is applied to each output of a cell. During optimization, Design Compiler tries to make the transition time of each net less than the value of the max_transition attribute.

2. set_max_transition: This command is used to change the maximum transition time restriction specified in a technology library.


“This command sets a maximum transition time for the nets attached to the identified ports or to all the nets in a design by setting the max_transition attribute on the named objects.

For example, to set a maximum transition time of 3.2 on all nets in the design adder, enter the following command:


set_max_transition 3.2 [get_designs adder]


To undo a set_max_transition command, use the remove_attribute command. For example, enter the following command:


remove_attribute [get_designs adder] max_transition”


(Directly quoted from Design Complier user manual)


Setting Capacitance Constraints

The transition time constraints specified above do not provide a direct way to control the actual capacitance of nets. To control capacitance directly, below command has to be used:

set_max_capacitance: This command sets the maximum capacitance constraint on input ports or designs.

In addition to set_max_transition, set_max_capacitance can also be used as this command works independent.

This command applies maximum capacitance limit to output pin or port of the design.

This command can also be used to apply capacitance limit on any net.


Eg:

set_max_capacitance 4 [get_designs decoder]


To remove the set_max_capacitance command, use the remove_attribute command.


remove_attribute [get_designs decoder] max_capacitance


Propagation Delay


Propagation delay is the time required for a signal to propagate through a gate or net.

Hence if it is cell, you can call it as “Gate or Cell Delay” or if it is net you can call it as “Net Delay”


Propagation delay of a gate or cell is the time it takes for a signal at the input pin to affect the output signal at output pin.


For any gate propagation delay is measured between 50% of input transition to the corresponding 50% of output transition.


There are 4 possibilities:


Propagation delay between 50 % of Input rising to 50 % of output rising.

Propagation delay between 50 % of Input rising to 50 % of output falling.

Propagation delay between 50 % of Input falling to 50 % of output rising.

Propagation delay between 50 % of Input falling to 50 % of output falling.


Each of these delays has different values. Maximum and minimum values of these set are very important. Maximum and minimum propagation delay values are considered for timing analysis.


For net propagation delay is the delay between the time a signal is first applied to the net and the time it reaches other devices connected to that net.


Propagation delay is taken as the average of rise time and fall time i.e. Tpd= (Tphl+Tplh)/2.


Propagation delay depends on the input transition time (slew rate) and the output load. Hence two dimensional look up tables are used to calculate these delays. How to calculate propagation delay of net and gate? Please refer below articles to find the detailed explanation.

Saturday, December 13, 2008

Master Your Digital Media with VLC


Cross-platform media player VLC is often referred to as the "Swiss Army knife of media applications" for good reason: Not only does VLC play nearly any file you throw at it (you even voted it the best desktop media player), but it can do so much more. From ripping DVDs to converting files to iPod-friendly formats, let's take a look at the four coolest things you can do with VLC and start you on your way to becoming a VLC ninja. Photo by R'eyes.

NOTE: Many of these VLC tricks use the same dialogs, so rather than repeat the same steps every time, I'll be doing a thorough step-by-step once and then highlighting only the differences in the subsequent mini-guides. I'm using Windows in most of my examples, but since VLC is cross-platform, most of the same tricks should work just as well on any platform. VLC has a Streaming and Transcoding Wizard that's supposed to make this process even easier, but it's been buggy for me in all my tests, so I decided to go with the slightly more difficult method detailed below.

Rip Any DVD

You may have thought that you needed some fancy DVD ripping tools to rip DVDs to your hard drive, but VLC can actually rip any DVD with ease. As reader joelena pointed out, since VLC plays the DVD in order to encode it, it can bypass any copy protection. Here's how it works:
  1. Open the Disc and Find the Correct Title: Insert your DVD and open it with File -> Open Disc. We need to find the right title to rip from the DVD, so at this point we're going to preview titles from the disc one by one. To do this, start with 0 as your title number and increment one number at a time until you find the title you want to rip. I've found it's quicker if you choose DVD rather than DVD (menus) at the top of the Open dialog so you only have to wade through actual video.
  2. Pick a Folder to Save the Rip and Name It: Now that you've find the right track, you just need to tell VLC that you want to save it. To do so, tick the Stream/Save checkbox, then click Settings. Here you need to tell VLC where to save the file, so tick the File checkbox and pick a folder to save it to and then give it a name (e.g., My DVD Rip.mpg).
  3. video-and-audio-output-settings.pngDetermine Video and Audio Settings: Now you're ready to tweak the final settings before it's time to rip. Tick the Video codec and Audio codec, then choose the output codecs you prefer. This is really up to you, and if you don't have a preference I've had good results using the defaults described in this excellent VLC rip guide: mp1v for the video codec and mp3 for audio. If you need a specific file format for a mobile device, you may want to choose a difference encapsulation method and codec. Hit OK when you're done.
  4. Rip Away: You've made it. Just hit OK again (make sure Stream/Save is checked) and it should start ripping.

vlc-progress.pngVLC will rip the DVD faster than real-time playback, and you can follow the ripping process in the corner of the VLC window.

Convert Any Video for Your iPod or iPhone with a Drag and Drop Batch Script

vlc-ipod-converter1.pngIf you regularly convert files to a specific file format—say, for your iPod—you can set up a batch file with VLC that will make video conversions as easy as dragging and dropping the to-be-converted file onto the script.

Create a new text file and save it as VLC Converter.bat. Make sure your filesystem is showing file extensions so you aren't saving it as a text file (you don't want to end up with something like VLC Converter.bat.txt). You need to make sure it's saving with the BAT extension.

command-line-options.pngIf you were building the script from scratch, at this point you'd open up the file you just created and paste "C:\Program Files\VideoLAN\VLC\vlc.exe" %1 in the first line. Now you need to get the command line options that describe how VLC should convert the file. For that, you can use the text generated by the Target textbox at the top of the Stream/Save Settings window described in steps two and three of the DVD ripping guide above, which displays the command line options you need for your batch file. Luckily a user at the iPod forums at iLounge already put together a VLC batch conversion script for iPods, so we can just use those settings, which look like this:

"C:\Program Files\VideoLAN\VLC\vlc.exe" %1 :sout=#transcode{vcodec=mp4v,vb=1024,scale=1,height=240,width=320,acodec=mp4a,ab=128,channels=2}:duplicate{dst=std{access=file,mux=mp4,dst=%1.mp4}}

That's a lot of text, but it's just telling VLC everything you would normally tell it in the Settings dialog. The %1 variable will be replaced by the name of the file you drop on the script. Copy and paste all of that text (and only that text) into your batch file and save it. That's all there is to it. Next time you have a video file you want to convert for your iPod, just drag and drop it on your newly created batch script. The script was built specifically for converting videos to an iPod-compatible format, but you can build your own scripts to do virtually common conversions you want.

Stream Media to Other Computers

Now that you're using VLC to rip your DVDs, you've got gigabyte after gigabyte of your videos on your desktop. Rather than copying all of those files to any other computer you'd like to play them on, VLC allows you to stream video over your network or even over the internet.

First, go to File -> Open File. Browse to the file you'd like to stream, and then—like above—tick the Stream/Save checkbox and click Settings. This time, rather than outputting the stream as a file, we're going to tick the UDP box and enter the local IP address of the computer you'd like to stream to. On Windows, you can find your computer's local IP address by opening the command prompt (Win-R, type cmd, and hit Enter), and then type ipconfig and hit Enter.


Once you've got that, enter it in the computer you're streaming from in the text box next to the UDP checkbox you just enabled. Hit OK to accept your settings, then OK again to finish the setup. While you're still on the streaming computer, go to Settings -> Add Interface -> Web Interface.

Now it's time to start the stream on your other computer, and doing so is a breeze. Just open VLC on your second computer, go to File -> Open Network Stream, and—assuming the UDP choice is selected and the port matches the port you used in the setup above (unless you changed it, they should both default to 1234), just hit OK to start the stream.

vlc-web-remote-control1.pngYou're presented with a slight problem streaming the video using VLC this way, namely that you can't control the playback from the remote VLC interface. Luckily you already enabled the web interface, so on the computer you're streaming to, open a web browser and point it to the VLC web interface. If you're streaming over a local network, find your streaming computer's IP address the same way you did with the remote computer's address above, then enter it into your browser with port 8080 appended to the end. Mine looks like http://192.168.1.2:8080. Through the web interface on the remote computer, you can control all of VLC's playback. Handy, huh?

You can stream video over the internet and not just over your local network, but you'll need to either have a static external IP address or assign a domain name to your computer to do so easily. For more details on streaming with VLC, check out Engadget's previous guide.

Play Ripped DVDs

If you prefer keeping ripped DVDs entirely in tact with you rip them to your computer, VLC may not be your tool of choice for ripping. Instead I'd recommend an alternate ripping tool like our one-click DVD ripping solution DVD Rip or one of the other DVD ripping methods we've covered in the past. Once you've ripped the full DVD to your hard, VLC comes in handy once again to play that ripped DVD, menus and all.

DVD-Play2.pngWe've highlighted how to play full ripped DVDs with VLC before, but for an even easier solution, check out DVD Play, a Lifehacker Code original that works as a more attractive front end to playing back full DVD rips with VLC.


We've really only scratched the surface of all the awesome things you can do with VLC, so if you've got a favorite VLC technique of your own (or even favorite encoding settings), let's hear about it in the comments.

Run Windows Apps Seamlessly Inside Linux


You love working inside your Linux desktop, but at the most inconvenient times you've got to reboot into Windows—whether to open a tricky Office file, try out a Windows application, or even just play a quick game. However, with some free tools and a Windows installation disk, you can have Windows apps running right on your Linux desktop and sharing the same desktop files. It's relatively painless, it takes only a little bit longer than a Windows XP install, and it works just like virtualizing Windows on a Mac with Parallels Coherence—except it's free. Here's how to set up Windows inside VirtualBox, and then get Windows apps running seamlessly inside your desktop.

Before getting started, make sure you have enough space on a hard drive for a Windows XP installation (meaning at least 5 GB) and enough memory to make two systems worthwhile.You can follow most of these steps if you want to try running Vista inside Linux, but your mileage might vary, of course (and check out this tip on making Vista's networking work).

If you're curious what the end result might look like, here's a screenshot from my quick installation. I would've loved to have gotten iTunes running, but I didn't have time to wait for all the post-XP-installation patches/upgrades to install to show you. (Click for larger image)

First off, we'll install VirtualBox. For most, that just involves heading to their package manager and installing all the virtualbox pacakges from the repositories; in Ubuntu 7.10 ("Gutsy Gibbon"), for example, you can use this terminal command

sudo aptitude install virtualbox-ose virtualbox-ose-modules-generic
If you don't see VirtualBox in your installation program, the app's downloads page has packages for just about every major distribution. After installing, give your username permissions to run VirtualBox (substituting "su" on some systems):
sudo usermod -G vboxusers -a [your username]

vbox_setup.jpgRestart your system for good measure, and now you should see "InnoTek VirtualBox" in your application menu—it was in "System Tools' in Gutsy. Get your XP CD ready and fire up VirtualBox. Choose "New" from the button menu, and then give your virtual system a name (WIndows XP usually works for me) and choose "Windows XP" from the bottom menu, then hit "Next." Decide how much RAM you'll dedicate to it in the next window, hit "Next," then, assuming you haven't done this before, hit "New" and follow the prompts to set up hard drive space for your virtual XP system. Make sure that partition is selected, hit "Next," then hit "Finish" to set up your new XP space.

xp_installing.jpgBack at VirtualBox's main screen, see if the "CD/DVD-ROM" menu is highlighted. If not, click it, and then check "Mount CD/DVD Drive," "Host CD/DVD Drive" (and make sure it points to your system's CD drive), and check yes for "Enable Passthrough." Hit OK, select your XP image from the left-hand column and hit "Start." You'll launch into the hopefully familiar XP installation routine; follow it through until you're at your Windows desktop.

vbox_drive.jpgNow you've got a working Windows inside a resizable box, but let's take this further. Remove your XP CD from the drive, head up to the "Devices" menu and choose "Unmount CD/DVD-ROM." In the same menu, choose "Install Guest Additions." VirtualBox should prompt you to download the Guest Additions ISO file, then select it to be mounted. This creates a virtual CD drive in XP, which you can get to through Start Menu->My Computer (it might take a moment to show up). Double-click the "CD drive" and follow the prompts to install the extra tools. Reboot once you're done for good measure, and restart the XP machine.

Once that's finished, you've got a "Seamless" option available in the "Machine" menu, or by holding down the "Host" key (Right Control by default) and hitting "L." Either way you run it, it drops the big window and deposits Windows' bottom taskbar on your Linux desktop. You can also ditch the main VirtualBox window at this point, if you'd prefer.

dual_taskbars.jpgThe Start panel's default bottom position can be a problem for GNOME-based systems, since you've already got an app-switching bar there. I recommend either moving your Start or GNOME menus to the left or right-hand sides, or setting your Start menu to double-height, which puts the Start button just above the GNOME bar. Either way, make sure you un-check the "Keep the taskbar on top of other windows" option on the Windows toolbar, or you might see a few graphical glitches. Otherwise, pretty neat, huh?

Now for the final piece: Synchronizing your Windows and Linux desktops. If you're running in Seamless mode, hold down the "Host" key and hit "Home" to bring back the virtual XP desktop. Select the "Device" menu and choose "Shared Folders." You'll be prompted to choose a folder from your Linux system; select your Desktop folder (usually found at /home/your username/Desktop). Head back to Windows, launch a command prompt (enter "cmd" into the "Run" dialog), and enter the following:

net use x: \\vboxsvr\Desktop
If it worked, you should see an X: network drive mounted in your "My Computer" window.

regedit_cropped.jpgNow for the final touch: Synchronizing the two desktops. In XP, hit the "Run" dialog and type in "regedit." Make a backup first (File->Export), and then navigate to HKEY_CURRENT_USER -> Software -> Microsoft -> Windows -> CurrentVersion -> Explorer -> User Shell Folders. Double-click to open the properties on the "Desktop" key you'll find there, and enter a new value of (without the quotes) "x:". You should see the change immediately—everything you put on your Linux desktop is shown in Windows and vice versa—handy for storing downloads grabbed in Windows.

If you'd rather do without the Start menu/panel integration and just want a few custom apps to open in their own windows, check out a helpful guide at Linux.com to getting this set up with some free tools and VMWare Server, which, while not quite as user-friendly as VirtualBox, is still a pretty nice package.

Got your own Windows-inside-Linux set-ups (besides Wine, which is another thing entirely) you feel like sharing? Have any suggestions/tweaks to this step-by-step? Share it in the comments and help two disparate operating systems find some harmony.

Hack Your Wii for Homebrew Apps and DVD Playback


Despite the fact that it ships with a DVD drive, for whatever godforsaken reason, the Nintendo Wii doesn't support DVD playback—until last week, that is, when a homebrew hacker released a tool that enables DVD playback on your Wii. The best part? You don't have to crack open your Wii or disturb your hardware in any way to install it. Let's take a detailed look at how to softmod your Wii with the Twilight hack to run homebrew apps. Then I'll show you how to install the Wii port of the open source media player, mplayer, to turn your Wii into a DVD (or should I say WiiVD?) player.

What You'll Need

Since we're going to be doing a softmod of your Wii (i.e., we're not modifying any hardware), you don't really need much to accomplish this hack.

twilight-princess.png

NOTE: I'm doing this all on a Windows PC, but you can manually install the Twilight Hack if you don't have access to a Windows PC.

The secret sauce lies in the Twilight Princess game. Essentially, we're going to load a fake game into Twilight Princess that exploits a buffer overflow and allows you install homebrew software on your Wii.

Sound complicated? Figuring it out may have been, but the excellent Wii hackers have made exploiting the Twilight hack a cinch.

Hacking Your Wii for Homebrew

00-format-disk.pngTo get started, plug your SD card into your computer. It needs to be formatted as a FAT16 filesystem, so find the SD card in My Computer and format it by right-clicking, selecting Format, and setting FAT as your file system. (If you have trouble formatting your SD card this way, try out the SD Card Formatter.)


Now it's time to prepare the SD card with the Twilight Hack. If you haven't already, download the Wii Brew SD Installer. When you've got it, make sure your SD card is plugged in and run the installer. The installer is fairly self-explanatory, but I'll walk you through it.

Choose Your Install Location


This should match the location of the SD card you just formatted above.

Select the Homebrew Features and Twilight Hack


Now you need to select the packages you want to install on your SD card (and, eventually, your Wii). I'd suggest selecting the Homebrew Channel (in fact, you need to if you want this to work), the Homebrew Browser, and DVDX (you'll need this last one for DVD playback). Make sure to select the Twilight Hack that matches your region. Hit Next and the Wii SD Installer will copy all the necessary files to your SD card.

Take Note of Your Twilight Princess Disc


If you're in the U.S., your copy of Twilight Princess is one of three different versions. One of the versions of the disc requires that you use a different save slot when we load the game later on, so just take note of the text on the inner circle of the bottom of the Twilight Princess game disc. (I needed TwilightHack2, for example.)

Perform the Twilight Hack on Your Wii

sd-card-in.pngBy this point, your SD card is officially prepared for your Wii. Unplug it from your computer and move over to your Wii. Plug it in and power up your Wii. At this point, you'll need to erase your current Twilight Princess saved game, copy the Twilight hack to your Wii, and execute it in Twilight Princess. (If you haven't played the game and created a save slot, you should do that before proceeding.) The video below from the WiiBrew folks details exactly how to do this.

NOTE: If the installation froze after you loaded the saved game and talked to the man, chances are you need to use the other saved game.


You'll need to accept a disclaimer and go through a few other screens to finish the installation (just use the 1 button on your Wiimote to accept). When it completes, head back to the Wii menu. The glorious new Wii Homebrew Channel awaits.

Turn Your Wii into a DVD Player


Now that you've got the Homebrew Channel installed, setting up DVD support is a breeze. Fire up your the Homebrew Channel from the main Wii menu and you should see the DVDx installer and Homebrew Browser. Click on the DVDx installer and run through the prompt. Hit A to select Normal install unless you've installed a modchip in your Wii. (If you're following this guide, chances are you don't have a modchip.) You've finished the first step.

Now you need to shut off your Wii and plug the SD card back into your computer, because it's time to install mplayer, the app that will play back DVDs on your Wii. You can download it from the HackMii web site at the bottom of this post. (Mplayer appears to be available in the Homebrew Browser, but it's not the version that supports DVD playback, so make sure you download it manually.)

After you've downloaded it, copy the entire mplayer folder to the apps folder on your SD card. Now just take the SD card back to your Wii, plug it in, and run the Homebrew Channel again. This time you should see mplayer next to your other installed apps, like below.


To play back a DVD, just fire up mplayer, insert a DVD, and select the Play DVD option in the mplayer menu. You'll notice two Play DVD menu items, the second of which reads Play DVD (libdvdnav). The libdvdnav attempts to use the built-in DVD menu, while the other just plays the first title. Unfortunately libdvdnav doesn't really work correctly with the Wiimote yet, but it looks to be on its way.

It takes a few seconds for mplayer to start playing the DVD, but once it does it plays without a hitch (or at least it has in all my experience). Thanks to YouTube, here's what it looks like:

The Wiimote/Gamecube controller playback shortcuts work as follows:

A - Pause
B - OSD
1/X - Toggle on screen menu
RIGHT - Seek 10s forward
LEFT - Seek 10s backward
UP - Seek 60s forward
DOWN - Seek 60s backward
+/R - Seek to the next chapter
-/L - Seek to the previous chapter
HOME/Z - Quit

What Else?

Once you've got your Wii opened up to homebrew apps, you've unlocked all kinds of potential, including emulators for old-school gaming consoles, different media players, and other utilities. If you've already got the Homebrew channel running on your Wii, let's hear what homebrew apps you've been using and loving in the comments. If the very idea of hacking your Wii sends shivers down your spine but you'd still like to squeeze out more functionality, check out how to use your Wii as a media center.

Turn Your $60 Router into a User-Friendly Super-Router with Tomato

A year-and-a-half ago, we showed you how to turn your $60 router into a highly configurable $600 router with DD-WRT, a free, open source firmware. Since then there's been a lot of development of open source firmwares, and today we're taking a look at my new favorite, a firmware called Tomato. Tomato does almost everything DD-WRT does—from Wi-Fi signal boosting to Quality of Service bandwidth allocation—in addition to offering a simplified interface chock-full of fancy charts and graphs. Sound good? Let's get started.

Check If Your Router's Supported

wrt54gl.pngBefore you go upgrading your firmware willy-nilly, be sure to check Tomato's list of supported devices. The router I'll be using is the very same router I used for the original DD-WRT guide, this Linksys WRT54GL router. Several of the Linksys WRT54G series routers are supported, but they aren't all, so make sure you check your model number. In addition to the pervasive Linksys router, Tomato will also install on some Buffalo, ASUS, and Microsoft routers.

Upgrade Your Router to the Tomato Firmware

So you've either ensured that you're current router is supported or you've ordered a new cheap one off the internet? Then it's time to upgrade that router to Tomato. First, go download the latest Tomato firmware (as of this writing, that's version 1.13). You'll download a 7zip archive, so use your favorite unarchiver (may I suggest 7-Zip), and extract the contents to an easy-to-find folder on your desktop.

Now you'll need to log into your current router to upgrade. This process may vary slightly depending on what router you're using and the firmware it's running, but for the most part it's very simple. You can go through the old DD-WRT step-by-step here if you're using a Linksys router with the default firmware (just replace DD-WRT with Tomato and quit after step 2). Below I'll describe the simple update process from DD-WRT to Tomato (which is virtually the same as it would be for any other router with one small difference).

First, point your browser to 192.168.1.1/, the default admin page for your router. If your router has a username/password set, you'll need to enter it to continue. Next you need to navigate to the firmware upgrade section of your router's admin panel. In both DD-WRT and the default Linksys firmware, you'll click the Administration tab followed by the Firmware Upgrade tab. Now just click the Browse button and direct your router to the appropriate firmware file for your router in the folder you unzipped earlier.

See the README file included in the Tomato_1_13 folder to determine which version you'll need to choose at this point. If you're using the same WRT54GL router as I am, pick the file named WRT54G_WRT54GL.bin. Now just click the upgrade button and wait. Be sure not to turn off your router during this upgrade.

reset-router-button.pngWhen it's finished, you're ready to start using Tomato. (Pretty simple, right?) Point your browser back to 192.168.1.1/ and log with "admin" (without quotes) as both your username and password. If you upgraded from DD-WRT, this may not be working for you. If the login isn't working off the bat, you've got one more thing to do: Perform a hard reset on your router. To do so, just find the little Reset button on the back of your router, then press and hold it for a few seconds. When your router comes back online, the "admin" username and password should work.

Boost Your Wi-Fi Signal

There's a lot you can do now that you're running Tomato on your router, but let's go straight to one of the sexiest tweaks supported by Tomato: Wi-Fi signal boosting. Just click on Advanced -> Wireless in the Tomato sidebar and find the entry labeled Transmit Power. The default transmit power is 42mW, but it's capable of transmitting at up to 251mW.

Tomato is a little low on documentation on this subject (okay, so it's low on documentation all-around), but the DD-WRT documentation suggests that an increase of up to 70mW would be "suitable for most users." A boost much above that could cause heat issues and considerably decrease the life of your router.

I can't attest to the certainty of damage beyond what the DD-WRT documentation says, but here is what I can tell you: I've been running my router with DD-WRT for over a year transmitting at 70mW, haven't seen any hiccups in performance and so far have seen no smoke. Even better, my Wi-Fi signal easily reaches to every corner of my apartment.

Track Your Bandwidth Usage, Set Quality of Service Rules, and More

From this point on, if there's something you want to do with your router, chances are Tomato can do it for you. In particular the bandwidth logging is both attractive and handy, allowing you to track bandwidth usage in real-time, over the last 24 hours, or with daily, weekly, or monthly reports. Real-Time Bandwidth Monitoring.png

A few weeks back I showed you how to set up Quality of Service rules on your DD-WRT router to ensure you don't drop Skype calls, lag on Xbox Live, and generally get your bandwidth when and where you need it. Tomato does all the same while providing even more granular control over how much bandwidth goes where... and, like the bandwidth reports, it graphs it all.

If you've assigned a domain name to your home server (like adam-lh.homeip.net), Tomato can send alerts to the service if you've got a dynamic IP address so that the domain will always point to your computer—even if your external IP address changes.

For a few other worthwhile uses, check out these videos for setting up Tomato's Access Restriction rules (allows you to set up rules to block browsing of certain topics at certain times, for example), using the Bandwidth Monitor, and putting your router into Wireless Client mode.

As I said above, documentation on Tomato is slim, but this Tomato wiki is a good place to start if you want to figure out a feature.

So Which Is Better, Tomato or DD-WRT?

After reading this, you may have noticed that Tomato shares a lot of features with DD-WRT; if you did, you're probably wondering which is better. Honestly, the two firmwares are both excellent—you won't go wrong running either. DD-WRT has a slightly more robust feature set and a bit more polish in the layout of the admin, but most features that you'll find in DD-WRT that are not in Tomato are features most home users will never use. Both do Quality of Service (in fact, we've already gone step-by-step through how to set up QoS in DD-WRT), though Tomato seems to do it a bit better; both can boost your Wi-Fi signal; and both will transform your router into something much better than it was before you started. At the moment I prefer Tomato for the simplicity of its layout, the excellent bandwidth monitoring tools, and of course, its attractive charts. If you're a DD-WRT or Tomato fan, let's hear which you prefer and why in the comments.

Adam Pash is a senior editor for Lifehacker who can't get enough of a good router. His special feature Hack Attack appears weekly on Lifehacker. Subscribe to the Hack Attack RSS feed to get new installments in your newsreader.