240 likes | 381 Views
EE434 ASIC & Digital Systems. Jacob Murray School of EECS Washington State University jmurray@eecs.wsu.edu. Course Project Part 1. System on chip. Technology Scaling. Transistor count: exponential growth. Prohibitive manufacturing costs. 10M$ - 100M$ 0.13micron designs.
E N D
EE434ASIC & Digital Systems Jacob Murray School of EECS Washington State University jmurray@eecs.wsu.edu
System on chip Technology Scaling Transistor count: exponential growth Prohibitive manufacturing costs 10M$ - 100M$ 0.13micron designs Over 100 millions for today’s SoCs + Reusability Platform Based Design Emergence of Multi-Processor SoC Platforms
Evolution of design methodologies Source:Henry Chang et al “Surviving the SoC Revolution: A Guide to Platform-Based Design” • Semiconductor Intellectual Property (SIP) • Functional SIP • Memory, processors, DSPs, I/O, UARTs …….
Network on chip • Modification of inter-block communication • IPs communicate via network-oriented protocols • Structured interconnect template • Independent optimization of the communication fabric • Intelligent switches (I2Ps) establish the communication
Data transmission • Packet-based communication • Low memory requirement • Wormhole routing • Deterministic • LCA, e-cube • Virtual channels • enhance channel utilization
Throughput characteristics • 4 virtual channels is a reasonable trade-off
Switch architecture Design This
Arbitration • Different types of arbiters • Matrix, round-robin, queuing • Matrix arbiters are faster • The arbiter circuit essentially consists of a priority matrix, which stores the priorities pij of the requesters and grants generation circuits used to grant (gnti) resources to requesters. • The priority matrix stores priorities between n requesters in a binary n-by-n matrix. • Each matrix element [i, j] records the binary priority between each pair of inputs. • For example, suppose requester i has a higher priority than requester j, then the matrix element [i, j] will be set to 1, while the corresponding matrix element [j, i] will be 0 • A requester will be granted the resource if no other higher priority requester is bidding for the same resource. Once a requester succeeds in being granted a resource, its priority is updated and set to be the lowest among all requesters.
Flit-level arbitration Example: • Requestor 2 is granted access • Row 2 is set to 0, column 2 is set to 1 • requester 2 has the lowest priority now
Design Details • Design Hierarchy Arbiter Priority Matrix Grant
Design Details Priority Matrix SR Latch Update
Entity of the Priority Matrix entity p_matrix is port ( clk, reset : in std_logic; grant1, grant2, grant3, grant4 : in std_logic; p12, p12b, p13, p13b, p14, p14b : out std_logic; p23, p23b, p24, p24b, p34, p34b : out std_logic); end p_matrix;
Architecture of the Priority Matrix component update port ( clk : in std_logic; reset, grant_col, grant_row : in std_logic; p, pb : out std_logic); end component; u12 : updateport map ( clk => clk, reset => reset, grant_row => grant1, grant_col => grant2, p => p12, pb => p12b); Six these types of port mapping may be needed
Update Block entity update is port ( clk : in std_logic; reset, grant_row, grant_col : in std_logic; p, pb : out std_logic); end update;
Grant Block entity grant is port ( clk : in std_logic; r1, r2, r3, r4, reset : in std_logic; p12, p12b, p13, p13b, p14, p14b : in std_logic; p23, p23b, p24, p24b, p34, p34b : in std_logic; grant1, grant2, grant3, grant4 : out std_logic); end grant;
Arbiter Block (The Top Level Module) entity arbiter is port ( clk : in std_logic; r1, r2, r3, r4 : in std_logic; grant_1, grant_2, grant_3, grant_4 : out std_logic; reset : in std_logic); end arbiter; r1, r2, r3 and r4 are the requests coming from external sources
Structure of the Top Level Block component grant port ( clk : in std_logic; r1, r2, r3, r4, reset : in std_logic; p12, p12b, p13, p13b, p14, p14b : in std_logic; p23, p23b, p24, p24b, p34, p34b : in std_logic; grant1, grant2, grant3, grant4 : out std_logic); end component;
Structure of the Top Level Block component p_matrix port ( clk : in std_logic; reset, grant1, grant2, grant3, grant4 : in std_logic; p12, p12b, p13, p13b, p14, p14b : out std_logic; p23, p23b, p24, p24b, p34, p34b : out std_logic); end component;
Interfacing of the Arbiter with FIFO Buffers • At the input side of the switch blocks the request signals to the arbiter comes from the FIFO buffers • When the FIFO buffers are full they send a full signal to the arbiter • These full signals are the request signals to the arbiter • The arbiter needs to arbitrate among the FIFO buffers