PART 2
Design_Environments
Design_environments
- VHDL is a tool for advancing design process
Design_environments
- Steps required for transforming design idea into hardware
- Each step has its representation format
Design_environments
- A possible representation of data path information
- Next step is to transform into gates
Design_environments
Design entry
Simulation
Synthesis
Test generation
- Design automation helps transforming one format to another
- HDLs provide uniforms data formats
Design_environments.HDLs
Behavioral
Describes System Behavioral
Dataflow
Describes System at Register and Bus Level
Structural
Describes System at Component Level
- HDLs at various levels help different design steps
- Behavioral, Dataflow and Structural
Design_environments.HDLs
mark1 :=
BEGIN
m[0:8191]<31:0>,
pi\present.instruction<15:0>,
f\function<0:2> := pi<15:13>,
s<0:12> := pi<12:0>,
cr\control.register<12:0>,
acc\accumulator<31:0>,
- instruction.execution ** {tc}
MAIN i.cycle :=
BEGIN
pi = m[cr]<15:0> NEXT
DECODE f =>
BEGIN
0\jmp := cr = m[s],
1\jrp := cr = cr + m[s],
2\ldn := acc = - m[s],
3\sto := m[s] = acc,
4:5\sub := acc = acc - m[s],
6\cmp := IF acc LSS 0 => cr = cr + 1,
7\stp := STOP(),
END NEXT
cr = cr + 1 NEXT
RESTART i.cycle
END
- ISPS an early behavioral HDL
- Description shows MARK1 CPU
- Clocking is not explicitly specified
- High degree of readability
Design_environments.HDLs
- AHPLMODEL: multiplier.
- MEMORY: ac1[4]; ac2[4]; count[2]; extra[4]; busy.
- EXINPUTS: dataready.
- EXBUSES: inputbus[8].
- OUTPUTS: result[8]; done.
- CLUNITS: INC[2](count); ADD[5](extra; ac2);
- 1 ac1 <= inputbus[0:3]; ac2 <= inputbus[4:7];
- extra <= 4$0;
- => (~ ^dataready)/(1).
- 2 busy <= \1\;
- => (~ ^ac1[3])/(4).
- 3 extra <= ADD[1:4](extra; ac2).
- 4 extra, ac1 <= \0\, extra, ac1[0:2];
- count <= INC(count);
- => (^(&/count))/(2).
- 5 result = extra, ac1; done = \1\; busy <= \0\;
- => (1).
- END SEQUENCE
- CONTROLLERS(1).
- END.
- AHPL, A Hardware Programming Language
- Description shows an add_shift serial multiplier
- Clocking is explicitly specified
- Gate level timing is not known from this description
Design_environments.HDLs
- Another level of abstraction is at the structural level
- Interconnection of components is specified
Design_environments.HDLs
- CCT full_adder (a, b, c, s, co)
- XOR (RISE = 16, FALL = 12)
- g1 (w1, a, b),
- g2 (s, w1, c);
- AND (RISE4 = 12, FALL = 10)
- g2 (w2, c, b),
- g3 (w3, c, a),
- g4 (w4, b, a);
- OR (RISE = 12, FALL = 10)
- g6 (co, w2, w3, w4);
- INPUT a, b, c;
- WIRE w1, w2, w3, w4;
- OUTPUT s, co;
- END CIRCUIT full_adder
- Full adder of previous slide is described in GHDL
- Complete timing at gate level is known by this description
- Hard to extract functionality by reading the description
Design_environments.tools
Simulation:
Describe system and operation
Synthesis:
Describe system and automatically generate hardware
- Simulation and synthesis are two main HDL based tool
- Can simulate and synthesize with any level of abstraction
Design_environments.tools. simulation
- Simulation tools verify transformation at each step
- Verify each step before going to next
Design_environments.tools. simulation
- Oblivious and event driven simulation
- Can simulate gate level circuit with both methods
Design_environments.tools. simulation
- Need a tabular netlist for oblivious simulation
- Simulate a fixed time invervals
- Update table values at each interval
Design_environments.tools. simulation
- Event driven simulation requires a linked list data structure
- Evaluate circuit only when events occur
- Offers a faster simulation for digital systems