Thank you for visiting this WWW-Server.
This server is installed to collect the opinions of ASIC and FPGA designers regarding the concept of design errors and problems they can cause. Our final goal is to develope special technology extensions and synthesis algorithms that allow the designers to correct their mistakes even after the chip fabrication. (This capability is named Correctability) These mistakes are principally those design errors that are made during the design developement steps and have not been found in verification phases. In order to get more familiar to this subject, you can refer to:
This survey will help to find out what kind of design errors have to be concentrated more on, and which imaginable ones are less important.
We appriciate your efforts in filling out this questionnaire, and will send you a copy of the processed results, if you provide us an E-mail address here:
IMPORTANT: Answer to some questions seems to be your confidential information, or violate copyright of your organization. Hereby we state, that all of the collected data will be processed absolutely confidential. It means:
However, you can simply leave such critical questions un-answered. The major part of them has nothing to do with any organization copyright or confidential information.
Thank you again.
Institute for Integrated Circuits Technical University of Munich Munich, Germany
PART 1: GENERAL QUESTIONS
Describe the design in a high level using an HDL, and have the synthesizers make necessary resource scheduling, allocation and technology mapping automatically, and provide desired design constraints. (e.g. you are a Synopsys Behavioral Compiler user)
Make resource scheduling and allocation manually, and let the synthesizer automatically define the data elements (registers, operators, etc.) and their bussing structure, do eventually resource sharing, map them to the technology in use, and provide desired design constraints. (e.g. you use Synopsys VHDL/HDL/Design Compiler at RTL level without involving in hardware design concepts very deeply)
Make resource scheduling and allocation, data element selection and their bussing structure and resource sharing manually, define all of them in an HDL, use a synthesizer to translate and map it to the technology in use, and provide desired design constraints. (e.g. you are a conventional hardware designer, be always strongly aware about the structure of final design, using Synopsys VHDL/HDL/Design Compiler at RTL level)
Do all jobs manually using schematic capture tools.
In this particular case, the design error lies in:
PART 2: (V)HDL DESIGN ERROR MODEL
This model deals mainly with the mistakes that are made during the developement of the design HDL description, and are propagated to gate level by a synthesizer, resulting in a flawed chip. Considering this fact that a quite complete simulation and/or verification of a large design takes a long time and is practically impossible, those flaws could not be detected before chip fabrication and only after the chip takes effect in the whole system, they would be detected by observing the system malfunctions. Thus, a redesign , i.e. rewriting the HDL description and correcting its mistakes, will be necessary to achieve to a flawless chip.
The answer to this question that why these errors are happened and not detected in verification phases is behind this questionnaire, and depend strongly on the designers' design methodology. But it can not be forgotten, that no one can claim that his/her design is quite error free. The VLSI history shows that even large powerfull companies have designed and fabricated flawed microprocessors and their mistakes are detected first after a very long while.
Below, different possible and imaginable (V)HDL design errors (mostly with an example showing it more clearly) are presented. These different classes of mistakes have a very important point in common: they do not cause any syntax error and don't make the design unsynthesizable based on the synthesizable VHDL subset in used, because the HDL description after these changes should be compiled again and be synthesized as before. In each item, you are asked to define: how often they can appear, i.e. how probable they are;
Flawed VHDL Code:
ENTITY e IS PORT ( a, b, c : IN INTEGER; d: IN BIT_VECTOR(7 DOWNTO 0)) END e;
Corrected VHDL Code:
ENTITY e IS PORT ( a,b: IN INTEGER; d: OUT BIT_VECTOR(15 DOWNTO 0); f: IN BOOLEAN) END e;
a <= 12; b <= TRUE; next_state <= state_5
a <= 15; b <= FALSE; next_state <= state_8;
a <= b + c ; z <= x AND y ;
a <= b + e ; z <= x AND t ;
x <= a AND ( b OR c );
x <= ( a AND b ) OR c;
x <= a AND b ; y <= c - d ;
x <= a OR b ; y <= c + d ;
---- y <= a AND b; z <= a XOR b;
x <= a OR b; ---- z <= a XOR b XOR c;
next_state <= state_8;
IF a='1' THEN next_state <= state_8; END IF;
output_1 <= FALSE; IF a='1' THEN next_state <= state_8; output_1 <= TRUE; END IF;
output_1 <= FALSE; IF a='1' THEN next_state <= state_8; END IF;
IF a='1' THEN next_state <= state_8; END IF; output_1 <= TRUE;
IF a='1' THEN next_state <= state_8; output_1 <= TRUE; END IF;
CASE a(1 DOWNTO 0) IS WHEN "00" => b <= c+1; WHEN "01" => b <= c-1; WHEN OTHERS => b <= c; END CASE;
CASE a(1 DOWNTO 0) IS WHEN "00" => b <= c+1; WHEN "01" => b <= c-1; WHEN "10" => b <= c+1; WHEN OTHERS => b <= c; END CASE;
You are welcome to comment on this survey: