OpenCores
URL https://opencores.org/ocsvn/socgen/socgen/trunk

Subversion Repositories socgen

[/] [socgen/] [trunk/] [doc/] [src/] [guides/] [reset_sys_design.html] - Diff between revs 19 and 27

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 19 Rev 27
Line 1... Line 1...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<html>
<head>
<head>
  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">
  <title>start</title>
  <title>Reset System Design</title>
  <meta name="GENERATOR" content="OpenOffice.org 3.0  (Linux)">
  <meta name="GENERATOR" content="OpenOffice.org 3.0  (Linux)">
  <meta name="CREATED" content="0;0">
  <meta name="CREATED" content="0;0">
  <meta name="CHANGED" content="20100309;9305300">
  <meta name="CHANGED" content="20100309;9305300">
  <meta name="KEYWORDS" content="start">
  <meta name="KEYWORDS" content="start">
  <meta name="Info 3" content="">
  <meta name="Info 3" content="">
Line 87... Line 87...
</p>
</p>
<br>
<br>
<h3 class="western">All components must come out of reset on exactly
<h3 class="western">All components must come out of reset on exactly
the same clock<br>
the same clock<br>
</h3>
</h3>
Thats true, or at least it was back in the 60's.&nbsp; Back then every
That's true, or at least it was back in the 60's.&nbsp; Back then every
component would come out of reset and start "componenting". The reset
component would come out of reset and start "componenting". The reset
system acted like a conductor&nbsp; so that everybody started on the
system acted like a conductor&nbsp; so that everybody started on the
same beat. Those types of systems are rare today. Most major chips have
same beat. Those types of systems are rare today. Most major chips have
one or more microprocessors in side so components come out of reset
one or more microprocessors in side so components come out of reset
only to sit there waiting for the cpu to configure them and get them
only to sit there waiting for the cpu to configure them and get them
Line 126... Line 126...
<br>
<br>
<br>
<br>
<h3 class="western">You must design your logic using synchronous design
<h3 class="western">You must design your logic using synchronous design
methods<br>
methods<br>
</h3>
</h3>
Absolutely. Todays chips are huge. The only way that you can close
Absolutely. Today's chips are huge. The only way that you can close
timing on a large design is if everyone follows strict synchronous
timing on a large design is if everyone follows strict synchronous
design rules.&nbsp; The mistake that many of todays designers make is
design rules.&nbsp; The mistake that many of todays designers make is
that they think that because they have to design an asynchronous reset
that they think that because they have to design an asynchronous reset
system that they get an exemption from following the rules for
system that they get an exemption from following the rules for
synchronous design.&nbsp; Sorry guys, it not one or the other its BOTH.
synchronous design.&nbsp; Sorry guys, it not one or the other its BOTH.
Line 150... Line 150...
That used to be true. The first thing a vendor does when they get a net
That used to be true. The first thing a vendor does when they get a net
list is to run a full drc that looks for dft issues. If anybody has any
list is to run a full drc that looks for dft issues. If anybody has any
signals crossing between&nbsp; the async reset port on a flipflop and
signals crossing between&nbsp; the async reset port on a flipflop and
either a D or a Q port then it flags it as a violation. So you can
either a D or a Q port then it flags it as a violation. So you can
either send it back to the customer and wait a week for them to find
either send it back to the customer and wait a week for them to find
it, fix it, and resynthesizes or you can eco in a test mux at the flop
it, fix it, and re-synthesizes or you can eco in a test mux at the flop
and have it fixed in 5 minutes. Everyone took the easy way out.<br>
and have it fixed in 5 minutes. Everyone took the easy way out.<br>
<br>
<br>
But then along came Logic equivalence checking (LEC).&nbsp; The final
But then along came Logic equivalence checking (LEC).&nbsp; The final
routed net list will be sent back and compared with the customers
routed net list will be sent back and compared with the customers
golden net list and all of these ecos will show up&nbsp; in the report.
golden net list and all of these ecos will show up&nbsp; in the report.
Line 218... Line 218...
in a known state but it is lousy when dealing with unknowns. There are
in a known state but it is lousy when dealing with unknowns. There are
times like this when it is possible to resolve a X into a known
times like this when it is possible to resolve a X into a known
value&nbsp; and it can't. There are also times when it will resolve an
value&nbsp; and it can't. There are also times when it will resolve an
X to a known value when it shouldn't. The only way to use verilog is to
X to a known value when it shouldn't. The only way to use verilog is to
start with everything in a known state and stop it when anything goes
start with everything in a known state and stop it when anything goes
X.&nbsp; That means theres a problem and nothing downstream from that X
X.&nbsp; That means there's a problem and nothing downstream from that
 
X
can be trusted.<br>
can be trusted.<br>
<br>
<br>
<br>
<br>
You do not prove your reset system design in gates sims. You prove the
You do not prove your reset system design in gates sims. You prove the
design in rtl sims and use LEC to prove that gates matches the design
design in rtl sims and use LEC to prove that gates matches the design
Line 273... Line 274...
</ul>
</ul>
You are looking at activity that is measured in the milliseconds on a
You are looking at activity that is measured in the milliseconds on a
system clock that is measured in the nanoseconds. Performing a reset in
system clock that is measured in the nanoseconds. Performing a reset in
one clock cycle&nbsp; requires adding logic to every single flipflop<br>
one clock cycle&nbsp; requires adding logic to every single flipflop<br>
for no good reason. A designer should only add reset logic as a last
for no good reason. A designer should only add reset logic as a last
resort. The prefered method is to use the existing mission mode logic
resort. The preferred method is to use the existing mission mode logic
to perform the reset. If you have a computational block with a fifty
to perform the reset. If you have a computational block with a fifty
stage deep pipeline then reset should force it's inputs to 0 and open
stage deep pipeline then reset should force it's inputs to 0 and open
all the gates so that every flipflop will be flushed out in 50 clocks.
all the gates so that every flipflop will be flushed out in 50 clocks.
Better yet would be to have the block feeding your input force it's
Better yet would be to have the block feeding your input force it's
output to all 0's during reset.<br>
output to all 0's during reset.<br>
Line 348... Line 349...
  <li>The reset signal&nbsp; has a metastable filter to sync it with
  <li>The reset signal&nbsp; has a metastable filter to sync it with
the clock.<br>
the clock.<br>
  </li>
  </li>
</ul>
</ul>
The last is important because some designers will forget that the
The last is important because some designers will forget that the
filtered output is actually it's own seperate reset domain<br>
filtered output is actually it's own separate reset domain<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<h3 class="western">3) Define a known good state<br>
<h3 class="western">3) Define a known good state<br>
Line 383... Line 384...
</ul>
</ul>
<ul>
<ul>
  <li>an active low on the output of the metastable filter</li>
  <li>an active low on the output of the metastable filter</li>
</ul>
</ul>
<br>
<br>
The jtag reset is not included because it doesnt reset the timer.&nbsp;
The jtag reset is not included because it doesn't reset the
 
timer.&nbsp;
Once this step is complete it will provide a map for the reset
Once this step is complete it will provide a map for the reset
distribution tree that you will need. The best way to distribute the
distribution tree that you will need. The best way to distribute the
reset over a large design is to use what is called a "synchronous reset
reset over a large design is to use what is called a "synchronous reset
tree".<br>
tree".<br>
<br>
<br>
Line 409... Line 411...
async one will enter reset one&nbsp; cycle&nbsp; before the sync one
async one will enter reset one&nbsp; cycle&nbsp; before the sync one
but they will both exit on&nbsp; at the same&nbsp; time. <br>
but they will both exit on&nbsp; at the same&nbsp; time. <br>
<br>
<br>
<br>
<br>
<br>
<br>
 
<h3 class="western">6) Select reset style for each flip/flop<br>
 
</h3>
 
We now need to select a reset "Style" for each flip/flop from the four
 
possible reset styles.<br>
 
<br>
 
<br>
 
<ul>
 
  <li>Synchronous</li>
 
  <li>Synchronous with output override</li>
 
  <li>Asynchronous</li>
 
  <li>Both Synchronous and Asynchronous</li>
 
</ul>
<br>
<br>
 
If the reset system is synchronous then you may choose any of the four
 
styles. If it is asynchronous then you cannot use the synchronous style.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
 
<img style="width: 800px; height: 600px;" alt=""
 
 src="../png/reset_fig1.png"><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
 
<h3 class="western">7) Apply DFT fixes to all asynchronous ports<br>
 
</h3>
 
All paths from the Q output of a flip/flop to the asynchronous
 
reset/preset port of a flip/flop must be disabled during scan testing.
 
The use of a test mux to do this is not recommended because anytime you
 
use a test mux you are not testing the circuit as it is used in mission
 
mode. There will always be at least one point of failure inside the
 
test mux where scan tests will pass but the IC will not function.<br>
 
<br>
 
The recommended method is to gate off the synchronous path with a atg
 
test signal and then recombine it with an asynchronous reset so that
 
the async reset it self is still testable. The lib module
 
cde_asyncdisable is available for this purpose. DO NOT CREATE YOUR OWN
 
TEST LOGIC.&nbsp; Checking the rtl code to ensure that all asynchronous
 
resets are testable requires a fairly sophisticated and expensive tool.
 
Checking the rtl to ensure that all asynchronous resets are properly
 
connected to a cde_asyncdisable module takes a simple perl script.<br>
 
<br>
 
<br>
 
<br>
<br>
<br>
<br>
<br>
<br>
<br>
 
<img style="width: 800px; height: 600px;" alt=""
 
 src="../png/reset_fig2.png"><br>
<br>
<br>
<p><br>
<p><br>
<br>
<br>
</p>
</p>
<p><br>
<p><br>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.