FIGURE 1. 1
A digital system design process
FIGURE 1. 2
Result of the data path design phase.
mark1 :=
BEGIN
** memory.state **
m[0:8191]<31:0>,
** processor.state **
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
FIGURE 1. 3
An ISPS example, a simple processor.
(Source: M. R. Barbacci, The ISPS Computer Description Language, Carnegie-Mellon University, 1981, p. 70.)
AHPLMODULE: 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:5]; ac2 <= inputbus[4:7];
extra <= 4$0;
=> ( ^dataready, dataready ) / (1, 2).
2 busy <= \1\;
=> ( ^ac1[3], ac1[3] ) / (4, 3).
3 extra <= ADD[1:4] (extra; ac2).
4 extra, ac1 <= \0\, extra, ac1[0:2];
count <= INC(count);
=> ( ^(&/count), (&/count) ) / (2, 5).
5 result = extra, ac1; done = \1\; busy <= \0\;
=> (1).
ENDSEQUENCE
CONTROLRESET(1).
END.
FIGURE 1. 4
An AHPL example, showing a sequential multiplier.
(a)
`timescale 1 ns / 1 ns
// A 6-gate full adder; this is a comment
module fulladder (s, co, a, b, c);
// Port declarations
output s, co;
input a, b, c;
// Intermediate wires
wire w1, w2, w3, w4;
// Netlist description
xor #(16, 12) g1 (w1, a, b);
xor #(16, 12) g5 (s, w1, c);
and #(12, 10) g2 (w2, c, b);
and #(12, 10) g3 (w3, c, a);
and #(12, 10) g4 (w4, b, a);
or #(12, 10) g6 (co, w2, w3, w4);
endmodule
(b)
FIGURE 1. 5
A full-adder, (a) logical diagram, (b) Verilog description.
FIGURE 1. 6
Hardware simulation.
FIGURE 1. 7
Verifying each design stage by simulating its output.
(a)
(b)
FIGURE 1. 8
An exclusive-OR function in terms of AND, OR and NOT gates, (a) logical diagram, (b) test data.
GATE |
FUNCTION |
INPUT 1 |
INPUT 2 |
VALUE |
1 |
Input |
a |
-- |
0 |
2 |
Input |
b |
-- |
0 |
3 |
NOT |
2 |
-- |
1 |
4 |
NOT |
1 |
-- |
1 |
5 |
AND |
1 |
3 |
0 |
6 |
AND |
4 |
2 |
0 |
7 |
OR |
5 |
6 |
0 |
FIGURE 1. 9
Tabular representation of exclusive-OR circuit for oblivious simulation.
FIGURE 1. 10
Linked list representation of exclusive-OR circuit for event driven simulation.
FIGURE 1. 11
Categories of synthesis tools in a design process.
FIGURE 1. 12
Synthesis process.
FIGURE 1. 13
Resource sharing.