The SPARCengineTW IE CPU Card User's Manual

Sun Microsystems, Inc. • 2550 Garcia Avenue • Mountain View, CA 94043 • 415-960-1300

Part No: 800-8137-02 Revision A of April 10, 1990 The Sun logo +, Sun , NFS, and TOPS are registered trademarks of Sun Microsystems, Inc. Sun, Sun-3, Sun-4, Sun386i, SPARCstation, SPARC, SPARCengine, SunInstall, SunLink, SunOS, SunPro, SunView, NeWS, and NSE are trademarks of Sun Microsystems, Inc. UNIX is a registered trademark of AT&T. OPENLOOK is a trademark of AT&T. All other products or seIVices mentioned in this document are identified by the trademarks or seIVice marks of their respective companies or organizations, and Sun Microsystems, Inc. disclaims any responsibility for specifying which marks are owned by which companies or organizations.

Copyright © 1989-90 Sun Microsystems, Inc. - Printed in U.S.A. All rights reserved. No part of this work covered by copyright hereon may be reproduced in any form or by any means - graphic, electronic, or mechanical - including photocopying, recording, taping, or storage in an infonnation retrieval system, without the prior written permission of the copyright owner. Restricted rights legend: use, duplication, or disclosure by the U.S. government is subject to restrictions set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013 and in similar clauses in the FAR and NASA FAR Supplement. The Sun Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering efforts of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a non-exclusive license from Xerox to the Xerox Graphical User Interface, which license also covers Sun's licensees. This product is protected by one or more of the following U.S. patents: 4,777,485 4,688,1904,527,2324,745,4074,679,0144,435,792 4,719,569 4,550,368 in addition to foreign patents and applications pending. Contents

Chapter 1 Unpacking the CPU Card ...... 1

Chapter 2 Description of the CPU Card ...... 3 2.1. Main Features .,...... 3 2.2. Card SllCci fications ...... 4 2.3. Card Landmarks ...... 4

Chapter 3 Bringing Up the SPARCengine IE CPU for the First Time ...... 9

3.1. Required Refere!lce Materi~ ...... 9 3.2. Backplane I>efinition ...... 9 3.3. Board Juml>Cl'S ...... 9 3.4. Backplane Slot Configuration Requirements ...... 12 3.5. Insertion into a Backplane ...... 13 3.6. Power Up ...... 13 How to Talk to the SPARCengine IE 4MB On-Board Memory ...... ; .... ;~.~...... 14 Memory Test Command One ...... 14 Memory Test Command Two ...... ;. 14 Memory Test Command Three ...... l4 3.7. How to Talk to the SPARCengine IE Buses ...... ; 15 Step Olle ...... 15 Step Two ...... 15 How to Talk to the VMEbus ...... 15

-iii- Contents - Continued

How to Talk to the SBus ...... 15 How to Talk to the P-2 Bus ...... 15 3.8. Running Extended Selftests ...... 16 3.9. Running Functional Tests ...... 16

Chapter 4 Board Overview ...... 17 4.1. Required Reference Material for the SPARCengine IE ...... 17 4.2. Introduction ...... 17 4.3. CPU ...... 17 4.4. MMU ...... 18 4.5. Cache ...... 18 4.6. SBus ...... 20 4.7. Direct Virtual Memory Access (DVMA) ...... 21 4.8. Device Space ...... 21 4.9. Address Spaces ...... 21 4.10. Control Space ...... 21 4.11. Error Registers ...... 22 4.12. Memory Maps for the SPARCengine IE ...... 22

Chapter 5 Control Space Registers and Utilities ...... 31 5.1. Context Register ...... 31 Programming Example for Sening the Context Register ...... 32 5.2. System Enable Register ...... 33 Three Programming Examples for the System Enable Register ...... 33 Turning the Processor Cache ON...... 34 Turning the Cache OFF ...... 34 Reseting the CPU with the System Enable Register ...... 35 5.3. Bus Error Registers ...... 35 Synchronous Errors ...... 35 Programming Example for Using the Synchronous Bus Error Register ...... 36 Programming Example for Using the Synchronous Virtual Register ...... 37 Asynchronous Errors ...... ,...... 3g

-lY - Contents - Continued

Programming Example for Using the Asynchronous B"us Error Register ...... 38 Programming Example for Using the Asynchronous Virtual Regiraer ...... 39 More on Timeout Errors ...... 39 5.4. Direct Accesses to Cache Tags and Data ...... 39 5.5. Serial Port Bypass ...... 39

Chapter 6 Device Space ...... 41 6.1. Req,uired Reference Material ...... 41 6.2. Main Memory ...... 41 6.3. On-ooard Memory ...... 41 6.4. Off-ooard Memory ...... 41 6.S. l.A>cal [)evices ...... 43 KeyOOardlMouse Port ...... 43 Serial Port ...... 44 TOO Clock and NVRAM ...... 44 Counter-Timer Registers ...... 45 Programming Example for the Counter/fimer Register ...... 46 i\tieffiulj EiiUi Registci ...... _...... 48 Interrupt Register ...... 48 EPROM ...... 49 Diagnostic Output Register ...... 50 6.6. SBus Slots ...... 50 Programming Example for the Diagnostic Output Register ...... 51 6.7. P2 Bus Slot ...... 51

Chapter 7 Memory Management Unit ...... ,...... 53 7.1. Page 10 bits ...... 54 Page 10 Bits Programming Example ...... 55 7.2. Context Register ...... 56 7.3. Page Map ...... 56 Programming Example for Using the Page Map Register ...... 56 7.4. Segment Map ...... 61

-v- Contents - Continued

Programming Example for Setting the Segment Map Register ...... 61 7.5. Direct Access to Map Data ...... 66 7.6. Initialization of the UART ...... 66

Chapter 8 Boot PROM ...... 71 8.1. Required Reference Material for the Boot PROM ...... 71 SPARCengine IE Notes for the Open PROM Toolkit User's Guide ...... 71 Chapter 1 Notes ...... 71 Chapter 2 Notes ...... 71 Chapter 3 Notes ...... 71 Chapter 5 Notes ...... 72 Chapter 6 Notes ...... 72 Chapter 7 Notes ...... 72

Chapter 9 Cache .,. __ ,, ______,______...... 73 9.1. Overview of the Cache ...... 73 9.2. Orgarli.zation of the Cache ...... 73 9.3. General Operation Considerations ...... 74 Direct Virtual Memory Access (DVMA) ...... 74 Multi-processor Cache Coherency...... 75 9.4. Cache Programming Examples ...... 75 Enabling the Cache ...... 75 Disabling the Cache ...... 75 Hushing ...... 76 Page Rush ...... 76 Segment Hush ...... 77 Context Hush ...... 78 9.5. Cache Hush Operations ...... 79 Hush Cache Line based on Context Match ...... 79 Hush Cache Line based on Page Match ...... 79 Hush Cache Line based on Segment Match ...... 80 9.6. Additional Thoughts ...... 80

-vi- Contents - Continued

Chapter 10 Diagnostics ...... 81 10.1. Required Reference Material for the Diagnostics ...... 81 10.2. Diagnostic LED Interpretation ...... 81 iO.3. Power Up DiagIlostics ...... 84

Chapter 11 System Reset and the Reset Switch ...... 8S 11.1. Five Sources for a System Reset ...... 85 The Power-On Reset ...... 85 The User Reset ...... 85 The Reset Switch ...... _.. 85 The Watchdog Reset ...... 85 The Software Reset ...... 85 The VMEbus Reset ...... _...... 86 11.2. Local Reset of Non-Slot 1 CPUs ...... _...... 86

Chapter 12 Multiprocessing Capabilities of the SPARCengine IE...... 87 12.1. Mail Box Interrupt ...... 87 12.2. Bus Locker ...... 88 12.3. Possible RMW Deadlock Condition Across the VMEbus ...... 88 12.4. Procedure for Enabling Multiprocessor Operation ...... 88

Chapter 13 VMEbus Interface ...... 91 13.1. Required Reference Material for VME ...... 91 13.2. Features of the SPARCengine IE VMEbus Interface ...... 91 13.3. VMEbus Basics -- An Introduction ...... 92 13.4. VME Pcrfonnance ...... 92 13.5. VME Addresses ...... 93 13.6. VME Implementation ...... 93 13.7. VME Registers -- Major Groups ...... 94 13.8. Master Interface ...... 95 A32 Map Register Base Location ...... 96 A32 Map Register Initialization ...... 96 13.9. VME Registers Programming Example ...... 97

-vii- Contents - Continued

13.10. Slave Interface ...... 99 Single Transfers ...... 100 Slave Map Register ...... 100 Slave Map Register Initialization ...... 100 13.11. Mail Box ...... 101 Mail Box Register Base Location ...... 102 Mail Box Register Initialization ...... 102 Mail Box Register Interrupt Level...... 102 13.12. Bus lA>cker ...... 103 VME Bus lA>cker Register ...... 103 Initialization ...... 103 13.13. Interrupt Handler ...... 1()4 Interrupt Enable/Bus Arbiter Mode Register ...... 1()4 Interrupt Enable Register Initialization ...... 1()4 13.14. Bus Requester ...... 105 Bus Arbiter ...... 105 13.15. Bus Time Out Period ...... 105 Rerun Time Out ...... 106 Al:x>rt ...... 106 13.16. System Reset ...... 106 13.17. JumJ)Cr ...... 106 13.18. Programmable Register Settings ...... 106 13.19. VME lACK Cycles ...... 107 Daisy Chain lACK Driver ...... 108 Master Cycles ...... 108 Slave Cycles ...... 108 13.20. Bus Arbitration ...... 1()9 13.21. Interrupts ...... 110 13.22. VME Programming Examples ...... 110 FORTH Programming Example ...... 110 C Programming Example ...... 112 13.23. Example of a VrvrE System ...... ,...... 113 13.24. Sample VMEbus Interface Driver ...... 114

- "i1i- Contents - Continued

Chapter 14 SCSI Interface ...... 119 14.1. Required Reference Material for the SCSI Interface ...... 119

14.2. SCSI J>erfonnmce ...... ~...... 119 14.3. SC::SI Addresses ...... «...... 119 14.4. Interface Programming ...... 120 14.5. SCSI Connector Pinout List ...... 121

Chapter IS Ethernet Interface ...... 123 15.1. Required Reference Material for the Ethernet Interface ...... 123 15.2. Introduction ...... 00...... 123 15.3. Ethernet Interface Definition ...... 123 15.4. Etltemet Perfonnmce ...... 123 Ethernet Addresses ...... 123 15.5. EtherIlet Interrupt ...... 124 15.6. Ethernet Bandwidth and Capability ...... 124 15.7. Ethernet Transmits md Receives ...... 124 15.8. Ethernet Buffer ...... 124 15.9. Etltemet Connector Pinout List ...... 125 15.10. Ethernet Interface Programming ...... 125

Chapter 16 SBus Interface ...... 129 16.1. Required Reference Material for SBus ...... 129 16.2. Introduction ...... 129 16.3. SBus Slot Addresses ...... 129 16.4. SBus Slot 0 Devices ...... 130 Card ID ...... 130 DMA Registers ...... 131 DMA ControVStatus Register ...... 131 DMA Address Register ...... 132 DMA Byte Count Register ...... 132 DMA Diagnostic Register ...... 132 16.5. SBus Slot 1 Devices ...... 132 SPARC Assembly Language Example ...... 133

-ix- Contents - Continued

C Example ...... 135 Forth Example ...... 136

Chapter 17 P2 Bus Interface ...... 137 17.1. P2 Bus Interface Overview ...... 137 17.2. Non-Compatibility Announcement for the P2 Bus ...... 137 17.3. P2 Bus Interface Memory Map ...... 137 Pins l & 2 of J0801 ...... 138 Pins 2 & 3 of J0801 ...... 138 17.4. P2 Bus Connector Pinout List ...... 139 17.5. P2 Bus Performance ...... 140 17.6. P2 Bus Programming Operation ...... 140

Chapter 18 Serial Interface A ...... 143 18.1. Required Reference Material for Serial Interface A...... 143 18.2. Serial Interface A Device Address ...... 143 i8.3. Seriai Interface A Definition ...... 143 18.4. Serial Interface A Performance ...... 143 18.5. The Connector ...... 144 18.6. Serial A Connector Pinout List ...... 144 18.7. Special Cabling Requirements ...... _...... 145

Chapter 19 Serial Interface B ...... 147 19.1. Required Reference Material for Serial Interface B...... 147 19.2. Serial Interface B Device Address ...... 147 19.3. Serial Interface B Definition ...... 147 19.4. Serial Interface B Performance ...... 147 19.5. The Connector ...... 147 19.6. Serial B Connector Pinout List ...... 148 19.7. Special Cabling Requirements ...... 148

Chapter 20 KeyboardIMouse Interface ...... 153 20.1. Required Reference Material for KeyboardIMouse Interface ...... 153 20.2. Keyboard/Mouse Device Address ."...... 153

-x- Contents - Continued

20.3. KeyboardlMouse Interface Definition ...... 153 20.4. SJ)ecifications ...... 0...... 153 20.5. KeyboardlMouse Connector Pinout List ...... 154

Appendix A Environmental Tests and Results ...... ISS A.t. Tests Completed ...... _...... 155 A.2. Overview ...... 155 A.3. Test Configurations ...... 155 StaIldard Test Series ...... 156 Standard Test Results ...... 156 Standard Reference Conditions ...... 156 Sun Standard Environmental SJ)eCifications ...... 157 Rugged Test Series ...... 158 Test Results for Military Standard Ctimatic Specifications ...... 158 Test Results for Military StaIldard Dynamic Mechanical SJ)ecifications ...... 161 Test Results for Shipboard Vibration ...... 161 Packaged Product Test Results ...... 161 A.4. Disclaimer ...... 162 ..A..S. The!'!!!a! Mappmg ...... _...... _ ...... _ 162

Appendix B Getting Help for the SPARCengine IE CPU Cards ...... 165 Sun Hotline Numbers ...... 166 B.t. Getting Sun Help with Your Software Development ...... 167

Appendix C The CPU Card Schematic Diagrams & Assembly Drawings ...... 169

- xi-

Figures

Figure 2-1 CPU Card Landmarks -- Major Chips ...... 5 Figure 2-2 CPU Card Landmarks --I/O Connectors ...... 6 Figure 2-3 CPU Card Landmarks -- Memory Modules ...... 7

Figure 3-1 CPU Card Jumper Location & Factory Settings ...... 11

Figure 4-1 Functional Block Diagram ...... 19 Figure 4-2 System Address Diagram ...... 20 Figure 4-3 Type 0 (obmem) Space Physical Memory Layout -- Parity C ...... J...1""A ~ ..UU.l."U ...... 23 Figure 4-4 Type 0 (obmem) Space Physical Memory Layout -- Parity Disabled ...... 24 Figure 4-5 Type 1 (obmem) Space Segment Allocation ...... 25 Figure 4-6 Type 2 Space ...... 26 Figure 4-7 Type 3 Space ...... 27 Figure 4-8 Segment Allocation (Context 0) ...... 28 Figure 4-9 Virtual Memory Layout for Context 0 ...... 29

Figure 6-1 Virtual to Physical Address Mapping ...... ,. 42

Figure 7-1 Memory Management Unit ...... 54

Figure 9-1 Cache Address Decoding of Virtual Addresses ...... 73 Figure 9-2 Cache Tag Format ...... 74

- xiii- Figures - Continued

Figure 10-1 LED Light Location (CPU Backside) ...... 82 Figure 10-2 LED Light Diagnostic Table ...... 83

Figure 13-1 Sample VME System Diagram ...... 113

- xiv- :~ .: .x.:.' .. '. '::::::::::::'~" '. ~~~:

Tables

Table 3-1 Board JumJ)erTable ...... 10 Table 3-2 Board Positioning Chart ...... 12

Table 5-i System Space I>evices ...... 3 i Table 5-2 System Enable Register Bits ...... 33 Table 5-3 Bus Error Registers ...... 35

Table 6-1 Device Space Addressing 000 ..... '0'...... 43 Table 6-2 KeyboardlMouse Addresses ...... 44

T~ble 6~ 3 Seri~ Pert i1.ddresses ...... 44 Table 6-4 Clock Chip NVRAM Addressing ...... 45 Table 6-5 Counterffimer Register Addressing ...... 46 Table 6-6 Interrupt Register Bits ...... 49

Table 7-1 MMU Attributes ...... 53 Table 7-2 Page ID Bit Definitions ...... 55

Table 8-1 OJ)en PROM Toolkit User's Guide Figure 6-2: Additional Items for the SPARCengine IE ...... ;...... ~ .... ~... 72

Table 13-1 VME Concept Definitions ...... ;...... 92 Table 13-2 VME Addresses ...... 93 Table 13-3 VME Address Spaces ...... 93 Table 13-4 VME Registers ...... 95

-xv- Tables - Continued

Table 13-5 A32 Map Register ...... 96 Table 13-6 A32 Map Register Address Bits ...... 96 Table 13-7 A32 Map Register Bit Definitions ...... 96 Table 13-8 Slave Map Register Address ...... 100 Table 13-9 Slave Map Register Address Bits ...... 100 Table 13-10 Slave Master Register Bit Definitions ...... 101 Table 13-11 Mail Box Register Address ...... 102 Table 13-12 Mail Box Register Address Bits ...... 102 Table 13-13 Mail Box Register Bit Definitions ...... 102 Table 13-14 Bus Locker Register Address Bits ...... 103 Table 13-15 Bus Locker Register Bit Definitions ...... 103 Table 13-16 Interrupt Enable Register Address ...... 104 Table 13-17 Interrupt Enable Register Address Bits ...... 105 Table 13-18 Interrupt Enable Register Bit Definitions ...... 105 Table 13-19 Slot 1 Jumper & Functions ...... 106 Table 13-20 Programmable Register Settings ...... 107 Table 13-21 Mail Box Register Addres3 ...... 107 Table 13-22 VME lACK Cycles Register Address Bits ...... 108 Table 13-23 VME lACK Cycles Interrupt Responses ...... 108 Table 13-24 Slave Cycles Duration and Theoretical Bandwidth ...... 109 Table 13-25 Bus Arbitration ...... 109 Table 13-26 VME Interrupt Levels and Sources ...... 110

Table 14-1 SCSI Register Addresses ...... 120 Table 14-2 SCSI Pinout List -- Connector Jl001 ...... 121

Table 15-1 Ethernet Registers ...... 124 Table 15-2 Ethernet Pinout List -- Connector J0901 ...... 125

Table 16-1 SBus Slot Addresses ...... 129 Table 16-2 SBus Slot 0 Addresses ...... 130 Table 16-3 DMA Register Addresses ...... 131

Table 17-1 P2 Slot Addresses - J0801 Pin 1 Jumpered to Pin 2 ...... 138

- xvi- Tables - Continued

Table 17-2 P2 Bus Slot Addresses - J0801 Pin 2 Jurnpered to Pin 3 ...... 138 Table 17-3 P2 Bus Pinout List -- Connector P1802 ...... 139 Table 17-4 P2 Bus Perfonnance ...... 140

Table 18-1 Compatible Serial Connectors ...... 144 Table 18-2 Serial A Pinout List -- Connector J1201 ...... 144 Table 18-3 Serial A Cabling Option: Asynchronous RS-232 DTE to DTE ...... 145 Table 18-4 Serial A Cabling Option: Asynchronous RS-449 DTE to DTE ...... 146

Table 19-1 Compatible Serial Connectors ...... 148 Table ]9-2 Serial B Pinout List -- connector J1202 ...... 148 Table 19-3 Serial B Cabling Option: Asynchronous RS-232 DTE to D'I"E ...... 149 Table 19-4 Serial B Cabling Option: Synchronous RS-232 DTE to DTE ...... 150 Table 19-5 Serial B Cabling Option: Synchronous RS-232 DTE 10 OCE ...... 151 Table 19-6 Serial B Cabling Option: Asynchronous RS-449 DTE to DI-I::, ...... i52

Table 20-1 Kcyboard/Mouse Pinout List ...... 154

Table A-I Testing Groups ...... 156 Table A-2 Powered Climatic Test Results ...... 159 Table A-3 Unpowercd Climatic Test Results ...... 160 Table A-4 Dynamic Environment Test Results ...... 161 Table A-5 Shipboard Vibration Test Results ...... 161 Table A -6 Packaged Product Test Results ...... 162 Table A-7 Temperatures of SPARCengine IE Components ...... 163

- xvii-

.T. __T ••••••••••••••••••••••••••••••••• it ..

Preface

The SPARCengine IE CPU User's Manual provides detailed infonnation about the two CPU cards in the SP ARCengine IE family. When you have read this User's Manual and the associated required reference material, you will be able to communicate with the SP ARCengine IE CPU card in many system configurations.

Using this Manua! The following sections provide information that will help you use this manual.

Audience The audience of this manual includes computer hardware engineers, system pro­ grammers, computer technicians, and others interested in interfacing one or more SP ARCengine IE cards into a VME backplane, and how to communicate with other cards in the SPARCengine IE card family through the VME, SBus and P2 Bus ports. All readers should have an understanding of electronic hardware, operating system software interfacing with hardware, and related computer con­ cepts. An understanding of the required communications standards and concepts between cards and with peripheral computer devices is also required. Given the defined audience background, the Hardware Reference Manual will provide the necessary information needed to incorporate the SP ARCengine IE family of cards into many system configurations.

Organization The organization of this User's Manual is designed to be of immediate use to you in a fashion that is clear, precise, and organized. There are four main groups of information in the manual:

- xix- Preface - Continued

Major Sections of Chapters of Titles of the SPARCengine IE each each I CPU User's Manual Major Section Chapter I

Bringing Up the SPARCengine IE Chapter 1 Unpacking the CPU Card for the First Time ,Chapter 2 Description of the CPU Card Chapter 3 Bringing Up the CPU Card for the First Time

The Theory and Operation of the Chapter 4 CPU Card OveIView SPARCengine IE CPU Card Chapter 5 Control Space Chapter 6 Device Space Chapter 7 Memory Management Unit Chapter 8 Boot PROM Chapter 9 Cache Chapter 10 Diagnostics Chapter 11 System Reset & Reset Switch Chapter 12 Multiprocessing Capabilities I

The Input/Output Interfaces of Chapter 13 VMEbus Interface the SPARCengine IE CPU Card Chapter 14 SCSI Interface Chapter 15 Ethernet Interface Chapter 16 SBus Interface Chapter 17 P2 Interface Chapter 18 Serial A Interface Chapter 19 Serial B Interface Chapter 20 Keyboard/Mouse Interface

The Appendix Appendix A Environmental Tests and Results Appendix B Getting Help Appendix C Schematic Diagrams & Assembly Drawings Appendix D Manual Updates

For information about other cards in the SPARCengine IE card family, refer to the additional manuals of the SPARCengine IE User's Manuals.

Fonts in Text In this manual, typographic fonts are used to make things a little clearer. The most common font~ are Roman, italic, and bold. We use them as follows: Roman font is the standard for normal text, just as it appears here. Roman

- xx- Preface - Continued

Italic font is used for four types of information: Italic Reference Manual titles, notes, figure and table titles, or it represents a variable for which you or the computer must substitute some real value. For example: This field contains the value nn

Bold font is used to indicate three types of information: Bold chapter names when referencing from one chapter to another within the manual, headers in tables, or when something deserves more attention than the surrounding text. A 'Ox' before a number indicates that the number is hexadecimal. For example, Textual Conventions Ox16 indicates hexadecimal value '16'. In discussions of the state of a signal or a bit, L'1e bit might be active high or active low. It if is active high, it is true when it is active, HIGH, or set, and it is false if it is inactive, low, or reset. Most bits are active high.

Bits that are active low are identified a~ such in text, and are marked with an asterisk (*).

Required Reference Material On the next page is a table describing the necessary information required for understanding certain components of the SPARCengine iE CPU card. Make sure that you have copies of this documentation before beginning study of this manual.

- xxi- Preface - Continued

Where Found Manual Title

Supplied with PROM User's Manual, SunOS Documentation Sun Part No. 800-1736-xx Release Manual/or SunOS 4.0.3e Sun Part No. 800-1835-xx The SPARC Architecture Manual Sun Part No. 800-1399-xx Supplied with The SPARCengine IE Color & Monochrome SPARCengine IE Video Cards User's Manual, Hardware Documentation Sun Part No. 800-8139-xx SBus Developer's Kit, Sun Part No. 825-1219-xx (NOTE: See chapter entitled Boot PROM) Documentation You Can AmU030/AmU530 Serial Communications Controller Obtain Outside of Sun (SCC) Technical ManUal, Advanced Micro Devices, Inc., 1982. Advanced Micro Devices Am7990 Local Area Network Controller (LANCE) Technical Manual, Advanced Micro Devices, Inc., 1986. I Advanced Micro Devices Am7992B Serilllinterjace Adapter (SIA) Technical Manual, Advanced Micro Devices, Inc., October, 1985. Tu Mostek MK48T02-15 Datil Sheet. ANSI Specification 802.3, 1986, (Ethernet Specification) also known as: ISO/Draft International Standard 8802/3 I F ederalln/ormation Processing Smndard (FIPS) 107 VMEbus Specification Revision C.l, October, 1985. I Also known as: lEC821 BUS and IEEE Pl014/Dl.2 EIA Standard -- RS-232-C, Electronic Industries Association, August. 1969. EIA Standard -- RS-422-A, Electronic Industries Association, I December, 1978 EIA Standard -- RS-423-A, Electronic Industries Association, December, 1978. EIA Standard -- RS-449-A, Electronic Industries Association, I I I, December, 1977.

-xxii - Revision History

Dash Revision Date Comments

-01 01 August 22, 1989 Beta 1st Draft

01 50 November 6, 1989 Beta Release

01 51 November 30, 1989 TOIRelease

02 01 February 19, 1990 Fes 1st Draft

02 01 Apri14, 1990 FCS 2nd Draft

02 A April 10, 1990 FCSRelease

-xxiii-

1

Unpacking the CPU Card

Your SPARCengine IE CPU Card is delivered in a protective box. The box con­ tains the card wrapped in a static envelope, and a electrostatic protection (ESD) kit 1. Disassemble the box, removing the card in the static envelope and the static electricity kit. 2. Disassemble the ESD kit, and follow the instructions supplied with the kit to attach the ESD device. 3. Remove the static envelope from the card.

Revision A of April 10, 1990 2 The SPARCengine IE CPU Card User's Manual

Revision A of April 10, 1990 2

Description of the CPU Card

The SP ARCengine IE CPU card is a RISCIUNIX Eurocard with I/O of VME, Ethernet, SBus, Serial 232/423/422, and keyboardlmouse interface. The SBus is usually occupied with a SP ARCengine IE video card when the CPU is used with a monitor. There are two SPARCengine IE CPU cards, differentiated only by the inclusion or exclusion of Lhe Floating Point Unit

2.1. Main Features e Low power CMOS ASICs for high reliability. e RISC a Aoating Point Unit. e Wide range of I/O, including IEEElANSI-standard 32-bit VMEbus. a 4MB Parity Memory on-board. a ECC Memory via backplane P2Bus. e Color/Monochrome Video SBus cards. a Compatible with all SPARC-based & servers. a SunOS 4.0.3 compatible. a Cache. a Multiple CPU cards in a single backplane.

3 Revision A of April 10, 1990 4 The SPARCengine IE CPU Card User's Manual

2.2. Card Specifications Category Specification

Integer Perfonnance 12.5 MIPS @ 20MHz Cache Memory 64KB write-through, virtual Aoating-PointUnit 1.4 MFLOPS Double Precision (Optional) On-board Byte Parity Memory 4MB, l00-nsec DRAM SIPs Memory Management Sun-4 MMU ASIC EPROM 256KB EPROM (2x27010) Realtime Timer/Counters Two 21-bit, l-usec. resolution TODClock M48T02 Configuration Parameters 2KBNVRAM Multiprocessing Support 32 mailbox interrupt locations through-the VME Interface RMW Multiport Shared RAM VMEbus IEEE/ANSI standard 1014, A32; D32 SBus Connectors 1 locations Master/slave, 32-bit SCSI Bus NCR 53C90, Mini-connector Ethernet AMD 7990; DB 15 connector Serial Port A RS423/232C; sync/async Serial Port B RS4 22/232C; sync/differential Keyboard/Mouse X920B Sun Typc-4 standard, DB-15 Board Size 6.29" x 9.18" (160 x 233 mm) Power Dissipation 25 Watts

2.3. Card Landmarks On the following page you can find a component-side drawing of the SPARC­ engine IE CPU card, with various call-outs defining the card landmarks.

Revision A of April 10, 1990 Chapter 2 - Description of the CPU Card 5

Figure 2-1 CPU Card Landmarks -- Major Chips

TODClock RAM Gate Array Buffer Gate Array

VMEGateA~y Cache Gate Array

SCSI Gate Array Ethernet Chip

TPD-0213

.§.!!.!! Revision A of April 10, 1990 6 The SPARCengine IE CPU Card User's Manual

Figure 2-2 CPU Card Landmarks --I/O Connectors

PI Connector P2 (P2Bus) Connector

_wau 000000000000000000000000000000 .-

nonoonnnonnooonnonnoonnonoooon -II

o

COMPONENT SIDE

SCSI Keyboard/Mouse Ethernet Serial B Serial A

TPD-0215

Revision A of April 10. 1990 Chapter 2 - Description of the CPU Card 7

Figure 2-3 CPU Card Landmarks -- Memory Modules

DRAM Module (one of 4) Cache Memory Module

oooooooooooooo~ 000000000000000000000 t 000000it:"00000:::~

~ W~ 000000000000000000000000000000--.. _ f£i_D'~ ~ t ~ s~ ~ .

COMPONENT ·SIDE

Reset Switch

TPD-0216

Revision A of April 10, 1990 8 The SPARCengine.1E CPU Card User's Manual

Revision A of April 10. 1990 Bringing Up the SPARCengine IE CPU for the First Time

3.1. Required Reference VMEbus Specijication Revision C.l, 1987. Material Open Boot PROM Toolkit User's Manual, contained in the SBus Developer's Kit, Sun Part No. 825-1219-xx. PROM User's Manual, Sun Part No. 800-1736-xx. Here are the instructions and considerations for powering up your new SP ,ARC­ engine IE for the first time. The information included here is reduced to the basics, and is meant for you to verify that your SP ARCengine I E is operational and is ready for further activities. The configurations included in this section are ONLY for first-time power-up. and are not an exhaustive explanation of the vari­ ous configurations that can be achieved with the SPARCengine IE CPU card.

3.2. Backplane Definition The SPARCengine IE is a double-height board requiring both a Jl and a J2 backpla..11e (or a c.ombination J1/12 hackplane) The user-defined J2/P2 pin assignments are made according to Sun's SPARC­ engine IE P2 Bus private specification. (For more information on the P2 Bus specifications, see the chapter in this manual entitled P2 Bus Interface.) The SPARCengine IE is designed to fully comply with the specifications of the VMEbus. (For more information on the VMEbus specifications, see sections 7.4. 7.5 and 7.6 of the VMEbus Specification Revision C.l.)

3.3. Board Jumpers Below is a chart defining how the jumpers on the CPU card have been set at the Sun factory. Check the jumpers to ensure that the jumpers are set in the fashion described below.

9 Revision A of April 10, 1990 10 The SPARCengine IE CPU Card User's Manual

Table 3-1 Board Jumper Table I Reference Available Designator Jumper Options • indicates Sun factory setting

J030I Clock Enable The jumper must be used.

*1. Pins 1 and 2 must be jumpered together for nonnal operation.

J080I ECC/Parity The jumper must be used.

* 1. Jumpering pins 1 and 2 together selects on-board parity memory Memory Select to be at the bottom of Type 0 space below off-board ECC memory.

2. Jumpering pins 2 and 3 together selects off-board ECC memory to be at the bottom of Type 0 space and disables on-board parity memory. I NOTE: See the SPARCengine IE ECC Memory Card User's Manual to configure the jumpers resident on the ECC Memory Card.

J1701 VME Slot 1 The jumper does not need to be used.

* 1. IN selects the board to be a VME Slot 1 device.

2. OUT selects the board to be a VME non-Slot 1 device.

NOTE: See the chapter of this manual called VMEbus Interface for more information.

J0702 SBus Select 2 The jumper does not need to be used.

1. IN supports future SBus expansion.

*2. OUT supports SBus cards with parity option.

NOTE: Pin 1 for jumpers is indicated by a square on the board silkscreen.

Revision A of April 10, 1990 Chapter 3 - Bringing Up the SPARCengine lE CPU for the First Time 11

Figure 3-1 CPU Card Jumper Location & Factory Settings

J0701 J0801 J1701 J0301

C J ooooooooooooooOQoooooooooooo 0000000000000000000000000000 0000000000000000000000000000

00000000000000000000000000000-~ 0

...... -.u 0000000000000 0000000000000000000000000000000- 0000000000000 ooooooooooooooooooooooooooooo~

--

00000 0 00000 00000 00000 0 00000 0 0 00000 0 0 "'- 0 "'JIll 0 ; I

COWPONENT SIDE

TPD-0214

Revision A of April 10, 1990 12 The SPARCengine IE CPU Card User's Manual

3.4. Backplane Slot The SPARCengine 1E can be plugged into the VME backplane in slot 1 or in a Configuration slot other than slot 1. Requirements If a SPARCengine 1E CPU is installed in a slot other than slot 1 with empty slots between it and the slot 1 card, then each of those empty slots must be configured as described below: IACKIN* and IACKOUT* must be jumpered together. Pins 21 and 22 on the Jl backplane must be jumpered together. The signals Bus-Grant(0-3) and lACK must be jumpered across empty slots, as follows: BGO : jumper pins 5 and 6 BG 1 : jumper pins 7 and 8 BG2 : jumper pins 9 and 10 BG3 : jumper pins 11 and 12 lACK: jumper pins 21 and 22 The following chart shows how to arrange the SPARCengine IE family of cards in the VME backplane. It assumes that the CPU will be placed in Slot 1. If the CPU is placed in a different slot, the RELATIVE card ordering in the chart should still be observed. NOTE: In u'ie chart below, boards are show" on tJ'1e left, and the siots fuey go into appear in the columns to the right. The relative priority is expressed with a letter from A, B, or C; A is highest priority, B is medium, and C is lowest. A slot labelled "A" is the first choice of locations for the board; if that slot is not available, place the ooard in the slot labelled "B", and if that slot is not available, please it in the slot labelled "C".

Table 3-2 Board Positioning Chart

Revision A of April 10, 1990 Chapter 3 - Bringing Up the SPARCengine IE CPU for the First Time 13

Board Slot 1 Slot 2 Slot 3 Slot 4 Slot 5 Slots 6-21 II IE CPU A I

IE Video A

IE ECC (#1)* A B

IEECC (#2)* A B

IE ECC (#3)* I A B I I I

IEECC (#4)* A

SCSIlEther (3E340) Any Free Slot

-- I Other VME Canis II IAny Free 1ilOt I

* Be sure that the P2 Bus extends to this slot.

3.5. Insertion into a SPARCengine IE connectors PI and P2 respectively plug into the backplane Backplane connectors J 1 and J2. All four connectors are keyed to prevent misinsertion. Connect SERIAL A via a cable to a tenninal. See section 18.7 of this manual.

3.6. Power Up The default power-up sequence consists of a series of minimal component func­ tional tests and initialization, followed by booting. Tum on the power to the backplane. In the default autoboot mode, the SPARCengine IE CPU attempts to boot SunOS 4.0.3e from an attached SCSI disk. Because a disk is not attached, the Open PROM displays an identification banner and enters the command mode of the "PROM monitor" (a program that monitors the activity of the keyboard). The PROM displays a > prompt

Revision A of April 10, 1990 14 The SPARCengine IE CPU Card User's Manual

How to Talk to the Type n to enter the FORTH interpreter. SPARCengine IE 4MB On­ FORTH displays the ok prompt. Basic Assembly PROM commands are avail­ Board Memory able to the SPARCengine I E CPU in this intetpreter. There is at least 4MB of memory available to the SPARCengine IE CPU card. The first tests to validate the correct operation of the SP ARCengine IE CPU card PROM is to validate correct operation of this memory. Use one of the three commands explained below:

Memory Test Command One Perfonn a LOOPIREAD that validates that the on-board memory is functional: 100 50 dump RESULTS: If the PROM and the on-board memory is functional, a memory location table is displayed. If the PROM or the on-board memory is not woridng, you receive one of a number of possible error messages indicating a problem with the memory.

Memory Test Command Two Perfonn a LOOP/WRITE that writes a number pattern to memory, validating memory and memory response: 100 50 12345678lfill RESULTS: If the SPARCengine IE is woridng correctly, the number pattern 12345678 is written to memory, and you will receive the ok prompt. If the PROM or the on-board memory is not working correctly, you receive one of a number of possible error messages indicating a problem.

Memory Test Command Three Perfonn a memory test that exercises the on-board memory. This test does not reside in the PROM, and must be keyed in at the FORTH prompt. Key in the fol­ lowing program:

: memory-test ( -- ) 15010000 from OxlOO to OxlSO 12345678 il! longword write il@dup longword read(result left on stack) 12345678 <> compare if." obs =" . ." cxp = " 12345678 . ." adr = i. cr ekedrop then 4+100p

When this code has been correctly entered, you can perfonn the memory test: memory-test RESULTS: If the SPARCengine IE is working correctly, the memory test is written to memory, and you will receive the ok prompt. If the PROM or the on­ board memory is not working correctly, you receive one of a number of possible error messages indicating a problem.

Revision A of April 1D, 1990 Chapter 3 - Bringing Up the SPARCengine lE CPU for the First Time 15

Connect the cables for the additional devices you wish to test with the SPARC­ engine IE: SCSI, keyboard, Ethernet, Serial Ports A and B.

3.7. How to Talk to the Accessing devices available on the·SPARCengine's buses in general requires SPARCengine IE mapping ,md reading and writing the device. Buses The procedure below can be used to map in memory (ECC or parity). Devices are mapped in two stages:

Step One Select unused segments, virtual address range and size. Map in the segments, e.g., seg# = OxSO, va = OxlOOOOOO, size = OXS()()()()(). 80 1000000 800000 map-segments NOTE: Oxffis conventionally used as the invalid pointer. Some segments are already being used, e.g., OxO-OxF for 4MB parity memory forECC memory low, 0xfB­ Oxtb for the framebuffer, Oxfd for ROM, Oxfe for RAM [for PROM].

Step Two Select a physical address range and space. Map in the pages, e.g., pa =Ox40000, space =vmed32a32. 40000 vmed32a32 1000000 800000 map-pages

How to Talk to the VMEbus VME devices must be mapped in using the above procedure. (Spaces available for use are vmed32a32, vmed32a24, vmed32aI6, vmed 16a32, vmed 16a24, vrned16a16). Example: to map 2MB of VME D32 memory at OxS()()()()():

use seg#=Ox30, VA = Ox400000 30 400000 200000 map-segments 800000 vmed32a32 400000 200000 map-pages Memory can then be dumped with: 800000 100 dump

How to Talk to the SBus SBus devices are handled using the IDPROM onboard the SBus card. The IDPROM contains a driver for the SBus card which is read at boot time and intetpreted by the Open PROM. During debug of an SBus device or it's driver a device in an SBus slot may be mapped in using map-. (See the Open PROM Toolkit User's Manual for a description of the map-sbus).

How to Talk to the P-2 Bus P2 devices must use the procedure below (space =obmem for P2 memory; space =obio for P21/0). Example: to map 2MB of ECC memory at 800000:

use seg#=Ox30, VA =Ox400000 30 400000 200000 map-segments 800000 obmem 400000 200000 map-pages

Revision A of April 10, 1990 16 The SPARCengine IE CPU Card User's Manual

3.8. Running Extended Setting the diagnostic switch and reseting the board will cause the board to Selftests come-up into the extended selftests. setenv diag-switch? true reset NOTE ResuLts of this test are printed onLy on SeriaL/mer/ace A.

3.9. Running Functional The following tests are available for testing functional units on the board. These Tests tests are automatically run at a reset or a power-up. They can be run individually by leaving the PROM monitor and entering the PROM. At the > prompt, enter n. At the ok prompt, enter one of the following commands. test-controL-regs test-net test-cache test-memory watch-clock watch-net NOTE Press escape to abort or stop any test.

Revision A of April 10. 1990 4

Board Overview

4.1. Required Reference Reference material required for a complete definition of the SPARCengine IE: Material for the The SPARC Architecture Manual Sun Part No. 800-1399-xx SPARCengine IE Release Manual/or SunOS 4.0.3e Sun Part No. 800-1835-xx

4 .. 2.. 1.Iltroduction The SPARCengine IE is a RISC/UNIX Eurocard for industry-standard double­ high (6U) VMEbus and rugged applications. It features 12.5 MIPS and 1.4 MFLOPS performance, 4 MB of parity memory on-card, and off-card expansion up to 64 MB of ECC memory on a private P2 Bus. Other input/output ports include one SBus expansion slot, SCSI and Ethernet ports and two serial I/O ports. The CPU card contains both a cache and a memory management unit to achieve maximum use of the SPARC architecture. The CPU card comes with or without a floating-point unit (FPU), depending ..""" Ulh'.lt i~ nrrl~r~ti h" th~ 1"11~tnrnpr W,t"'.& ... ..,... &.&.... &..:J' ...,.w."' • ..., ..... IL.' J .,.aa~ ..,,...... _ ...... _ •• The CPU card uses the Sun SF9010 chip set to implement the Sun-4 architecture. It features a full 32-bit virtual address and 32-bit data capability, and it uses the SP ARC RISC architecture to achieve maximum speed. The SP ARCengine I E CPU runs SunOS 4.0.3e, a variant of the standard SunOS 4.0.3 for the Sun-4. Refer to the Release Manual for SunOS 4.0.3e for more details about the SunOS for the SPARCengine IE. NOTE SunOS 4.0.3 and SunOS 4.0.3c (SPARCstation 1 SunOS) will not operate on the SPARCengine 1E.

4.3. CPU The CPU is comprised of an Integer Unit (IU) that performs basic processing and an optional Hoating-Point Unit (FPU) that performs floating point calculations. The IU includes a 32-bit external bus interface with separate data and address buses, a four-stage instruction pipeline, a barrel shifter, two data aligners, and a three-port register file consisting of 120 registers. These registers are configured into overlapping sets that facilitates the passing of parameters. All instructions with the exception of loads, stores, and floating-point operations can be executed in one machine cycle. The IU and FPU are linked through a dedicated interface that supports concurrent floating- point instruction execution.

17 Revision A of April 10. 1990 18 The SPARCengine IE CPU Card User's Manual

Refer to the SPARC Reference Manual (825-1080-01) for more details.

4.4. MMU The Memory Management Unit (MMU) maps virtual addresses used by the SP ARC processor into the physical addresses used by main memory. The card architecture is divided between control space and device space. Control space contains the architectural extensions to the CPU, on the untranslated side of the MMU. Device space contains the devices on the translated side of the MMU. Control space is used for system control operations, and device space is used (mostly) for normal operation.

4.5. Cache The cache is a direct-mapped virtual~address write-through cache, organized into 16-byte b1ocks, called lines. Each line contains 4 words of data from main memory, and has a corresponding tag field containing information about the line. Its relationship to the system appears in the following figures.

Revision A of April 10, 1990 Chapter 4 - Board Overview 19

Figure 4-1 Functional Block Diagram

P2bus Interface P2bus

data

Virtual Address

•.J

TPD-0209

Revision A of April 10, 1990 20 The SPARCengine IE CPU Card User's Manual

Figure 4-2 System Address Diagram

Control Space (alternate space instructions) Device Soace I ASI 8 9 A I B 1

HushCache (cx) Hush Cache (p age) Hush Cache se User Inst Suo Inst User Data Suo Data System Space

MMU

,------__ eA[2S:001_ 1------,

Main Memory

Type 1 , I I I I I ______J Physical Addresses I

4.6. SBus The SBus is the basic communication mechanism between the processing core (CPU, MMU, and Cache) and the main memory and various I/O devices. The Cache selVes as the system controller for the SBus. The MMU translates the vir­ tual address output of the CPU and drives the resultant physical address onto the SBus. It also decodes this physical address into a set of select signals used to enable the main memory and I/O devices on the SBus. See the chapter on the SBus Interface for more details.

Revision A of April 10, 1990 Chapter 4 - Board Overview 21

4.7. Direct Virtual Memory The DVMA (Direct Virtual Memory Access) unit provides two channels of direct Access (DVMA) memory access between the main memory on the SBus and the SCSI and Ether­ net interfaces. It also provides Lite path bet'..¥een Llte SBus and tbe SCSI a.'ld Et..l}­ ernet interface devices required for the CPU to initialize and configure these interfaces. See ttiC chapteiS on the SCSI Interface Ch'1d Llte ELltemet Interface for more details. In addition to the Ethernet and SCSI interfaces, the VME slave interface pennits accesses of main memory by a VMEbus master through direct virtual memory access. S~ the chapter on the VMEbus Interface for more details.

4.8. Device Space Device space consists of all mapped main memory and I/O devices that are accessed through translated physical addresses. These include On-Board parity memory, Local Devices (Keyboard/Mouse Port, Serial Ports, TOO Clock and NVRAM, EPROM, Counter-Timer registers, Memory Error register, and Inter­ rupt register), SBus Slots, the VME Master interface and the P2 Bus interface. See the chapters on Device Space, VMEbus Interface, and P2 Interface for more details.

4.9. Address Spaces At the top level, address spaces are identified by the address space identifier (asi) bits. These are part of the SPARC Architecture, and are described in the SPARC Architecture Manual. The asi bits divide the addresses into two broad categories; control space and device space. Control space contains various unmapped system utilities; device space contains the part of the system that is accessed through the map. These spaces appear in the figure above. Note that the CPU card only supports the asi values shown in the above figure.

The SP ARC architecture automatically sets the asi bits correctly for accesses to user data, user instruction, supervisor data, and supervisor instruction spaces. To access other spaces, use the "alternate space" instructions described in the SPARC Architecture Manual to force the asi bits to the desired value.

4.10. Control Space Control space contains the unmapped portion of the system. This contains dev­ ices used to directly control the system. Note that the MMU itself is in control space. System Space System space includes all accesses with asi = Ox2. It contains control and status registers, a serial port bypass, and cache tags. The system space dev­ ices are listed and described in the chapter System Space. Page and Segment Maps (MMU Direct Access) These address spaces enable direct access to the MMU RAMs. They are used to load the map, and are described in the chapter Memory Management Unit. Cache Hush Operations Cache flush space operations flush lines in the cache based on a matching criteria. If the line matches the criteria. the line is invalidated. Cache flush

Revision A of April 10, 1990 22 The SPARCengine IE CPU Card User's Manual

criteria include page match, segment match, or context match. Cache flush operations are described in the chapter Cache. Cache Data Space Cache data space accesses provide direct access to the cache RAMs. A[ 16:0] provide the address.

4.11. Error Registers The CPU card provides two types of error registers. They are: o The bus error register is in system space. After a memory error exception, these registers identify the cause and location of the error. This register is described in the chapter System Space. (] The memory error register is in device space. This provides information about memory parity errors. It is described in the chapter Device Space.

4.12. Memory Maps for the These memory maps are presented from the Open PROM point of view at boot SPARCengine IE time. The diagrams are not to scale. Device space is represented by two memory maps. 1. With parity memory enabled: 4MB of on-board parity in low memory and one to four4MB/16MB ECC cards in high memory. 2. With parity memory disabled: one to four4MB/16MB ECC cards in low memorj.

Revision A of April 10, 1990 Chapter 4 - Boani Overview 23

Figure 4-3 Type 0 (obmem) Space Physical Memory Layout -- Parity Enabled

4 rvm of Parity Enabled One to four 4MB/16MB ECC Cards Type 0 (obmem) space Not to Scale

"SLOT' ., Address Slot as dermed by the Memory Address Jumpers

Physical Address Virtual Address

Ox20000000 invalid Ox14000000 Not Mapped Oxl3000000 "SLOT" 416MB Oxl2000000 "SLOT' 316MB ECC Boards "SLOT" 216MB OxllOOOOOO (256 M) "SLOTS" 1-4 4MB, or OxlOOOOOOO I "SLOT' i i6lViii I Not Mappea I I I invalid I I I Ox00400000 Oxffed6000 Ox003feOOO OxffedSOOO 64K reserved Ox003f4000 for PROM Parity Ox003fOOOO OxffecOOOO (4 M)

1 to 1 Mapping

OxOOOOOOOO OxOOOOOOOO

TPD-0202

Revision A of April 10, 1990 24 The SPARCengine IE CPU Card User's Manual

Figure 4-4 Type 0 (obmem) Space Physical Memory Layout -- Parity Disabled

4 l\1B of Parity Disabled One to four 4l\1B/16l\1B ECC Cards Type 0 (obmem) space Not to Scale

"SLOT" - Address Slot as defmed by the Memory Address Jumpers

Physical Address Virtual Address

Ox20000000 invalid Ox04000000 "SLOT" 416MB Ox03000000

"SLOT" 316MB Ox02000000 Not Mapped

"SLOT" 1 16MB OxOlOOOOOO ECC Boards (256 M)

"SLOTS" 1-4 4MB, or "SLOT" 116MB

Ox00400000 Ox003fOO 00 5--__--1 1 to 1 Mapping OxOOOOOOOO OxOOOOOOOO----1

*64K reseM'ed for PROl\1

TPD-0203

Revision A of April 10, 1990 Chaptez 4 - Board Overview 25

Figure 4-5 Type 1 (obmem) Space Segment Allocation

Type 1 (ohio) Space Not to Scale

Physical Address Virtual Address

OxlOOOOOOOOO Reserved invalid ECC Control Regs OxffdlaOOO ~ OxfcOOOOOO Sbus-Slot2 invalid (64MB) -< (Reserved) OxfSOOOOOO Reserved Sbus-Slotl Framebuffer (1MB) Oxf4S00000 OxffdSOOOO -< (64MB) Oxf4000000 Not Mapped OxfOcOOOOO Lance Chip OxffdlOOOO Sbus-SlotO OxfOSOOOOO ESP Chip Oxffd12000 (64MB) Oxf04000000 DMA Reg Oxffd14000 OxfOOOOOOOO Not iviappeo ~ OxefeOOOOOO VME Control Regs OxffdlS000 Oxee800000 Aux Reg OxffdOeOOO OxecOOOOOO EPROM (256K) OxffeSOOOO OxeaOOOOOO Interrupt Enable OxffdOaOOO OxeSOOOOOO Memory Error Re Oxffd16000 Oxe6000000 EEPROM (2KB) Oxffd06000 Oxe4000000 Counter & Clock Oxffd04000 Oxe2000000 UART Oxffd02000 OxeOOOOOOO KBDlMouse OxffdOOOOO

undefined OxOOOOOOOO

TPD-0204

Revision A of April 10, 1990 26 The SPARCengine IE CPU Card User's Manual

Figure 4-6 Type 2 Space

Type 2 Space VME D16 (Not Mapped)

Physical Address D16 VME space

OxlOOOOOOOO ...__ .... OxffCeOOOO .-___ --....II vmed16a16

vmed16a24

OxffOOOOOO .---- I .•• I• • unmapped I I I vmed16a32 • •

OxOOOOOOOO ....__ ...

TPD-0205

Revision A of April 10, 1990 Chapter 4 - Boatd Overview 27

Figure 4-7 Type 3 Space

Type 3 Space VME D32 (Not Mapped)

Physical Address D32 VME space

OxlOOOOOOOO ....__ .... OxfffeOOOO ...-___ • __..." vmed32al6 I

oxrroooooo 1----- ______-'I-~h~

I I ·1 I I unmapped I I I vmed32832 I I • •

OxOOOOOOOO ....__ ....

TPD-0206

Revision A of April 10, 1990 28 The SPARCengine IE CPU Card User's Manual

Figure 4-8 Segment Allocation (Context 0)

Segment Allocation (Context 0) Start Vu1ual Segment Maps To Start Physical Address Number Address OxOOOOOOOO 0 ParitylECC OxOOOOOOOO OxOOO40000 1 ParitylECC OxOOO40000 OxOOO80000 2 ParitylECC OxOOO80000 OxOOOeOOOO 3 ParitylECC OxOOOeOOOO OxOOlOOOOO 4 ParitylECC OxOO1OOOOO OxOO140000 5 ParitylECC OxOO140000 OxOO180000 6 ParitylECC OxOO180000 OxOOleOOOO 7 ParitylECC OxOOleOOOO OxOO200000 8 ParitylECC OxOO200000 OxOO240000 9 ParitylECC OxOO240000 OxOO280000 a ParitylECC OxOO280000 OxOO2eOOOO b ParitylECC OxOO2eOOOO ,. OxOO300000 ~ ParitylECC OxOO300000 OxOO340000 d ParitylECC OxOO340000 OxOO380000 e ParitylECC OxOO380000 OxOO3eOOOO f ParitylECC OxOO3eOOOO OxOO400000 ff Invalid Not Mapped ff Invalid Not Mapped Ox02000000 ff Not Used ff Not Used ff Not Used OxfeOOOOOO ff Not Used ff Invalid Not Mapped ff Invalid Not Mapped OxffeeOOOO ff Invalid Not Mapped OxffdOOOOO fe 10 Segment OxeOOOOOOO Oxffd40000 ff Invalid Not Mapped Oxffd80000 f8 Frame Buffer Oxf8000000 OxffdeOOOO f9 Frame Buffer Oxf8040000 OxffeOOOOO fa Frame Buffer Oxf8080000 Oxffe40000 fb Frame Buffer Oxf80eOOOO Oxffe80000 fd ROM Segment OxfeOOOOOO OxffeeOOOO fe RAM Segment OxOO3eOOOO OxfffOOOOO ff DVMA Segment 1 Not Mapped Oxfff40000 ff DVMA Segment 2 Not Mapped Oxfff80000 ff DVMA Segment 3 Not Mapped OxfffeOOOO ff DV AM Segment 4 Not Mapped

TPD-0207

Revision A of April 10, 1990 Chapter 4 Board Overview 29

Figure 4-9 Virtual Memory Layout for Context 0

Virtual Memory Layout for Context 0

Virtual Address Physical Address

Oxl0000000 I DVMA

OxfffOOOOO t-.______-J Not Mapped invalid Oxffed6000 I Ox00400000 type 0 ~------~ ROM RAM Data (64KB) Oxffec6000 Ox003fOOOO type 0 (RAMbase) OxffecOOOO ~ Dictionary (24KB) - Ox003f4000 type 0 Oxffe80000 ROM (256KB) (RO Mbase) OxfcOOOOOO iype 1 Frame Buffer (1MB) Oxffd80000 Oxf4800000 type 1 ~------~ invalid (32 MB) OxffdleOOO OxffdlcOOO Device Virt Base OxfcOOOOOO type 1 OxffdlaOOO ECC Ctl Reg OxefeOOOOO type 1 Oxffdl8000 VMEctl Reg ---' Oxe8000000 type 1 Oxttaii600 r.1~iiiv&j· E:-:-~:- Reg Oxf0400000 type 1 Oxffd14000 DMA Reg ----I Oxf0800000 type 1 Oxffd12000 ESP Chip ----I Oxee800000 type 1 OxffdOeOOO Aux Reg OxeaOOOOOO type 1 OxffdOaOOO Interrupt Enable Oxe6000000 type 1 Oxffd06000 EEPROM ___-.oJ Oxe4000000 type 1 Oxffd04000 Counter & Clock Oxe2000000 type 1 Oxffd02000 UART ------" OxeOOOOOOO type 1 OxffdOOOOO- Mouse------I I OxfeqOOOOO I invalid I I I I I Dot used (3.98 GB approx) I I Ox02000000 Ir------.-.J( I invalid I I I Parity or ECC Board (32 MB) I OxOOOOOOOO """"'-___M_ap~p_e_d_l-_l __ __l OxOOOOOOOO type 0

TPD-0208

Revision A of April 10, 1990 30 The SPARCengine IE CPU Card User's Manual

Revision A of April 10, 1990 Control Space Registers and Utilities

System space contains various control and status registers, cache tags, and a bypass port to the serial port. The SP ARC processor accesses system space with asi = Ox2. Address bits A[31 :28] select a device within the system space, and various other address bits may select an offset within that space. Address bits outside defined fields are ignored. NOTE System space accesses can only be done using the "alternate space" instructions described in the SPARe Architecture Manual. System space accesses require supervisor privilege, and are not mapped (they do not go through the MMU). The following table shows the system space addresses:

Table 5-1 System Space Devices rr__ _ A r" 1 .'"'01 !A;YIU; nL.:JI."'0J ~I~ .I1~ ,",.I.1""",~ UII4) Context Register Ox3 8-bit RJW System Enable Reg Ox4 8-bit RJW Bus Error Regs Ox6 8-bit Read only Cache Tags Ox8 32-bit RJW A[15:2] Cache Data Ox9 32-bit RJW A[15:2] Serial Port Bypass 0xF 8-bit R/W A[2:1]

The following sections describe each:

5.1. Context Register A context is the memory access for each process (window) running up to a total of eight processes (SunOS limitation). If the number of processes running under SunOS exceeds eight, swapping into the eight context addresses occurs. The context register is in system space at address Ox3. It is a readlwrite device; bits 0[2:0] identify the current MMU context (8 possible). Writing to unused bits has no effect, and reading them produces zeroes. The context register provides a convenient and easy method of switching con­ texts.

31 Revision A of April 10, 1990 32 The SPARCengine IE CPU Card User's Manual

Programming Example for The following programming example is provided simply as a guide for your pro­ Setting the Context Register gramming, and is not intended to be used as is. 1* • cntx.s .• ,copyright (c) 1989 by Sun Microsystems. Inc . #define CNTXT_NUM Ox04 1* Context Register Test ., #define CONTEXTBASE Ox30000000 /* context reg ., #define ASCCfL Ox2 1* control space·' #define quiCkey Ox 11 ,. Cntl-q: quit this test.go to next ., #define NCONTEXT 8 1* polaris .,

I*#define FORCE_CONTEXT_ERRORS·,

.seg "text" .global conteXCtst 1-______Context Register Test

Data from OXOO to NCONTEXT -1 is written to the Context Register and read back and compared.

contexCtst: save %sp. -MINFRAME. %sp ! preserve calling window set cntxCiSCtiU. %00 ! iest de~--riptof iext call testS or %gO. -CNTXT_NUM. %01 ! set test # mov %80. %02 ! Set initial pattern. 1: set 2f. %g4 ! « 2: set CONTEXTBASE. %03 ! point to the context reg stha %02. (%03] ASCCfL ! Write Context register. lduba [%03] ASCCfL. %01 ! Read Context register.

emp %02. %01 ! Data read back correct?

~fADRCE_CONTEXT_ERRORS be 3f ! if equal OK #endif FORCE_CONTEXT_ERRORS

nop set cntxt_eIT_txt. %00 ! eITor text msg addr call errorS ! Context register read data != write. nop 3: ! data not = read data! call loop$end ! « nop emp %00, quickey ! This lest aborted? be 9f nop cmp %02. NCONTEXT-l beq 9f nop

inc %02 !Increment test pattern. b 2b nop 9:

Revision A of April 10, 1990 Chapter 5 -Control Space Registers and Utilities 33

set CONTEXTBASE. %14 ! pointer to context register stba %gO. [%14]ASCCTL ! set context O. ret restore

5.2. System Enable The system enable register is an 8-bit read/write regisier in system space at Register address Ox4. It enables various system facilities, including booting. The bits have the following meanings: NOTE All these bits are active HIGH except EN.BOOT, which is active LOW. During reset, this register is cleared to all zeroes. This enables the boot state, and dis­ ables all others.

Table 5-2 System Enable Register Bits Bit Name Function 0[0] ENA.DIAG Reads back as 0 0[1] Not Used Reads back as 0 0[2] ENA.RESET Resets CPU and cache D[3] Not Used Reads back as 0 D[4] ENA.CACHE Enables cache 0[5] ENA.SDVMA Enables system OVMA 0[6] Not used Reads back as 0 0[7] ENA.BOOT_ Enable boot state

ENA.DIAG Reads back as O. ENA.RESET Setting this bit to 1 causes a reset. Note Lltat control is not returned to the program that reset the bit; instead, a reset occurs. ENA.CACHE This bit enables the cache when it is HIGH. ENA.SDVMA This bit enables system DVMA from the system bus. ENA.BOOT_ This bit enables the system boot state when it is LOW. During boot state, all supervisor program fetches are from EPROM, regardless of the state of the MMU. All other types of references are unaffected, and are mapped as usual.

Three Programming The following examples demonstrate typical uses of the System Enable Register. Examples for the System The code fragments below: (1) tum the processor cache on; (2) tum the proces­ Enable Register sor cache off, and (3) reset the CPU.

.S!!.D Revision A of April 10, 1990 34 The SPARCengine IE CPU Card User's Manual

Turning the Processor Cache 1* * The #defines below are used in the code fragments which follow. ON */

.seg "data" _enablereg: .byte 0 ! software copy of the System Enable Register

#defineENA_RESET Ox04 ! Reset CPU bit #define ENA_CACHE Oxl 0 ! Cache enable bit #define ENA_SDVMA Ox20 ! System DVMA enable bit #defineENA_BOOT_ Ox80 ! Boot state enable bit

#define ENABLEREG Ox40000000 ! Address of System Enable Register in ASCCTL space #defineASCCTL Ox2 ! Control Space address space indicator (ASI)

1* * The following code turns the cache on by setting the appropriate bit * in the System Enable Register. */

.seg "text"

mov ENA_CACHE. tfoOO mov %psr, %03 ! %03 gets a copy of the Processor status register or %03. PSR_PIL. %g 1 ! splO high to protect Sys Enable Register update mov %gl, %psr ! set the new processor interrupt level nop;nop ! psr update delay (necessary) set _enablereg, %01 ! address of software copy of the System Enable ! Register ldub [%01]. %gl ! %g 1 gets the software copy set ENABLEREG. %02 ! %02 gets the hardware address of Sys Enable Reg bset %00. %g 1 ! set the Cache Enable bit in the software copy stb %gl. [%01] stba %gl. [%o2]ASCCTL ! set the Cache Enable bit in the Sys Enable Register mov %03. %psr ! restore original processor status register value nop; nop ! psr update delay

Turning the Cache OFF ,. • The following code turns the cache off by clearing the appropriate bit * in the System Enable Register.

*' .seg "text"

mov ENA_CACHE. %00 mov %psr. %03 ! %03 gets a copy of the Processor status register or %03. PSR_PIL, %gl ! splO high to protect Sys Enable Register update mov %gl, %psr ! set the new processor interrupt level nop; nop ! psr update delay (necessary) set _ enablereg, 0/00 1 ! address of software copy of the System Enable ! Register ldub [%01]. %gl ! %g 1 gets the software copy set ENABLEREG. %02 ! %02 gets the hardware address of Sys Enable Reg heIr %00. %g 1 ! clear the Cache Enable bit in the software copy stb %gl, [%01] stba %gl, [%02]ASCCTL ! clear the Cache Enable bit in the Sys Enable Reg mov %03. %psr ! restore original processor status register value nop; nop ! psr update delay

Revision A of April 10. 1990 Chapter 5 - Control Space Registers and Utilities 35

Reseting the CPU with the ,. System Enable Register * The following code resets the CPU by setting the appropriate bit '" in the System Enabie Register. *' .seg "text"

rnov ENA_RESET. %00 rnov %pst. %03 ! %03 gets a copy of the Processor status register or %03. PSR_PIL. %gl ! spl() high to protect Sys Enable Register update rnov %gl. %psr ! set the new processor interrupt level nop ;nop ! psr update delay (necessary) set _enablereg. %01 ! address of software copy of the System Enable ! Register -- ldub [%oI].%gl ! %g 1 gets the software copy set ENABLEREG. %02 ! %02 gets the hardware address of Sys Enable Reg bset %00. %gl ! set the Reset Enable bit in the software copy stb %gl. [%01] stba %gl. [%02]ASCcrL ! set the Reset Enable bit in the Sys Enable Register rnov %03, %psr ! restore original processor status register value nop; nop ! psr update delay

5.3. Bus Error Registers The SP ARCengine IE CPU caro provides four bus error registers; two of these identify the type and location of synchronous bus errors, and two of them iden­ tify the type and location of asynchronous bus errors. All of these registers are accessed by fullword loads and stores. They all respond to read or write accesses; however writing them is meaningless. The registers are addressed as follows:

Table 5-3 Bus Error Registers Address Description Ox60000000 Synchronous enor register Ox60000004 Synchronous enor virtual address register Ox60000008 Asynchronous enor register Ox6OOOOOOC Asynchronous error virtual address register

Synchronous bus errors are those that occur due to the execution of an instruc­ tion; they are reported to the CPU by a trap at the end of the instruction's execu­ tion. Asynchronous bus errors are those that cannot be associated with the exe­ cution of the current instruction; they are related to such things as DVMA activity or buffered writes. These errors are reported by a level-1S interrupt.

Synchronous Errors The synchronous error register records information about any synchronous error that occurs. It records all errors since it was last cleared, and reading it clears it. All bits are active HIGH except bit 015. NOTE: If more than one bit is HIGH, to determine the true cause of the error, first deter­ mine the address associated with the error. For data exceptions it will be in the synchronous error virtual address register, for instruction exceptions, it will be in the saved program counter (see the SP ARC Architecture Manual). Then, manu­ ally inspect the page map entry associated with that address to determine the true

Revision A of April 10, 1990 36 The SPARCengine IE CPU Card User's Manual

cause of the error. The bits have the following meanings: DO - SE_ WATCHDOG This bit indicates a restart due to an IU error. 01 - SE_SlZERR This bit indicates that an incorrect size transfer was attempted. 02-Unused This bit reads as O. 03 - SE_MEMERR This bit indicates that a memory parity error occurred. D4 - SE_SBERR This bit indicates that a bus error happened during an SBus master, VME

master t or P2 bus access. os - SE_TIMEOUT This bit indicates an access to a non-existent device or to non-existent physi­ cal memory. D6 - SE_PROTERR This bit indicates that a protection error occurred. This can be caused by an attempted write to a read-only page, or by a user-mode access to a supervisor-only page. 07 - SE_INV ALIO This bit indicates that the valid bit was zero in a page map entry. D[14:8] - Unused These bits read as zeros. DIS-SE_RW When this bit is HIGH, it indicates that an error occurred during a write cycle. When it is LOW, it indicates that an error occurred during a read cycle. The synchronous error virtual address register is latched with bits V A[31 :0] when any synchronous error occurs, and it is unlatched when the synchronous error register is read.

Programming Example for The following programming example is provided simply as a guide for your pro­ Using the Synchronous Bus gramming, and is not intended to be used as is. Error Register !* * syne.s * Copyright (c) 1989 by Sun Microsystems, Inc. */

#define ASCCfL Ox2 /* Control Spaee* / #define BUSERROFF3 Ox60000000 /* Sync Bus Error Register */

.seg "text" .global Sync_reg

Revision A of April 10, 1990 Chapter 5 -Control Space Registers and Utilities 37

!------! Sync Register !

Sync_reg: save %sp. -MINFRAME. %sp ! preserve calling window set Sync_breg. %00 ! Address of message. call printS ! "Sync Register Read/Write TesL" nap

clr %11 ! Clear the %11 Register. set BUSERROFFI. %17 ! Sync Bus Error Register. Ida [%17]ASCCTL. %12 ! Save Bus error register. sta %11. [%17]ASCcrL ! write to buserr reg to clear. ret restore

.global Sync_breg Sync_breg: .asciz" 15 12Sync Registers Test."

Programming Example for The following programming example is provided simply as a guide for your pro­ U sing the Synchronous Virtual gra...m..ming. and is not intended to be used as is. Register 1* • sync_virt.s .• ,copyright (c) 1989 by Sun Microsystems. Inc .

#define ASCCTL Ox2 ,. Control Space*1 #define BUSERROFF2 Ox60000004 ,. Sync Bus Error Register .,

.seg "text" .global Sync_ vin_reg

! ------! Sync Virtual Address Register ! ! Sync_vin_reg: save %sp. -MINFRAME. %sp ! preserve calling window set sync_virtreg, lfoaO ! Address of message. call printS ! "Sync Virroal Address Register Read/Write Test." nap

clr %11 ! Clear the %11 Register. set BUSERROFF2. %17 ! Sync Bus Error Register. Ida [%17]ASCCfL. %12 ! Save Bus error register. sta %11, [%17]ASCCTL ! write to buserr reg to clear. ret restore

.global sync_ virtreg sync_virtreg: .asciz" 15 12Sync Virtual Address Registers Test."

Revision A of April 10, 1990 38 The SPARCengine IE CPU Card User's Manual

Asynchronous Errors The asynchronous error register latches the status of the system when an asyn­ chronous error occurs. It latches all errors that occurred since it was last cleared. Reading this register also clears it. All bits are active HIGH. The bits have the following meanings: 0[3:0] - Unused These bits read as O's. D4 - ASE_OVMAERR This bit indicates that a bus error occurred during a OVMA access. 05 - ASE_TIMEOUT This bit indicates that a non-existent device was addressed. 07 - ASE_INV ALIO This bit indicates that the valid bit was 0 (invalid) in a page map entry. The asynchronous error virtual address register contains the virtual address asso­ ciated with the last asynchronous bus error. It is cleared when the asynchronous bus error register is read.

Programming Example for The following programming example is provided simply as a guide for your pro­ Using the Asynchronous Bus gramming, and is not intended to be used as an independent program. Error Register 1* * async.s * copyright (c) 1989 by Sun Microsystems. Inc. */

##define ASCCfL Ox2 1* Control Spat;e*/ 4Idefine BUSERROFFJ Ox60000008 1* Async Bus &ror Register */

.seg "text" .global Async_reg !------! Async Register ! ! Async_reg: save %sp, -MINFRAME.%sp ! preserve calling window set async_reg, %00 ! Address of message. call printS ! "Async Register Read/Write Test" nop

clr %11 ! Clear the %11 Register. set BUSERROFF3, %17 ! Async Bus Error Register. Ida [%17]ASCCfL, %02 ! Read it back. 518 %11, [%17]ASCCfL ! write to buserr reg to clear. nop ret restore

.global async_reg async_reg: .asciz" 15 12Async Registers Test."

Revision A of April 10. 1990 Chapter 5 - Control Space Registezs and Utilities 39

Programming Example for The following programming example is provided simply as a guide for your pro­ Using the Asynchronous Virtual gramming, and is not intended to be used as is. Register r • async_virt.s • copyright (c) 1989 by Sun Microsys~ Inc. .,/ #define ASCCTL 0x2 ,. Control Space·' #define BUSERROFF4 Ox6OOOOOOc 1* Async Bus Virtual Register .,

.seg "text" .global Async_reg !------! Async Register ! ! Async_reg: save %sp. -MINFRAME. %sp ! preserve calling window set async_virtreg. %00 ! Address of message. call printS ! "Async Register Read/Write TesL" nop

clr %11 ! Clear the %11 Register. set BUSERROFF4. %17 ! Asyrt.:; Bus Enol Registez. Ida [%17]ASCCfL. %02 ! Read it back. sta %11. [%17]ASCCTL ! write to buserr reg to clear. nap ret restore

.global async_reg async_virtreg: .a;cii." 15 12Asj-~ Vh-:ua! AddaC:;:i R~g;~::::; T::t."

More on Timeout Errors Accesses to non-existent devices on CPU bus cycles to control space or device space will cause timeout errors. During system space accesses, timeout errors result from accesses to invalid codes within defined fields, or from accesses to unimplemented system space devices, where A[31 :28] are not legal values. In device space, timeout errors result from accesses to addresses outside the defined address space, or accesses to I/O devices which are legal but not present

5.4. Direct Accesses to System space provides for direct access to the data in the cache, and to the cache Cache Tags and Data tags. These accesses are described in the chapter Cache.

5.5. Serial Port Bypass The serial port bypass is in system space at 0xF. It enables accesses to the serial port A and B UARTs without using the MMU. The port and mode selection works the same as the nonnal accesses described in the chapter Device Space.

Revision A of April 1O. 1990 40 The SPARCengine IE CPU Card User's Manual

Revision A of April 10. 1990 6 II ,mhil'

Device Space

6.1. Required Reference VME SpecijiClllions C.l Material AMD Z8530 SCC Datil Sheet. The Mostek MK48T02-l5 Datil Sheet.

6.. 2" Main Memory Type 0 device space accesses address main memory. Main memory consists of up to 16 MB of on-board, parity-protected DRAM and up to 256 MB of off­ board ECC-protected DRAM.

6.3. On-board Memory Address bits PA [28:0] address main memory. To access on-board main memory, PA28, PA27, PA26, PA25, and PA24 must all be O's. The actual memory is provided on four SIP modules. If the 1 MB SIPS are present, then the size of the on-board main memory is 4 MB (OxOOOOOOO to Ox03FFFFF). If the 4 MB SIPs are present, on-board memory is 16 lvW (OxOOOOOOO to OxOFFFFFF). When 1 MB SIPs are used, the 4 MB of actual memory is 'mirrored' three more times on 4 MB boundries, as follows: OxOOOOOO to Ox03FFFFF ...... actual memory Ox040000 to OxO IFFFFF ...... mirror of OxOOOOOO to Ox03FFFFF Ox080000 to OxOBFFFFF ...... mirror of OxOOOOOO to Ox03FFFFF OxOCOOOO to OxOfFfFFF...... mirror of OxOOOOOO to Ox03FFFFF It is important to note that the memory controller for the on-board memory will respond to addresses in the range of Ox 100000 to OxlFFfFFf. When data is written to this range, the data is thrown away. When data is read from this range, the data value returned is in-detenninate and a parity error is likely to occur.

6.4. Off-board Memory Off-board main memory is on the 4E ECC Memory board(s). The 4E CPU accesses the 4E Memory via the P2 Bus. To access this memory, PA28 must be 1. Device space contains all the devices that are accessed through the memory map. This includes main memory, various on-board devices (keyboard/mouse port, the memory error register, the interrupt register, EPROM, NVRAM, the system clock, the system bus, and I/O devices), the P2 Bus, and the SBus, which pro­ vides support for some on-board devices plus additional (SBus type) boards.

+~t!! 41 Revision A of April 10, 1990 42 The SPARCengine IE CPU Card User's Manual

The type bits and the physical base address in the Page Table Entry (see the chapter MMU) select items in device space. Onboard and P2 Bus main memory is type 0; type 1 is used for onboard devices, P2 Bus devices, and the SBus slot. Additional address bits may be used as an offset within the device. The following figure shows the mapping of virtual to physical addresses:

V·Irtu alMemory Physical Memory OxFFFFFFFF OxlFFFFFFF ~ Type 3 V A[31 :29] = III !--- OxOOOOOOOO OxEOOOOOOO OxIFFFFFFF Type 2 OxOOOOOOOO ~ MMU - OxFFFFFFFF Type 1 OxlFFFFFFF OxEOOOOOOO - OxlFFFFFFF VA[31:29] 000 .~ rr __ = 1'\ l OxOOOOOOOO j

Figure 6-1 Virtual to Physical Address Mapping NOTE: The addresses listed in this chapter are physical addresses; these are the addresses that the MMU must output. The MMU inputs virtual addresses, and outputs physical addresses and type bits. The relationship between vinual addresses. and the physical addresses and type bits they produce depends on how the MMU is loaded by software. The type bits are described in the chapter Memory Management Unit. NOTE: The MMU will output addresses in the 0-1/2 GB (29 bits) address range. To access the full VME address space, the A32MAP register on the VME gate array may be written to increment the address output by the MMU in steps of 1/2 GB. Thus, the full 4GB of VME address space may be accessed. See the VME Specifications C.l for correct use of the A32MAP register.

Revision A of April 10. 1990 Chapter 6 - Device Space 43

The following table shows the device space physical addressing: Table 6-1 Device Space Addressing

Device Type Physical Base Address I Address Offset Bits

Main memory t onboard 0 OXOOOOOOOO PA[2S:0] P2 Bus Memory 0 Ox 10000000 PA[28:0] Keyboard/mouse port 1 0xE0000000 PA[2:1) Serial port 1 0xE2000000 PA[2:1) TOO clock and NVRAM 1 0xE4000000 Counter -timer registers 1 0xE6000000 Memory error register 1 0xE8000000 Interrupt register 1 OxEAOOOOOO 1 byte EPROM 1 OxECOOOOOO PA[17:0] ECC G/ A Register (reserved) 1 0xEE200000 LED's (Aux I/O) 1 0xEE800000 PA[20:0) SBus slot 0 1 0xF0000000 PA[23:0] SBus slot 1 1 0xF4000000 PA[23:0] I SBus slot 2 (reserved) 1 0xF8000000 ,... "" ... P2 Bus slot 1 OxFCOOOOOO

NOTE This table shows 32-bit addresses, even though the MMU only outputs PA[28:00]. To improve compatibility with otherSun-4 architectures, bits PA[3] :29] are assumed to be all ones. Accesses to a non-existent device result in a timeout

.• ne foilowing sections de~rihe Iilain memory, Oii hoard devices, Ciiirl the SBus. (Note that certain on-board SBus devices are described in other chapters; see the section SBus Interface for details).

6.5. Local Devices The local devices include a keyboardlmouse port, serial ports, a time-of-day clock/NVRAM, counter-timer registers, memory error registers, EPROM, and an auxilIary output register

Keyboard/Mouse Port The keyboard/mouse Serial Communications Controller (SCC) is in type 1 dev­ ice space at address OxE2000000. It is implemented with a AMD (or Zilog) Z8530 sec. Channel A is connected to the keyboard and channel B is connected to the mouse. Just like the serial port sec, the clock input is independent of the CPU clock and runs at 4.9152 MHz. It interrupts the CPU on level 12. Refer to the AMD Z8530 see Data Sheet for a description of the sec. The ports consist of four byte-wide read/write ports addressed by bits PA[2:0] (pAO is not really present, and is assumed to be a 0). NOTE When accessing the keyboard/mouse port, remember that your software must guarantee a recovery time of 1.6us. Do not attempt to write to the port faster than this limitation.

Revision A of April 10, 1990 44 The SPARCengine IE CPU Card User's Manual

The keyboard/mouse addresses are decoded as follows: Table 6-2 Keyboard/Mouse Addresses Address Register 0xE00000000 Channel B (mouse) control OxE00000002 Channel B (mouse) data OxEOOOOOOO4 Channel A (keyboard) control OxE00000006 Channel A (keyboard) data

Serial Port The serial ports are in type 1 device space at address OxE2000000. They are implemented with a AMD (or Zilog) Z8530 SCC which features two high-speed, fully symmetrical and highly programmable serial channels with built-in baud­ rate generators. The clock input is independent of the CPU clock and runs at 4.9152 MHz. It interrupts the CPU on level 12. Refer to the AMD Z8530 see Daltl Sheet for a description of the SCC. The serial port interface consists of 4 byte-wide read/write channels selected by decoding PA[2:0] (pAO is not really present, and is assumed to be a 0). Note that software must guarantee a recovery time of 1.6Jls. The addresses are decoded as follows:

Tabie 6-3 Serial Fori Addresses Address Register 0xE2()()()()()oo Channel B control OxE20000002 Channel B data 0xE20000004 Channel A control 0xE20000006 Channel A data

TOD Clock and NVRAM The Time of Day (fOD) clock circuit contains a Mostek MK48T02-15 Zeropower/fimekeeper RAM. This chip provides 2K of RAM. The top 8 bytes are reserved for clock data, the rest is used to store system configuration informa­ tion. The clock information occupies the highest 8 bytes, preceded by 20 bytes of information corresponding to the IDPROM in earlier Sun CPUs. The rest of NVRAM contains data corresponding to the EEPROM in other Sun CPUs. The NVRAM space can be accessed by byte, halfword, or fullword loads and stores, but the TOO control register should only be written by byte stores. The time and date information is stored in 24-hour BCD format. The addresses are:

Revision A of April 10. 1990 Chapter 6 - Device Space 45

Table 6-4 Ciock Chip NVRAM Addressing

Address Description

OxE4000000 to EEPROM data 0x.E40007D7 0x.E40007D8 to I DPROM data 0x.E40007F7 0x.E40007F8 TODcontrol 0x.E40007F9 Seconds (00 to 99) OxE4OOO7FA Minutes (00 to 59) OxE4OOO7FB Hours (00 to 23) OxE4OOO7FC Days (00 to (7) 0x.E40007FD Date (00 to 31) 0x.E40007FE Month (01 to 12) OxE40007FF Year (00 to 99)

NOTE The NVRAM space contains critical system configuration information. Altering this information could adversely affect system performance. The Timekeeper contains its own banery backup which has a worse case storage life of 11 years at 70'C, and a worse case consumption life of2.8 years at O'C. For additional infonnation see The Mostek MK48T02-15 Data Sheet.

Counter-Timer Registers The SP ARCengine 1E CPU card provides two counter-timer register pairs located at OxE6000000. Each CVUiitCi pw'Y;dcs a 20 bit wide write~ble value which is incremented at 1 microsecond intervals. When this value reaches the value in the corresponding limit register, the circuit generates an interrupt (assuming that interrupts are enabled) at level 10 for counter/timer 0, and at level 14 for counter/timer 1. Then, the counter is reset to 1 u sec. Reading the appropriate limit register clears the interrupt and the limit bits. Reading the counter register does not clear anything. Writing the limit register provides a value for the counter register to "match", and resets the counter regis­ ter to a value equivalent to one microsecond (a 1 in bit position 10). Setting a limit register to 0 causes the corresponding counter to freerun, which will generate interrupts when the counter overflows back to zero, approximately every 2 seconds. Note that bits [9:0] in all counter-timer registers are unwritable, and read back as zeroes. All values are stored in bits [30: 10], with bit 10 being the low-order bit. To generate an interrupt, for example every millisecond, you would load the value 1000 in a register, shift it left 10 bits, then store the result in the limit regis­ ter. Bit 31 in both the limit and the counter registers, is the "limit reached" bit. It is set when the value in the counter register reaches the value in the limit register. The limit reached bit in the counter register is a shadow of the limit reached bit in the limit register, reading the limit reached bit in the limit register resets both

Revision A of April 10, 1990 46 The SPARCengine IE CPU Card User's Manual

registers; writing a 0 to the limit reached bit in the limit register also resets both registers. Reading the counter register does not change either. The registers are addressed as follows:

Table 6-5 Counter/Timer Register Addressing Address Description OxE6000000 counter 0 OxE6000004 limit 0 OxE6000008 counter 1 OxE6OOOOOC limit 1

Programming Example for the The following code demonstrates how to start the counter/timer-O to interrupt Counter/fimer Register periodically with a 1/100 second interval. An interrupt handler at IU level-IO must be installed to perfonn the desired actions when this interrupt takes place. A CPU scheduler interrupt could be set up in this fashion. 1* * @(#)counter.h 1.3 89/f1J/01 Copyr 1989 Sun Micro * * Definitions for the SPARCengine IE on-board counter/timers */

#ifndefLOCORE

typedef struct counterregs { u_int comterlO; u_int limitlO; u_int comter14; u_int limitl4; ) erR_TIMERS;

#endif !LOCORE

#define OBIO_erR_ADDR OxE6000000 #define erR_ADDR OxFFFFOOOO 1* Mapped virtual address for counters */

#define COUNTER

#define erR_LIMIT_BIT Ox8()()()()()()() '* limit bit mask */ #defineCfR_USEC_MASK Ox1ffffcOO /* counterlIimit mask */ #defineCfR_USEC_SHIfT 10 1* counterllimit shift *' 1* * ML byte-offsets: read CfR_ADDR +CTR_LIM_n to reset * counterltimer n. */

#define CfR_CNT_lOOxOO #define CfR_LIM_I0 Ox04 #define CfR_CNT _14Ox08 #define CfR_LIM_14 OxOC #ifndef lint static char sccsid[] = "@(#)counter.c 1.389/09/07 Copyr 1989 Sun Micro"; #endif lint

~~ sun Revision A of April 10, 1990 ... microsystems Chapter 6 - Device Space 47

/* * Machine-dependent co1Dlter/timer routines. * * Stal"1r.clock rest&... .s tIle COlL9}ter/tLT.er5, which provide * hardc10ck interrupts to kern_clock.c. */

#include #include #include

#include #include #include

/* * Start the real-time clock. startrtclock() {*'

1* * We will set things up to interrupt every 1/100 of a second. if*' (hz != 100) panic("startrtclock");

COUNTER->lirnitl0 = ((1000000 /hz)« crR_USEC_SHIFr) & crR_USEC_MASK; /* * Tum on level 10 counter/timer interrupt. *' secclk_modc(lR_ENA_CLKIO, 0); /* end of startrtclock */

/* * Set and/or clear the desired clock bits in the interrupt * register. We have to be extremely careful that we do it * in such a manner that we don't get ourselves lost. */ secclk_mode(on. oro u_char on; u_char off;

register u_char intreg; register u_int dmruny; register int s;

/* * make sure that we are only playing w / * clock interrupt register bits */ on &= (IR_ENA_CLKI4 I IR_ENA_CLKIO); off &= (IR_ENA_CLK141 IR_ENA_CLKI0);

/* * Get a copy of current interrupt register. * turning off any undesired bits (aka 'off) */ s =sp170;

intreg = *INTREG & -(off I IR_ENA_INT);

Revision A of April 10. 1990 48 The SPARCengine IE CPU Card User's Manual

1* * Next we tum off the CLKlO and CLK14 bits to avoid any triggers. * Then we clear any outstanding clock interrupts. */ *INTREG &= -(lR_ENA_CLK141 IR_ENA_CLKIO); dummy = COUNTER->lirnitlO; /* clear counter/timer */ dummy = COUNTER->lirnit14; /* clear counter/timer */

1* * Now we set all the desired bits * in the interrupt register. * finally we can enable all interrupts. */ *INTREG 1= (intreg Ion); 1* enable flip-flops */ (void) splx(s); 1* end of seccllcmode */

Memory Error Register The SPARCengine IE CPU card uses a single parity control register located at address 0xE8000000. Bits 0[31 :8] read back as O's, and bits 0[7:0] are used as follows: 07 - Parity Error This bit is set by the hardware to indicate that a parity error has occurred. D6 This bit is set by the hardware to indicate that multiple parity errors have occurred (a parity error occurred while 07 = 1). 05 - Parity Test Setting this bit generates inverse parity. D4 - Parity Check Setting this bit enables parity checking. 03 - Parity Error 00 The hardware sets this bit to indicate that a parity error occurred in data bits 0[31:24]. 02 - Parity Error 08 The hardware sets this bit to indicate that a parity error occurred in data bits 0[23:17]. 01 - Parity Error 16 The hardware sets this bit to indicate that a parity error occurred in data bits 0[16:08]. DO - Parity Error 24 The hardware sets this bit to indicate that a parity error occurred in data bits 0[07:00]. Reading the memory error register clears it.

Interrupt Register The interrupt register is an 8-bit register in device space at OxEAOOOOOO. It enables all interrupts, causes software interrupts, and enables certain interrupts. For more on interrupts, see the chapter Interrupts. The bits are:

+§J!!! Revision A of April 10. 1990 Chapter 6 - Device Space 49

Table 6-6 interrupt Register Bits Bit Name Function DO EN.INT Enables all interrupts D1 EN.INTI Generate software interrupt level 1 02 EN. INTI Generate software interrupt level 4 D3 EN.INT6 Generate software interrupt level 6 D4 EN.INTS Enable video interrupt level S D5 EN.INT10 Enable clock interrupt level 10 D6 EN.INT13 reserved D7 EN.INT14 Enable clock interrupt level 14

EN.INT This bit enables all interrupts. When it is off, no interrupts occur. EN.INTI, EN.INT4, and EN.INT6 These bits cause software interrupts on their respective levels. The inter­ rupts caused by these bits stay active until software clears the corresponding bit. EN.INTS This bit enables video interrupt requests on levelS. When it is enabled, a level S interrupt request is sent on the rising edge of vertical retrace. To clear this interrupt, momentarily tum offEN.INTS. EN.1NT10 This bit enables clock interrupts clock interrupt requests on level 10. When these interrupts are enabled, a level 10 request is sent on the rising edge of the clock interrupt output. To clear the interrupt, momentarily tum off EN.INTIO. EN. INT 14 This bit enables clock interrupts clock interrupt requests on level 14. When these interrupts are enabled, a level 14 request is sent on the rising edge of the clock interrupt output. To clear the interrupt, momentarily tum off EN. INT 14.

EPROM The SPARCengine IE CPU card has 256KB of EPROM containing the boot monitor beginning at location OxECOOOOOO in Type-1 physical space. The EPROM is also referenced by all Supervisor Virtual addresses when the ENA_NOTBOOT bit in the System Enable Register is zero; this occurs at boot time. The boot code must initialize the MMU to at least map itself before setting the ENA_NOTBOOT bit to one. Note that the EPROM does not obey the normal mapping rules. PA[16:0] in the EPROM always come from VA[16:0]. Although VA[29:13] are processed by the MMU to select a physical address, when P A[27 :24] of that physical address select the EPROM then bits PA[23:13] from the MMU are ignored. This means that, for proper operation of the EPROM, it must be mapped one-for-one to con­ tiguous virtual pages beginning on a 256K boundary.

Revision A of April 10, 1990 50 The SPARCengiI:te IE CPU Card User's Manual

Diagnostic Output Register The diagnostic output register is a one-byte write only register located at address OxEE800000 in type 1 device space. The 8 bits are encoded to identify device or board failures. Each data bit drives a corresponding LED display bit. During selftest, the 8 LEDs provide status infonnation; see the Diagnostics chapter later in this manual.

6.6. SBus Slots SBus Slot 0 is assigned to the onboard SCSI and Ethernet interfaces. SBus slot 1 is used for frame buffer and I/O (SBus card) expansion. SBus slot 2 is reserved for future use. For detailed infonnation on the SBus, see the chapter SBus Interface in this manual.

Revision A of April 10, 1990 Chapter 6 - Device Space 51

Programming Example for the This example is merely an infinite loop through the various LED pattern values. Diagnostic Output Register It demonstrates how to access the Diagnostic register so as to produce a changing LED display. The pattern that we use is the familiar SunOS "IDLE" pattern. This causes the LEOs on the CPU board to be strobed in the familiar "cylon" display used by SunOS. !* * LED data for idle pattern of diagnostic register. *' LEDPTR 18 LEDPATCNT= 18

.seg "data" led: !LEDPAT .byte Ox7e,Ox7e .byte Ox7e.Oxbd .byte Oxbd,Oxbd .byte Oxdb.Oxdb .byte Oxdb.Oxe7 .byte Oxe7,Oxe7 .byte Oxdb. Oxdb .byte Oxdb.Oxbd .byte Oxbd,Oxbd ! endofLEDPAT .byte 0 ! LEDPTR offset in pattern

.seg "text"

set led. %15 ! %15 has address of LED pattern 1: mov LEDPATCNT -1. %g 1 ! # of LED patterns to loop through stb %gl. [%15 + LEDYfR] ! initialize LED pattern index 2: Idub [%15 + LEDPTR], %gl ! %gl gets index into LEDpanem Idub [%15 + %gl]. %g2 ! %g2 gets LED pattern subcc %gl. 1. %gl ! point to next one stb %gl. [%15 + LEDPrR] ! update pattern pointer set DIAG_ADDR. %g3 ! %g3 gets virtual address of the Diag Register stb %g2. [%g3] ! write LED pattern to LEDs bneg Ib nop b 2b nop

6.7. P2 Bus Slot A P2 Bus slot is reserved in addition to the SBus slots. This slot resides in type 1 space just as the SBus slot. This device should not be confused with the P2 Bus type 0 memory space. For implementations using the 4E Memory board the ECC registers will reside at address OxFCOOOOOO to OxFCOOOOFF. Refer to the 4E Memory board specification for details.

Revision A of April 10, 1990 52 The SPARCengine IE CPU Card User's Manual

Revision A of April 10, 1990 '7 I

Memory Management Unit

The MMU translates virtual addresses to physical addresses. In the process, it keeps track of the context, the segment and the page, and it provides memory protection and updating infonnation. Virtual memory occupies the first and last half GB of a 4 GB space. Accesses to the middle 3 GBs produce errors. Acceptable virtual memory addresses are: OxOOOOOOOO to OxlFFFFFFF, and

~toOxFFFFFFFF Note that to fall into the acceptable range, virtual address bits VA[31 :29] must be either all O's or alII's. TIle following list shows the map's capabilities:

Table 7-1 MMU Attributes

Attribute Value

Page size 8KBs Segment size 256 KBs Process size (context) 1 GB Number of contexts 8 Pages per segment 32 Number of pmegs 256 Number of page map entries 8K Number of segment map entries 32K

Accesses through the map take the following steps: The context bits are concatenated to the segment number to select an address in the segment map, which puts out an 8-bit Page Map Entry Group (PMEG). The PMEG is concatenated to the 5-bit page field of the virtual address, and these 13 bits select an address in the page map. The page map puts out 32- bits, containing 8-bits of infonnation about the page (type, privilege, etc), and 16 bits of high-order address information which actually points to a phy­ sical page.

53 Revision A of April 10, 1990 54 The SPARCengine IE CPU Card User's Manual

The physical page number is concatenated with the 13-bit physical offset from the virtual address, and this is a complete physical address. The mapping appears in the following Figure:

Figure 7-1 Memory Management Unit

VIRTUAL ADDRESS / Context / /A[31:30]/ Segment - 12 bits lpage - 5 bitsJ Physical Offset - 13 bits / , I Segment map RAM 1 PMEG , t I Page map RAM

PAGE TABLE ENTRY (PTE) I I Iv Iw Is Ix Itype Ia Im I reserved I Physical page - 16 bits I I PHYSICAL ADDRESS I Physical page - 16 bits I Physical offset - 13 bits I

NOTE For compatibility with other Sun-4 architectures, bits PAl31 :29 J are assumed to be all zero's (000) for type 0 space. and all ones (Ill) for type 1 space. The map actually outputs bits PAl28 :00J . Bits 31 through 16 of the page map entry provide the following information 7.1. Page ID bits about the page: 31 Valid bit. When HIGH, it means the page entry is valid and it allows read and execute access to the page. 30 Write access bit. When HIGH, page is enabled for Writing. 29 Supervisor access. When HIGH, only supelVisor access is allowed. 28 Don't cache. When HIGH, forces accesses to main memory instead of cache. 27 and 26 Type bits, which select device space access as follows:

Revision A of April 10. 1990 Chapter 7 - Memory Management Unit 55

Table 7-2 Page ID Bit Definitions

Bit 2' Bit 26 Type

0 0 Main memory (type 0) 0 1 UO space (type 1) 1 0 VME D16 Port (type 2) 1 1 VME D32 Port (type 3)

25 Accessed bit. When HIGH, this bit indicates that the page has been accesse-d by the CPU or DVMA. This bit does not specify whether the access was a write or a read. 24 Modified bit. This bit is set when the page is modified. 23 through 16 Reserved for future use. 15 through 0 Physical page number. These bits identify an actual physical page. They are concatenated with bits 0 through 11 of the virtual address to fOnD an actual physical address. The MMU is loaded dynamically by the kernel, which keeps track of where it puts things.

Page ID Bits Programming The following code fragment demonstrates the use of the page ID bits. In the

~~ ... __I- 0 ...... 10 ""0 ,.nft~tl"ll,.t '!JI l'ft'!JInniftllT IVlhJ.l""""" '!Ji ~""l"",.t""tt Virhl'!Jil '!JitftfrP~~ ~ntf thp .&:JAClIJ.I'.~ "'''''Q.J..I..a.,£", "'" ..,"aa.::r .... y..,...... t't'&.&.c """""' .... 'W....,&& .. ~... ~..w-~ ...... ,.., ______Diagnostic Register. Since the Diagnostic Register is in type 1 space (OBIO), we must make use of the type space bits. Furthermore, we wish to provide write access for the kernel, but not to users; hence, we must set the Valid (PG_ V), Write Enable (PG_ W), and SupelVisor Access Only (PG_S) bits in the protection fields of the page ID bits. Since type 1 (OBIO) space is not cacheable, we must also set the No Cache (PO_NC) bit of the page ID bits. #define PG_V Ox80000000 1* page is valid */ #define PG_W Ox40000000 1* write enable bit */ #define PG_s Ox20000000 1* system page */ #define PG_NC Ox} 00000oo 1* no cache bit *1

#define OBIO Ox}

DIAG_ADDR = OxDFFEEOOO ! virtual address in type} space OBIO_DIAG_ADDR = OxEE800000! physical address of Diag reg

PROT (PG_ V I PG_W I PG_S I PG_NC) TYPES PACE = OBIO «26 PGFRAME (OBIO_DIAG_ADDR» 13) DIAG_PTE = PROTITYPESPACEIPGFRAME

#defineASCPM Ox4 ! page map address space indicator (ASI)

Revision A of April }0, 1990 56 The SPARCengine IE CPU Card User's Manual

set DIAG_ADDR, %gl ! map in Diagnostic Register set DIAG_J7fE, %g2 ! phys. page # for Diagnostic Register sta %g2, [%gl]ASCPM ! put it in the page map.

7.2. Context Register Bits 0 through 2 of the context register identify the current context; these bits are appended to virtual addresses before they enter the map.

7.3. Page Map The page map is a 8K-by-32 bit RAM bank. Its 13 address inputs are fonned by concatenating the PMEG output by the segment map with the page field of the virtual address. Effectively, the PMEG index identifies one of256 sections, and virtual address bits A[17:13] select one of32 pages within that section.

Programming Example for The following program~ing example is provided simply as a guide for your pro­ U sing the Page Map Register gramming, and is not intended to be used as is. /* * pagmap.s * Copyright (c) 1989 by Sun Microsystems, Inc. *,

#define CONTEXTBASE Ox30000000 '* context reg *' #define ASCcrL 0x2 /* control space*' #define PAGTSTMAX OxOffcOOOO /* full pmeg in each of 256 segm entries *' #define PAGINCR Ox2000 /* offset between adjacent pages *' #define SEGINCR Ox40000 '* offset between adjacent segments ., *define SGSHIFi is /* LOG2(NBSG) *i #define ASCSM 0x3 /* segmen. map *' #define PG_MAP_VALID OxffOOffff /* valid r'w bits of page map ., #define TEST_PA IT Ox5a972c5a /* 3-pattem base pattern *' #define PGA_NUM Ox06 /* Page Map Address test *' #define ASCPM Ox4 /* page map ., #define PG3_NUM Ox06 /* Page Map 3 pattern RAM test ·'0 #define PGWR_NUM Ox04 /* Page Map write-write-read test·' #define PAIT_END Ox972c5a97 /* 3-pattem test finish pauern *' #define BUSERRBASE Ox60000000 '* bus error reg *' #define quiCkey Oxll /* Cntl-q: quit this test,go to next *'

/*#define FORCE_PAGMAP_ERRORS·' /*#define DEBUG_PAGMAP*,

.seg "text" ! ------ ! ! Initialize Context Reg and Segment Map for the following Page Map Tests. ! ! Polaris: Set Context to O. linearly map segment table .

.global PM_setup PM_setup: save %sp, -MINFRAME, %sp ! Preserve calling window.

set CONTEXTBASE, %14 ! Pointer to context register. stba %gO, [%14]ASCCTL ! Start with context O.

1* Linearly map the segment table from bottom to top .•, set OxOOOOOOOO. %04 ! Bottom of segment map set PAGTSTMAX. %i4 ! Last address to write.

Revision A of April 10. 1990 Chapter 7 - Memory Management Unit 57

set SEGINCR, %13 ! Address increment for adjacent ! segment map entries. 3: sri %04, SGSHIFr. %02 ! Make entri from the seg map index. stha %02, [%04] ASCSM ! Store into segment map. anp %04, %i4 ! Just stored last address? bile 3b ! If not then loop back and add %04, %13, %04 ! point to next segment map entry. 1______

For each page table entry from bottom to top: Write data to entry x. Write inverse data to entry x + 1. Verify entry x+1. Verify entry x.

Register usage: ! %10 - Test pattern. %13 - Address increment for adjacent page map entries. %14 - Address of Context register in control space. %16 - Page map entry valid bit mask. %04 - Address of page map entry being tested. %i4 - Address of last page map entry to test.

TescOb: set pagemwCtsCtxt. %00! Test descriptor text call testS ! Display text and test number. set -PGWR_NUM, %01 ! Set inverse test number. set OxOOOOOOOO, %04 ! Addr of first Page map entry. set PAGTSTMAX-PAGINCR, %i4 ! Addr oflast Page map entry. set PAGINCR. %13 ! Address increment for adjacent , -.,..,fta ...,.,.,...... :ar • t''"6'" &&&U.y ..,..... --.r .• set PG_MAP_ VAllO. %16 ! Page map entry valid bit mask. set TEST_PATI. %10 ! Test pattern source. and %10, %16, %02 ! Strip unused bits from pattern.

set 2f. %g4 ! « 2: sta %02. [%04] ASCPM ! Store pattern into pagemap RAM.

xor %02. %16. %02 ! Invert pattern. add %04. %13. %04 ! Increment to adjacent pagmap entry. sta %02. [%04] ASCPM ! Store invert pattern in pagmap RAM.

Ida [9"004] ASCPM. %01 ! Get pattern from high location. and %01, %16. %01 ! Strip WlUSed bits from pattern. cmp %01. %02 ! Data okay? be 3f nap set pagemwr_erCl1lt. %00 ! Error message text. call error$ nop 3: sub %04. %13, %04 ! Decr down to original pagmap entry. Ida [9"004] ASCPM. %01 ! Get pattern from low location. and %01. %16. %01 ! Strip WlUSed bits from pattern. xor %02. %16. %02 ! Re-invert source pattern. cmp %01. %02 ! Data okay? be 4f nap set ! Error message tex t.

Revision A of April 10. 1990 58 The SPARCengine IE CPU Card User's Manual

call errorS nop 4: call loop$end ! « nop cmp %00, quiCkey ! Skip to next test? bz 9f nop

cmp %04, %i4 ! Just tested last location? bne 2b ! If not then loop back and add %04, %13, %04 ! increment pagmap address in slot 9: !------! ! , For each page table entry from bottom to top: Write address of entry x as data into entry x. For each page table entry from bottom to top: Verify data in entry x is address of entry x.

Register usage: %13 - Address increment for adjacent page map entries. %14 - Address of Context register in control space. %16 - Page map entry valid bit mask. %04 - Address of page map entry being tested. %i4 - Address of last page map entry to test in each context

TescOc: set pagema_tsctxt, %00 ! Test descriptor text call testS ! Display text and test number. set -POA_NUM. %01 ! Set inverse test number. set OxOOOOOOOO, %04 ! Addr of first Page map entry. set PAGINCR, %13 ! Address increment for adjacent ! page map entries. set PO_MAP_ VALlO, %16 ! Page map entry valid bit mask.

set If, %g4 ! « 1: set PAGTSTMAX, %i4 ! Addr of last Page map entry.

,. Write page map address as data into each page map entry. *' 2: and %04, %16, %02 ! Strip unused bits. sta %02, [9'004] ASCPM ! Store pattern into page map RAM. cmp %04, %i4 ! Just wrote last entry? hoe 2b ! If not then loop back and add %04, %13, %04 ! increment page map addr in slot.

,. Verify that all page map entries have correct data (page table addr). *' set PAGTSTMAX. %04 ! Address of last page map entry. 3: and 9'004. %16. %02 ! Strip unused bits. Ida [%04] ASCPM. %01 ! Read pattern from high location. and %01. %16. %01 ! Strip unused bits. cmp %01. %02 ! Data okay? be 4f nop set pagema_err_txt. %00 ! Error message text call errorS nop

~), sun Revision A of April 10, 1990 .,. microsystems Chapter 7 - Memory Management Unit 59

4: call loop$end ! « nop cmp %00, quiCkey i Sicip to next test? bz 6f nop

cmp %04, %i4 ! Just tested last entry? bne 3b ! If nol then loop back and add %04, %13, %04 ! increment pagmap addr in slot. 6: !------! ! ! Pass 1: Writes 5A.2C,97 to consecutive seg map entries from bottom to top. ! Verifies entire page map. ! Pass 2: Writes 2C,97,5A to consecutive seg map entries from bottom to top. ! Verifies entire page map. 'Pass 3: Writes 97,5A,2C to consecutive seg map entries from bottom to top. Verifies entire page map.

Register usage: %10 - Test pattern. %13 - Address increment for adjacent page map entries. %14 - Address of Context register in control space. %17 - Ending test pattern. "004 - Address of page map entry being tested. %i4 - Address of last page map entry to test in each context

TescOd: set pagem3_tsCtxt,"oOO! Test descriptor text call testS ! Display text and test number. 8_. ..~'] 1U'T r.... lJI_ _ 1 , ~ _. !-•. _8_ ._. ___ '--- .,..".. .& '-"-'_'" V.I•• , 'UU.& .. "" ...... &I .... ~~ .....,., ..... &w,al."""'.&.

set BUSERRBASE, %15 ! Ponit to the bus err reg Ida [%15]ASCCTL, %12 ! clear bus error reg nop set PAGTSTMAX, %i4 ! Addr of last Page map entry. set PAGINCR, %13 ! Address increment for adjacent ! page map entries. set PG_MAP_ VALID, %16 ! Page map entry valid bits mask. set PA TI_END, %17 ! Ending pattern. set TEST_PATI, %10 ! Testpanern source.

set If, %g4 ! « 1: set OxOOOOOOOO, %04 ! Address of first Page Map entry. 2: 1* Fill the page map with 3 repeating patterns. */ mov %10, %11 ! Set up pattern for this pass. 3: and %11, %16, %02 ! Generate test patt in 02. sta %02, [%04] ASCPM ! Store pattern into pagemap RAM. cmp "004, %i4 ! Just wrote last location? be 4f nop add "004, %13. %04 ! Increment pagmap addr to next entry. srI %11, Ox8. %11 ! Shift pattern right a byte. sl1 %11. Ox18, %15 ! Duplicate low byte in high byte. or %11. %15. %11 ba 3b ! Do the next m0d3 pattern. nop

Revision A of April 10. 1990 60 The SPARCengine 1E CPU Card User's Manual

4: ,. Verify the page map with 3 repeating patterns. */ #ifdef DEBUG_PAGMAP set dbgmsg 1, %00 call printS nop #endif DEBUG_PAGMAP set BUSERRBASE, %15 ! Ponit to the bus err reg Ida [%15]ASCCTL. %12 ! clear bus error reg nop set PAGTSTMAX. %04 ! Address of last page map entry. 2: mov %10. %11 ! Set up pattern for this pass. 3: and %11, %16, %02 ! Generate test patt in 02. Ida [%04] ASCPM, %01 ! Read pattern from page map RAM. and %01. %16. %01 ! Strip \.Ulused bits. cmp %02. %01 ! Data okay? be Sf nop set pagem3_err_txt. %00 ! Pass addr of error message. call errorS ! Show error text and loop for scoping. nop

set BUSERRBASE. %15 ! Ponit to the bus err reg Ida [%15]ASCCTL. %12 ! clear bus error reg nop 5: crop 'Yt:;o4. %i4 ! Just read last location? be 4f nop add %04, %13. '1'004 ! Increment pagmap addr to next entry. sri %11. Ox8. %11 ! Shift pattern right a byte. sl1 %11. OxI8, %15 ! Duplicate low byte in high byte. or %11, %15. %11 ba 3b ! Do the next mod3 pattern. nap 4: call loop$end ! « nap cmp %00, quickey ! Skip to next test? bz Sf nop

,. Just finished writing and verifying page map for all segments for one of 3 different passes. Now see if just did last of 3 passes. If not then shift starting pattern and go back to first segment. */ #ifdef DEBUG_PAGMAP set dbgmsg2, %00 call printS nop #endif DEBUG_PAGMAP cmp %10, %17 ! Arrived at terminating pattern? bz 5f ! If so go to next test. srI %10, Ox8, %10 ! Shift pattern a byte. sl1 %10, OxI8, %11 ! Duplicate low byte in high byte. or %10, %11, %10 ba Ib nop 5: #ifder DEBUG_PAGMAP set dbgmsg3, %00 call printS

Revision A of April 10, 1990 Chapter 7 - Memory Management Unit 61

ret restore

lU&fDEBUG_PAG~ dbgmsgl: .asciz " 15 12 DEBUG: Done writing, time to read." dbgmsg2: .asciz .. 15 12 DEBUG: Done with this pattern, do nexL" dbgmsg3: .asciz .. 15 12 DEBUG: All done with 3 patterns." #endif DEBUG_PAGMAP

7.4. Segment Map The segment map is a 32-by-9 bit RAM bank. Its 15 address inputs are fonned by concatenating the contents of the context register (3 bits) to bits A[29:18] of the virtual address. Each of these addresses contains a 8-bit PMEG index number.

Programming Example for The following programming example is provided simply as a guide for your pro­ Setting the Segment Map gramming, and is not intended to be used as is. Register /* * segmap.s * copyright (c) 1989 by Sun Microsystems, Inc. *!

#define CONTEXTBASE Ox30000000 /* context reg *' #define ASCCTL Ox2 '* control space*' #define SEGINCR Ox40000 '* offset between adjacent segments *' #define SGSHIFT 18 1* LDG2(NBSG) *' #

/*#define FORCE_SEGMAP_ERRORS*' /*#define DEBUG_SEGMAP*,

.seg "text"

1-______

Polaris: (16 contextX4096 entries/context) = 65536 segment map entries.

For each segment table entry from bottom to top: Write data to entry x. Write inverse data to entry x+ 1. Verify entry x + 1. Verify entry x. ! ! Register usage: ! %10 - Tes! pattern. +~,!! Revision A of April 10, 1990 62 The SPARCengine IE CPU Card User's Manual

%12 - Context # %13 - Address increment for adjacent segment map entries. %14 - Address of Context register in control space. lf0<>4 - Address of segment map entry being tested. %i4 - Address of last segment map entry to test in each context

.global segm_tst segm_tst: save %sp, -MINFRAME. %sp ! preserve calling window

set CONTEXTBASE. %14 ! Set context to O. stba %gO. [%14] ASCcrL

set segmwctsCtxt. %00 ! test descriptor text call testS ! display text and test number set -SGWR_NUM, %01 ! set inverse test number mov 9'ogO. %12 ! Holds context number. set SEGINCR, %13 ! Address increment for adjacent ! segment map entries. 2: stba %12. [%14] ASCcrL ! Set context set OxOOOOOOOO, %04 ! Address of first segment map entry. set SEGMAPMAX-SEGINCR. %i4 ! Address of last segment map entry. set TEST_PATI, %10 ! Testpanern.

set 3f. %g4 ! « 3: and %10. SG_MAP_ V AllD, %02 ! Strip mused bits from pattern. 4: stha %02, [%04] ASCSM ! Store pattern in segmap RAM. xor %02. SG_MAP_ V AUD. %02 ! Invert pattern. add %04, %13, %04 ! Increment to adjacent segmap entry. stha %02. [%04] ASCSM ! Store invert pattern in segmap RAM.

Iduha [%04] ASCSM. %01 ! Get pattern from high location. and %01. SG_MAP_ VAUD, %01 ! Strip unused bits from pattern. cmp %01, %02 ! Data okay? #ifndef FORCE_SEGMAP_ERRORS be Sf #endif FORCE_SEGMAP_ERRORS nop set segmwr_erT_txt. %00 ! Error message text call errorS nap 5: sub %04. %13. %04 ! Deer down to original segmap entry. Iduha [%04] ASCSM, %01 ! Get pattern from low location. and %01, SG_MAP_ VAUD, %01 ! Strip unused bits from pattern. xor %02, SG_MAP_V AUD. %02 ! Re-invert source pattern. cmp %01, %02 ! Data okay? #ifndef FORCE_SEGMAP_ERRORS be 6f #endif FORCE_SEGMAP_ERRORS nap set segmwr_err_txt, %00 ! Error message text. call errorS nop 6: call loop$end ! « nop cmp %00, quit_key ! Skip to next test? bz 9f nop

Revision A of April 10, 1990 Chapter 7 - Memory Management Unit 63

anp %04. %i4 ! Just tested last location? bne 4b ! If not then loop back. add %04. %13. %04 ! Increment segmap addr in slot.

cmp %12, NCONI'EXT-l ! Just tested last context? bne 2b add %12, 1. %12 ! Increment context number. 9:

1______

For each segment table entry from bottom to top: Write address of entry x as data into entry x. For each segment table entry from bottom to top: Verify data in entry x is address of entry x.

Register usage: %12 - Context # (goes from 0 to NCONTEXT for Polaris) %13 - Address increment for adjacent segment map entries. %14 - Address of Context register in control space. "004 - Address of segment map entry being tested. %i4 - Address of last segment map entry to test in each context

TesC09: set segma_tst_txt. %00 ! Test descriptor text call testS ! Display text and test number. set -SGA_NUM. "001 ! Set inverse test number. mov %80. %12 ! Holds context number. set SEGINCR. %13 ! Address increment for adjacent ! segment map entries. set CONTEXTBASE. %14 ! Pointer to context register.

set If. %g4 ! « 1: stba %12, [%14] ASI_CTL ! Set context set Ox()()()()()()()(. %04 ! Address of first segment map entry. set SEGMAPMAX. %i4 ! Address of last segment map entry.

1* Write segment map address as data into each segment map entry. *' 2: srI "004, SGSHIFT, %02 ! Use segment map index for data. stha %02, [0/004] ASCSM ! Write data into segment map RAM. cmp 0/004, %i4 ! Just wrote last location? bne 2b ! If not then loop writing and add 0/004, %13, 0/004 ! increment segment map addr in slot.

set Ox()()()()()()()(. %04 ! Address of first segment map entry. set SEGMAPMAX, %i4 ! Address of last segment map entry.

1* Verify that all segment map entries have correct data (seg table addr). *' 3: srI %04, SGSHIFT, %02 ! Use segment map index for data. and %02, SG_MAP_VAllO, %02 ! Strip unused bits from expected data. Iduha [%04] ASCSM, %01 ! Read data from segment map RAM. and %01, SG_MAP_VAllO, %01 ! Strip unused bits from actual data. cmp 0/00 1, %02 ! Data okay? #ifndef FORCE_SEGMAP_ERRORS be 4f #endif FORCE_SEGMAP_ERRORS nop set segma_err_txt, %00 ! Error message text.

• sun Revision A of April 10, 1990 ~ microsystems 64 The SPARCengine IE CPU Card User's Manual

call errorS nop 4: call loopSend ! « nop emp %00, quickey ! Skip to next test? bz 9f nop

emp "004. %i4 ! Just tested last location? bne 3b ! If not then loop back. add "004. %13. %04 ! Increment segmap addr in slot. emp %12. NCONTEXT-l ! Just tested last context? bne 2b ! If not then loop back. and add %12.1. %12 ! increment context nwnber in slot. 9: ,------

Pass 1: Writes SA.2C.97 to cpnsecutive seg map entries from bottom to top. Verifies entire segment map. Pass 2: Writes 2C.97.SA to consecutive seg map entries from bottom to top. Verifies entire segment map. Pass 3: Writes 97,SA,2C to consecutive seg map entries from bottom to top. Verifies entire segment map.

Register usage: %10 - Test pattern. %12 - Context #I (goes from 0 to NCONTEXT for Sunrise.Cobra.Stingray) %13 - Address increment for adjacent segment map entries. %14 - Address of Context register in control space. %17 - Ending test pattern. "004 -Address of segment map entry being tested. %i4 - Address of last segment map entry to test in each context.

TesCOa: set segm3_tsctxt. %00 ! Test descriptor text. call testS ! Display text and test number. set -SG3_NUM, %01 ! Set inverse test number. set SEGINCR, %13 ! Address increment for adjacent ! segment map entries. set CONTEXTBASE. %14 ! Pointer to context register. set Oxffffff, %16 ! Segment map entry mask. set PATT _END, %17 ! End of m0d3 shift pattern. set TEST_PATT, %10 ! Test pattern source. 1: mov %gO, %12 ! Holds context number.

set 2f. %g4 ! « 2: stba %12. [%14] ASCCTL ! Set context.

1* Fill the segment map for one contextlregion with 3 repeating patterns. */ set OxOOOOOOOO, %04 ! Address of first segment map entry. set SEGMAPMAX, %i4 ! Address of last segment map entry. 3: and %10. %16. %11 ! Set up pattern for this pass. 4: and %11. SG_MAP _ VALID. %02 ! Generate write data. stha %02. [%04] ASCSM ! Write data into segment map RAM. emp %04, %i4 ! Just wrote last location?

+~!!,!! Revision A of April 10, 1990 Chapter 7 - Memory Management Unit 65

be 4f ! H so go check data. mp add %04. %13. %04 ! Increment segmap addr to next entry. srI %11. Ox8. %11 i Shift pattern right a byte. tst %11 ! Shifted all the way out? bz 3b ! H so start with first of 3 patterns. nap ba 4b ! H not then next pattern. mp 4: 1* Verify the segment map for one context/Tegion with 3 repeating patterns. *' #uoofDEBUG_SEG~ set dbgrnsg 1. %00 call printS nop #endU DEBUG_SEG~

set OXOOOOOOOO. %04 ! Address of first segment map entry. set SEGMAPMAX. %i4 ! Address oflast segment map entry. 5: and %10. %16. %11 ! Set up pattern for this pass. 6: and %11. SG_MAP_ VAUD. %02 ! Generate test data. Idur.a ['1004] ASCSM. %01 ! Read data from segment map itA}.!. and %01. SG_MAP_ VAUD. %01 ! Strip out unused bits. anp %02. %0 1 ! Data okay? #Undef FORCE_SEGMAP_ERRORS be 7f #endif FORCE_SEGMAP _ERRORS nop set segm3 _err_txt, "000 ! Pass addr of error message. call errorS ! Show error text and loop for seeping. nop 7: tY ~ -r _1'I __ ... t. ___ ... ~ __ " anp %04. %i4 ! JU5L vcnueu ICUL lU\,;ilLlUIl: be 8f nop add %04. %13. %04 ! Increment segment map address. srI %11. Ox8. %11 ! Shift pattern right a byte. tst %11 ! Shifted all the way out? bz 5b ! H so start another m0d3. nop ba 6b ! If not do the next m0d3 pattern. nop 8: call loop$end ! « nop anp "000. quiCkey ! Skip to next test? bz 9f nop cmp %12. NCONTEXT-l ! Just tested last context? bne 2b ! If not then loop back and add %12.1. %12 ! increment context number in slot.

,. Just finished writing and verifying segment map for all contexts for one of 3 duferent passes. Now see if just did last of 3 passes. If not then shift starting pattern and go back to first context. #udef*' DEBUG_SEGMAP set dbgmsg2. %00 call printS nop #endif DEBUG_SEGMAP

Revision A of April 10, 1990 66 The SPARCengine IE CPU Card User's Manual

cmp %10. %17 ! Arrived at terminating pattern? beq 9f ! If so go to next test sri %10. Ox8. %10 ! Shift pattern a byte. sll %10. Ox 18. %11 ! Duplicate low byte in high byte. or %10. %11. %10 ba Ib nop 9: #ifdef DEBUG_SEGMAP set dbgrnsg3. %00 call printS nop #endif DEBUG_SEGMAP

ret restore

#ifdef DEBUG_SEGMAP dbgmsgl: .asciz " 15 12 DEBUG: Done writing. time to read" dbgmsg2: .asciz .t 15 12 DEBUG: Done with this pattern, do next" dbgmsg3: .asciz " 15 12 DEBUG: All done with 3 patterns." #endif DEBUG_SEGMAP

7.5. Direct Access to Map Direct accesses to the segment and page maps are perfonned using asi = Ox3 for Data the segment map and asi = Ox4 for the page map. For the page map. use 32-bit accesses, and for the segment map, use 16-bit accesses. These accesses are typically used to set up and modify the map.

7.6. Initialization of the Function "UARTinit" initializes serial pons A and B by way of the MMU UART bypass. Serial port A will be set up at baud rate 9600 as the i/o device while serial port B will be set up at baud rate 1200. 1* * uartinit.s * * @(#)uartinits 1.090/03(26 * Copyright (c) 1987 by SUN Microsystems, Inc. */

#define UARTACNTL ZSBASE + 4 /* Port A Control Address */ #define ZSBASE OxFOOOOOOO 1* ZS serial port base */ #define ASCCTL Ox2 1* control space* / #define ASCSP Ox9 1* supervisor program */ #define UARTrecov 4*MSEC 1* must make delay> 1.6 uSee *; #define MSEC (CLOCK_RATE/3)/l()()()()()() 1* one microsecond worth of ticks */ #define CLOCK_RATE 25000000 1* 25.0 MHz */ #define UARTBCNTL ZSBASE 1* base address for the UART */

1* * Function "UARTinit" initializes serial ports A and B by way of the mmu * bypass. Serial port A will be set up at baud rate 9600 as the i/o device * while serial port B will be set up at baud rate l20(J, */ _UARTinit: UARTinit: save %sp, -MTNFRAME, %sp

Revision A of April 10, 1990 Chapter 7 - Memory Management Unit 67

1* • With the mmu bypass. it is possible to access the uart without • going through the mmu. This enables us to print messages on a • dumb terminal before the mmu is tested. Helpful if mmu is broken . • • Initialize., channel A at 9600 baud. set UARTACNTL, %10 ! Address of port A in control space. stba %gO, [%10]ASCCI'L ! Clear A control. set uartinita, %14 ! Address of port A uart initialization 1: Iduba [%14]ASCSP, %11 ! table in ROM. Get a byte from table. cmp %11, Oxff ! Check for end of table. be 3f ! Channel A initialized. nop ! Now initialize channel B. stba %11, [%lO]ASCCTL ! Write byte to SCC chip. orcc %gO, UARTrecov. %12 ! Set up real delay count 2: deccc %12 ! Count down for delay. bg 2b ! Delay required when talking to sec. nop ba Ib ! Read and write another byte. inc %14 ! Bump table pointer to next byte.

3: 1* • L7litialize channel B at 1200 baud . ./ set uartinitb, %14 ! Address of port B uart initialization orcc %gO, UARTrecov, %12 ! Set up real delay count 2: deccc %12 ! Count down for delay. bg 2b ! Delay required when talking to SCC. nop set UARTBCNTL, %10 ! Address of port B in control space. stba %gO, [%lO]ASCCTL ! Clear B control. 1: lduba [%14]ASCSP, %11 ! Get a byte from the table in ROM. cmp %11, Oxff ! Check for end of table. 'l& oil. nop stba %11, [%IO]ASCCTL ! Write byte to SCC chip. orcc %gO, UARTrecov, %12 ! Set up real delay count 2: deccc %12 ! COlDlt down for delay. bg 2b ! Delay required when talking to SCC. nop ba Ib ! Read and write another byte. inc %14 ! Bump table pointer to next byte. 3: ret restore

.globl _UARTBinit _UARTBinit:,. * Initialize channel B at baud rate specified by %iO. */ save %sp, -MINFRAME. %sp mov %iO. %14 ! Address of port B uart initialization orec %gO. UARTrecov. %12 ! Set up real delay count 2: deccc %12 ! Count down for delay. bg 2b ! Delay required when talking to SCC. nop set UARTBCNTL, %10 ! Address of port B in control space. stba %gO, [%IO]ASCCfL ! Clear B control. 1: lduba [%14]ASCSP. %11 ! Get a byte from the table in ROM. cmp %11,Oxff ! Check for end of table. be 3f ! Channel B initialized. nop stba %11, [%10]ASCCfL ! Write byte to SCC chip .

• sun Revision A of April 10, 1990 'V" microsystems 68 The SPARCengine IE CPU Card User's Manual

orcc %gO, UARTrecov, %12 ! Set up real delay count. 2: deccc %12 ! COlDlt down for delay. bg 2b ! Delay required when talking to SCC. nop ba Ib ! Read and write another byte. inc %14 ! Bump table pointer to next byte. 3: ret ,. restore * Initialization table for Channel A. *1 ,.uartinita: * Time constant defined by this formula: «4915200/32)/(baud) -2) * * low byte of time constant *1 #ifdef FORTH #else FORTH ,.#endif FORTH * high byte of time constant ,.*1 * Initialization table for Channel B. ,.*1 * Do not do the hardware reset again or channel A will be cleared. ,.*1 * Time constant defined by this formula: (using X16 mode above) * «4915200/32)/(baud) -2) *1 #ifdef FORTH #else FORTH #endif FORTH

#if defined(FORTH) II defined(DEMON) ,.'_baud 1200: * don't do the hardware reset again or channel A will be cleared ... ,.*1 * Time constant defined by this formula: (using XI6 mode above) * «4915200/32)/(baud) -2) *1 ,._baud9600: * don't do the hardware reset again or channel A will be cleared ... ,.*1 * Time constant defined by this formula: (using X 16 mode above) * «4915200(32)/(baud) -2) */ ,._baud19200: * don't do the hardware reset again or channel A will be cleared ...

Revision A of April 10, 1990 Chapter 7 - Memmy Management Unit 69

1**' * Time constant defined by this formula: (using X16 mode above) .. «491S2001.32}i(baud) -2}

_baud38400:*' 1* • don't do the hardware reset again or charmel A will be cleared... 1**' * Time constant defined by this formula: (using X16 mode above) * «491S200!32)/(baud) -2) iendif*' defined(FORTH) II defined(DEMON)

Revision A of April 10, 1990 70 The SPARCengine IE CPU Card User's Manual

Revision A of April 10, 1990 Boot PROM

8.1. Required Reference Reference material required for a complete definition of the SBus: Material for the Boot SBus Developer's Kit, Sun Part No. 82S-1219-xx (Sun SBus Infomation). PROM Within the SBus Developer's Kit, there is a book entitled Open PROM Too11cit User's Guide. While this book was written for use with the SPARCstation 1, it can be easily amended to use with the SPARCengine IE CPU card. Below, a collection of notes are presented that amend and add to the contents of the Open PROM User's Guide.

SPARCengine IE Notes for The following notes add or delete infonnation in the Open PROM User's Guide. the Open PROM Toolkit Use these notes to convert the User's Guide from SPARCstation 1 to SPARC­ User's Guide engine IE. In general, replace all mention of SPARCstation 1 with SPARC­ engine IE. Because the SPARCengine IE is not delivered with tape or hard disk (Le., delivered as a card, not a system) the text of the manual should be inter­ preted fOf ta'ie card level, withuut hCiid disk or floppy d:: ::; gf'.=".d=d eq'~!p~e!lt

Chapter 1 Notes Chapter 1, Page 3: At the end of the paragraph on the Forth Toolkit, add the fol­ lowing text. "A password may be required to enter the Forth toolkit"

Chapter 2 Notes Chapter 2, Page 7: In the second paragraph, add the following text: "If in the diagnostic mode, the extended selftests begin immediately, otherwise, the nomal power-on self-test sequence begins." Chapter 2, Page 8: In the first paragraph, delete the last phrase "systems internal hard disk (SCSI) drive." and replace it with the following text: " ... a hard disk drive at target 0."

Chapter 3 Notes Chapter 3, Page 14: In step 2 of Aborting a Hung System, add the text "enter password, if required." Chapter 3, Page 18: In Figure 3-2, the third device is fIst (c,u,p) or tape SCSI Tape" Also, in the Note immediately below, change "When using Ie, sd and fd ... " to "When using Ie, sd and st... "

71 Revision A of April 10, 1990 72 The SPARCengine IE CPU Card User's Manual

Chapter 5 Notes Chapter 5, Page 33: Delete the entry "Ejecting a Hoppy Diskette." Chapter 5, Page 35: Delete the "test floppy" line from Figure 5-2. Chapter 5, Page 36: Delete the section "Testing the Diskette Drive System." Chapter 5, Page 48: Delete the section "Ejecting a Hoppy Diskette." Chapter 5, Page 49: Delete the line beginning "Eject floppy .... "

Chapter 6 Notes Chapter 6, Page 52: In Figure 6-2, add the following items:

Table 8-1 Open PROM Toolkit User's Guide Figure 6-2: Additional/terns/or the SPARC­ engine 1E

Parameter Name Value Default Value

sbus-probe-list 01(dclete 23) 01 (delete 23) ttyb-its-dtr-off (Def: fake) ttya-its-dtr-off (Def: fake) sd4argets 0123456 0123456 st-targets 0123456 0123456

Chapter 7 Notes Chapter 7, Page 79: Delete all "Slot offsets" at the bottom of the page, and replace with: "Slot #1 - 400.000"

Revision A of April 10, 1990 9

Cache

9.1. Overview of the Cache To improve perfonnance, the SPARCengine IE contains a 64KB virtual address cache. The cache is implemented as a write-through, mixed instruction and data cache with a 16-byte line size. Caching is provided for type 0 (OBMEM) memory only--OBIO space and VME space memory accesses are not cached. The cache is organized as 4096 lines of 16-bytes each and is one-way set associa­ tive, with each virtual address mapping to one and orJy one possible cache line. Each cache line has a 4-byte cache tag associated with it. This cache tag is used to lookup and match virtual addresses asserted by the IV.

9.2. Organization of the As mentioned earlier, the SPARCengine 1E cache is a virtual address cache. This Cache means that cache addresses are derived directly from the virtual addresses assened by the SPARC IV. Indices for the cache tags, cache lines, and the indivi­ dual bytes within a cache line are extracted as fixed fields within a 3D-bit virtual address. The cache address decoding of virtual addresses is given in the figure below.

Figure 9-1 Cache Address Decoding o/Virtual Addresses

3 3 2 1 1 1 o 9 6 5 4 3 o +------+ I Unused I Tag Id I Line t I Byte t I +------+ 2-bits 14-bits 12-bits 4-bits

o Tag Id: [0 .. 16383] o Line t: [0 .. 4095] o Byte t: [0 .. 15] o Cache Size: 4K lines * 16 bytes/line 64KB

There is a 4-byte cache tag assoCiated with each data line. The fonnat of a cache tag is given in the figure below.

73 Revision A of April 10, 1990 74 The SPARCengine IE CPU Card User's Manual

Figure 9-2 Cache Tag Format

3 2 2 22211 1 1 1 5 4 2 1 098 6 5 2 1 o +------+ I Unused I CIO IWISlvl Unused I Cache Tag Id I Unused I +------+ 7-bits 3-bits 3-bits 14-bits 2-bits

CIO - Context 10 W - Writeable/Read-Only S - Supervisor Access Only/User Access V - Valid/Invalid entry

If an accessed page is not a supervisor-access-only page (if the "s" bit is not set), then, if there is a cache entry such that the cache tag id and the context id match those of the accessed page, a cache hit occurs. If the accessed page is supervisor-access-only, the context id is not checked. Because of this, the kernel mode segments should be identical in each context.

9.3. General Operation It is possible to map a physical page to two or more distinct virtual addresses. Considerations This condition is known as aliasing. A physical address that is thus aliased could result in data from the same physical address appearing in two or more cache lines. This situation is not detected by the hardware. 1bere are two methods for avoiding this problem in software. TIle first, and easi­ est method is to set the "Don't Cache" bit in each Page Map Entry that aliases the physical page. The second method requires that all virtual addresses must be identical in bits A[15:12]. This is equivalent to saying that the virtual addresses of the aliased physical page must be equal, modulo 64K. If this guideline is fol­ lowed, each virtual address that aliases a physical page will map to the same cache line. Alternate accesses to the aliasing virtual addresses will result in invalidation and refilling of the cache line from the same physical address. The hardware automatically invalidates a cache line when a cache miss occurs on a write operation. This insures that the cache and memory remain consistent.

Direct Virtual Memory Access The SPARCengine IE does not provide a hardware mechanism for maintaining (DVM A) consistency between memory and the cache when DVMA writes to memory take place. This means that, after DVMA is performed to a buffer in memory, it is possible that stale data may reside in the cache. An attempt by the SPARC IV to read from this memory will produce erroneous results. There are two ways to avoid this problem. The first method is to set the "Don't Cache" bit in the Page Map Entry that maps the DVMA memory buffer. The alternative method requires one to flush all references to the DVMA memory buffer from the cache.

Revision A of April 1D, 1990 Chapter 9 -Cache 75

Multi-processor Cache No hardware support exists on the SP ARCengine IE to provide cache coherency Coherency in a shared memory multi-processor environment. The mechanism is provided to un-cache pages shared among severai processors in a multiprocessing configuration, however. Please refer to the chapter on Memory Management Unit for bit assignments of the Page IV bits. The cache can be enabled or disabled by setting or clearing (respectively) the 9.4. Cache Programming appropriate bit in the System Enable Register. Examples Enabling the Cache .seg "data" _enablereg: .byte 0 ! a software copy of the system enable register

#defineENA_CACHE Oxl0 ! enable cache bit field #defineENABLEREG Ox40000000 ! address of system enable register in ASCCTL space #defineASI_crL Ox2 ! control space

.seg "text" mov ENA_CACHE.q~ mov 'fOpsr. qoa3 or qoa3. PSR_PIL, %gl ! spl{) high to lock enable register update mov %g 1. %psr nop;nop ! psrdeiay set _enablereg. %01 ! address of softwL~ copy of system enable register Idub [qoal]. %gl ! %gl gets software copy set ENABLEREG. Qoa2 ! hardware address of system enable register bset Q~.%gI ! tum on "enable cache" bit stb %gl. [Qoal] ! update software copy stba %gl. [%o2]ASCCI'L ! enable cache mov %03. %psr ! restore psr nop;nop ! psrdelay

Disabling the Cache .seg "data" _enablereg: .byte 0 ! a software copy of the system enable register

#defineENA_CACHE OxlO ! enable cache bit field #defineENABLEREG Ox40000000 ! address of system enable register in ASCCTL space #defineASCCfL 0x2 ! control space

.seg "text" mov ENA_CACHE. Q~ mov %psr.o/oa3 or Qoa3. PSR_PIL, %gl ! splO high to lock enable register update mov %g 1. %psr nop;nop ! psr delay set _enablereg. Qoal ! address ofsoftware copy of system enable register Idub [o/oal], %gl ! %gl gets software copy set ENABLEREG, %02 ! hardware address of system enable register heir %00, %g 1 ! tum off "enable cache" bit stb %gl, [%01] ! update software copy stba %gl, [%02]ASCCTL ! enable cache mov o/oa3, %psr ! restore psr nop;nop ! psr delay

Revision A of April 10, 1990 76 The SPARCengine IE CPU Card User's Manual

Flushing In this section, we will show how to flush a page, a segment, and a whole context from the virtual address cache. Note that, before the cache can be flushed, the cache must be first disabled. See the section on enabling and disabling the cache for more how this is done.

Page Flush Below we demonstrate how to flush a page from the virtual address cache.

Flush a page from the cache. To flush the page containing the argument virtual address from the cache we hold the bits that specify the page constant and issue a store into alternate space command for each line of the cache. Since the match part of the address is larger we . have less lines to cycle through. We increment the lower bits ! of the address by V AC_LINESIZE to cycle through lines of the ! cache. ! ! v8C-Plgeflush(v) ! addr_t v;

#define V AC_LINESIZE 16 ! 16 bytes per cache line #define V AC_PGLINES 512 ! mmu-pagesize(8192) / VAC_LINESIZE #define PGSIllFr 13 ! log2(mmu-pagesize) #defineNBPG 8192 ! # bytes per mmu-page #defineASCFCP OxD ! flush cache page

_ v8C-Plgeflush: set VAC_LINESIZE, %i5 set V AC_PGLINES, %il sri %iO. PGSHIFr. %iO ! mask off 10 bits sll %iO. PGSHIFr, %iO

mov NBPG/16. %)0 ! 512 add %10, NBPG/16, %11 ! 1024 add %11. NBPG/16. %12 ! ... add %12, NBPG/16. %13 add %13, NBPG/16. %14 add %14, NBPG/16, %15 add %15. NBPG/16, %16 add %16, NBPG/16, %17 add %17, NBPG/16, %00 add %00, NBPG/16. %01 add %01. NBPG/16, %02 add %02, NBPG/16, %03 add %03, NBPG/16, %04 add %04, NBPG/16, %05 add %05, NBPG/16. %i4 sub %10. %i5. %i3 ! NB PG/16 - lil'lesize add %iO, %i3, %iO ! page addr + 512 - 16 1: sta %gO, [%iO]ASI_FCP sta %gO, [%iO + %IO]ASCFCP sta %gO, [%iO + %l1]ASCFCP sta %gO, [%iO + %12]ASCFCP sta %gO, [%iO + %13]ASCFCP sta %gO, [%iO + %14]ASCFCP sta %gO, [%iO + %15]ASCFCP sta %gO, [%iO + %16]ASCFCP sta %gO, [%iO + %17]ASCFCP sta %gO, [%iO + %oO]ASCFCP sta %gO, [%iO + %ol]ASCFCP

+~!!.t!! Revision A of April 10, 1990 Chapter 9 - Cache 77

sta %gO, [%iO + %o2]ASCFCP sta %gO, [%iO + %o3]ASCFCP sta %gO, [%iO + %o4]ASCFCP sta %gO, [%iO + %o5jASCFCP sta %gO, [%iO + %i4]ASCFCP subcc %i1. 16, %i1 ! decrement loop count bg Ib ! are we done yet? sub %iO, %i5, %iO ! generate next match address ret restore

Se~ent~ush . Below we demonstrate how to flush a se~ent from the cache. ! ! Flush a segment from the cache. ! To flush the argument segment from the cache we hold the bits that ! specify the segment in the address constant and issue a store into ! alternate space command for each line of the cache by incrementing ! the lower bits of the address by VAC_LINESIZE (cache line size - 16). ! ! vac_segflush(v) ! addr_t v;

Ndefine VAC_SIZE ! size of the cache (64KB) 'define V AC_LlNESIZE ! 16 bytes per cache line 'define V AC_NUNES ! • of lines in the cache (4096) .definePMGRPSHIFT ! pageshift + segment shift .defineASCFCS ! flush cache segment

_ vac_segflush: set (VAC_SIZE/16), %10 ! cachesize I # of steps in loop set VAC_LINESIZE, %i5 set VAC_NLINES. %il ! nlines to flush I # steps in loop

srI %iO. PMGRPSHIFf. %iO ! mask off 10 bits sl1 %iO. PMGRPSHIFf, %iO

! ! preload a bunch of offsets ! A void going through sequentially by flushing ! 16 lines spread evenly through the cache. ! add %iO, %10, %iO sub %iO, %i5, %iO ! base address + cachesize - linesize add %10, %10, %11 ! cachesize/16*2 add %11, %10, %12 ! cachesize/16*3 add %12. %10. %13 ! ... add %13, %10, %14 add %14, %10, %15 add %15, %lO, %16 add %16, %10, %17 add %17, %10, %00 add %00, %lO, %01 add %01. %10, %02 add %02, %10, %03 add %03, %10. %04 add %04, %10. %05 add %05. %10. %i4 1: sta %gO. [%iO]ASCFCS sta %gO, [%iO + %IO]ASCFCS sta %gO, [%iO + %11 ]ASCFCS

Revision A of April 10, 1990 78 The SPARCengine.1E CPU Card User's Manual

sta %gO, [%iO + %12]ASCFCS sta %gO, [%iO + %13]ASCFCS sta %gO, [%iO + %14)ASCFCS sta %gO, [%iO + %15)ASCFCS sta %gO, [%iO + %16]ASCFCS sta %gO, [%iO + %17)ASCFCS sta %gO, [%iO + %oO]ASCFCS sta %gO, [%iO + %ol]ASCFCS sta %gO, [%iO + %o2]ASCFCS sta %gO, [%iO + %o3]ASCFCS sta %gO, [%iO + %o4)ASCFCS sta %gO, [%iO + %o5]ASCFCS sta %gO, [%iO + %i4]ASCFCS subcc %il, 16, %i1 ! decrement loop count bg Ib ! are we done yet? sub %iO, %i5, %iO ! generate next address ret restore

Context Flush Below we demonstrate how to flush a context from the cache. ! ! Rush a context from the cache. ! To flush a context we must cycle through all lines of the ! cache issuing a store into alternate space command for each ! line whilst the context register remains constant. ! We'll start at the end and work backwards to use only .! one variable for the loop and test. ! void ! vac_ctxftushO ! _vac_ctxftush:

Ndefine V AC_SIZE Oxl()()()() ! size of the cache (64KB) #define VAC_LlNESIZE 16 ! 16 bytes per cache line NdefineASCFCC OxE ! flush cache segment

set (VAC_SIZEl16), %10 ! cachesize / number of steps in loop set V AC_LINESIZE, %i5 ! ! preload a bunch of offsets ! Avoid going through the cache sequentially by flushing ! 16 lines spread evenly through the cache. ! sub %10, %i5, %iO ! cachesize/16 - linesize add %10, %10, %11 ! cachesize/16*2 add %11, %10, %12 ! cachesize/16*3 add %12, %10, %13 !... add %13, %10, %14 add %14, %10, %15 add %15, %10, %16 add %16, %10, %17 add %17, %10, %00 add %00, %10, %01 add %0 I, %10, %02 add %02, %10, %03 add %03, %10, %04 add %04, %10, %05 add %05, %10, %i4 sta %gO, [%iO]ASCFCC 1: sta %gO, [%iO + %IO]ASCFCC

Revision A of April 10, 1990 Chapter 9 - Cache 79

sta %gO. [%iO + %l1]ASCFCC sta %gO. [%iO + %12]ASCFCC sta %gO. [%iO + %13]ASCFCC sta %gO. [%iO + %14)ASCFCC sta %gO. [%iO + %I5]ASCFCC sta %80. [%iO + %16]ASCFCC sta %gO. [%iO + %17]ASCFCC sta %gO. [%iO + %oO]ASCFCC sta %gO. [%iO + %ol]ASCFCC sta %gO. [%iO + %o2]ASCFCC sta %gO. [%iO + %o3]ASCFCC sta %gO. [%iO + %o4]ASCFCC sta %gO. [%iO + %oS]ASCFCC 518 %gO. [%iO + %i4]ASCFCC subcc %iO. %i5. %iO ! generate next address bge.a Ib ! are we done yet? sta %gO, [%iO]ASCFCC ret restore

9.5. Cache Flush The cache flush operations provide a means of flushing lines from the cache, Operations based on matching criteria. When a line is flushed, if the line is valid the valid bit is reset. Cache flush operations require the following conditions: D[31 :00] must be all zeroes. No MMU protection check is done, and no update is performed on MMU accessed of modified bits. The SP ARCengine 1E CPU card provides cache flush match criteria for contexts, pages: and segments, The following sectioras describe each:

Rush Cache Line based on To flush all references to a context from the cache: Context Match 1) Store the context that you wish to flush in the context register. To do this, perfonn a byte store into the context register (asi = Ox2, A[31 :28] = Ox3). 2) Issue a fullword "store into alternate space" instruction with asi =0xE, and D =OxO, to every combination of addresses between A[15:4] =OxO to A[15:4] = OxFFF. This requires starting with A[l5:4] =OXO, then incre­ menting A[15:4], and issuing a new "store into alternate space" instruction. Repeat until A[15:4] = OxFFF. flush Cache Line based on Page To flush all references to a page from the cache: Match 1) Store the context that you wish to flush in the context register. To do this, perfonn a byte store into the context register (asi =Ox2, A[31 :28] =Ox3). 2) Issue full word "store into alternate space" instructions with asi =OxD, A[31:12] = the page you want to flush, and D = OxO, to every combination of addresses between A[II:4] =0 to A[II:4] =OxFF. This requires starting with A[ 11 :4] = OxO, incrementing A[ 11 :4] by one, and reissuing the instruc­ tion. Repeat until A[11 :4] =FF.

Revision A of April 10, 1990 80 The SPARCengine IE CPU Card User's Manual

Flush Cache Line based on To flush all references to a segment from the cache: Segment Match 1) Store the context that you wish to flush in the context register. To do this, perfonn a byte store into the context register (asi =Ox2, A[31 :28] =Ox3). 2) Issue fullword "store into alternate space" instructions with asi =OxC, D = OxO, and A[29: 18] =the segment you want to flush, to every combination of addresses between A[15:4] =OxO to A[15:4] =OxFFF. This requires starting with A[15:4] =OxO, incrementing A[15:4], and reissuing the instruction. Repeat until A[15:4] =0xFFF. A[17:16] don't matter.

9.6. Additional Thoughts The cache provides 4K addresses, and each of these addresses accesses a cache , 'line' '. Each line contains 4 bytes of control information, called a "cache tag' , , and 16 bytes of data. Each cache tag contains a field that corresponds to . VA[29:16]. This is called a "cache tag ID". When the processor issues a memory address, the cache uses bits VA[15:4] to address one of the 4K locations in its memory array. It compares bits VA[29:16] to the cache tag ID. The cache tag 10 field contains VA[29:16] from a prior memory access. If they match, it is a hit. The cache provides the w, s, and v bits, and the context, plus the data byte(s) requested by the processor (1, 2, or4 bytes, depending on whether the access was a byte. h~lfword. or fullword access).

If bits VA[29: 16] are not identical to the corresponding bits from the cache tag ID field, it is a miss. The system goes to memory for the required data, and updates the entire cache line with the contents of (the corresponding locations) in memory. Note that the cache fills the line from memory and provides the byte(s) requested by the CPU simultaneously. By the time the CPU issues a subsequent request for adjacent memory byte(s), they should be already in the cache. A cache tag has the following format: 31 25 24 22 15 2 0000000 Cache tag ID (V A[29: 16])

w = 1 means write access is allowed. The w bit is copied from the MMU when the cache line is filled. s = 1 means only supervisor access is allowed. The s bit is copied from the MMU when the cache line is filled. v = 1 means the cache line is valid. CID is the context. The cache tags must be initialized by software before the cache is enabled. To do this, clear the valid bit of every cache line. Do fullword stores of 0 into (ASI =2, A[31:28] =Ox8, A[15:4] =OxO to OxFFF). Note that to initialize the entire cache, you must do the full range of accesses where A[15:4] =OxO to OxFFF.

Revision A of April 10. 1990 10

Diagnostics

10.1. Required Reference Reference material required for a complete definition of the SP ARCengine 1E Material for the on-board diagnostics: Diagnostics PROM User's Guide, Sun Microsystems, Inc., 1986. Sun Part No. 800-1736-xx

10.2. Diagnostic LED LEDs 0 through 4 display the number of the test that is running. LEOs 0 uu'Ough Interpretation 3 display the first hex digit, and LED 4 displays the least significant bit of the second digit. If a test encounters an error and enters a scopeloop, the test number remains displayed. LED 5 is the heartbeat; after selftest, it blinks on and off to indicate that the CPU

is processing instructions. If it remains either ON or OFF j the CPU is hung. LED 6 ON indicates an exception class error. LED7 ON indicates an error. During a typical error, LEDs 0 through 4 shouid also display the test number. After selftest (but before unix boot). all LEDs should be OFF except LED 5, the heartbeat. After unix boot, the LEDs will display a "converging/diverging" pat­ tern. Refer to the Sun PROM User's Manual for further information.

81 Revision A of April 10, 1990 82 The SPARCengine IE CPU Card User's Manual

Figure 10-1 LED Light Location (CPU Backside)

J H C 00000000000000000000000000000000 gggggggggggggggggggggggggggggggg~~ C8JEJ~~[3S(3[3(3 000000000000000000000000 B- g EI- P 0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0°0° - - 000000000000000000000000 181 181 181 181 0- (EJ

G. g ;;1£1 . 121 goo~=.i {l~~ ~ ~~ ~ 0 181 ~~.~~~ ~~~ ~t I8l I ~ t8J g!..!!: oooo~oooo~ooooooooooo~oooooooo o~oooooo OOIOOOIOOOI·~OOloo~g ~ooooooooooooo;:oooooooooooooo0C8:10oo0C8:J00& =181 :: ~ =181 :: ~ g a..:::::..t ..." --- _. -.. 0 D 0 0 .nooo.- 000 - 000 _ 000 _ 00 ~ R =181 =181 =181 =C8J ~ ~ ~ ~oo~~oooovvo~~ 0000 ~ g o : 0 III ~ ~~O ~ c g~gggg~ggggggg ~gggggggggggg~ ~. i 000000000000000 000000000000000 ~ ~ ~ 0 ggg 11 oggg gggg&~~gggg u u c:g go~ C8l C!:!l1!!!J 0 8 000 " I 000 0000 0000 -- ~ oc- 000 000 000091 0000 0 000 0 0 ggg S ggg ggggl!i ,ggggrgl - 0 0 gogOgoO IIi 0 8 EI 0 i ggg ~ I ggg ggggo- -ogggg g 0 000 000 000000000000000 A O~ 000000000000000 000000000000000 U 000000000000000 000000000000000 . _ i gg ~ r;;;;"I~ 000000000000000 oooooooooooooo~ I 00 ~~ AC ~O 00000 ~vg t8J1~ 00000 If='"' s - 0- 0 0181 00000 0 00000 0 0 000 ° 0 0 0 0 0 0 0 0 °0°000°0000 00000 0 0 0 00000 0000000 0 0 o

SOLDER SIDE

2 3 4

Revision A of April 10, 1990 Chapter 10 - Diagnostics 83

Figure 10-2 LED Ught Diagnostic Table

LEDs What the System is Doi.,ag What Mill"t Be Bad If I .=ON,o=OFF When These LEDs Are CycUng This Intlkation Sttqs On I u , ----A1UI LED- 617 U g hts • • • • • • • • A taet sets LEns to this stale CPU or PROMs b.t or +SVDC is low • 0 0 0 0 0 0 0 Test 0101 checks PROM checksum CPU Board (Boot PROM) 0 • 0 0 0 0 0 0 Test 0102 chects UDVMA enable regista' CPU Board • • 0 0 0 0 0 0 Test Ox03 checb UDVMA map CPUBoatd 0 0 • 0 0 0 0 0 Test 0104 cllec:ks the context regista' CPU Board (MMU) • 0 • 0 0 0 0 0 Test OXOS. psforms segment map tests CPU Board (MMU) 0 • • 0 0 0 0 0 Test 0106 checb page map RAM CPU Board (MMU) • • • 0 0 0 0 0 Test 0107 performs software traps test CPU Board (IU) 0 0 0 • 0 0 0 0 Test Ox08 performs interrupt register test CPU Board I • 0 0 • 0 0 0 0 Test Ox09 perfOIJDS software inIarupts test CPUBoaid ° • 0 • 0 0 0 0 Test OxOA performs TOD clock interrupt test CPU Board • • 0 • 0 0 0 0 Test OxOB checks video memory CPU Board ° 0 • • 0 0 0 0 Test OXOC performs limited main memory tesll CPU or Memmy Board • 0 • • 0 0 0 0 Test O1OD performs MMU JUd/write ~ts CPU Board (MMU) 0 • • • 0 0 0 0 Test O1OE perfODllS MMU write to potecred CPU Board (MMU) page test --- • • • • 0 0 0 0 Test OxOF perfonns MMU read invalid pap tests CPU BomS (MMU) 0 0 0 0 • 0 0 0 Test 0110 performs MMU write invalid page test CPU Board (MMU) • 0 0 0 • 0 0 0 Test Oxll perfonns main memory timeout test Memory Board ° • 0 0 • 0 0 0 Test Ox 12 performs COIlIrOl space timeout test CPU Board • • 0 0 • 0 0 0 Test Ox13 performs range error tat CPU Board ° 0 • 0 • 0 0 0 Test Ox14 performs size error tat CPU Board • 0 • 0 • 0 0 0 Test OxIS tests ECC circuits Memory Board ° • • 0 • 0 0 0 Test Ox16 tests cache tag memory CPUBoIId I • • • 0 • 0 0 0 Test Ox 17 tests cache data manory CPU Board ° 0 0 • • 0 0 0 Test Ox18 is c.che write}read hit/miss verify test CPU Board • 0 0 • • 0 0 0 Test Ox19 is cache write/readlllush verify test CPU Board ° • 0 • • 0 0 0 Test OxIA nms main memory tats Memory Board ° 0 0 0 0 0 0 • Self-tests have found an error CPU or Memory Board 0 0 0 0 0 0 An exception class en'CI' is foUDd CPU or Memory Boatd • ° , 0 0 0 0 0 • 0 Self-tests done. UNIX in boot state CPU or Memory Board ° or monitm quiescent (LED is blinking)

• => o=> o=> 0 o¢= O¢= o¢= • •• converging/diverging" pattern UNIX running okay

Revision A of April 10, 1990 84 The SPARCengine IE CPU Card User's Manual

10.3. Power Up Diagnostics Looking along the top edge of the SPARCengine IE from the left to the right one can see the SCSI, KEYBOARD, ETHERNET, SERIAL B, and SERIAL A con­ nectors which are all labeled accordingly on the Front Panel. These are all keyed connectors designed to prevent misinscrtion. Each connector can be hooked up as desired; to power up the board with the minimum number of cable connections, there are two options: 1. Connect SERIAL A via a cable to a tenninal. 2. With a monitor and a Frame Buffer board present, connect KEYBOARD via a cable to a keyboard. Note: When first bringing up the board, option I MUST be used to receive the output of the extended selftests (through serial port A). If option 2 is used then the results of the extended selftests will not be reported, and if there is a failure a scope loop will be entered and control will not be passed to the monitor and key­ board. Use of option 1 in conjunction with option 2 is recommended. Note: When in autoboot mode a SCSI disk or ethernet should be attached. Once the SP ARCengine 1E is inserted into a backplane and the cables connected, power can be applied to the SPARCengine IE by turning on the backplane's power source. Since the diagnostic mode is enabled at the factory, the extended selftests will immediately begin execution. See the Open Boot PROM Toolkit User's ManUilI for a description of how to use the extended selftests. If everything is working correctly, then the eight LED lights located under SERIAL A will begin flashing as board begins running its diagnostics. IF no LED comes on, or if all the LEOs come on and stay on, then something is wrong. NOTE: 110 for the extended selftests is through serial port A (ttya). Extended selftests may be disabled from the monitor by: setenv diag-switch? false When the extended selftests have completed the Open PROM power-up sequence commences.

Revision A of April 10, 1990 1 1 ~~

System Reset and the Reset Switch

11.1. Five Sources for a Cl Power-on Reset. System Reset Cl User Reset (initiating the Reset Switch).

Cl Watchdog Reset.

o Software Reset.

Cl VMEbus Reset.

The Power-On Reset On power-up, the SPARCengine 1E CPU Board generates a system reset on the VMEbus for a minimum of 200 ms ifit is configured as the slot 1 (VMEbus sys­ tem controller) CPU. All SPARCengille 1E CPUs on the VMEbus are reset in a system reset.

The User Reset The user reset is activated by the reset toggle switch. If there are multiple SPARCengine 1E CPU cards in the backplane, toggling the slot 1 CPU wiil gen­ erate a VMEbus reset to reset all other non-slot 1 SPARCengine IE CPUs.

The Reset Switch The Reset switch is the only switch on the SPARCengine IE CPU card. The switch is located on the front panel of the card, labeled Reset. The switch rests in a null position. When it is activated, a reset procedure is activated that is per­ formed by the VME Gate Array. For additional information, see the chapter VMEbus Interface in this manual.

The Watchdog Reset The watchdog error is the result of a doule bus error a~ detected by the SBus Controller on a SP ARCengine 1E CPU. If this occurs, an on-board reset is gen­ erated and if it is configured as the slot 1 CPU, a VMEbus reset will be generated to reset all other non-slot 1 SPARCengine IE CPUs.

The Software Reset As the name implies, this reset is generated by a SPARCengine IE CPU through a software trap which generates an on-board reset. If the board is configured as the slot 1 CPU, a VMEbus reset will be generated to reset all other non-slot 1 SPARCengine IE CPUs.

85 Revision A of April 10, 1990 86 The SPARCengine IE CPU Card User's Manual

The VMEbus Reset The incoming VMEbus reset will generate an on-board reset to all SPARCengine lECPUs.

11.2. Local Reset of Non­ If there are multiple SP ARCengine 1E CPU cards in the VMEbus, resetting a Slot 1 CPUs non-slot 1 CPU card results in a local reset of that CPU only, not a system reset

Revision A of April 10, 1990 12 '.' >-~~. • ••• ...... , .... : .. ~~~...... : :

MUltiprocessing Capabilities of the SPARCengine IE

The SPARCengine IE is designed to run in a multiprocessor environment using the Mail Box Interrupt, local Read-Modify-Write (RMW) with a Bus Locker and VME RMW facilities. Local memory is dual-ported, accessible from the VMEbus in a t MB window. This window should not be cached. The following text is an introduction to the mUltiprocessing capabilities of the SPARCengine 1E. The details of the VMEbus are defined in the chapter entitled "VMEbus Interface". NOTE At this time, SunOS 4.0.3e does not support mUltiprocessing capabilities. The hardware capability described below is not supported by the SunOS.

12.1. Mail Box Interrupt The Mail Box Interrupt is used to allow other VMEbus drivers to interrupt the SPARCengine IE by accessing in byte or word to a pre-programmed location in the A 16 address space (32-bit accesses are not allowed). This location is pro­ grammed via iDeMaii Box Register. The SPARCeiigiiie IE iCSiNudg to ta'llg access by returning a DT ACK. If the Enable bit is set, an on-board interrupt level 13 is generated to the CPU. The CPU then jumps to the Mail Box Interrupt service routine and executes the program there. Programming the location monitor consists of setting up the comparison bits A15,A14 and A3,A2,Al and the Mail Box enable bit in the Mail Box register. This selects one out of eight 16-bit words (or one out of sixteen 8-bit words) in one of the four 16K blocks of the address range. Only 8-bit accesses to the Mail Box Register are allowed. Since the address mapping of the location monitor compares only address bits 15,14 and 3,2.and 1, (address bits 13 to 4 are not used), the location monitor is mirrored 1023 times in the selected 16K range. The user is advised to use addresses within address bits a 13 to a4 set to zero to prevent confusion. Due to the existing architecture of the Mail Box Interrupting scheme, only one pending inlerrupt is slored in the Mail Box Register at a time. Further interrupts are not recorded and will not be acknowledged until the CPU clears the interrupt pending flag by reading the Mail Box Register.

87 Revision A of April 10, 1990 88 The SPARCengine IE CPU Card User's Manual

12.2. Bus Locker A VME Bus Locker is provided to allow the SPARCengine 1E CPU to perfonn a non-disturbed RMW cycle to its local memory because the SBus RMW cycle is non-atomic. Before doing so, the CPU will set the Bus Locker flag in the Bus Locker Register to instruct the VME gate array to acquire the VMEbus and keep the Bus Busy signal asserted. This action will lock the VMEbus and no other VME master can gain access to the VMEbus and indirectly access the local memory of the SPARCengine 1E. When the VMEbus has been acquired, the OWN flag in the Bus Locker Register is set. By reading this flag, the CPU can make a decision whether or not to start the RMW cycle to it's local memory. When the RMW transaction is completed, the CPU should unlock the bus by clearing the Bus Lock Hag in the Bus Locker Register. NOTE This process has to be performed very fast to reduce the latency of the VMEbus. Refer to section 13.12 for implementation details.

12.3. Possible RMW The SP ARCengine I E is capable of performing RMW cycles across the Deadlock Condition VMEbus. A deadlock might occur when there is another bus master who is Across the VMEbus already on the bus, trying to do a RMW access to the local SPARCengine IE CPU memory. Since the SPARCengine IE CPU cannot give up the local bus during the RMW cycle, the VMEbus master cannot finish his RMW transaction. At the same time, the SPARCengine 1E CPU can_not access tile VMEbus. This deadlock situation results in a time-out l)us error on the SPARCengine 1E CPU. In order to recover from the bus error, a re-run of the RMW must be done in software.

12.4. Procedure for The SPARCengine I E is capable of running as a VMEbus slot one board or a Enabling non-slot one board. To setup multiple SPARCengine IE's in the same VME Multiprocessor card cage it is necessary to properly set the board jumpers and setup the Open Operation PROM so that VME addressing errors and "probes" to the VME bus from dif­ ferent SPARCengine IE's don't overlap. Refer to the Boot PROM section of the manual for more details on the forth monitor in the prom. The following steps are required to run multiple SPARCengine IE CPUs in the same VME backplane: 1. The SPARCengine IE placed in slot I must have it's VME slot I jumper installed. 2. The SPARCengine IE's placed in other slots except I must have their VME slot 1 jumper removed. 3. If the VMEbus backplane has a special Sun P2 Bus for ECC memory boards, then make sure the extra SPARCengine I E CPU cards are not placed in these slots. The P2 Bus slots can only be used by the slot I SPARCengine IE CPU. 4. Each SPARCengine IE CPU should be set to "not autoboot". This is accom­ plished by setting the "autoboot" parameter in the boot prom to false. The pro­ cedure for setting this parameter is as follows: If in unix, fasthalt the system to get to the boot prom prompt ">" then press "n" to get to the forth system. Enter the command "SETENV AUTO-BOOT? FALSE", This disables the autoboot

Revision A of April 1O. 1990 Chapter 12 - Multiprocessing Capabilities of the SPARCengine IE 89

feature. This procedure must be done for each SP ARCengine IE CPU in the system.

5. Each SPARCengine IE CPU should be set to a different slavemap. In any event no cpu can have it's VME=slavemap set to O. There are 16 VME-slavemaps o thru 15. You can set the first cpu to 1, the second to 2, etc. While in FORTH (as in step 4 above) enter the following command" 1 VME-slavemap!" for the first SPARCengine IE CPU, then go to the second SPARCengine IE CPU and enter "2 VME-slavemap!", etc. When all cpu's have been setup, enter "boot" to boot the default boot device on each cpu.

Revision A of April 10, 1990 90 The SPARCengine IE CPU Card User's Manual

Revision A of April 10, 1990 VMEbus Interface

13.1. Required Reference Reference material required for a complete definition of the VMEbus Interface: Material for VME VMEbus Specification Revision e.l, October, 1985. Also known as: IEC 821 BUS and IEEE PI014/D1.2. SBus Developer's Kit, Sun Part No. 825-1219-xx NOTE: Within the SBus Developer's Kit, there is a book entitled Open PROM Toolkit User's Guide. The additional notes in the chapter of this manual entitled Boot PROM are required to make it applicable to the SPARCengine IE.

13.2. Features of the o A32/A24/AI6 Master (Sun-4 VME Device) and A24/A32 Slave DVMA SPARCengine IE device as SBus DMA device. VMEbus Interface o Single-level and round-robin arbitration with bus arbiter timer. o VME Interrupt handler with lACK Daisy Chain Driver.

o Clock driver. o System resetter.

o Fast bus arbitration by supporting early release enabling bus arbitration con­ current with Data accesses.

o Multiprocessing support with Mail Box Interrupts, programmable slave base address ranges, true Read Modify Write to local memory, and to shared VME resource, with the use of the VME Bus Locker.

o Full4GByte VME addressing with mapping register. o Simple user-setup provided, only one jumper is required (slot one). All other options are selected through register settings, stored in EEPROM. o A specialloopback cycle is provided to enable stand-alone testing of the interface. The heart of the VME Interface is the S4-VME Chip, a 7000 gate CMOS LMA9K 1.5 u Gate Array. It includes all VME logic. Address and Data paths are external, using 29FCf521, 29FCf52, 29821 and 29FCf821 registers. Decod­ ing of VME address A(31 :24) is done externally using AS27 gates. Decoding of Physical address PA(19:16) is done externally using an F20. All VMEbus out­ puts are driven through bipolar drivers using AS641, LS04 and F125.

91 Revision A of April 10, 1990 92 The SPARCengine IE CPU Card User's Manual

13.3. VMEbus Basics -- An The VMEbus is an asynchronous 32 bit bus, with multi master, multi level arbi­ Introduction tration specifying Single Cycles, Block Mode Cycles and Read-Modify-Write Cycles. See next section regarding current revision and publisher. Certain conceptual logical units are defined in the table below.

Table 13-1 VME Concept Definitions

Concept Definition

MASTER accesses SLAVEs. SLAVE responds with [DTACKIBERR] to MASTERs. BUS REQUESTER Requests and keeps the bus on order from a MASTER. BUS ARBITERS Grants bus to REQUESTERs through [BG] daisy chain. Must be in slot 1. INTERRUPrER Interrupts bus, responds to Interrupt handlers with [OTACK/BERR] and supplies an Interrupt Vector. lACK DAISY CHAIN Drive Drives [lACKIN/lACKOUT] chain when [lACK] and [DS(1:0)] are as~erted. Must be in slot 1. SYS CLOCK DRIVER Drives [SYSCLK]. Must be in slot 1. POWER MONITOR Asserts [SYSRESET].

13.4. VME Performance The timing for the VMEbus interface is a~ follows: 8 Bit Transfers 1.6 MB per second. 16 Bit Transfers 3.2 MB per second. 32 Bit Transfers 6.4 MB per second. The VME Gate Array logic meets the Sbus and VMEbus specifications at a 20 MHz clock, correlating to a 50 ns clock cycle. Bus arbitration for other VMEbus masters takes place faster by using the Early Release feature. NOTE These numbers are given only as a way to describe the SPARCengine 1E CPU performance. The overall bandwidth depends on the other card's response time. the application code, amount of other tasks running concurrently, other con­ current DMA activity. cache hit/miss ratio. etc. Thesefigures should NOT be expected in a real world system.

Revision A of April 10. 1990 Chapter 13 - VMEbus Interface 93

Three address spaces are defined. Address Modifier bits [AM(5:4)] indicates 13.5. VME Addresses which:

Table 13-2 VME Addresses

i i I Concept Definition Address I Modifier

A16 16 address bits are needed. Can address 64 KB. [AM(5:4)] = 10 A24 24 address bits are needed. Can address 16 MB. [AM(5:4)] = 11 A32 32 address bits are needed. Can address 4 GB. [AM(5:4)] =00

Address modifier bits [AM(2:0)] indicates what privilege and type of access: Supervisor, Non-Privileged, Program Oata or Block Transfer access. Oata transfers can be 032/D16/D8 (Le., quad-byte, double-byte or single-byte size. Unaligned transfer means that a quad-byte or a double-byte transfer takes place on a nOD-even boundary. Unaligned transfers are not supported by the SP ARC­ engine IE CPU card.

13.6. VME Implementation The VME Interface adheres to the VMEbus Specification Rev C.l. A later ver­ sion of the specification, released by ANSI, the ANSI/lEEE 1014-1987, has changed some optional features to mandatory. The new rules are: 2.61-68 and 4.49. The SPARCengine IE VME Interface follows all these new rules except for 2.67 requiring ALL 032 slaves to include Unaligned Transfer capability. o Address spaces:

Table 13-3 VME Address Spaces

Addresses Comments

A16 Master accesses are possible. A24 Master accesses are possible. A32 Master accesses are possible. 016 Master accesses are possible.

032 I Master accesses are possible. A16 Mailbox cycles are monitored, and can generate the interrupt. 08 (only) Mailbox cycles are monitored, and can generate the interrupt. A24 Slave cycles are supported. A32 Slave cycles are supported. 08 Slave cycles are supported. 016 Slave cycles are supported. 032 Slave cycles are supported .

• ~,!! Revision A of April 10, 1990 94 The SPARCengine IE CPU Card User's Manual

a No VME Bus Timer is provided as specified in VME. Own Master cycles times out after 300 us generating a Bus Error on VMEbus. a Single-level VMEbus arbitration (SOL) and round-robin arbitration (RRS) are supported. a Read-Modify-Write (RMW) accesses to local and VME memory are sup­ ported. a Unaligned transfers are not implemented nor supported. Unaligned accesses get a Bus error returned. Unaligned transfers are: 32bit accesses not to address(I:0)=OO, 16bit accesses not to a(O)=O. See ANSI/IEEE change described above. a Address only cycles are not decoded, an active data strobe is required for the start of any DVMA access. a The VME Interface allow Address pipe-lining during Slave accesses, but do not utilize the function on VME Master cycles. a Early release of bus is possible, i.e., other masters can arbitrate getting bus mastership while VME Master access is finishing (i.e. Address Strobe still asserted). The VME Interface is also prepared for other cards early release of the bus, by awaiting the negation of the Address Strobe.

o The VME Interface requests VME masrership on bus ievei 3 as an ROR (Release On Request). a Bus Clear is not monitored. a An Interrupt handler that can serve any of the seven interrupts is available. A selection of which levels to serve is done by programming a SW register. The Interrupt handler is a 008(0), handling only 8 bit interrupt vectors. a No Interrupter function is provided. Signaling between CPU cards in mul- tiprocessor configurations is done through the Mail Box Interrupt. a An lACK Daisy Chain function is provided when the card is in slot one. a A System Clock Driver is active, if the card is in slot one. a No Serial Clock Driver is implemented. a An on card Voltage Supervisor asserts SYSRESET for a minimum of 200 ms after +5V DC has reached 4.5 Volts, if the slot 1 jumper is inserted. The ACFAIL and SYSFAIL is not driven or monitored. Incoming SYSRESET generates an on-card reset.

13.7. VME Registers -­ The registers can be divided into the following groups: Major Groups 1. Registers set on system initialization, replacing card jumpers: Interrupt Enable Register. Interrupts handled. Arbitration mode.

Revision A of April 10, 1990 Chapter 13 - VMEbus Interface 95

2. Registers used for multi-processing or co-processing: Mail Box Interrupt Register. Slave Map Register (also replacing jumper). 3. Others: A32 VME Address mapping. Move 512 MB window. Enable diagnostic loop back. Slave Map register bitO. Enable Block Mode transfers.

Table 13-4 VME Registers

Type Name Physical Base Size

1 VME Bus Locker OxEFEOOOOO byte 1 V:ME lACK cycle OxEFEOOOOl byte A[3:1]9 AO=l 1 Mail Box Register OxEFEOOOIO byte 1 VME Interrupt Enable Register OxEFEOOO14 byte 1 A32MAP Register OxEFEOOO18 byte 1 Slave Map Register OxEFEOOOIC byte

~A.. f.ill32 bit Master Interface is provided. C0mplete mapping of 512 MB is po~­ sible all the time, but this 512 MB window can be moved through all 4 GB through a VME Mapping register. A32, A24, A 16 Address Modes, 032, 016, 08(EO) Data Sizes are supported. On Master cycles, RMW, i.e. atomic load-store cycles are implemented accord­ ing to the VME spec. The VME data strobe asserts two times as the VME address strobe is hold asserted. This differs from other Sun cards, where instead the ownership of VME is kept while a read and a write takes place. The problem with this is that jf the access is to a card with several devices competing for an on-card bus, there is no way this card can recognize the access as a RMW. For example.: a disk card with multiple on card devices would not be able to prevent a shared resource to be stolen in between what looks like a standard Read and Write even though the VMEbus is locked. Block mode transfers are not supported. (They are only supported by the Slave interface. ) Unaligned transfers (UAT) are not supported. Accesses of this kind, Le. 16-bit accesses to base addr. + 1 or addr. + 3, or 32 bit accesses to base addr. + 1, base addr. + 2 or base addr. + 3 is not recognized, resulting in a Bus error time out 32 bit accesses to type 2 space, the 16 bit VME port is not recognized, resulting in a Bus error time out.

Rev ision A of April 10, 1990 98 The SPARCengine IE CPU Card User's Manual

* VME interrupt Do vectoring. * The VME vector is read off the VME bus. If this fails (data fault), * _trap will check the PC of the fault and jump to _spurious. * * The vmelevel# code sets up %g 1 to contain the address of the * appropriate VME lACK register before it branches here. *' #define VEC_MAX 64 #define VEC_MlN 255

_ vme_rea(Cvector: Idub [%gl], %16 ! read vector #, acknowledge int cmp %16, VEC_MAX ! check vector limits bg spurious_vme subcc %16, VEC_MIN, %g3 ! normalize vector bl spurious_vme s11 %g3. 2, %g5 ! seale for interrupt counting s11 %g3, 3, %g3 ! seale vector set _intrcnt, %g4 ! per-device interrupt counts table Id [%g5 + %g4], %gl ! interrupt count set _vme_vector. %g2 ! table of interrupt vectors inc %gl ! count interrupt st %gl. [%g5 + %g4] ! and store result Id [%g2 + %g3], %gl ! get handler address add %g2, 4, %g2 ! generate address of arg ptr Id [%g2 + %g3], %00 ! delay slot, get arg ptr call %gl ! call handler ld [%00]. %00 ! read arg ptr

b.a inem ! restore previous stack pOinter ,. end _vme_rea

.global _ vme_vector _ vme_vector: ! vector numbers ERRV; ERRV; ERRV; ERRV ! Ox40 - Ox43 seO I sc? ERRV; ERRV; ERRV; ERRV ! Ox44 - Ox47 xdcO I xdcll xdc21 xdc3 ERRV; ERRV; ERRV; ERRV ! Ox48 - Ox4B xycO I xycll xyc? ERRV; ERRV; ERRV; ERRV ! Ox4C - Ox4F future disk controllers ERRV; ERRV; ERRV; ERRV ! Ox50 - Ox53 future disk controllers ERRV; ERRV; ERRV; ERRV ! Ox54 - Ox57 future disk controllers

Revision A of April 10. 1990 Chapter 13 - VMEbus Interface 99

ERRV; ERRV; ERRV; ERRV ! Ox58 - OxSB future disk controllers ERRV; ERRV; ERRV; ERRV ! OXSC - Ox5F futme disk controllers ERRV; ERRV; ERRV; ERRV ! Ox60 - Ox63 tmO I tml I tm? ERRV; ERRV; ERR V; ERRV i Ox64 - Ox6i xtcO i xtel i xte? ERRV; ERRV; ERRV; ERRV ! Ox68 - Ox6B future tape controllers ERRV; ERRV; ERRV; ERRV ! Ox6C - Ox6F futme tape controllers ERRV; ERRV; ERRV; ERRV ! Ox70 - Ox73 ec7 ERRV; ERRV; ERRV; ERRV ! Ox74 - Ox77 ieO I iell ie? ERRV; ERRV; ERRV; ERRV ! Ox78 - Ox7B future ethernet devices ERR V; ERRV; ERRV; ERRV ! OX7C - Ox7F futme ethernet devices ERRV; ERRV; ERRV; ERRV ! Ox80 - Ox83 vpcO I vpcll vpc? ERRV; ERRV; ERRV; ERRV ! Ox84 - Ox87 vp? ERRV; ERRV; ERRV; ERRV ! Ox88 - Ox8B mtiO I mtill mti2 I mti3 ERRV; ERRV; ERRV; ERRV ! OX8C - Ox8F SunLin.k SCP (Systech OCP-8804) ERRV; ERRV; ERRV; ERRV ! Ox90 - Ox93 Sun-3 zsO (8 even vectors) ERRV; ERRV; ERRV; ERRV ! Ox94 - Ox97 Sun-3 zsl (8 odd vectors) ERRV; ERRV; ERRV; ERRV ! Ox98 - Ox9B SlDl-3 zsO (8 even vectors) ERRV; ERRV; ERRV; ERRV ! Ox9C - Ox9F Sun-3 zsl (8 odd vectors) ERRV; ERRV; ERRV; ERRV ! 0xA0 - 0xA3 future serial ERRV; ERRV; ERRV; ERRV ! 0xA4 - 0xA7 pcO I pel I pe2 I pc3 ERR V; ERR V; ERR V; ERR V ! 0xA8 - OxAB cg2 I future frame buffers ERRV; ERRV; ERRV; ERRV ! OxAC - 0xAF gpll futme graphics processors ERRV; ERRV; ERRV; ERRV ! 0xB0 - OxB3 skyO'? ERRV; ERRV; ERRV; ERRV ! OJ..B4 - 0,,117 SunLink I channel attach ERRV; ERRV; ERRV; ERRV ! 0xB8 - OxBB (token bus) tbiO I tbill? ERRV; ERRV; ERRV; ERRV 'OxBC - OxBF Reserved for Sun ERRV; ERRV; ERRV; ERRV OXCO - OxC3 Reserved for Sun ERRV; ERRV; ERRV; ERRV OXC4 - OxC7 Reserved for Sun ERRV; ERRV; ERRV; ERRV OXC8 - OxCB Reserved for User ERRV; ERRV; ERRV; ERRV OXCC - OxCF Reserved for User ERRV; ERRV; ERRV; ERRV OxDO - OxD3 Reserved for User ERRV; ERRV; ERRV; ERRV OxD4 - OxD7 Reserved for User ERRV; ERRV; ERRV; ERRV OxD8 - OxDB Reserved for User ERRV; ERRV; ERRV; ERRV OXOC - OxDF Reserved for User ERRV; ERRV; ERRV; ERRV ~EQ - Qw.£3 R=-"T:ed fer Us=:­ ERRV; ERRV; ERRV; ERRV ! OxE4 - OxE7 Reserved for User ERRV; ERRV; ERRV; ERRV ! OxE8 - 0xEB Reserved for User ERRV; ERRV; ERRV; ERRV ! OxEC - OxEF Reserved for User ERRV; ERRV; ERRV; ERRV ! OxFO - 0xF3 Reserved for User ERRV; ERRV; ERRV; ERRV ! OxF4 - 0xF7 Reserved for User ERRV; ERRV; ERRV; ERRV ! OxF8 - OxFB Reserved for User ERRV; ERRV; ERRV; ERRV ! OxFC - OxFF Reserved for User

13.10. Slave Interface A32, A24 address mode. 1 MB of memory is accessible, nonnally the lowest MB on VME, but this can be changed to be in the 1-16 MB range to support multi-CPU card implementa­ tions. The address range is incremented in 1 MB steps. Unaligned accesses to the Slave Interface range returns a Bus Error back to the external VME Master. The address modifiers on VME are used to define Address mode (A32/A24/AI6), privilege, and data!program/block-transfer access. The Slave decoder and Mail Box Interrupter monitors all address modifier bits with the exception of AM2, the access privilege bit. All slave accesses as a DVMA device is set to supelVisor mode, which is in accordance with the Sun-4 Architecture. The 1 MB VME address space selected is always mapped to the highest mega­ byte in the Virtual Address Space, again in accordance with the Sun-4 Architec­ ture.

Revision A of April 10, 1990 100 The SPARCengine IE CPU Card User's Manual

Single Transfers A bit in the S4-CACHE SYSTEM Enable Register can disable SDVMA and therefore all Slave cycles. If this bit is set, single slave cycle can take place.

Slave Map Register The address space for System DVMA accesses is 1 MB, nonnally the lowest Megabyte in accordance with the Sun-4 Architecture, but bits 27:24 can be used to re-map the SDVMA address space. Slave Block Mode transfers can also be enabled by setting bit 31. This lowest 1 MB on VME is mapped to the highest 1 MB within the Virtual Address space. During register accesses, only 8-bit accesses should be used. 16- or 32-bit accesses are not acknowledged, resulting in a bus error time out

Slave Map Register The register is reset to all O's on resets. Thus, the mapping defaults to 0-1 MB Ini tialization and block mode transfers is disabled.

Table 13-8 Slave Map Register Address

Type Device Address Device Physical Space

1 OxEFEOOOIC Slave Map Register 1 byte

I I I

Table 13-9 Slave Map Register Address Bits

31 30 29 28 27 26 2S 24

0 0 0 0 VME Slave Address base

Revision A of April10. 1990 Chapter 13 - VMEbus Interface 101

Table 13-10 Slave Master Register Bit Definitions

.unD:~ Range Value Range Start Ran£eEnd I I - II I I 31 This bit is not used, and must be O. 30:28 This bit is not used, and is read back as O. 27:24 OxO Maps System DVM A Space to: OxOOOOOOO-OxOOOFFFFF OMB 1MB 27:24 Ox 1 Maps System DVMA Space to: OxOO10000-0xOO1FFFFF 1 MB 2MB 27:24 Ox2 Maps System DVMA Space to: OxOO20000-0xOO2FFFFF 2GB 3GB 27:24 Ox3 Maps System DVMA Space to: OxOO30000-0xOO3FFFFF 3GB 4GB 27:24 Ox4 Maps System DVMA Space to: OxOO40000-0xOO4FFFFF 4GB 5GB 27:24 Ox5 Maps System DVMA Space to: OxOO50000-0xOO5FFFFF 5GB 6GB 27:24 Ox6 Maps System DVMA Space to: OxOO6OOOO-0xOO6FFFFF 6GB 7GB 27:24 Ox7 Maps System DVMA Space to: OxOO70000-0xOO7FFFFF 7GB 8GB 27:24 Ox8 Maps System DVMA Space to: OxOO80000-0xOO8FFFFF 8GB 9GB 27:24 Ox9 Maps System DVMA Space to: OxOO9OOOO-0xOO9FFFFF 9GB 10GB 27:24 OxA Maps System DVMA Space to: OxOOAOOOO-O~OOAFFFFF 10GB 11 GB 27:24 OxB Maps System DVMA Space to: OxOOBOOOO-OxOOBFFFFF 11 GB 12GB 27:24 oxe Maps System DVMA Space to: OxOOCOOOO-OxOOCt'FFFF 12GB 13GB 27:24 OxD Maps System DVM A Space to: OxOODOOOO-OxOODFFFFF 13GB 14GB 27:24 OxE Maps System DVMA Space to: OxOOEOOOO-OxOOEFFFFF 14GB 15GB 27:24 OxF Maps System DVM A Space to: OxOOFOOOO-OxOOFFFFFF 15 GB 16GB I I

13.11. Mail Box A Mail Box interrupt function is provided to allow other devices to interrupt the SP ARCengine 1E. This mail box detects accesses to the A16 address space to a location programmed in the mail box register. No real memory is provided at this location, but the mail box responds with a VME DT ACK, acknowledging the access and generate an on card interrupt Level 13 if the Enable bit is set. VME Address bits A(15:14, 3:1) are in the Mail Box Register. This corresponds to pro­ gramming the location to one of the eight 16-bit words in one of the four 16K blocks of the address range. Any VME A16 address space, 8-bit or 16-bit read or write to the location programmed into the Mail Box Register generates an on­ card interrupt on level 13 if enabled. 32-bit wide access is not allowed and is not acknowledged, resulting in a Time out Bus Error for the other accessing VME Master. Since the address mapping of the location monitor compares only the address bits A15, A14 and A3, A2, Al (Bits A13 up to A4 are NOT compared at all), the location monitor address is mirrored 1023 times in the selected 16K range. The user is advised to use addresses with address bits A 13 to A4 set to zero.

Revision A of April 10. 1990 102 The SPARCengine IE CPU Card User's Manual

Mail Box Register Base This register is used to program the VME address to be monitored and, if Location enabled, mailbox interrupts the IU via an on-card interrupt. Only 8-bit accesses to the register should be used, 16- or 32-bit accesses are not acknowledged, resulting in a bus error time out. For mail box cycles, the VME bus is only mon­ itored for A16, D8 or D16 accesses.

Mail Box Register Initialization All bits are initialized to O's.

Table 13-11 Mail Box Register Address

Type Device Address Device Physical Space

1 OxEFEOOOI0 Mail Box Register 1 byte

Table 13-12 Mail Box Register Address Bits

27 24

I-fig En I o Comp Address (15: 14) Comp Address (3: 1)

Mail Box Register Interrupt Level 13. Level

Table 13-13 Mail Box Register Bit Definitions I Bit Range Value Range Start Range End

31 This bit set indicates that a mailbox interrupt is pending. A read of this register resets the interrupt on the trailing edge of the read pulse. A write to this bit is ignored. 30 This bit set enables the mail box interrupt. 29 This bit is ignored, and is read back as O. 28 Compared with VME Address Bit 15. 27 I Compared with VME Address Bit 14. 26 Compared with V~IE Address Bit 3. 25 Compared with VME Address Bit 2. 24 Compared with VME Address Bit 1. ! -'" ... ",.,,,,.,,..-...... ,,,,,,,., ... -~= ... """- ~ ~

Revision A of April 10, 1990 Chapter 13 - VMEbus Interface 103

13.12. Bus Locker A Bus locker function is provided to enable the CPU to do an atomic Read­ Modify-Write (RMW) to its on-card memory without being interrupted by an incoming ~~V-I from Lite another VME Master. TPJs function is only to be used when the card is running together with one or more external CPU cards (mul­ tiprocessing). In L'lese cases, message passing is done tlJroug..1} sha-red memory locations that need to be accessed in a defined way.

VME Bus Locker Register In a non-multiprocessing application, this register should be left alone. When used, bit 24 of the register should AL WAYS be SET for each update, to guaran­ tee a consistent bus arbitration behavior.

Table 13-14 Bus Locker Register Address Bits

31 30 29 28 27 26 2S 24

Owned 0 0 o I o I 0 Req Bus I Use locker I

Initialization All bits are initialized to O's. Thus, the VME bus locker is inactive and does not affect the card's bus arbitration.

Table i3-15 Bus Locker Register Bit Definitions

n ____ ~_ .... uti Kange I Value I Range Sian I RiII"5~.a;., ..u

31 This bit indicates the the VMEbus is owned. No external VME card can access memory. Bit is read only, a write to this bit is ignored. 30 This bit is ignored, and is read back as O. 29 This bit is ignored, and is read back as O. 28 This bit is ignored, and is read back as O. 27 This bit is ignored, and is read back as O. 126 This bit is ignored, and is read back as O. 25 This bit initiates a VMEbus request. Once owned, it is held. 24 This bit enables the Bus request function. It should only be set for multiprocessing applications. If set, it should never be changed (unless system is restarted).

In multiprocessing applications, update the register at the system initialization time by writing Ox01 to the register. The procedure for accessing an on-card memory location is:

Revision A of April 10, 1990 104 The SPARCengine lE CPU Card User's Manual

1. Disable all interrupts. (VME lACK cycles need to acquire control of VME.) 2. Request VMEbus locking by writing Ox3 to the register. 3. Read register and check bit 31 to until VMEbus is owned and locked. 4. Do Read-Modify-Write (RMW) (atomic Load-Store) to on-card memory. 5. Unlock VME by writing Oxl to register. 6. Enable all interrupts. NOTE If the VME is not unlocked in time. other accesses might time out causing a sys­ tem crash. Always unlock VME ASAP after the RMW is completed!

NOTE VME interrupts must be disabled during the bus locking procedure to prevent potential deadlock. since VME lACK cycles requires access to VME. Interrupts could otherwise cause a deadlock situation if it happens while the bus is locked.

13.13. Interrupt Handler The interrupt handler can selectively support all interrupt levels. These are enabled through the VME Interrupt/Bus Arbiter register. Note that this register is a replacement for a jumper and should normally be fixed depending on the VME Interrupt handler configuration. Run-time enabling of the interrupts are normally done with the Interrupt Enable register, see the System Specification.

Interrupt Enable/Bus Aibitei The Interrupt Enable Register can seiectiveiy enabie ali ViviE interrupt ieveis. Mode Register This Register enables VME interrupts to be fed to the Interrupt logic in the S-4 MMU chip. Only 8-bit accesses should be used, 16- or 32-bit accesses are not acknowledged, resulting in a bus error time out.

Interrupt Enable Register Bit set 31 :25 is set and bit 24 reset. Thus, VME interrupts are enabled and the LTJitiali zation arbiter mode is SOL, single level arbitration.

NOTE This register replaces on-cardjumpers. Changes to this register should only be done at system initialization time, and should not be changed at a later time unless the system is restarted.

Table 13-16 Interrupt Enable Register Address

Type Device Address Device Physical Space

I 1 OxEFEOOO14 I VME Interrupt Enable Register 1 byte I

Revision A of April 10, 1990 Chapter 13 - VMEbus Interface 105

Table 13-17 Interrupt Enable Register Address Bits

131 130 129 128 1 27 126 1 25 1 24 I I I I I

En7 En6 En5 En4 En3 En2 En 1 Round-Robin Arbitration

Table 13-18 Interrupt Enable Register Bit Definitions I I Bit Range Value Range Start Range End

31 This bit enables VME Interrupt 7/Sun-4 level 13 to Internal Logic. 30 This bit enables VME Interrupt 6/Sun-41evel11 to Internal Logic.

n _ 0 29 ThisJ.Ll bitJ.~ onahles'" V VME Intprrupt 5/S n 4 level. . 9 to Internal Logic I - & -.------I 28 This bit enables VME Interrupt 4/Sun-4 level 8 to Internal Logic. 27 This bit enables VME Interrupt 3/Sun-4 level 5 to Internal Logic. 26 This bit enables VME Interrupt 2/Sun-4 level 3 to Internal Logic. 25 This bit enables VME Interrupt l/Sun-4 level 2 to Internal Logic. I 24 This bit enables Round-Robin Arbitration. I

NOTE Enabling the bus arbiter junction is done via ajumper (Slot 1 jumper).

13.14. Bus Requester The Bus requester is an ROR requester. It releases the bus when other VME Masters!Requesters requests the bus. The SPARCengine IE can only request on Bus Request level 3.

Bus Arbiter A Single Level Arbiter (level 3) and a Round-Robin Arbiter are provided. Note that the arbiter is enabled only if the card resides in slot 1. (Slot 1 jumper.) In arbitration mode, locked arbitration is detected and released by the arbiter after 3.3 ms. The Bus arbiter then drives BBSY active for the minimum period required by the VMEbus spec. This is to prevent requesters that in the mean time have decided to withdraw their requests to be able to do so. Note that a with­ drawal of a VME Request nonnally is in violation of the VtvIE Specification. (Rule 3.11).

13.15. Bus Time Out There are two time out parameters in a VME cycle in addition to the On Board Period Bus arbitration timer: Rerun Time Out and Abort.

Revision A of April 1D, 1990 106 The SPARCengine IE CPU Card User's Manual

Rerun Time Out If the time from the Ma~ter cycle starts until the VME slave responds with a DT ACK exceeds 1.6 us, the cycle is rerun by the IU so high-priority devices can get on the Sbus. In the mean time, the Master cycle and all output signals is frozen, ignoring any DT ACK coming in. When the cycle is rerun, it is recon­ nected again.

Abort Two stages of the access exists. If the bus is not owned, it has to be acquired. Then the actual VMEbus cycle can start. A Master cycle times out after 300 us. That means, the response time from another VME slave including the time for acquiring the bus must be less than 300 us. If the VMEbus is not owned when an abort occurs, the bus requester keeps the VMEbus Request asserted even though the CPU cycles has been aborted. It then asserts a dummy Bus Busy (BBSY) when the Bus Grant is received. This is to comply with VME rule 3.11. If the bus is owned when the abort takes place, a Bus Error is generated. This Bus Error would nonnally be generated by an accessed VME slave. This is to comply with VME rule 2.48.

13.16. System Reset On power up, the CPU card generates SYSRESET for a minimum of 200 ms, if the Slot 1 jumper indicates the card resides in slot 1. Incoming VMEbus resets always generate an on-card reset

13.17. Jumper Only one jumper is used for the VME Interface. If jumpered, the SPARCengine IE operates as the VME system arbiter and slot 1 card.

Table 13-19 Slot 1 Jumper & Functions

Function "Slot I" Position "Not in Slot 1"

I VME System Oock Enabled. Tn-state. I

VME lACK Daisy-chain Driver Enabled. IACKIN drives IACKOUT.

I SYSRESET Generates VME SYSRESET. Does not generate VME SYSRESET. I I

13.18. Programmable The following registers include settings otherwise often provided by jumpers. Register Settings

Revision A of April 10, 1990 Chapter 13 - VMEbus Interface 107

Table 13-20 Program",.able Register Settings II Register I Setting Definition I I

Slave Map Register Defines memory address space of the 1 MB on-card VME Slave (System DVMA).

VME Interrupt Handler Register Defines which interrupt levels to handle.

Defines what type ofVME Bus arbiter (only if the card resides in slot 1).

I A32 Map Register Defines where to map the CPU Master Address Space of512 MB. II

13.19. VME lACK Cycles When the SPARCengine IE is set up to respond to Vectored VME interrupt requests, it drives the lACK line to acquire the interrupt vector from interrupting devices though software routines. A device space operation is used by the Inter­ rupt handler to generate an Interrupt Acknowledge cycle. The openltion is done only by doing a Device Space byte read at location OxEFEOOOOX with Address bits 3 to 1 set to the VMEbus interrupt level being acknowledged. A 16- or 32-bit access is not acknowledged and results in a bus error time-out. By doing this, an acknowledge process is started by first acquiring the bus, then by driving the lACK signal at the same time as with other control lines such as AS*, DS*, A1- 3, etc. NOTE An access to these seven addresses are not to an on chip register, but instead to execute a VME Interrupt Acknowledge cycle, acquiring the Interrupt Vector from the interrupting device.

Table 13-21 Mail Box Register Address

Interrupt Type Device Address Device Physical Space

1 OxEFEOOOOO VME Int. Vector 1 A[3:1]=VME Int level. AO=l, Read, only 8-bit access should be used.

Revision A of April 10, 1990 108 The SPARCengine IE CPU Card User's Manual

Table 13-22 VME lACK Cycles Register Address Bits

31 30 29 28 27 26 25 24

8-bit Interrupt Vector from interrupting VME Device Level A(3: 1)

This translates into the following interrupt responses:

Table 13-23 VME lACK Cycles Interrupt Responses

Acknowledging VME Interrupt Device Address

1 OxEFEOOOO3 2 OxEFEOOOO5 3 OxEFEOOOO7 4 OxEFE00009 5 OxEFEOOOOB 6 OxEFEOOOOD 7 OxEFEOOOOF

Daisy Chain lACK Driver Since the SPARCengine IE does not have the capability to interrupt the VMEbus through the VME interrupt request lines, it does not provide interrupt vectors at all. Thus, it drives the daisy chain IACKOUT when an IACKIN is active. When set up as a slot 1 card, it drives the IACKOUT as soon as the non-daisy chain lACK signal is active. f\iaster Cycles Ideal VME slave accessed (30 ns DS to DTACK response). Bus already owned. No lingering DTACK or AS. A Master cycle is 9 cycles, corresponding to a theoretical 9 MB/s bandwidth for back-to-back cycles.

Slave Cycles Ideal VME master (0 ns DT ACK to DS response). Fast Sbus grant (two clock periods).

Revision A of April 10. 1990 Chapter 13 - VMEbus Interface 109

Table 13-24 Slave Cycles Duration and Theoretical Bandwidth

Cycle Duration (ns) Theoretical Bandwidth I I I Single Read 560-630ns 6.9 to 7.9 MB I

Single Write 510-580n8 6.3 to 7.2 MB

13.20. Bus Arbitration

Table 13-25 Bus Arbitration II I Arbiter Conditions I

Single Level Arbiter No MVE master owns the bus, Bus Locker disabled. VME Bus Request to VME Bus Grant: 2 Cycles.

No MVE master owns the bus, Bus Locker enabled. VME Bus Request to VME Bus Grant: 3 Cycles.

Round-Robin Arbiter No MVE master owns the bus, Bus Locker disabled. VME Bus Request to VME Bus Grant: 2-5 Cycles.

No MVE master owns the bus, Bus Locker enabled. VME Bus Request to VME Bus Grant: 3-6 Cycles.

Revision A of April 10, 1990 110 The SPARCengine IE CPU Card User's Manual

13.21. Interrupts The following table defines the interrupt sources and their levels:

Table 13-26 VME Interrupt Levels and Sources

Level Source Additional Source

15 Memory: Parity Error ECC Uncorrectable Error 14 Counterffimer 1 13 VMELevel7 VME Mailbox interrupt 12 Serial Ports 11 VMELevel6 10 Counterffimer 0 9 VMELevel5 SBUS7 8 VMELevel4 SBUS6 7 P2 Bus interrupt (ECC Correctable Error) SBUS 5 (Video) 6 Ethernet SWIRQ6 5 VMELevel3 SBUS4 4 SCSI SWIRQ4 .., ::J Vf&:Levci 2 SBUS3 2 VMELevel1 SBUS2 1 SWIRQl SBUS 1

All type I devices de fined in the architecture, including the serial ports, use auto­ vectored interrupts. The interrupt register in device space enables all interrupts, causes software inter­ rupts, and enables specified interrupts. It is described in the chapter Device Space. The memory error registers in system space, provide information about any memory errors that occur. They are described in the chapter System Space.

13.22. VME Programming Two code examples are presented below, one written in FORTH, and the other Examples written in C. These examples provide an indication to you on how to program for the VMEbus. Additional reference material required for a complete definition of the FORTH and C words used in the following code examples: SBUS Developer's Kit, Sun Part No. 82S-1219-xx, (Sun SBUS Information).

FORTH Programming The FORTH example below shows how to map a page to obtain a virtual address Example that allows access to the VME-bus. The example shows how to map the slave port (what other masters read/write to obtain access to your local memory) and how to map the master port (what you use to read/write the VME-bus).

The routines map-master and map-slave translate a slave window (l of 16 one megabyte windows that can be mapped to the VME-bus) into a virtual address that accesses the VME-bus. The routines use subroutines map-segments and +m,!! Revision A of April 10. 1990 Chapter 13 - VMEbus Interface 111 map-pages. Map-segments has 3 arguments, segment map entry, virtual address, and length. It stores a new segment map entry for the virtual address supplied. ~1ap=pages has 4 arglunents, physical address, space type, virtual address. and length. It maps conse- cutive pages to map a region of size length. constants 800000 constant vrned32-mem (VMED32 memory virtual address) 100000 constant 1mb (1 megabyte constant) OfeOOO constant window-size (size of window monitored by 4e-slave) fffOOOOO constant sdvma (SDVMA virtual address) o constant local-mem Oocal memory address)

: map-master (vme-slave-window -) 20 vrned32-mem window-size map-segments (map in segments for vmed32-mem.) ( vrne-slave-window ) 1mb * vrned32a32 (space type) vrned32-mem. window-size map-pages

: map-slave ( vme-slave-window -- ) vrne-slavemap! (window for SDVMA) f4 sdvrna window-size map-segments (map in segments for SDVMA) local-mem obmem ( space type) sdvma window-size map-pages

: map-mSs2 ( -- ) (map master to global slaveS and select slave2) S map-master 2 map-slave

: map-m2s8 ( -- ) (map master to global slave2 and select slaveS) 2 map-master 8 map-slave

SOOOOOl@ . (read VME-bus location 0 and print results)

Revision A of April 10, 1990 112 The SPARCengine IE CPU Card User's Manual

C Programming Example The C example below shows how to open a VME space and obtain a virtual pointer so that the VME space can be read/written to. In the Unix environment several options are available to the programmer. The VME-bus supports 16,24, and 32 bit addressing, along with 8, 16, and 32 bit data transfers. In /dev several special files are provided that allow for the dif­ ferent configurations. For example vme24d32 provides a 24 bit address with 32 bit data transfers. These special files can be opened and seeks perfonned. (See MEM in section 4S of the manual pages) However it is usually more efficient to use pointers. A pointer to an opened special VME file can be obtained using mmap().(See MMAP in section 2 of the manual pages) ##include ##include ##include ##include

maine argn. argv) int argn; char **argv; ( int fd, i, len, off; OfCl addr; caddr_t ptr; unsigned short *p; unsigned shoo pat;

if(argn < 3) { printf("usage: %5 addr len (patlO, argv[O]); return; } pat = 0; addr = (int)sntol(argv[1]. (char **)NULL. 0); off = (addr &. Ox7tTO » 1; !* convert offset to a short *1 addr &.= Oxffff8000; !* use a 32k window ., len = (int)strto)(argv[2], (char **)NULL. 0); if(argn = 4) pal =(short)strtol(argv[3], (char ··)NULL, 0); if(pal = 0) pal =Oxaaaa; printf("addr =Ox%xO, addr); printf("off =Ox%xO, off*sizeof(pat»; printf("len = %dO, len); printf("pat = Ox%xO, pat);

1* Now open VME space as address 24 data 16 */ if«fd = open("/dev/vme24d16",O_RDWR» == -1) { printf("error opening vrne busO); retmn;

1* Use mmap to obtain a virtual pointer to VME space */ if«ptr = mmap(O, len, (PROT_READIPROT _ WRITE), MAP_SHARED. fd, addr» = (caddr_t)-l) { printf("mrnap failedO): retmn;

1* convert pointer to unsigned short for 16 bit read/writes * I p = (unsigned short *)ptr;

for(i=O; i

A.sun Revision A of April 10, 1990 -", ,,;c' -,_...... , .. ,an'liS Chapter 13 - VMEbus Interface 113

while(p) ( for(i=O; klen/2; i++) ( if(*(p+i+oft) != pat) { 1* read and compare pat *' printf(" fail location %x read %x exp %xO. p+i+off. *(p+i+oft). pat); p = 0; 1* break out ofloop *' break; 1 }

13.23. Example of a VME Below is a diagram of a sample VME system with two SPARCengine IE cards, a System third-party Ethernet card, and a third-party SCSI card. The text below describes how this system configuration should be defined and implemented. This example is generic, and is provided only as a guide for understanding the SPARCengine IE VMEbus.

Figure 13-1 Sample VME System Diagram

Slot 1 Slot 2 Slot 3 Slot 4 A B c D

Y.:!}~4lE::{? -J~l:~:li.and~ ~~:r;I;)iz0Y.; Interuptr •• ...... ::: $Aasler&. Ir---~ Master.·& :"j\fbit~t :~~'lt~~~ , Requester TPD-02121

Board A in slot 1 is a 4/E with the slot 1 functions enabled (ARBlTER,IACK DAISY chain driver, SYS CLOCK Driver). It is an INTERRUPT HANDLER for level 1-3. Board B is also a 4/E with the slot 1 functions disabled. It is an INTERRUPf HANDLER for level 4-7. Board C is an Ethernet card with a SLA VE and an INTERRUPTER. Board D is a SCSI card with DMA capabili­ ties. It has a MASTER, a SLAVE and an INTERRUPTER. Board A needs to start a disk transfer by writing to command registers in card D. But first he has to acquire the bus. His MASTER orders the on card REQUES­ TER to get the bus. The REQUESTER asserts [BR]. If no one owns the bus, indicated by an inactive [BBSY), the arbiter grants the bus with [BG). Board A's REQUESTER receives this, assert [BBSY) and allow his MASTER to start a bus cycle. If another card's REQUESTER was requesting the bus at the same time with a [BR], card A would still get it since the bus grant from the arbiter in slot 1 is passed from card to card via a Daisy Chain [BGIN,BGOUT] and card A is the first card in the Chain. Board A's MASTER asserts addresses, data and then strobe [AS] and [DS( 1:0)]. Next, card D's SLAVE detects that the cycle is aimed at him and respond with a [DTACK] once the data has been caprured (the write to the command register).

~)sun Revision A of April 10, 1990 114 The SPARCengine IE CPU Card User's Manual

The SCSI card starts the disk access and when he has filled his buffer with data, activate his MASTER. The MASTER requests the bus via it's on-card REQUESTER. The SPARCengine IE requester is of Release On Request type, so he keeps the bus with [BBSY] until someone else asks for it. When Board D's REQUESTER requests the bus, BOARD A's REQUESTER drops [BBSY]. Now the ARBITER can grant the bus to card D with a [BG]. BOARD 0 acquires the bus asserting [BBSY] and the MASTER can start a DMA transfer to card A's on card memory via A's SLAYE. the SLAYE responds with a DTACK for every cycle. Once the whole transfer is complete, card D asserts interrupt 3 via his INTERRUPTER signaling he's finished. Board A's INTERRUPT HANDLER is activated and does an Interrupt Ack­ nowledge cycle. This cycle is almost identical to a MASTER read, but instead of reading data, the interrupt vector is read. [lACK] is asserted to signal an lACK cycles, and address bits 1-3 indicates what level the lACK cycle is responding to. [lACK] from any interrupt handler is passed to slotl, where the back plane directly connects it to the start of the [IACKIN/IACKOUT] daisy-chain. This is done to enable INTERRUPT HANDLERS to be spread out on different cards if needed. The lACK Daisy Chain Driver in slot 1 drives the chain. Board B is not an INTERRUPfER and therefore always passes [IACKIN] to [IACKOUT].

Board C J>a.-~ses the incoming [lACKIN] to its [lACKOUT]. unless he is inter­ rupting on the same level at the same time. If so, he does not pass the [IACKIN] signal, but instead respond to the lACK cycle with a DTACK and his vector, dif­ ferent from card D's. In the mean time, card D would not see any [lACKIN] and therefore just keep his interrupt asserted until card C passes it on. Board D's INTERRUPTER responds to an lACK cycle with the corresponding bits set to the level he is interrupting on. Board A jumps to the disk card interrupt routine, with the understanding that the disk transfer has finished and now is ready and stored in the DVMA buffer. The transfer is complete.

13.24. Sample VMEbus The following code is a listing of the current VMEbus driver in SunOS. It is Interface Driver being provided as a developmental aide, not as a substitute for your own development. 1* * copyright (c) 1989 by Sun Microsysterns, Inc. *1

1* * VME special file *1

#include #include #include #include #include #include #include #include

#include #include

Revision A of April10, 1990 Chapter 13 - VMEbus Interface 115

#include #include #include

#define M_VME16D16 5 1* Idev/vmel6d16 - VME 16bit addr/16bit data *1 #define M_VME24D16 6 1* Idev/vme24d16 - VME 24bit addr/16bit data *1 #define M_ VME32D16 7 1* Idev!vme32d16 - VME 32bit addr/16bit data */ #define M_VME16D32 8 1* Idev/vmel6d32 - VME 16bit addr!32bit data */ #define M_VME24D32 9 1* Idev/vme24d32 - VME 24bit addr!32bit data *1 #define M_VME32D32 10 1* Idev/vme32d32 - VME 32bit addr!32bit data *1

1* transfer sizes * / #define SHORT #defhle LONG 2

1* * Check bus type memory spaces for accessibility on this machine */ mmopen(dev) dev_tdev;

switch (minor(dev» ( case M_ VMEI6D16: ca...ce M_ VME24D16: case M_VME32D16: case M_VME16D32: case M_VME24D32: case M_VME32D32: break; default: return EINV AL; 1* Unsupported or unknown type */

return 0; 1* end of mrnopen */

mmread(dev, uio) dev_tdev; struct uio *uio;

return (mmrw(dev, uio. UIO_READ»;

mrnwrite(dev, uio) dev_tdev; struct uio *uio;

return (mrnrw(dcv, uio, UIO_WRITE»;

mmrw(dev, uio, TW) dev_tdev; struct uio *uio; enum UiO_TW rw;

register int 0, xfersize; register u_int e, v; register struct iovee *iov; int error = 0; int pgsp; struct memlist *pmem;

~) sun Revision A of April 10, 1990 ~ micrcsystems 116 The SPARCengine IE CPU Card User's Manual

while (uio->uio_resid > 0 && error == 0) { iov = uio->uio_iov; if (iov->iov_len = 0) { uio->uio_iov++; uio->uio_iovcnt --; if (uio->uio_iovcnt < 0) panic("rnmrw"); continue; } switch (minor(dev» {

case M_VMEI6DI6: if (uio->uio_offset >= VME16_SIZE) return EFAULT; v = uio->uio_offset + VMEI6_BASE; pgsp = PGT_VM E_D 16; xfersize = SHORT; gotovrne;

case M_VME16D32: if (uio->uio_offset >= VME16_SIZE) return EFAULT; v = uio->uio_offset + VME16_BASE; pgsp = PGT_ VME_D32; xfersize = LONG; goto vrne;

case M_VME24D16: if (uio->uio_offset >= VME24_SIZE) return EFAULT; v = uio->uio_offset + VME24_BASE; pgsp = PGT_ VME_D16; xfersize = SHORT; gOlo vrne;

case M_VME24D32: if (uio->uio_offset >= VME24_SIZE) return EFAULT; v = uio->uio_offset + VME24_BASE; pgsp = PGT_ VME_D32; xfersize = LONG; gotovrne;

case M_VME32D16: pgsp = PGT_VME_D16; v = uio->uio_offset; xfersize = SHORT; goto vrne;

case M_VME32D32: pgsp = PGT_ VME_D32; v =uio->uio_offset; xfersize = LONG; ". FALL THROUGH */

vrne: v = btop(v);

". Mapin for YME, no cache operation is involved. */ seglcmem_mapin(&kseg, vmmap. MMU__ PAGESIZE. (u_int)(rw = UIO_READ? PROT_READ: PROT_READ I PROT_WRITE), pgsp I v, 0); 0= (int)uio->uio_offset & PGOFSET; c = min«u_int)(NB PO - 0), (u_int)iov ->iov _len);

Revision A of April 10, 1990 Chapter 13 - VMEbus Interface 117

error:: mmpeekio(uio. rw. &vmmap[o]. (int)c. xfersize); segkmem_mapout(&kseg. vmmap. MMU_PAGESIZE); break;

default: panic("mrnrw: invalid minor(dev)O);

return error; static mmpeekio(uio. rw, addr. len. xfersize) struct uio *uio; enum uio_rw rw; caddr_t addr; int len; int xfersize;

register int c; into; short sh; long Ish;

while (len > 0) ( if (Oenl(int)addr) & 1) { c = sizeof (char); if (rw = UIO_ WRITE) { if «0 = uwritec(uio» = -1) return (EFAULT); if (pokec(addr. (char)o» return (EFAULT); ) else { if «0 = peekc(addr» = -1)

...... & __h ...... (ee,_.a .. Ii ___ T TT T'· ... ~, if (ureadc«char)o. uio» return (EFAULT); } } else { if «xfersize = LONG) && «(int)addr % sizeof(long» == 0) && (len % sizeof (long» = 0) { c = sizeof (long); if (rw = UIO_READ) { if (peeld«(long *)addr. (long *)&0) = -1) return (EFAULT); Ish = 0; } if (uiomove«caddr_t)&lsh. c, rw, uio» return (EFAULT); if (rw == VIO _WRITE) { if (pdkel((long *)addr, Ish» return (EFAULT); } break: } else { c = sizeof (short): if (rw == VIO _READ) { if «0 = peek«short *)addr» = -1) return (EFAULT); sh=o; } if (uiomove«caddr_t)&sh, c, rw, uio» return (EFAULT);

Revision A of April 10, 1990 118 The SPARCengine IE CPU Card User's Manual

if (rw = UIO_ WRITE) { if (poke«short *)addr, sh» return (EFAULT); } break;

addr+=c; len -= c;

return 0;

/*ARGSUSED*/ mmmmap(dev, off, prot) dev_tdev; ofCtoff;

int pf; struct pte pte; register struct memlist ·pmem;

switch (minor(dev» {

case M_ VMEI6DI6: if (off >= VME16_SIZE) break; return (POT_ VME_D16I btop(off + VME16_BASE»;

case M_ VME16D32: if(off>= VME16_SIZE) break; return (POT_ VME_D32I btop(off + VME16_BASE»;

case M_ VME24D16: if (off >= VME24_SJZE) break; return (PGT_VME_D16 I btop(off + VME24_BASE»;

case M_ VME24D32: if (off >= VME24_SJZE) break; return (POT_ VME_D32 I btop{off + VME24_BASE»;

case M_ VME32D16: return (POT_ VME_D16I btop(ofO);

case M_ VME32D32: return (PGT_VME_D32I btop(ofO);

return -1;

Revision A of April 10, 1990 14

-IE;;;I) mm •• 1..:.: ...... :_.:. __ .:::_·_:tiJ.· ...;··.;

SCSI Interface

14.1. Required Reference Reference material required for a complete definition of the SCSI interface: Material for the SCSI SCSA (SUN Common SCSI Architecture) Interface Sun Part Number: 800-4701-10 (Rev A of 15 Nov 1989) SCSI Implementation Guide SUN Common SCSI Architecture Sun Part Number: 800-4700-10 (Rev A of 15 Nov 1989) NCR 53C90 Enlulnced SCSI Processor Datil Sheet, (SCSI Registers Definition), NCR Corporation, 11/87. SCSI, Understanding the SIIUlU Computer System Interface NCR Corporation, Prentice-Hall, 1990 ANSI Specification X3.133, X3.131_1986 <- Federal Information Processing Standard (FIPS), X3.131_1986

14.2. SCSI Performance The NCR 54C90 Extended SCSI Processor timing is as follows: Synchronous Mode Speed: Absolute Maximum: 5.0 MB per second Typical: 2.5 MB per second Asynchronous Mode Speed: Absolute Maximum: 3.0 MB per second Typical: 1.75 MB per second

14.3. SCSI Addresses The SCSI registers are accessed via byte loads and stores to the following physi­ cal addresses:

c~_

119 Revision A of April 10, 1990 120 The SPARCengine 1E CPU Card User's Manual

Table 14-1 SCSI Register Addresses

Address Description

OxFOS()()()()() Transfer Count Low OxFOSOOOO4 Transfer Count High OxFOS()()()()S FIFO Data OxFOSOOOOC Command OxFOSOOO 10 StatuslBus ID OxFOSOOO 14 Interrupt/Status Timeout OxFOSOOO IS Sequential Step/Synchronization Transfer Period OxFOSOOO 1C FIFO Aags/Synchronization Offset OxFOSOOO20 Configuration OxFOS00024 Clock Conversion Factor (write only) OxFOSOOO2S Chip Test (Extended SCSI Processor test use only) OxFOSOOO2C Chip (Extended SCSI Processor) Configuration-2

_.....

NOTE Byte accesses must be performed even though the addresses are all fullword­ aligned.

14.4. Interface Since the SCSI controller uses the DMA controller to perfonn the actual transfer Programming of data to and from memory t the two devices must be programmed together. One possible algorithm is as follows: scsi_start() { /*StJlrt an operation on the SCSI·, lock data pages into contiguous virtual memory; DMA_address_register = StJlrting virtual address; setup SCSI registers (except for "go"); DMA_control_status_register = (EN_DMAIINT_ENI(other bits»; stJlrt SCSI; /*The SCSI will interrupt us when it is done.·'

'·must drain DMA on a read from disk/write to memory·! if (last operation=READ) ( DMA_control_status_register=(DRAIN);

For a detailed description of the SCSI registers, see th NCR 53C90 Data Sheet.

Revision A of April 10, 1990 Chapter 14 - SCSI Interface 121

14.5. SCSI Connector Pinout List

Table 14-2 SCSI Pinout List -- Connector J 1001

Signal PIn. Comments

GND 1 Ground GND 2 Ground GND 3 Ground GND 4 Ground GND 5 Ground GND 6 Ground GND 7 Ground GND 8 Ground GND 9 Ground GND 10 Ground GND 11 Ground NC 12 I No Comect NC 13 No Comect NC I 14 No Comect I GND 15 Ground GND 16 Ground GND 17 Ground GND 18 Ground GND 19 Ground GND 20 Ground GND 21 Ground GND 22 Ground GN!) 23 GrmLY!d GND 24 Ground GND 25 Ground SDO- 26 SCSI DataO- SDl- 27 SCSI Datal- SD2- 28 SCSI Data2- SD3- 29 SCSI Data3- S04- 30 SCSI Data4- SD5- 31 SCSI DataS- SD6- 32 SCSI Data6- SD7- 33 SCSI Data7- SDP- 34 SCSI Parity- GND 35 Ground GND 36 Ground NC I 37 I No Connect TRMPWR 38 Terminator Power (+5 Volts DC, Fused, 3 Amps) NC 39 No Connect GND 40 Ground ATN- 41 Attention- NC 42 No Connect BSY- 43 Busy- ACK- 44 Acknowledge- RST- 45 Reset- MSG- 46 Message- SEL- 47 Select- CD- 48 Comrnand/Data- REQ- 49 Request- 10- 50 InputlOutput-

Revision A of April 10, 1990 122 The SPARCengine IE CPU Card User's Manual

+~I!! Revision A of April 10, 1990 15

Ethernet Interface

15.1. Required Reference Reference material required for a complete definition of the Ethernet interface: Material for the Am7990 Local Area Network Controller (LANCE) Technical Manual, Ethernet Interface Advanced Micro Devices, Inc., 1986. Am7992B Seriallnterjace Adapter (SIA) Technical Manual, Advanced Micro Devices, October, Inc., 1985. ANSI Specification 802.3, 1986, also known as: ISO/Draft International Standard 8802/3, February 1989. Federal Information Processing Standard (FIPS) 107, February 1989.

15.2. Introduction The SP ARCengine 1E card uses the AMD AM7990 Ethernet Controller chip to perfonn Ethernet processing.

15.3. Ethernet Interface The Ethernet controller is the AMD AM7990 LANCE chip. The data is Definition translated for the Ethernet by the AM7992 Serial Interface Adapter (SIA). The LANCE connects directly to the S4-DMA, over unique Ethernet interface sig­ nals. The S4-DMA will provide all necessary buffering and arbitration functions to allow the Ethernet chip to access main memory. The S4-DMA Ethernet inter­ face contains a 1 word (32bit) pack/unpack register with consistency control logic. Consistency control ensures that all data written by the Ethernet chip gets to main memory in a detenninistic manner. The LANCE uses multiplexed address and data, so the S4-DMA demultiplexes them internally. The address supported by the LANCE is 24 bits; as per the' SPARCengine IE specification the upper 8 bits of the 32 bit virtual address are driven to OxFF. The LANCE has a 16 bit data path which can accommodate 8 or 16 bit accesses, by the use of byte masking capabilities.

15.4. Ethernet Maximum Transfer Rate: 10 Mbits per second Performance Maximum Observed Rate: 7.5 Mbits per second

Ethernet Addresses The Ethernet Controller chip is in slot 0 address space at OxFOCOOOOOO. The fol­ lowing table shows the address and location of its internal registers:

123 Revision A of April 10, 1990 124 The SPARCengine IE CPU Card User's Manual

Table 15-1 Ethernet Registers

Address Description

OxFOCOOOOO Register Data Port (RDP)

OxFOCOOOO2 Register Address Port (RAP)

For additional infonnation, see the AMD Am7990 Data Sheet.

15.5. Ethernet Interrupt Level 6

15.6. Ethernet Bandwidth SP ARCengine IE can transfer data from the Ethernet into the on-card buffer and Capability memory at a maximum(estimated) rate of 10 megabits/sec.

15.7. Ethernet Transmits When it is in transmit mode, the AM7990 LANCE transfers data from the current and Receives buffer in L~~CE to a register called a Silo. The output of t'1e Silo is serialized and then goes to the Serial Interface Adclpter(AM7992). The output of the Serial Interface Adapter is connected to the Ethernet lines through a transfonner. In the receive mode, the Serial Interface Adapter(AM7992) receives data from the Ethernet cable. It transfers the data to the Silo in the LANCE. The LANCE transfers the data from the silo to the correct buffer in local memory.

IS.S. Ethernet Buffer The LANCE Controller utilizes up to 128 Kilobytes of memory for buffers. These buffers are usually allocated from the SPARCengine IE's main memory.

Revision A of April 10, 1990 Chapter 15 - Ethernet Interface 125

15.9. Ethernet Connector Pinout List

Table 15-2 Ethernet Pinout List -- Connector 10901

Signal Pin # Comments

NC 1 No Connect COL+ 2 Collision+ TxD+ 3 Transmit Data+ NC 4 No Connect RxD+ 5 Receive Data+ GND 6 Ground NC 7 No Connect NC 8 No Connect COL- 9 Collision- TxD- 10 Transmit Data- NC 11 No Connect RxD- 12 I Receive Data- +12V 13 +12 Volts DC. Fused, 3 Amps NC 14 No Connect NC 15 No Connect

15.10. Ethernet Interface /*lnitializing on-card ethemet chip ., • Abstract: Performs Lance hardware dependent variable • Programming • initialization for S\Dl Ethernet diagnostic. • • Algorithm: Initialize CSR 3 (describe bus acquisition • Pf~wc5 W u";.; ciiiu:Ci~). • • Initialize global variables and i/o data • • structures. • ·Routines called: ini_print, ini_read • • • .••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••,

long le_sys_init(argc,argv) int argc; char ·argv[] ;

extern int byteswapO;

extern short DSPL_ON; extern short err_dsp; extern char home_adr[6]; extern short INTR_ON; extern etraddr myaddr ; extern char neCdata []; extern short int ringsize,bufsize; extern int totbuf; u_short·rdpp 1* ptr to reg data port */ u_short·rapp 1* ptr to reg adr port • /

long mrc; long rc; extern int slot; Lnt i;

Revision A of April 10, 1990 126 The SPARCengine IE CPU Card User's Manual

rc= PASS;

1* init etherb8Se_va array *' for (i=O; i<= NUM_SLOTS; i++) etherbase_va[i] = 0;

ether.etherbase_size = (int)ROUNDUP(sizeof(LE_BLOCK),PAGESZ); etherbase_va[O] = ether.dvma_start;

1* Initializing on-card ethernet chip *' 1* set remaining chip'diagnostic ether mem variables *' ether.txbuCn = ONE « TLENMAX ; ether.rxbuCn = ONE « RLENMAX ; ether .txbuCsize = 1024 ; 1* may need to tweek this *' ether.rxbuCsize = 1024 ; 1* may need to tweek this *'

1* map on-card ethernet control block & buffers here *' 1* find the first available block for control block *' for( ether .etherbase_va:etherbase_ va[O],mrc=F AIL; PASSED(rc) && FAlLED(mrc);) ( if(FAILED(mrc = execmap(ðer.etherbase_va, ðer.etherdwn-pa, ether.etherbase_size. ether.ether_ftags»)

1* increment va by a page *' ether.etherbase_va += PAGESZ; 1* will we go beyond dvma space ? *' if(« u_Iong)(ether.etherbase_ va-tether.etherbase_size» >= «u_long)(ether.dvma_start+ether.dvma_size» )

rc=mrc; exec_log(ERROR.ALL_DST, "le_sys_init(1e%d): can not map on-card ethel'base{ %d)@Ox%xO, testinLLE.rc.ether.etherbase_va) ; } } } ,. for *' etherbase_va[O] = ether.etherbase_va; ether.ethermin_va = ether.etherbase_va + ether.etherb8Se_size;

rdpp = (u_shon *)(ethernecva[O)); ,. ptr to reg data pon *' rapp = (u_short *)(ethcmecva[O] + 2) ; ,. ptr to reg adr port *' *rapp = 0; 1* Select CSR 0 *' 1* set the stop bit in csrO to inactivate the lance chip *' *rdpp = (*rdpp) I Ox 0004;

for (i=l; i<=slots[O]; i++) ( ,. Initializing 2nd ethemet chip. *' 1* map 2nd ethemet control block & buffers here *' ,. find the first available block for control block *' for(ether.etherbase_va=etherbase_va[i-l]+ether.etherbase_size,mrc=FAIL; PASSED(rc) && FAlLED(mrc);)

if(FAlLED(mrc = execmap( ðer .etherbase_va. ðer.ethcrdum-pa, ether.etherbase_size, ether. ether_flags»)

,. increment va by a page *' ether.etherbase_va += PAGESZ; 1* will we go beyond dvma space? '*'

Revision A of April 10, 1990 Chapter 15 - Ethernet Interface 127

if(«u_long)(ether.etherbase_ va-t-ether .etherbase_size» >= «u_Iong)(ether.dvma_start+ether.dvma_size» )

rc=mrc; excc_Iog(ERROR.All.._DST. "le_sys_init(le%d): can not map 2nd etherbase{'7od}@Ox%xO. testinLLE.rc,ether.etherbase_va) ; - } } } rb~ etherbase_va[i] = ether.etherbase_ va; ether.ethermin_va += ether.etherbase_size; . rdpp= (u_short *)(ethemecva[i)) ; '* ptr to reg data port *' rapp = (u_short *)(ethemet_va[i] + 2) ; !* ptr to reg adr port *' *rapp = 0; I*Selcct CSRO *' 1* set the stop bit in csrO to inactivate the lance chip *' *rdpp = (*rdpp) I OxOOO4; 1* set stop bit in csrO *'

} 1* for *' totbuf = BUFSPC ; bufsize = 1024; ringsize = TLENMAX;

1* copy ethemet address from myaddr to home_adr *' bcopy(myaddr.home_adr,sizeof(etraddr» ; r 1 to 1 copy *' neCdata[O] =' '; neCdata[l] =' '; neCdata[2] =' '; neCdata[3] =' '; net_data[4] =' '; neCdata[5] =' '; neCdata[6] =' '; necdata(7) =' '; net_data[8] =' '; net_data[9] =' '; net_data[lO] = I'; necdata[1l] = 'h'; necdata[12] = T; neCdata[13] = '5'; neCdata[14] = • '; neCdata[15] = 'i'; necdata[16] = '5'; necdata[17] = • '; neCdata[18] = 'a'; neCdata[19] = • '; necdata[20] = 'f; ftAt-_._--t,_.&.J r1 ... t ... r"11 - .....-, ·ftAt.. --_---l--J r1 ... t ... r.,.,l - ',,'-, ...... --_--1.-..1.- t r1 ... h.r.,':n .... 't'·-, neCdata[24] = ' '; necdata[25] = '0'; neCdata[26] = 'f; neCdata[27] = ' '; necdata[28] = 't'; necdata[29] = 'h'; necdata[30] = 'e'; necdata[3l] =' '; necdata[32] = 'V; necdata[33] = 'A'; necdata[34] = 'N'; neCdata[35] = 'C'; necdata[36] = 'E'; net_data[37] = ' '; necdata[38] = 'E'; neCdata[39] = 'm'; net_data[40] = 'u'; necdata[41] = '1'; neCdata[42] = 'a'; neCdata[43] = 't'; neCdata[44] = '0'; necdata[45] = 'r'; err_dsp = SET; r error display flag *' DSPL_ON=O; '* By default, no debug msgs *' INTR_ON=O;

retum(rc) ; }

Revision A of April 10, 1990 128 The SPARCengine lE CPU Card User's Manual

Revision A of April 10, 1990 1h ~ '-' "'. -.:0-;;

SBus Interface

16.1. Required Reference Reference material required for a complete definition of the SBus: Material for SBus SBus Developer's Kit, Sun Part No. 825-I2I9-xx. The SPARCengine IE Color & Monochrome Video Cards User's Manual.

16.2. Introduction The SBus is a non-proprietary I/O expansion bus developed by Sun Microsys­ terns for some new Sun systems and board products. The bus lives in type 1 dev­ ice space.

16.3. SBus Slot Addresses Address bits PA[27:24] select one of two SBus slots, and bits PA[23:0] are avail­ able for addressing devices on the SBus card. Bits PA[27:24] select SBus slots as follows:

PA[27:24] Slot Address Range

00 SBus slot 0 OxFOOOOOOO to OxF3FFFFFF

01 SBus slot 1 OxF~toOxF7FFFFFF

SBus slot 0 is not a physical slot; it is occupied by devices residing on the SP ARCengine 1E CPU card. SBus slot 1 on the SPARCengine IE is a physical slot, where cards such as the SBus Video Cards can be utilized. The SBus device addresses are described in the following sections.

129 Revision A of April 10, 1990 130 The SPARCengine IE CPU Card User's Manual

16.4. SBus Slot 0 Devices The SBus Slot 0 devices are physically on the CPU card. SBus slot 0 is in type 1 space at a base address of OxFOOOOOOO. The base address contains the card ID number, DMA registers, SCSI registers, and Ethernet registers. These are located at the following addresses:

Table 16-2 SBus Slot 0 Addresses

Offset Description

OxFOOOOOOO Card ID (OxFE810101)

OxF04OOOOO DMA Registers: Control/Status Address Byte Count Diagnostic

0xF0800000 SCSI Registers: Transfer Count Register AFO Register Command Register Status Register Select/Reselect Bus ID Register Sequence Step Synchronous Transfer Period Register AFO Rags Register Synchronous Offset Register Configuration Register Qock Conversion Register Test Register

OxFOCOOOOO Ethernet Registers: Data Port Address Port

NOTE The slot 0 space/rom OxF2000000 to OxF3FFFFFF is not used.

Card ID The card ID (data OxFE810101 allocation OxFOOOOOOO) is a line of Forth code that identifies the card in SBus slot 0 to the operating system (in this case, the CPU card identi fies iL~el f).

Revision A of April 10, 1990 Chapter 16 - SBus Interface 131

DMA Registers The OMA register space contains four registers, addressed by ful1word loads and stores to the following addresses:

Table 16-3 DMA Register Addresses

- -- I Address Description

0xF0400000 OMA ControVStatus Register

0xF0400004 OMA Address Register

OxF04OOOOS OMA Byte Count Register

0xF040000C OMA Diagnostic Register

OMA ControVStatus Register The DMA control/status register has the following fonnat: 0[31 :27] - DEV_ID These read-only bits contain the data OxOB1000. They identify the Ethernet device type. 0[27:15] These bits are unused; they read back as O's. 014-TC This read-only bit indicates the that the byte counter has expired (decre­ mented to 0). 013-EN_CNT This read/write bit enables the OMA byte count register. 0[12:11] - BYTE_AOOR These two read-only bits indicate the next byte number to be accessed.

010 ~ REQ_PENO This read-only bit is set when the OMA interface is active. Note that RESET and FLUSH must not be asserted when this bit is active. D9-EN_OMA This read/write bit is set to enable OMA activity and reset to disable it. OS-WRITE This read/write bit is set for OMA from memory to device (write) and reset for OMA from device to memory (read).

Revision A of April 10, 1990 132 The SPARCengine lE CPU Card User's Manual

D7-RESET Setting this read/write bit causes a hardware reset. ERR_PEND, PACK_CNT, INT_EN, FLUSH, DRAIN, WRITE, EN_DMA, REQ_PEND, EN_CNT, and TC are all set to zero. RESET remains set, and must be reset to resume operation. D6-DRAIN Setting this read/write bit forces remaining pack register bytes to be drained to memory. It resets itself. OS-FLUSH This write-only bit forces PACK_CNT and ERR_PEND to zero. It always reads as zero. D4-INT_EN This read/write bit enables interrupts when it is set. 0[3:2] - PACK CNT This read only field provides the number of bytes in the pack register. 01 - ERR_PEND This read-only bit is set when a memory exception occurs, and is reset by setting FLUSH. DMA activity stops until it is reset. DO - INT_PEND This read-only bit is set when TC= 1, or when an external device raises an interrupt..

DMA Address Register The DMA address register is located at address OxF040004. It holds the virtual address of the OMA transfer. Initially, it should be loaded with the virtual address where the OMA will start. As the OMA proceeds, both the OMA byte count register and bits [23:0] of the OMA address register are decremented. Bits [31 :24] of the DMA address register indicate which 16-megabyte portion of virtual memory is accessed. These bits are latched; they do not change as the OMA proceeds.

DMA Byte Count Register When the EN_CNT bit in the OMA control/status register is set, bits [23:0] of this register keep a count of the number of bytes transferred by the OMA circuits. It should be loaded with the total number of bytes to be transferred; it decrements towards zero as the bytes are transferred. When it reaches zero, it sets TC and INT_PEND in the OMA status/control register. Note that bits [31:24] are hardwired to zero.

DMA Diagnostic Register This register is not implemented at this time.

16.5. SBus Slot 1 Devices Any device plugged into the actual SBus connector on the CPU card is a "slot 1" device. As of the print date of this manual, the SPARCengine IE supports two video cards, color and monochrome, that can be plugged into the SBus connector on the CPU card. These cards are interchangeable at the card level, but require

Revision A of April 10, 1990 Chapter 16 - SBus Interface 133

different cables and monitors. The two cards have different registers. For specific information on these cards, please refer to The SPARCengine IE Color &. Monochrome Video Cards User's Manuai. For all other SBus cards, refer to the technical documen.tation & manuals pro­ vided with the card.

SPARC Assembly Language /* * sbus.s Example */ #define sbud_id OxOOO 10000 /* sbus ID virtual address */ #define sbus_phy OxfOOOOOOO /* sbus ID physical address */ #define TYPE1_A1TRIBUTES Oxd4000000 /* valid, writable. don't cache */

.seg "text" .global Sbus_id !------! Read SBus slot 0 card ID register Sbus_id: save %sp, -MINFRAME, %sp ! preserve calling indow set sbus_id. "000 ! Virtual address to be mapped. set TYPE1_A1TRIBUTES, %02 ! Page table entry attributes. set sbus-J)hy, %03 ! Physical address to be mapped.

call -PJ1lap_memory ! Map in specified block of memory. mov %00, %01 ! Upper virtual address to be mapped. set sbus_virt. %15 ! Address of SBus register. ld [%00],%14 ! Read Card ID status nop ret restore

!* * PMAP.S ./ #define SEGINCR Ox4()()()() ,. offset between adjacent segments */ #define SGSHIFI' 18 ,. L002(NBSG) */ #define ASCSM 0x3 /*segment map */ #define PAGINCR Ox2000 ,. offset between adjacent pages */ #define PGSHIFT 13 ,. L002(NBPG) */ #define ASCPM Ox4 ,. page map */

.seg "text" .global_pmap_memory 1* * Synopsis: status=pmap_memory(1ow_va, hi_va, attributes, low_pa); * status : (int) don't care * low_va (%iO) : (unsigned long) initial virtual address * hi_va (%il) : (unsigned long) final virtual address * attributes (%i2): (\D1signed long) page table entry attributes * 10w-P3 (%i3) : (unsigned long) initial physical address * * Function "pmap_memory" (physical map memory) linearly maps the range of * virtual addresses specified by 'low_va' and 'hi_va', beginning at physical * address 'low_pa', with page table entry attributes 'attributes'. */ -Pfllap_memory: ,.save %sp, -MINFRAME,%sp * Fill in segment table entries for a linear mapping of main memory. */ set SEGINCR, %13 ! Adjacent segment table entry offset

Revision A of April 10, 1990 134 The SPARCen~ine IE CPU Card User's Manual

sub %13. Oxl. %14 ! Mask for segment table addressing. andn %iO, %14, %12 ! Adjust initial virtual address. 3: srI %12. SGSHIFT. %10 ! Segment table entry (pmeg number). dd %10, [%12]ASCSM ! Set segment table entry. add %12, %13, %12 ! Increment address by one segment. cmp %12, %i1 ! If current virtual address is not bgt 4f nop bleu 3b ! greater than the final virtual nop ! address, continue. 4: 1* * Fill in page table entries for a linear mapping of main memory . ./ set PAGINCR. %13 ! Adjacent page table entry offset sub %13, Oxl, %14 ! Mask for page table addressing. andn %iO, %14, %12 ! Adjust initial virtual address. 1* • Generate the initial page table entry. */ andn %i3, %14, %11 ! Adjust initial physical address. 5: srI %11. PGSHIFT, %10 ! Page number of page table entry. m %10, %i2, %10 ! Combine attributes and page number. sta %10, [%12]ASCPM ! Set page table entry. add %11, %13, %11 ! Increment physical address by a page. add %12, %13, %12 ! Increment virtual address by a page. cmp %12, %i1 ! If current virtual address is not bgt 6f non---r bleu 5b ! greater than the final virtual nop ! address, continue. 6: 1* * Mapping completed . ./ ret restme

Revision A of April 10, 1990 Chapter 16 - SBus Interface 135

C Example ,. * caddct map_SBus_address(u_int p_addr. u_int num-pages) * oF Inputs: Physical address and the # of pages to map. * Retmns: Virtual address of the mapped page(s). */

caddr_t map_SBus_address(p_addr, num-P8ges) u_int p_addr; 1* physical address on the SBus to map */ u_int num-pages; 1* II of pages to allocate/map */ { long v _pgnum; u_int v _addr; ll_i.llt offset; u_int PLtbl_ent;

1* * Save the offset from the page boundary so that * we can apply it to the virtual address once the * page is mapped in. */ offset =p_addr & MMU_PAGEOFFSET;

!* * Create a page table entry that maps the physical address * "p_addr" into SBus space. */

1* * Allocate virtual pages that we can use from the * kernel map of available virtual addresses.

*/ •• __•• ____11 __ 1'1 ___' ___ " ___ ,\L.__ '_•• ______\'\•

.. _P6I1UJII - IlI1CUI\Aoo\A";UI";UIlGp, VVIl6}ULU'-\IIUJIl-JlG6~}" if (v -pgnum == 0) 1* no addresses available from kemelmap */ return (caddr_t)O; 1* * Convert the virtual page II to a virtual address */ v_addr = (u_int)kmxtob(v _pgnum);

1* * Map the physical address into our allocated virtual address. */ segkmem_mapin(&kseg, v _addr, num-pages, PROT_READ I PROT_WRITE, PLtbl_ent, 0);

1* * Return to the caller of this function the virtual address of * the mapped SBus physical address. */ return (caddr_t)(v _addr I offset); 1* end of of map_SBus_address */

Revision A of April 10, 1990 136 The SPARCengine IE CPU Card User's Manual

Forth Example fOOO.OOOO constant SBUS-SLOTO physical address 0001.0000 constant SBUS-ID virtual address

SBUS-SLOTO obio SBUS-ID map-page map into type1 (on-card I/O) space SBUS-IDl@ . fetch and display sbus-id NOTE SBus slot 0 contains the DMA, Ethernet, and SCSI chips. Slot 1 contains SBus cards.

Revision A of April 10. 1990 17..L I

P2 Bus Interface

17.1. P2 Bus Interface The DRAM Parity memory on-board the SPARCengine IE CPU Card can be Overview augmented with the addition of up to 4 SPARCengine IE ECC Memory Cards. The CPU accesses this additional memory by means of a Sun-designed private bus (P2 Bus) whose signals are carried on the outer rows "A" and "c" of the 96- pin P2 backplane connector. This bus is an extension of the CPU's SBus in which address and data is multiplexed and only slave transfers are supported (Le., an SBus master may not reside on the P2 Bus).

17.2. Non-Compatibility The SPARCengine IE P2 Bus is unique to the SPARCengine IE. It is not com­ Announcement for patible with the P2 Bus on any other Sun Microsystems card products. Use of the P2 Bus the Sun Microsystems P2 Bus for development is discouraged by Sun Microsys­ terns, who reserves the right to re-configure the P2 Bus for each product released. The P2 Bus is not documented for public usc. While the SPARCengine IE card family will work in a Sun-3E compatible back­ plane, Sun-3E parity memory cards arc not supported in a SPARCengine IE sys­ tem.

17.3. P2 Bus Interface The P2 Bus Interface supports type I slave transfers to access ECC Memory Memory Map registers and type 0 slave transfers to access the ECC Memory itself. The fol­ lowing tables outline the mapping of the P2 Bus within the physical address space of the SBus. These addresses arc said to reside within the P2 slot of the SBus.

137 Revision A of April 10, 1990 138 The SPARCengine IE CPU Card User's Manual

Pins 1 & 2 of 10801 The first table below is applicable when pins 1 and 2 of jumper J0801 are jum­ pered on the SE IE CPU.

Table 17-1 P2 Slot Addresses - J0801 Pin 1 Jumpered to Pin 2

SBus Address Type Description

OxFCOOOOOO-OxFCOOOOFF 1 IE ECC Memory I/O Registers

OxFCOOOI00-0xFFFFFFFF 1 Reserved P2 Bus type 1

OxOC080000-0xOFFFFFFF 0 Reserved P2 Bus type 0

Oxl~OxlFFFFFFF 0 IE ECC Memory

Pins 2 & 3 of J0801 The table below is applicable when pins 2 and 3 of jumper J0801 are jumpered together.

Table 17-2 P2 Bus Slot Addresses - 10801 Pin 2 lumpered to Pin 3

SBus Address Type Description

OxFCOOOOOO-OxFCOOOOFF 1 IE ECC Memory I/O Registers

"OxFCOOOIOO-OxFFFFFFFF I Reserved P2 Bus type 1

Ox~OxOFFFFFFF 0 IE ECC Memory

Ox 1OOOOOOO-Ox 1FFFFFFF 0 Reserved P2 Bus type 0

Revision A of April IO, 1990 Chapter 17 - P2 Bus Interface 139

17.4. P2 Bus Connector The table below lists the pinout of the CPU P2 connector, which includes the P2 Pinout List Bus on the two outside rows.

Table 17-3 P2 Bus Pinout List -- Connector P1802

Signal Pin # Signal I Pin' Signal Pin #

PAR 1 VCC 33 PAR 65 ACK8* 2 GND 34 GND 66 ACK32* 3 RESERVED 35 CLK 67 SIZO 4 Pl.A24 36 MEM_ERR* 68 SIZI 5 Pl.A25 37 PAR<3> 69 PAR<2> 6 Pl.A26 38 IRQ5* 70 READ 7 Pl.A27 39 GND 71 SIZ2 8 Pl.A28 40 I/OSEL* 72 BUS_ERR* 9 Pl.A29 41 RESET* 73 SELRAM* 10 Pl.A30 42 PUR* 74 AS* 11 Pl.A31 43 ERR_EN* 75 GND 12 GND 44 GND 76 IOAO I 13 VCC 45 OA16 I 77 DAI 14 I P1.DI6 I 46 I DA17 I 78 DA2 15 Pl.D17 47 DAIS 79 DA3 16 P1.DI8 48 DA19 80 GND 17 P1.DI9 49 GND 81 OA4 18 P1.D20 50 OA20 82 DAS 19 P1.D21 51 DA21 83 DA6 20 Pl.D22 52 DA22 84 DA7 I 21 Pl.D23 53 DA23 85 GND 22 GND 54 GND 86 DA8 23 P1.D24 55 OA24 87 DA9 24 Pl.D25 56 DA2.~ 88 OAI0 25 Pl.026 57 OA26 89 DAll 26 Pl.027 58 DA27 90 GND 27 P1.D28 59 GND 91 OA12 28 P1.029 60 OA28 92 DA13 29 P1.D30 61 OA29 93 OA14 30 P1.031 62 OA30 94 DAIS 31 GND 63 OA31 95 GND 32 VCC 64 GND 96

NOTES Signals on the middle row of pins are for the VMEbus. Signals on all outer row pins except for 1,6,10,65,69 and 74 are used for the P2 Bus.

Revision A of April 10, 1990 140 The SPARCengine lE CPU Card User's Manual

17.5. P2 Bus Performance The following table outlines the perfonnance of IE ECC memory access via the P2 Bus.

Table 17-4 P2 Bus Performance

Memory Access Cycle Type Number of SBus Clock Cycles

Word Read 8 Word Write 6 Burst Read (16 bytes) 14 Burst Write (16 bytes) 11 Partial Write (less than 4 bytes) 10

17.6. P2 Bus Programming The example in this section show how to use type 0 and type 1 device spaces. Operation The program are going to be used as modules of other programs, the stack pointer preserve calling window should only be used at the beginning of the pro­ ,.gram.

• you can put a!! cia!.!! define !.f! Ll-te !'f!dude file. for !...nsttmce, ·linclude "dala_definition.h" ./ *define BCC_and_Yin OxffOOOO ,. BCC comnland/slawS virtual address·/ ldefine BCC_and.Jlhy OxfcOOOOOOO ,. BCC and/staws physical address·/ 'define TYPBCAlTRIBUTES Oxd4000000 ,. valid, writable, don't cac.'te·/

.seg "leXt" .global P2_bus_and !------! Read BCC command/status register in type 1 space P2_bus_and: save %sp, -MTh'FRAME,%sp ! Preserve calling window. set BCC_and_vin, %00 ! Vinual address to be mapped. set TYPBCATIRIBUTES, %02 ! Page table entry attributes. set ECC_and-Phy, %03 ! Physical address to be mapped.

call ,..pmap_memory ! Map in specified block of memory. mov %00, %01 ! Upper vinual address to be mapped. set ECC_and_vin, %15 ! Address of and/status register. ld [%15J, %14 ! Read cmd/status register nop ,. restore • P2-Bus ECC memory interface test. ·1 'define ECC -Phy..,phy Ox 1OOOOOOOO 1* ECC memory physical address ./ 'define ECC -Phy _Yin Ox 100000 1* ECC memory vinual address *1 'define TEST_PAIT Oxa5a5a5a5 ,. Tesl pattern *1 #define TYPEO_A TIRIBUTES (hdOOOOO(Y) ,. valin, wn,tl

.seg "text" .global P2_bus_memory 1------_ .... ----.

Revision A of April 10, 1990 Chapter 17 - P2 Bus Interface 141

I Map ECC memory in type 0 space mel readlwrite ECC memory. P2_bus_memory: save "sp, -MINFRAME,"sp ! preserve calling window cir %00 ! Lower yu-wal address to be mapped. set ECC..Jlhy_vUt. 'f,01 I Upper virtual address 10 be mapped. set TYPEO_ATIRIBUTES, %02 I Page table enby anribulcs. set ECC_and..Jlhy. %03 ! Physical address 10 be mappeo.

c:all ~-memory ! Map in specified block of memory. nap set ECC..Jlhy_ Yin, .,14 ! Address of virtual memory. set TEST_PA TI, .,12 ! test pattern source st .,12, [.,14] ! put pattern into main RAM not .,12 I invert pattern inc 4, .,14 I bump up 10 next word st .,12, [.,14] ! put invert pattern inoo main RAM

ld [.,141, .,11 ! get pattern from high location anp .,11, .,12 ! is data okay? be 3f ! if yes go check original location nap call error ! print test failure on console or LED nap 3: dec 4, .,14 ! retum to original word ld [.,14], .,11 ! get pattern from original location not %12 ! re-invert source pattern anp .,11, %12 ! is data okay? be 4f ! if yes go check original location nap call enor ! print test failure on console or LED b,a U ! jump If exit 4: call 1est~ssed ! print test passed on console or LED ft\:ioP 1: ret restore

1* • PMAP.S ./ 'define SEGINCR Ox40000 1* offset between adjacent segments ./ 'define SGSIDFf 18 1* LOG2(NBSG) ./ 'define ASCSM Ox3 ,. segment map ., 'define PAGINCR Ox2000 1* offset between adjacent pages·/ 'define PGSmFf 13 ,. LOG2(NBPG) ./ 'define ASI_PM Ox4 1* page map ./

.seg "text" .global ..,prnap_memory 1* • Synopsis: status=pmap_memory(low_va, hi_va, auributes,low-P3); • status : (int) don't care • low_va (%iO): (unsigned long) initial virtual address • hi_va (%il): (unsigned long) final virtual address • attributes (%i2): (unsigned long) page table entry attributes • 10w.J) (%i3): (unsigned long) initial physical address • * Function "pmap_memory" (physical map memory) linearly maps the range of * Yinual addresses specified by 'low_va' and 'hi_va', begirming at physical • address 'low~a', with page table enby attributes 'attributes'.

....,PIIlap_memory:*'

Revision A of April 10, 1990 142 The SPARCengine IE CPU Card User's Manual

,. save 'lisp. -MINFRAME,%sp .•, Fill in segment table entries for a linear mapping of main memory . set SEGINCR, %13 ! Adjacent segment table entry offseL sub %13, Oxl, %14 , Mask for segment table addressing. andn %iO. %14. %12 , Adjust initial virtual address. 3: sri %12. SGSHIFI', %10 I Segment table entry (pmeg nwnber). stha %10. [%12]ASCSM I Set segment table entry. add %12. %13, %12 I Increment address by one segment. anp %12, %i1 I H current virtual address is not bgt 4f nop bleu 3b , greater than the final virtual nop I address. continue. 4: ,. .• ,Fill in page table entries for a linear mapping of main memory . set PAGINCR. %13 , Adjacent page table entry offset. sub %13,OxI, %14 , Mask for page table addressing. ,.andn %iO, %14. %12 I Adjust initial virtual address. .• ,Generate the initial page table entry . andn %i3, %14, %11 I Adjust initial physical address. S: sri %11, PGSHIFr. %10 I Page Dumber of page table entry. or %10, %i2, %10 , Combine attributes and page number. Ita %10, [%l2JASI_PM ! Set page table entry. add %11, %13, %11 I Increment physical address by a page. add %12. %13. %12 ! Increment virtual address by a page. anp %12. %i1 ! H cunmt virtual address is not bgt 6f nop bleu Sb I greater than the final virtual nop ! address, continue. 6: ,. .,• Mapping completed. ret restore

Revision A of April 10, 1990 18

Serial Interface A

IS.I. Required Reference Reference material required for a complete definition of the Serial Interface A: Material for Serial Interface A ZS030lZS530 Serial Communications Controller (SCC) Technical Manual, Zilog, Inc., January 1983. AmU030lAmZS530 Serial Communications Controller (SCC) Technical Manual, Advanced Micro Devices, Inc., 1982. EIA Standard - RS-232-C, Electronic Industries Association, August, 1969. EIA Standard -- RS-422-A, Electronic Industries Association, December, 1978 EIA Standard - RS-423-A, Electronic Industries Association, December, 1978. EIA Standard - RS-449-A, Electronic Industries Association, December, 1977.

IS.2. Serial Interface A 0xE2000000 De~!ee .Address On-Board Inpu!/Output (OBIO)

IS.3. Serial Interface A The A serial port interface supports asynchronous RS-423 with full modem con­ Definition trollines, and supports RS-449 on selected lines. For most applications, the inter­ face will be directly compatible with RS-232 equipment as well. In addition to the RS-423 interface logic, four of the signals are brought out to separate connec­ tor pins via RS-422 compatible drivers. and receivers. Transmit Data (TxD), Receive Data (RxD), Request to Send (RTS) and Clear to Send (CfS) signals are provided for use in electrically noisy environments or where longer cable lengths are required.

IS.4. Serial Interface A Asynchronous Speed: 19.2 baud Performance Synchronous Speed: 9600 baud The Synchronous Serial Communications Controller (Z8530) will support data rates up to 2M bits/second. However, RS-232 limits transmission rates in asyn­ chronous mode to 20K bits/second, and RS-423 limits data rates to lOOK bits/second. The maximum baud rate supported by the Boot PROM on the SPARCengine IE is 19.2K bits/second and assumes a 1/16 bit clock divisor. Faster bit rates can be programmed for custom applications. Refer to the Z8SJO see Technical Manuals for more details. For reference, the clock input to the sec for baud rate generation is 4.9152 MHz.

143 Revision A of April 10, 1990 144 The SPARCengine lE CPU Card User's Manual

IS.S. The Connector Because of space considerations in designing the SPARCengine IE, standard 25 pin (OB-25) connectors would not fit on the rear panel. The connector style is a IS-pin 3-row female (or receptacle) connector housed in a standard OB-9 shell, commonly referred to as a "double-density" or "high-density" connector. Mating male (Plug) connectors are available from a variety of vendors. Below are several that are compatible with the SPARCengine IE serial connectors. NOTE The Serial A and B connectors are NOT DB9 connectors.

Table 18-1 Compatible Serial Connectors

Manufacturer Part Number

AMP 204501-3

ITICannon ZDEA111981

Viking 00S2MSI

______~II------~

18.6. Serial A Connector Pinout List

Table 18-2 Serial A Pinout Ust -- Connector J1201

Signal Pin# Comments

GND 1 Ground TxD 2 Transmit Data (RS-423 only) RxD- 3 Receive Data- (RS-423 and -422) RTS 4 Request to Send (RS-423 only) CfS- 5 Clear to Send- (RS-423 and -422) DSR 6 Data Set Ready DTR 7 Data Terminal Ready DCD 8 Data Carrier Detect RTS+ 9 Request to Send+ (RS-422 only) RTS- 10 Request to Send- (RS-422 only) crS+ 11 Clear to Send+ (RS-422 only) TxD+ 12 Transmit Data+ (RS-422 only) TxD- 13 Transmit Data- (RS-422 only) RxD+ 14 Receive Data+ (RS-422 only) GND 15 Chassis Ground

Revision A of April 10, 1990 Chapter 18 - Serial Interface A 145

18.7. Special Cabling An adapter cable is required to connect the SP ARCengine IE serial ports to stan­ Requirements dard RS-423 or RS-232 compatible DTE or DCE equipment. Due to the variety of possible interface optiop-s, no single cable win be adequate for all configurations. Following are examples of serial interface configurations using tIle SPARCengine IE serial A port.

Table 18-3 Serial A Cabling Option: Asynchronous RS-232 DTE to DTE

Signal SPARCengine IE Serial A Port I RS-232 Device (DTE) (DTE)

A Connector (I5-pin) RS-232 Connector (25-pin)

GND 1 7

Till 2 3

RxD 3 2

RTS 4 5

CTS 5 4

nco 8 20

DTR 7 8 II

Revision A of April 10, 1990 146 The SPARCengine IE CPU Card User's Manual

Table 18-4 Serial A Cabling Option: Asynchronous RS-449 DTE to DTE

Signal- SPARCengine IE Serial A Port RS-449 Device

(DTE) (DCE)

A Connector (IS-pin) RS-449 Connector (37 -pin)

GND 1 19

TxD+ 12 24

TxD- 13 6

RxD+ 14 22

RxO- 3 4

RTS+ 9 25

RTS- 10 7

crs+ 11 27

crs- 5 9

Revision A of April 10, 1990 19

Serial Interface B

19.1. Required Reference Reference material required for a complete definition of the Serial Interface B: Material for Serial Interface B ZS030lZS530 Seriol Communications Controller (SCC) Technical Manual, Zilog, Inc., January 1983. AmU0301AmZ8530 Serial Communications Controller (SCC) Technical Manual,Advanced Micro Devices, Inc., 1982. EfA Standard -- RS-232-C, Electronic Industries Association, August, 1969. EfA Standard -- RS-422-A, Electronic Industries Association, December, 1978 EfA Standllrd - RS-423-A, Electronic Industries Association, December, 1978. EfA Standllrd - RS-449-A, Electronic Industries Association, December, 1977.

19.2. Serial Interface B QxE2000000

(OBIO)

19.3. Serial Interface B The B serial port interface supports asynchronous and synchronous RS-423 with Definition full modem control lines. For most applications the interface will be directly compatible with RS-232 equipment as well. The B port is not identical to the A port; synchronous clock lines (TxC, TxCO, and RxC) have been provided to sup­ port applications requiring SunLink capability via a synchronous modem connec­ tion.

19.4. Serial Interface B Asynchronous Speed: 19.2 baud Performance Synchronous Speed: 9600 baud The Synchronous Serial Communications Controller (Z8530) will support data rates up to 1M bits/second. Refer to the Z8530 see Technical Manual for more details. For reference, the clock input to the SCC for baud rate generation is 4.9152 MHz. Because of space considerations in designing the SP ARCengine IE, standard 25 19.5. The Connector pin (DB-25) connectors would not fit on the rear panel. The connector style is a 3-row female (or receptacle) connector housed in a standard DB-9 shell, com­ monly referred to as a "double-density" or "high-density" connector. Mating male (Plug) connectors are available from a variety of vendors. Below are several that are compatible with the SPARCengine IE serial connectors.

147 Revision A of April 10, 1990 148 The SPARCen~e IE CPU Card User's Manual

Table 19-1 Compatible Serial Connectors

Manufacturer Part Number

AMP 204501-3

ITI Cannon ZDEAl11981

Viking DDS2MSI

19.6. Serial B Connector Pinout List

Table 19-2 Serial B Pinout List -- connector J 1202

Signal Pin # Comments

GND I GrolDld TxD 2 Transmit Data (RS423. RS232) RxD- 3 Receive Data (RS423. RS232) RTS 4 Request to Send ers 5 Clear to Send DSR 6 Data Set Ready DTR 7 Data Terminal Ready DCD 8 Data Carrier Detect TxC 9 Sync Transmit Clock (Input) TxCO 10 Sync Transmit Clock (Output) RxC 11 Sync Receive Clock (Input) TxD+ 12 Transmit Data+ (RS422 only) TxD- 13 Transmit Data- (RS422 only) RxD+ 14 Receive Data+ (RS-422 only) GND 15 GrolDld

19.7. Special Cabling An adapter cable is required to connect the SPARCenginc IE serial ports to stan­ Requirements dard RS-423 or RS-232 compatible DTE or DCE equipment. Due to the variety of possible interface options, no single cable will be adequate for all configurations. Following are examples of serial interface configurations using the SP ARCengine 1E serial B port.

Revision A of April 10, 1990 Chapter 19 - Serial Interface B 149

Table 19-3 Serial B Cabling Option: Asynchronous RS-232 DTE to DTE

I •'''gn~1.:n _ca_ SPARCengine IE Serial B Port RS-232 Device I (DTE) I (DTE) I

B Connector (I5-pin) RS-232 Connector (25-pin)

GND 1 7

TxD 2 3

Rill 3 2

RTS 4 5 I I I CTS 5 4

DCD 8 20

DTR 7 8

.[!!,!! Revision A of April 10, 1990 150 The SPARCengine IE CPU Card User's Manual

Table 19-4 Serial B Cabling Option: Synchronous RS-232 DTE to DTE

Signal SPARCengine IE Serial B Port RS-232 Modem

(OTE) (DTE)

B Connector (I5-pin) RS-232 Connector (25-pin)

TDX 2 3

RDX 3 2

GND 1 7

DCD,DSR 8,6 20

DTR 7 8,6

RTS 4 5

crs 5 4

TXCO 10 17

RXC 11 24

Revision A of April 10, 1990 Chapter 19 - Serial Interface B 151

Table 19-5 Serial B Cabling Option: Synchronous RS-232 DTE to DCE

II~· ulgna. I SPARCengine IE Serial B Port I RS-232 Modem I I (DTE) I (DCE) B Connector (I5-pin) RS-232 Connector (25-pin)

GND 1 7

TxD 2 2

RxD 3 3

I RTS 4 4 I I CTS 5 5

DSR 6 6

DTR 7 20

DCD 8 8

TxC 9 15

RxC 11 17

Revision A of April 10, 1990 152 The SPARCengine IE CPU Card User's Manual

Table 19-6 Serial B Cabling Option: Asynchronous RS-449 DTE to DTE

Signal SPARCengine IE Serial B Port RS-449 Device

(DTE) (DCE)

A Connector (IS-pin) RS-449 Connector (37 -pin)

GND 1 19

TxD+ 12 24

TxD- 13 6

RxD+ 14 22

RxD- 3 4

Revision A of April 10; 1990 20

Key board/Mouse Interface

20.1. -Required Reference Reference material required for a complete definition of the Keyboard/Mouse Material for Interface: KeyboardIMouse Z80301Z8530 SeriD:l Communications Controlkr (SCC) Technkld Manual, Interface Zilog, Inc., January 1983. AmU0301AmZ8530 Serial Communications Controller (SeC) Technical Manual,Advanced Micro Devices, Inc., 1982.

20.2. KeyboardIMouse OxEOOOOOOO Device Address On-Board Input/Output (OBIO)

20.3. KeyboardIMouse The keyboardlmouse serial interfaces are implemented with a Z8530 Synchro­ Interface Definition nous Serial Communications Controller. The sec features two programmable serial chamels with built in baud-rate generators. lbe clock input to the see for baud-rate generation is 4.9152 MHz and is independent of tile IU clock. Reset of the keyboard/mouse SCC is forced at power-up by asserting both read and write strobes simultaneously. Mouse and keyboard data are transmitted and received over connector JII01 (DB-IS). All data signals are TIL-compatible and cannot be direct-connected to RS-232, RS-423, or other non-TIL compatible equipment

20.4. Specifications The keyboard/mouse interfaces are designed to connect to Sun type-3 and type-4 keyboards. The Boot PROM will interrogate the interface upon power-up to determine if a keyboard is present. If not, the PROM expects a terminal to be connected to the Serial A port. NOTE The keyboard/mouse interface is intended/or use with Sun keyboards only; cus­ tom serial expansion via this interface requires Boot PROM modifications and is not recommended without the support 0/ Sun Consulting.

153 Revision A of April 10, 1990 154 The SPARCengine IE CPU Card User's Manual

20.5. KeyboardIMouse Connector Pinout List

Table 20-1 K eyboardJ Mouse Pinout List

Signal Pin # Comments

Rxoo 1 Received Data 0 GND 2 Ground Txoo 3 Transmitted Data 0 GND 4 Ground RxOI 5 Received Dala 1 GND 6 Ground TxOI 7 Transmitted Data 1 GND 8 Ground GND 9 Ground +SV 10 +5V 11 +5V 12 +5V 13 +5V 14 +5V 15

Revision A of April 10, 1990 Environmental Tests and Results

A.I. Tests Completed As of this printing (March 31, 1990), all "standard" tests are complete, some "rugged" tests are complete, and the remaining "rugged" tests are expected to be completed by May 31, 1990. In the results presented in this chapter, those tests that are still to be completed are indicated with TBD (to be determined). For definitions of standard and rugged, see appropriate sections in this chapter.

A.2. Overview This chapter describes the environmental tests performed on the SPARCengine IE card set. The test series include both standard and rugged tests,which correspond to the Sun system-level Environmental Test Specification and Mili­ tary Standard 81 OE, respectively. NOTE Because these test specifications are only applicable to full systems (boards within chassis, with power supplies, etc), they have been modified/or the board­ level SPARCengine 1E evaluation .

... -:----;--- -~ .. L_ 4 __.. ___ c ___.. ! ___ I'L.._A-..I ...... "' ... ,1 .. ,."". h ...... 4C'1\ :,r...... " ••• Adiod n ~WIlIlIC1ly VI UI~ L~~L \'VIIUCUIClLlVIl~ \UVCllU ~..., Q1'" 1."'.,1. 111\.1."'."'." • ., .,.VY.Y"Y. After the summary, a general description of the test approach is given for both standard and rugged series, along with the test levels for the individual tests. Results are given for all standard tests and those rugged tests already completed.

A.3. Test Configurations For simplicity, the SPARCengine IE boards were tested together as "systems" in a variety of special test fixtures. The weakest board in the set for each test will thus determine the performance level of the entire set; this allows a common specification for all boards and greatly reduces test time. The boards included in the entire test series are: SP ARCengine IE CPU SPARCenginc IE Color Frame Buffer SP ARCengine 1E Analog Frame Buffer SPARCengine IE Memory 4MB SP ARCenginc 1E Memory 16MB A total of two complete sets of boards were used in these tests, to allow parallel testing and minimize the effects of transducer installation and removal. To minimize test time, non-operating tests were performed on all boards at once (whenever possible). Operating tests were performed on two groups of boards (one group at a time), typically configured as follows:

155 Revision A of April 10, 1990 156 The SPARCengine IE CPU Card User's Manual

Table A-I Testing Groups

"M04" Group "C16" Group

SPARCengine IE CPU SP ARCengine IE CPU SPARCengine IE Analog Frame Buffer SPARCengine IE Color Frame Buffer SPARCengine IE Memory 4MB SP ARCengine IE Memory 16MB

Each group was on a common backplane, in a test fixture appropriate for the indi­ vidual test.

Standard Test Series The standard test series is the complete set of Sun Environmental Test Specifications (Sun 950-1316-02) for system-level products. The board set was tested to the requirements of the Class III (General Commercial/lndustrial) environment. The series included tests which are not covered by MilStd 810E (such as system-oriented electrical tests) and others in which part or all of Sun's standard test levels exceed the MilStd (such as the high end of Non-Operating Temperature). Most of the standard tests were conducted with the SP ARCengine 1E boards installed in a card cage enclosure which consists of an off-the-shelf card cage, power supply, backplane, and fans, as well as a Sun-designed sheet metal shell. This enclosure is a six slot VME card cage in a Sun "shoebox" peripherial pack­ age. The "shoebox" is used by Sun for development and prototype testing of 6U format VMEbus boards. Since voltage margin and other DC power tests were not conducted by EnvTest on the SPARCengine IE boards, this enclosure allowed the boards to be tested for response to AC power variations in a "typical" system. The enclosure also provided a convenient installation for all non­ operating tests which do not require a special test fixture. The standard test series consists of 18 individual tests.

Standard Test Results The SPARCengine IE board family has been successfully tested to the Class III requirements of Sun's Environmental Test Specification (950-1316-02). The Class III (General Commercial/lndustrial) environment includes extremes of mechanical shock and vibration, climatic conditions, and electrical power varia­ tions.

Standard Reference Conditions Temperature: 23 degrees C, +/- 5 degrees C Humidity: 20% to 70% RH

Revision A of April 10, 1990 Appendix A - Enviromnental Tests and Results 157

Sun Standard Environmental Mechanical Connection Repetitions 100 insertions at each I/O port. Specifications Temperature Operating: Temperature: o to +40 degrees C Humidity: 20% +/- 5% RH non-condensing at all temperatures. Non-Operating: Temperature: -40 to +75 degrees C Humidity: 20% +/- 5% RH non-condensing at all temperatures. Humidity Operating: Humidity/femperature: 20% to 80% RH non-condensing @ 40 degrees C Non-Operating: Humidity{femperature: 95% RH non-condensing @ 40 degrees C Altitude Operating: Altitude/femperature: 10,000 ft (3048 meters) at 10 and 40 degrees C Non-Operating: Altitude/femperature: 40,000 ft (12,192 meters) at 0 degrees C Shock Operating: Magnitude 5 G's (peak) Duration 11 ms Wavefonn Half Sine Repetitions 60 (10 times each on all six surfaces) Non-Operating: Magnitude 30 G's (peak) Duration 11 ms Wavefonn Half Sine Repetitions 18 (3 times each on all six surfaces) Vibration (Unpackaged) Operating: Frequency Range 5 to 500 to 5 Hz Magnitude 0.03 inch (.76 mm) p-p disp. to .25 G's (peak) continue at 0.25 G's (peak) Non-Operating: Frequency Range 5 to 500 to 5 Hz Magnitude 0.15 inch (3.81 mm) p-p disp. to 1.0 G's (peak) continue at 1.0 G's (peak)

Revision A of April 10, 1990 158 The SPARCengine IE CPU Card User's Manual

Rugged Test Series The rugged test series is a subset of Military Standard 810E (Environmental Test Methods) for system-level devices. Tests from Military Standard 167-1 (Mechanical Vibrations of Shipboard Equipment) are also included. Rugged testing is not perfonned where the regular Sun environmental tests cover the MilStd requirements, or where other Sun groups do equivalent tests. Testing of individual boards to 810E and 167-1 is complicated by the emphasis the Standards place on system testing. Component level testing is not supported by the Standards, and in some cases is not recommended. For such methods as shock and vibration, enclosures and/or shipping materials will modify the environmental excitation significantly; no reasonable test series could mimic the range of possible transfonnations. Methods such as altitude and temperature are also modified by an enclosure when the boards are in power on operating mode, since the airflow delivered by an enclosure design is a major influence on card perfonnance. Despite these drawbacks, confonnance to the MilStd 810E is possible for some methods without significant modification. For other methods, special equipment has been developed and altered tests will be performed on the boards, to acquire data that can be used by enclosure engineers in the design of products which will meet the requirements of the Standards. For example, temperature and altitude tests will be run with equipment capable of providing and measuring airflow across the cards, so that the minimum airflow requirement can be detennined. Another special fixture has been developed to rigidly support the cards in shock and vibration, so that the maximum allowable transmissibility of an enclosure can be detennined. For all methods below, it is assumed that the cards are not intended for combat applications; this restriction eliminates the extreme levels and test types which are required for such equipment. It is also assumed that failure of Sun cards in any test does not pose a direct hazard to personnel or equipment (as from explo­ sion of components); this restriction reduces the required test time of certain tests and eliminates others.

Test Results for Military The SPARCengine IE board set has been successfully tested to the requirements Standard Climatic of Military Standard 8] OE for extremes of climatic environment to date. Those Specifications tests not completed are marked TBD (fo Be Done). Operating tests were per­ fonned with the boards installed in a special test fixture which monitors airflow and component temperatures during the tests. The following table summarizes the minimum airflow requirement for the installed boards in each of the tested conditions:

Revision A of Apri110, 1990 Appendix A - Environmental Tests and Results 159

Table A-2 Powered Climatic Test Results

I SlOE II Description I Category Condition Minimum Airflow I Method I (meters/sec) I I

500.3 Low Pressure Worst-Case 57.2 kPa TBD (Altitude) (4570m) (15,000 ft)

I 501.3 High Temperature Ambient Basic Hot 43C TBD Ambient Hot 49C TBD Induced Basic Hot 63C TBD

I I 502.3 Low Temperature TBD TBD TBD II

NOTE The airflow requirements shown represent the single worst case board in the pro­ ductfamily; other boards may require less airflow.

Revision A of April 10, 1990 160 The SPARCengine IE CPU Card User's Manual

In addition, the SPARCengine IE board set has been successfully tested in the following unpowered climatic tests:

Table A-3 Unpowered Climatic Test Results

SlOE Description Category Condition Method

SOO.3 Low Pressure Worst-Case S7.2 kPa (Altitude) (4S70m)

S01.3 High Temperature Induced Hot 71C

S02.3 Low Temperature Induced Severe Cold -SIC

S03.3 Temperature Shock Induced Hot to 71C Induced Severe Cold -SIC

Humidity Aggravated TBD

Revision A of April 10, 1990 Appendix A - Environmental Tests and Results 161

Test Results for Military The SPARCengine IE board set has been successfully tested to the requirements Standard Dynamic Mechanical of Military Standard 810E for extremes of dynamic environment Operating tests Specifications were perrormed wiL'1 the boards installed in a rigid test fixture which transmits system level excitation inputs directly to the boards. The following table sum­ ma..izes the maximwTt overtest condition applied for each test; this overtesting allows for amplification of nominal test conditions at chassis resonances:

Table A-4 Dynamic Environment Test Results

SlOE Description Category Nominal Chassis Method Condition Amplification

514.4 Vibration Category 1 1.27GRMS 3x-5x band-limited, (1) Basic Trans 10-500 Hz depending on axis and Common Carrier Random band frequency limits I I I I I I 514.4 Vibration Category 8 1.27GRMS 3x-5x band-limited, Ground Mobile 10-500 Hz depending onaxis and Common Carrier Random band frequency limits

516.4 Functional Shock Ground Equipment 40GSRS 2x 6-9 msec II

Test Results for Shipboard Performance to Military Standard 167-1 for shipboard vibration environments is Vibration specified similarly:

Table A-5 Shipboard Vibration Test Results

167 Description Category Nominal Chassis Method Condition Amplification

Type I Environmental Shipboard .003 to .03 in TBD Vibration Equipment 4 to 50Hz

Packaged Product Test Results In addition, the SPARCengine 1E board family has been tested in the following packaged product test (no overtest applicable):

Revision A of April 10, 1990 162 The SPARCengine IE CPU Card User's Manual

Table A-6 Packaged Product Test Results

810E Description Category Nominal Method Condition

516.4 Transit Drop Under 45.4 kg 48 inches (packaged) Under 91 cm 26 surfaces

A.4. Disclaimer Testing to the requirements of Military Standards 810E and 167-1 is intended for full systems only. The fixtured board-level tests performed by Sun were intended to provide information to system designers and integrators, so that enclosure sys­ tems which will survive the MilStd tests can be developed. While each specification above includes adequate information to allow practical enclosure design or selection, no guarantee can be made of board performance in a panicu­ lar enclosure.

A.S. Thermal Mapping The SPARCengine IE CPU board was mapped running SunDiag using an infrared thermal imager. The test was performed at room termperature (23C) and still air in an open frame chassis. No component mapped during this testing measured higher than recommended maximum allowable temperature for the above test conditions. Below is a table showing various component temperatures measured on the board. This table should be used for relative temperature comparisons only.

Revision A of April 10. 1990 Appendix A - Envirorunental Tests and Results 163

Table A-7 Temperatures o/SPARCengine IE Components

Component Location II Temperature (C) I I

UllOl 57 UOl02 52.5 I UOlOl 53.5 U0903 73.5 U120l 68.5 U0602 68.5 U1202 68.5 U0401 54 U0402 63.5 U0302 64.5 U0901 63 Ul605 64 Ul602 64 U1410 73 U0801 54 Ul607 56 RPlOO3/1 004 61.2

Revision A of April 10, 1990 164 The SPARCengine IE CPU Card User's Manual

+~t!! Revision A of April 10, 1990 B

Getting Help for the SPARCengine IE CPU Cards

If you have problems installing or using the SP ARCengine IE CPU cards, call Sun Microsystems at the appropriate hotline number (see the next page). You will be asked for the following infonnation: o Your name and electronic mail address (if any). c Your compa.'1Y name, address, 2Ild phone number. o The model and serial number of your SP ARCengine IE CPU card. o Any infonnation that may help to diagnose the problem. If you prefer, you can direct questions by electronic mail to sun! hotline. Be sure to include the same infonnation as above. Call your sales representative if you have questions about Sun support services or your shipment

165 Revision A of April 10, 1990 166 The SPARCengine IE CPU Card User's Manual

Sun Hotline Numbers Sun customers can call seJVice hotlines throughout the world for answers to software-support and hardware-support questions. The seJVice hotlines are listed below. If your country is not shown in the table, please phone your local Sun sales office.

Country Service Region Hotline Number

Australia Sun Australia (2) 436-4699 Canada Central Region: Ottawa (613) 723-8112 Ontario (800) 263-1680 or (416) 477-6745 Eastern Region: New Brunswick, Newfoundland, (800) 361-1554 or Novia Scotia, Prince Edward (514) 738-4885 Island, Quebec Prairies Region: Saskatchewan, Manitoba, (800) 661-9256 or Alberta (403) 262-6722 Vancouver: British Columbia (800) 663-0440 or (604) 684-4120 France Paris 146300231 Sun Microsystems France SA Gennany Munich 89195094-321 Sun Microsystems GmbH Hong Kong Sun Hong Kong (5) 865-1688 Japan C. Itoh Data Systems (3) 497-4746 Nihon Sun (3) 221-7021 The Netherlands Soest 215524888 Sun Microsystems Nederland BV . Sweden Solna 8764 78 10 Sun Microsystems AB Switzerland Zurich 18289555 Sun Microsystems (Schweiz) AG United Kingdom European Customer Service: Surrey 27650183 Sun Microsystems UK Ltd Albany Park 0276691052 Sun Microsystems UK Ltd United States All, 1-800-USA-4-SUN including Puerto Rico (1-800-872-4786) Countries Not Listed All countries outside the USA, (415) 496-6119 Europe, and Northern Africa

Revision A of April10. 1990 Appendix B - Getting Help for the SPARCengine IE CPU Cards 167

B.I. Getting Sun Help with Sun's Professional Services organization is available to assist you in developing Your Software finnware and software for your SP ARCengine IE card family. If your develop­ Development ment requires customization of Sun's sta."1dard software, or creation of drivers for the Sun private P2 Bus, Sun Consulting can help you identify the specific source code L'iat you will need. Contact your Sun Sales Representative.

Revision A of April 10, 1990 168 The SPARCengine IE CPU Card User's Manual

Revision A of April 10, 1990 c

The CPU Card Schematic Diagrams & Assembly Drawings

169 Revision A of April 10, 1990 170 The SPARCengine IE CPU Card User's Manual

Revision A of April 10. 1990 r- .:,llIJ 1 ~ri f NG. /;IU EAS[ PER (CO G7(l I I I I I I l j Celllb 1 I 1 Ilif o I :j (J> 1'1 I ',1 CVl I "i' '1 ",," ,1 'c,," l

I <."IU I lUI

- I?V -

I C0109 ~ C011l1l I .1Uf 1. JUF I ~~~ I ~~~ c -U'll I? ]C0Jj;---TC01-;;- - 1C'0Il5'-'- Icru'J5-1'~0t;;--1·-c·0~1~-'--1 C0 119 C0120 C01.'l 11 '701' 1 . lUr .. lur"" 1. lU, .lur . lUI' .1Uf .lur . I Uf I .1LT 1 . Wf' V 50V 50V L~~~ 1.-~~~---I~~~:...-.-1 ~~~ I ~~~' J]~ -- I ~~~ ---J ~~ % I 20x I 20x

------l-C~12?--'I C0123 r C012<1 . -r C0125 I C0126 129 C0J30 C0131 lur .. 1ur .1Uf .lur .lllr Uf 1 .1LT 1 .1Uf· 50V 50V 50V 50V 501.' v 50V 20% "'_1---2_0_%_.I' ___I 20% _ 20% I 20~ x 20x 1 J I T~

------.. ---- C0-132-----J C01 3-3--] 'l- C0134 I c0135-~'36"Tc013·;--~--1 C0 139 C0J-40 C01·ll .1Uf .. lur .lur • lUf • lU' . lUf . wr .1 ur I .1LT 1 .1Uf· 1 50') 50V 50V 50V 501.' 50V 50v 50V 50V 20:.-: I 20% -1 20% 20% 20~ -1!v20% 20% 20x 20X 20x _._----, .-- I I I --J I I r-C01 <12 -1 C0143 C014<1 -1 C01-45 C01-46 C0147 1-c01461 C0 1-49 C0150 1C015J .Iur .lur I .1lJl' • Wf I • lLf' 1 . lUf' . wr .1 Uf 1 .1Uf .1Uf· 50V 50V 50V 501.' 50V S0V 50V B 150V 50V 20:.-: 1 20% 20% 20% 20~ 20% 20x 20x I ~0X ----- I J I I -1]~-.---J I

--r C0152 I C0153 r--a;-;;;------tc0Jss----tc0i56 I C0157 y C015B---1 C0 159 C0160 C0WJ . lUf . wr . wr 1 ~rGr 1 ~r~f' . lUf 1 . JUf' .• 1 ur I • JLT 1 .1Uf· NOT(S - UNl.ESS OTHERWI SE SPEC I r I ED: V S0V 50V TL_~_~_~ l_~_~v_% _~_~_~_ ~~~ ~~~~_~~~- % 20x 20x 1. PAATIl"IL REfERENCE DESIGNATOR5 ARE ______I__' ,_ I I SI-iOWN; fOR COHPt_ETE DESIGNATION. -J,,!~~,----J ~~ I I PREfIX WITH lINn NUMBER AND ASSEMBLY DESIGNATIONS. --r-c-;~l C0163 rC0~'l C0165 I C0J66 ---tc016';--Y c0166-1a; C0170 2. RE5ISTANCE VALUE IN OHMS. lur .. lur ,.lur .lur .lur 1 ~Jur 1.Jur .1 ~91 .1Uf V 50V 3. CAPAClT~INCE VALUE IN Uf. % 20x -4. p/O INDICATES PART Of. 1,~~~ ....1.... ' -~-~-~-. --_I ~~~ J.~~-~------

-) AS 5I~ 5un A ----.------+-n..- m1c,..osystams SCHEMA1IC DIAGRAM - SPARe ENGINE IE WlTHOUT rPA ;[;X73~~0-8058-0S ----2-·" - I J R 7 5 5 3 H 4 ___ r------.- .__ L ___ ~ ___ 1._____ -.. j

., 1~'6 (0'-"'1' Tor< u , - o R0205 R021'lEi J0K J0K

( __ ~D<3J_> ____ Pcl . ?CJ 103 . 49 f- SfLCLK P3 - 73 ~. ~tL~~ P~I - ?f, ______103 5'" f-- 58 8GI* .. "ll~'Jlij_ .. P~I ?? f--..5fi..:3.l ~-___ n:1 ">1 (--....5D~ ___ .___ ~'JJ~_ !~(l(_!' * 103 .~? f-__~G~N=D~/~L_ c'l:l=n,!'l.> 58 A<0> 5B_D< I > P] P:I - ;:>9 1'3 53 P3 - 77 ( . _~ Sf}=: IJ.< [» __ 10:1 em (-~~-.--­ P3 . SA ~ 58 pq) P3 - 7B f-----·~~ (_ ~f)~D("" ( _____ S8_A<5_>_ 1'1 P", - 3J (-~~---- P3 ~5 f-- 58_P< 5) P3 - 79 _~_~1k-lE~Q~~? )__ ~ 5B Mf:RR .. VCC 1'3 f1 P:J - 3? P3 - 55 f- _~V~C~C~_, 1'3 - 8~~ ~1l_~lJ~~..>._ ~ S8_A<7>__ c PJ ~1 P:J - 33 ~ 58 A<5> P3 57 f- 58 P(7) P3 - 81

P:~ J P! - .. ~--.--- P:l - 34 ~~thDl....--_ P3 S8 f- 58 0<9~ P3 - 82 ~~~ (--_~D.UQL __ _ ~11-,~AC>.(.... 10WL-) ___ ['3 - J J P:l - 35 P3 - 59 ~ SB O--- P:l - 39 ~~PA<15> P3 - 53 ~ S8 D< 17) 1'3 - 87 58_1RO<4>* ~ ,-"V".CC"'-____ P3 - J5 Pcl - 40 f- 5B ACKB .. P3 -54 ~( __~VC~C~_ P3 - 8B 58 PA( 18> ~ 5B PA(19) P3 - J7 P:J - 4J P3 - 55 SB oql:!.L- P3 - 89 f-- 58 0<2J> ___ 58 PA P3 - 18 P:J - 42 P3 - 55 58 0(20) P3 - 90 ~ 58 PA<2') 5B PA(22) ~ 58 PA(23) P3 - J9 P:J • 43 P3 - 67 5B o<,'~ P3 - 9,1 ( ___ ._~_~IBQ<~> *__ . ______--' 5B ACK32 .. P3 - 20 P:J - 44 P3 - 58 ~,---lGol!.N~D"'/;JoL.... , P3 - 92 ~ GNO/L ( ___58- D<.?~~~_ f_~(24) ____ 58 0<,'4) ~ 58 PA ['3 - 23 P:! - 47 58 5EL2 P3 71 ~-~S~B~O~<-'~WL)---­ 1'3 - 95 f-- 58 RESP" P3 - ;:>4 P:l - 48 ~ -12V/L P3 - 72 VCC 1'3 - 915 ~-'!C+""l?ILV~/'""L~-

A

50

8 7 6 5 4 3 B 7 6 5 4 3 2

-+5V

14 ETHERNET INTERFACE '~~701 ·t2______. ______~~ c!!H '1', D ~------.------~~ c!!H 3. '1'. Ie. 11 I o 0<31 •• 21> r------.--~-~ c!!H '1'1 ,!J-l 2.6. a. I .... 15.16. ~ +12V U09I!Il UI!l9I!I2 ~ 3.7. H!I. N15C.• ClI( ...... < i) < i) CA15 AN799I!I INTR* < ) < I> CA14 LANCE ~ . > ) < !) CA13 DALI* < < ') ~) CA12 DALO* < > < < DAU 8111* §~ - < I> !) DAll!1 r-::=====:;-r1 f"1/l901 < < DA9 ADA < DA8 ~ 3A < DA7 RESETIII < < < DA6 ~- < DA!5 r- A ~ CL9N ~ i- p ~ TX 41 LI/l901 i- ~ DA2 TENA 1.6 DAl TCLI( < I- ~< P ~ CAe RX > ~ RENA -""'.43 C < > E_A<23> A< A ... 1'123 RCLK c < ,> E_A<22> < A22 E_A<21> < Flal < I> E_A<20> < A20 < > E_A< 19> < A19 < , E_A < AlB < > E_A<17> < "'/ 1'117 < > E_A<16> < < 1'116 < > - R1!191!1733 < > E_ROY* ~AOY E_CAS* -'" S* E_AS* J A A Ii! 16 AS_ LHOLD* 161)0 HOLD... < ) E_HLCA* ....DA ... < > LREAO ' ... READ ~ < E_CS* 15 CS* < > E_BYTE BYTE

0_0<7> 0_0<6> 0_0<5> 0_0<4> +5V 0_0<3> < I> 0_0<2> < ) Xl!l9l!ll O_O 1 .... 2 0_0<0> +5V RPI!I901 4.7K 8 O_REO ... 7 B D_ACK* ::II. <) 14.AA13 D_RO* ::K;5. ("I) O_WR* <;3) 14 A~A"12 vvv O_CS* "'::!~ ee> 14 A A JJ ,SH 3.7. Ie. 12. g:::~g£T ~...ii:::~::;l;::;~.~~~t::~ YYV ISH 3.7. Ie. 12. 10_CS* ISH 3.7. Ie. 12. 14 AA lEI SLOW* DI YYV

SB_SIZ<2 •• 0> SH 2.3 • .4.6.8. I". 17)

L-______. ______~++------.----

lJ0905 A (SH I"'. ESP REO A

,SH I"'. 50 ,SH I"'.

B 7 6 5 -4 3 8.... _____ J . 7 . L 6 , ',5 , 4 r--' .:1: ...... ,......

F"1001 CR1001 3A ~1BR6S0 SCSI INTERrACE ~-+:l-- C1001 ,~<7 0) Y D I'llT D cSH 9) ·H5V ";:'

RlP1003 RPI003 I RP1003 RP1003 1 RP1003 1 RP.1003 I U1001 ~ ..2"f0 3~ ..2!'} ~3~ }!'} I 3~ A220 ,,3~ ~ A3'!"'! A~ J1001 vVV vVV 7 vv 2v v v 1 .. 7 vv "VVV 1" ..VVj"" 7"'vV SVj"" IeVVj"" D7 ~~~1- I- l' nVI IVI.. 7 7 SC5I

A A

8 3B "ncroaWIIUO]g .... r--- ,--, 1. 8 7 1 6 5 3 2 8 7 6 5 3 2

SD. tH-~--tMI?t:======:==:J1 ~D. < , .. ) tl:1!:::%mt~======:===~ :~~ ~~l0~~~~::::::::::::::=:::::~ ,~) ~~L:im~~======:===~

+5V J1101 +!!IV 1 OB15 I c

B +su B

J1103 .-...---

.SB. A< 10) -I-- lIOD

cllH S. "P ••• 111) A ~------.--.------~~~ A

T'lD. PROt1

c· 8 7 6 ~I 3 --8 7 SERIAl. PORTS A & B I- l.OD.< 7 &> ----"I U1203 (~ 4.6.7.11) I RP1~1 9636 i J.~A JJ...J. we u+ ~ U1201 __:-1 L Ir- ~ " J..:H: g; TX L--- D ~~ TICDA 1& I 'r TRXBI D -"-L-·-"""t"f----1~====~:!:·l-lG V- I J 1_20_1 rT_' .., 10D<7> ~-.I ~ Dmg:~: ;:::g::..'" ==l; _ ,_, -'211.-0 Dllr-1...... L. ___ I-. ____ '_i I. 1 I ~~~ ~.>.:.o..u.--" ~ "!!t- I D<4>g:~: ---8'/NCAIII W.tl.~---+-t--I--H~ - +J2V I J I,--_ 2-0 ....~ ...J!.-L--f----- •• r- ~ IV"¥ - I ~ g~~~ DTA115 ~::a.:~3E====FF~I~,[-1,11.....l, ... ,... , u:,: r -:-:g::; ~ h +OIl Ii -, lll ,,'--_...... >0<.;""""'-__ I """" l I 1: • ,":1"... "'.. I ..... __ r-- I I _.-=..J - __ h ri~Ir':E:I("g~~nl!=*~===~==:1l.~=: ::: II~ , .~ :1::1:=-11: ~ 'R!lI!!!I.~L~:g ~ l~ ~;:~~L--+--- --, L~ I piI; I r- _ 7 -0 ::;:n..Jl_II __--.--, ---, (9H:;: 9. 10),,, -"- "!" :-g:QBto I=!! I '. _ .... 1 U"',,. ~:I--""3.~7.r- I ~u...... t ~I-r:± ::?.;,.. b...... ~ r---~ • IO.A< I .. R,', """-""'-5Jc,. m~=Ht"""'".. __-J _, -0 ___~ ] '" •... 7...... Jq - -0- g h ~ I l - - ~ - u---:------H--t=:=jjt1~=i+1-_I L-J 1 J.:l L lll~r I ~!l;:">--t (S/-t 3)Gr-5CKl.L~K~4_1+-t----

I I '>QAT • - --.J _ ::-l l - -- LB~,_ - ;~J B 'll 2B2 -~-~E;~~~~~~-~~~~::~-~-~~~~~--'l-"~'r~~~'r-'-~, ~~ .... U,.,. +50 _ ~

KEYBD&1'1Ol.JeE1l531O t::.-, "'...... !I----I ,.. u. - _ _ I f !ICC "'""I t:R .• ~ .... J/ """'.,. L Ij------r>-'~~'_~L. _~ L.~ U> ~L.....=-=====!~==f=::• ~;:=::~f1j..l~-I~:':~~~l.j ~~!ijft:~f==..!!l~~::Ji .I B<7>:": =AleDA ~ I u'.'~- ,. ... .,..l'~ll!IIIl.f ,.. .=_ __ m l"'-'.-<-+-...... - ., i- 12 fII..c;.,L !S 1 ILIL-___-. __ .__ ~...... --.-~I= 8mB<~> ~ I=i~ - ~ +5U • ______. ~~~++T---I&_~D'..1= D'" ... ~~ fi ...'.7K ,... ,,:\ I"----- __ -=:====______-== _____ :---. - u,.,. __ > t]!!:e/l:~~==~H1IRlf=i!J~..,.:"- ~ =.... Ftl-- - ~u,.~ 1:;, ~ ...". L~---I , .. '"u. ~-- R1~1, .. ~ L---tt-tt=....>1:a:~/~~co -~ , I li[7i , A - ~~., ::r~.DT~=I=~ """"niL_! - ~ H~s..., un ~ ~:;r0set--B05B-0S_-r- _ &:L.-J I :2 T~ ~~eK - ~b ,. ..,cra!ll.t..~. __ __ I -- i ~ ---':------r---'4 I 3 ------~------;7------~r_------~6;------8 I 5 13 7 6 5 4 2 ._------'------.....

clJ4 80 1." elJ4 161 clJ4 161 U1:301 0<31 !!I) D e&t 16.18) --= c IJ4 2. 6. 801101'" I D eStI16.18) P1 e&t 16.18) Ira. eStI16.18) ~;I~loH-+,!.f-H!i -~t )~6 ..=..LOIPA19:...1..W!.!:ll5H!~ 8+18 BIT P1 DATA xrER

~", Pe Pe ""AS A2 Al RP1:301 All 101< 11'1' P 18 c&t ... ) 18 c&t ... ) ...113 112 IIJ B~ CPA • C •• a:.-. c ~ OE .. 14'" CPII ~a: .. e!!l'lll) OE'-' ~."'~ e!!l'll"') P\.J1 -=

eSH ... ) ~D*

e&t 3.8.l'1') I RAHCLI(

e!tll"') P\.J? ~2!lF"Cl&2 "'f-. 1-'" :- r- Pe :- ~Pe ~ 1-"" ~ I-AS B =---. B :- 1-:r-,. II'P P 18 ...18 IY II!I !¥ 112 IY 111 t. CPA • a:.-. ,-'i{: OE .. l~ CPII a:.. HIs: OE'-' ~:" "---- ~ BTP1ENXI! clJ4 1." PI TSac:;N?<* elJ4 1." --E.l TSDCLK clJ4 11S.1'P, ~BTPICbl( elJ4 1."

A A

IA'E 8+18 BIT DATA

B 7 6 5 3 8 7 6

A .&1 2.3,

.&1 l!h .&1 13,

8 _B______~ ______7______,J______6 ______~ ______•• 5______,~1 ______4 __ 3 2

P 1 J NTERf"ACE

32 IIJT T~ER SBD TO P1

U1501 UH502 Ul!5&4 r--- U1503 _elsa - - -- D _elSllt IIFelSllt IIF~ D 1111117 :> ,1!I1J7 Y7 .,., 1111 D? Y7 :---;14117 .,., IJ6 Y6 III 'fI5 .-1 t-III 'fI5 : 'fI5 IJ6 ~ IJ6 'fI5 I) -~ ~IIB ~ ( ~ ~: :=1~:: 'IS ))01 " ))01 ..... ---, ..... ))01 : D3 "3.. DIll va "Y3.. ~ ".. ( ID ~: =H:~ va D2 Y2 D2 "tit ---' t-D2 Y2 : D2 Y2 Dl "1 D' "1 ---; r- Dl "1 ~ r- Dl "1 IlII .,. III .,. DI .,. ---'~IlII .,. 122 11 !ll~-- n 11 122 81 l2a 1~ !Ie 1,; ~IG· 1~ ~~ ---~> .. I~ oe. 11 ~E oe. r±OS-111 1. i.....--- F~ f::f~ - ~ rL-

5B1'P1ENH* 17.

FU.:lE.L C (SH 17. c c!IH 17. Rl.SEL

~IPp~g,,~-:11 16. SB1'PIE'" * 32 II] T TRAN9f'"ER PI TO SBD 17. Ul!!5lle ~ U~ ~ r----- _elS. _elllR _elsa P I( -~ ) II!IIJ7 Y7 ~ ltc LID? .,., lil!l D? Y7 ;-,'~ D? Y7 IJ6 Y6 IlII 'fI5 De Y& ~ :-"t- De Wi lIB Y6 lIB 'fI5 De Y& ~ :---;t- lIB YI!i ))01 < D4 ..... 1M < ~ ;-,r- ))01 D3 "Y3.. ID va DIll "Y3.. ~ ;-1t- ID "va.. D2 Y2 "til III Y2 :--,.... III Y2 Dl "1 ..U1 "1 ~ Dl ~ t: Ul "1 "1 lIB Y8 IlII .,. DI Y8 ~ DI Y8 11 81122 11 8115:- 11 81~ ~11p. 8,1311 1; .. ~ !; oe. .. ,. 1; oe. .. .. ~ r-- r--.---~~ oe. JI p~111 J. '--- .f~f.!L_ B - "---- f:::f~ B - F

PJTSBCLK 17' Pl1'SBE ...... 4 171

Ir--- P11'9BE~ 171

A 9B.D<31..0) (!Ii 2,6.8,9, 1::t-171 A

101 _0<31 ,0) 1 (!Ii 13.181

8 7 6 5 4 3 _ 4 :3 2 ---__ ~8~ ______Pl Aq9, ~~~------~7~------1------~6=------_:::::::::=:::::::::::~----~------~ , 1> (SH 18 ) \ , UJfie12 14 U1603 (SH 18 ) Pl ~* 10 \ -- ~ "' ~ ~ -, ...l III \'9 .. P A ' 1 III YS oil ...l 119 't9 .. _f'l< L ..ll DII "1'8 DII ve ....l! DII 't1!I _A D'P 'n UP Y7 up-n DII VII D8V11 D8 VII III!I VII r- D8 VII -, D8 VII R J)4 Voil t- J)4 Voil J)4 Yoil D _R<1:t! OS V3 P- D! va OS Y3 Rr---; D DiiI VII I: m va m Y2 Dl VI ~ Ul VI Dl Yl .. va Ell VII DB VII --.a 13 OE. L-y- .JI. (SH 17) \ Sl. ACLK ~ J -~ _AEN* j- (SH 17) 1 1 (SH 7-9. 12. 1.... 16. 1 7) \. \. ~ILII~29" 1 7) ~B h (SH 2, ... 6.7.8.111.1 .... 17) .~ A<12, -- " "' Ulfi1!17 U~ U~ '_iii' PA< ) ~ ... P F) 1 119 '19 A< l A ~...l DaYS .. A A <2>_ ..1 Da YS oil P A ~B. A I: ') J)4 v... J)4 v... J)4 r-- J)4 v.. (~ 1'1', " _f'l(I»_ V'" r-I 111) ~ D3 V3 OSV3 I\.: OSV3 r---.--i-' I-osva c~ 1'1', 111) D2 VII DiilVII Diilva DiiI V2 c~1'1'. 111) "- ) Dl Yl Dl VI Dl VI I) Dl VI c~1'1'. 111) I) ) " .. VII ..... " .. VII DB va c~1'1'. 111) 13 ..11.. " lJJ.. c OE- [9 C·_-JLy CII!: • c (9M 17) MA_AClK 1 T \ MA AEN* 1 1 1 c!li 1'7) A(~i - .... It!:!C:1.~ JL" (9M 1'7) (SH 13) : ASl L

rC~M18 .IL82IL..2a...-----\ c~ 1'1')

ii::i! '- ..JI..8:U.. .2SL-----i (~1'1') :::~~cSH :~~18)f:: ~ ~t:R~~~ I~:-'

(SH 17) \ Vt1t lACK* i- U1911 PI IA(J:S.QU!L---\ cSH 1'1') -I (~ 111) B B (SH 17) (SH 1'1') (SH 17) ....eJ...DG.(~----i c~lIl> (!H 17) II:II! Pl !!p~---\ cSH 111) (SH 17) ~1.l!1J.a---\ c~ 111) lJI!J9B!5 (SH 17) ~!.l!1I2..!..---\ c~ 111) (SH 17) "TPI~---\ c~ 1.) (SH 17) * Ul61!19 +!5Y UHU2 "-.'11-1 c~ 17) Ae (!H 1'1'.111) 1'"12S c~l'1'.ll1) c~ 1'1') Ae •• c~ 1'1') ga A4 .e c~ 17.111) (!H ~~~A" 17) c~ 1'1'.111) Yl C~ 1'1'.111) C~ 1'1') :: .4·"E~~~~ it~-=~ pi Y2 c~ 1'1'. 111) c~ 1'1') AI "::IB!L-~ (~ 1'1'.111) (SH 17) Y3 .1::,~------~ .. c~ 1'1'.111) J... Ae .e - (!H 17) CJ Y4 c~ 111) (!H 1'1') RP13!11 A ~§ let< A (SH 13) C4 11

I~ P.IlPR & CONTROl.. ~ ADIIR!:!SS AND CON rROl..

8 7 6 5 :3 8 7 6 5 4 3 2

a1: M:t' J ' .. tEVI.... ____

D D VI'"£ PI CONNECTOR VI'"£ P2 CONNECTOR

PI Dc!!!> Pl Pe8L­ UC'C pc' - 5S .~:--'P..,I'IR..lU.l e... 1"") ____ PI - 1 PI -33 ~ PI -6S P2 -1 +--~-- P2 -33 PI Deh Pl Pe$;lL­ PI -2 PI -34 ( NC PI -158 P2 -2 ~AC...",t< ... B::::* __ P2-;3-4 GNQA P2' - 158 .:~--.;GND""""'''''A ______PI De2> PI peIelL PI -3 PI -35 ( NC PI -67 P2 -3 +--P2.ACK::!2* P2-;3S ( RC'XRVEP P2' - 67 .;-:...... P... 2.... C.. L ... K______PI pq> ~ Pl BGINe0>* ( Pi Ae2... ) PI - ... PI -36 PI -158 Pl P<111- P2 - ... ~.Ei.JUZd!) P2-36 Pil' - 158 ~~..!:JP2..... t£:...... ,H., .. E..,RR!==--- PI De-4> ( PI BGQUTe0>* PI ( P~ A(25) PI -5 PI -37 Pl -69 peIn.. P2 -5 ~P2..:UZel) P2 ·'37 P2 - 59 .1:-: _ .....Pf!A...... ,~<_3'") --- PI peS> ~ PI BGIHel>* PI ~<;u2... ),-- __ ( Pi A(20) P2' - 70 .1;'-: _ ...:,.. B ..... I,..8O ... s..,S ... PI -6 PI - 38 Pl -70 psl:h... P2 -6 P2-38 )""*___ _ PI DeS> ( pI BGQUJSh* pi P ~ pI BGJHs2>. pi P J .... L PI -8 PI -40 Pl - '72 P2 -B ~.eL"UZSi> P2 - ... @ Pi! - '72 11:-:_ ...Pi..- .... OX_..::*...... _ PI -9 GNPA ~ PI PC'.ouTS2>* ~p?l3US ERR! PA 1'1(29) Pc! - 73 .I~[ _--,P...2 .... RE_SC:: .. T... *__ _ c PI -"'1 Pl -73 GNpA P2 -9 P2 -"'1 c PI SYSCLt< ~ PI BGIHs3>. PI - 10 PI --42 NC P2 -10 Pc! - 74 ~r---":"PlB*.....,,,,,---- PI -7'" ~ P2 -"'2 PI -11 GNPA (--- PI BGQUT(3)* ~A:""S",,*,--__ ( Pg Asi'h Pc! - 75 .1:;'-_--'P2...... t ... RR..... t... Hf PI --43 Pl -7S P1 II~ P2 -11 P2 •· ... 3 =-_ ~,,",/L___ _ PI DSq>* ~ PI BR(0)* Pc! - 76 .1;-: _--'GND...... ("L ___ _ PI -12 PI --44 PI -76 p1 S~~ P2 -12 ~GNDA P2 - ...... PI P9<0>* PI PRsJ>* ( P2 !QAe@) ( IJ('C Pc! _ 77 .1::-_--,P2__ ... PA~s 1..,0 ... ),--_ PI -13 PI -45 Pl -TI PI VI!.­ P2 -13 P2 --45 PI -1-4 PI HR* PI -46 PI BRe2>* ~p2..PAel) ( PA p(16) Pc! - 7B .1;'-: _ .....P2...... PA..... PC! - 79 ( PII D(19) Pc! -el ~~r_--'GNQ_...A ______PI -49 Pl -Bl PI A.~ P2 - 17 ~JiNDA P2 -"'9 PI - 18 PI AS* PI -50 (--- PI ANe2> pI ( P2 !OAe"\) Pl P(20) Pc! - B2 <:~_.:..P2_PA...... S... 28.Jo1L.) - GND/L Pl -B2 A.:zm... P2 -IB P2-50 PI ANs3> PJI De2l> Pc! - B3 .Itl-_--'P2__ .. PA~e2 ... 1.... )'--_ PI - 19 PI -51 Pl -B3 PI A.;.JSL P2 - 19 ~ P2 -51 PI -20 PI IACK* GNDA ~P2 gAsCi) Pc! - B'" .1:-: _--'Pi~... PA==s22-..)'--_ PI -52 PI -&4 P1 A.J.aL P2 -20 P2 -52 PI IACt<]N* NC Pl P(23) Pc! - B5 <:;.--_"-P...2 .. PA...... S... 23 ... )"-_ PI -21 PI -53 Pl -es P1 A.~ P2 -21 ~ P2 -53 PI IACKOU!t ~ NC ( QNDtL ___ Pi! - B6 ('--_~GNJ)...... tb;.o... ___ PI -22 PI -5.<1 Pl -86 Pl A'~ P2 -22 P2 - 5-4 PI -23 ( PI ANe4> ~~ ~P2 PAsfn ( p'l Dsi4> Pi! - 87 ~(-( _--'P""'2..... PA~s2"" ...;u)'--_ 8 PI -55 Pl -B7 PI A'~ P2 -23 P2 -55 B ~--,P,-,1...... ".A~e..:..7~> __ ~ PI IRO(7)* ( P'I P<25> PO! - Be ( __""P2 __ DA....,."e_25 ... )<--_ PI -2-4 PI -56 Pl -BB PI A.J.&. P2 -2'" P2-56 PI A<6> PI -25 PI -57 ~ PI I8Oe6>* P1 A,i..Ut. P2 -25 : P:;~'t- P2 -57 ~I p(26) Pc! - B9 ( __~P2_DAc..:..l.S ... 26... )'--_ Pl -B9 ~ ...sl... lu:) __ _ PI A ~ PI ]8Oe5>* P2 -26 ( PI ps27> Pc! - 90 ( __'-'P?-..DAc..:..l. s ...27.... )'--_ PI -26 PI -SB PI -90 PI A,:.l2L P2 -58 PI Ae4> P'! _ 91 ( __,..GHD""""(!. ______PI -27 PI -59 ~~~ PI A.i..JJL P2 -27 ~--- P2 -59 ( PI pe28> Pl -91 ( Pi? DAstz) PI -28 PI Aq> ~ PI IRQs3>. P2 -28 PI De29> PC! - 92 +-_ ...... P... 2..... DA...... s28...... )__ PI -60 Pl -92 pI A.:.J.ID.. P2 -60 PI A<2> ~ PI ]ROs2>* P2 -29 PI De3!!l) PO! - 93 (;.--_.:.P...2_DA ... S... ?9...... > __ _ PI -29 PI -61 P1 A'~ P2 -51 Pl - 93 ~e.... l&.;4 ... ) __ _ PI A* P2 -30 pI De3h P'! _ 9-4 .(r-__ ....P... 2_DA ...... S ;z!-.,> __ _ PI -30 PI -62 PI A'~ P2 -52 Pl - 9-4 ( Pi? PAelS) -12VtL P2 - 31

A A

B 7 5 5 4 3 B 7 1 6 __,___ 2 ___ ._-,- __=~:::::,_---, PJ .. ..,...... IRVJ ...... (SH 18 1 \ A PJ DS* (SH 18 1 \ --"n

D D

, ~.IL<29 •• 17)

(SH 171 , ... 1'7.18) ,"'1'7.18, , ... 1'7.18, ,"'18, ,SH 1'7.18) ellH 17.18, ,"'1'7.18, ,"'1'7.1111 I'" 1'7.18, .a cJ.I. e I 11~ L/[J11511 c!J-i 2 .... &-9.171 I S8 RD 01_ -B:U.J..s..ll.----s I'" 13, 1l.823. ~--s c... 17,

-L82a. ZIL----s ISH 17,

...LS:U..2S..-.---s I'" 17,

B ISH 17' p, I1AQiQI.I!~_--S ,"'18, B cSH 171 ISH 17' cSH 17' ~~--s cSH 18, cSH 17' ~1I.I!.S.2!!L--s I'" 18, cSH 171 ~1UllU.!..---i ,"'18,

(SH 171 ~!I.I!1I.t!.-----i c... 18, (SH 171 (SH 171 :mT~a.&!L-----i ("'lS) U1509 +SV U11512 ,!It 1"" A. II. dlH 1'7.18, ,!It 1'7' A. II. I'" 1'7.18, ,!It 1'7) A.. 114 I'" 17.18) Yl O=~---l~~~-:-:-_..., ~@A" lI"E~~3§~~ 1"'1'7.18, 1"'1'7.18, ,!It 17) :: pi Y2 ~~----.~~~~~-, IBM 1'7.18, ,!It 1'7, Al ::K.----.------11& SY:IB!L----i 1... 1'7.18, Y3 ~7----:~~~:;---1 ISH 1'7. 18) ~ 1" A. II. Y4 ~~---~~~~~-..., , ... 18' RP1S11 A 11J1< A 11

'.t1t ".nDR & CONTROL

L---B------.-----~7------'l~-----~6------~-----~s~----~-----4 3 13 6 5 4 3

USEf? RESET

UJ70J o D 70 ISH 16.18) B_lRO(7)* ISH 2.'7> VNE_AI'1.O;5u:) _____-ii ISH 1&> B_lRO(6)* c9i 16.18) VNE_AN(4) Ia...!AI'1::!!;!.l<,,:4!.1:) ____--i1 ISH J6) cSH 1&. IS) B_lRO(S)* VNE_IACKOUl 1--__~c:!i .. .ol~U¥lOL!.... __--l1 cSH 1&) cSH 1&. IS) NB_IRO* VNE_BR3* I;.....JIZ:L;Z!L.____ --tl cSH 18) cSH 1&. IS) VNE_BGOUT <3) Iu.JBG~:at,6nLJ..Jo<... ::I") ____ --i1 ISH 16) B_lRO<-4)* ISH 1'.'7) cSH 1&. IS) 9i 2 ..... &-9. 1 .... 16) cSH 16. IS) VNE_BGOU1(2) _BGOU!looDo!l~C~2... )'__ __ _t1 ISH IS> B_lRO<3>* IS-; 1'.'7> 9i 2 ..... &-9. 1.... 16) VHE:_BGOUT < 1 ) ..u8GOUTQD/:Iot.!.;>.,'-- __ cSH un B_IRO<2>* ISH 1'.'7) cSH 16. IS) -41 c9i 2 ..... &-9.1 .... 16) cSH 18) VHE:_BGOUT <0) 1-.J1OIl-...'-UO"-__ ISH IS> B_lRO< 1 >* ISH 1'.'7> ~~~~----aP1_8R(2)* --i1 cSH 18) ~~~~~~~P1_8R(1)* VNE_BB5Y* -.Il...... LIL.- ___-41 ISH 18> c9i lr.... 6 ..1. 9. 1"') 5B_ACK32*~--~~~~~-II cSH 1' ..... 8 •••• ) ~~~~----~P1_8R<0>* B_ASE:~ !::5I!O'C:~ _____--I1 cSH 18> C9i :!-O ... ) S!LBG* -~~~~~~--{]P1_BGIN<3>* c9i 3.13.13) '-I------">="...""'------11 IU_CU< SB_ACKB* ISH 1't .... 8.'7•• ) Vt1::_DS< 1> * 5iuo.lo/iil.:l..oL,,~ ____--i1 ISH un ~~~~~~~P1_BGIN(2)* VI'IE_DSc0>* 11oaJ1bI.:~~------i1 cSH 18) C9i ..... 7) C1L1 5B_E:RR* cSH ;'...... ) !!::.oL.JlloU.!!l..I..l.!r.--=:....:.:a P LBG I N< A> * VNE_AS* ;.... J:]i;I~------i1 ISH 18) cSH 13) 1---l~I.iZ....u;;!!:!!!!'---<:l PA19_J6H* SB_8R* cSH .1) c ,':';:"-!:j,.JIDtjIll3~=-::--o P l_BGI N< 8> * VNE_LW* n.:::;;..--~=...... a:------ll cSH IS) c c9i 7. S. 9.12.1 .... 16) l-----'iUloO!:!~i2.!:_~!!oY PA(26) 5B_D<31 ) cSH 2.6.8.9.13.1 .... 15. J8) c9i 7.S.9.12.1 .... 16) PA(27) SB_D<30> ISH 2.8.8.9. 13. 1.... J5. J8> VNE_IACK* I ISH 1&) SB_D<29> l-----'ilJol,..!::!~~:....---:6;.::B~ PA< 26) ISH 2.6.8.9.13.1 .... 18.16) SB_D<2B) cSH 2.6.8.9.13.1 .... 15.16) VNE_Ac31 ) .....E:U.aU.L.- _____-i1 CSH 18) c9i 7.S.9. 12. 1""16) \---'~"'-!.!.>.io~--;:6,:;7:-1PA(25) SB_D(27) cSH 2.6.8.9. J3.1 .... 18.18> SB_D<26> VNE_Ac:30> s....~ai5!.~----il cSH 1&) 1-~ii!J.!...!::!:!.l.S~-----=6C:::S,--! PA<2-4) SB_D(25) cSH 2.6.8.9. 13. 1.... 16. 18) 136 VNE:_A<29) ISH 2.6.8.9.13.1 .... 15.1&) cSH 16. IS) -~-L.------il ISH 18> 1---'~"'-!.!.>.io~--;:6~-4:-1PA(23) SB_D<2-4) cSH 2.6.8.9. J3. 1""16. 1&> ~~~~~--aP1_DS<0>* 134 ;l!!.Jliu.JoL!.!:!lo!.l~ ____-ii ISH 18) l-~iI.&.l...c:!ll.AI""-L-----=6~J,--! PA< 22) SB_RD ISH 2 ..... &:-9.11.1 .... J8» ISH 18. IS) ,-~""%.>:l"------'U P 1_1ooR* l-----'o!Jo<.o.!...!..:..>.Iii..oL 135 < ISH 18.18) ,---c"~L----~~P1_LW* :1:L...m.r:m~----t1 cSH 18) 1-----'.u.uO!:!.:..>.Iiilil.L_--='-=---i PAc 20) ISH 2 ..... &.8••• 1~> ISH 18> 1---,--.!:L-~~..l.!r.~1~1~3{]P1_IRO(7)* SB_SIZ(2)~~~~~UU~~ VNE_SYSR* l!!..!Ii..... L!.lioII!l:: ____ --I1 cSH JS) SB_SIZ(1)~~XM~~~---1 ISH ;" .... &.8.9. J.II) ISH J8) c9i 3.·~.&-9.1"') 5B_5IZ(0)~~~~~~'--i ISH 2 ..... 6.8.9. J"') ::...t...... u:UI..llU.:...... ;;;..:.:;:a PJ_IROc6l'* VNE_SYSCLK ~I'£ SY9CLK I cSH 18> ___H!!:!A_AC~LIo!K:l.- ___ CSH 18) C9i 3. 1. 1<4) '-I_____ .!..!!...!!U....u!:!..!.~L._....:.~....:.~-I TYPE < 1 ) ISH 18) 1---.-...t:.L-~~~~~-a P1_IROcSl'* NA_ACLK --\I cSH 2 ..... 6.'7.9) ___HA AE:N* I cSH 1152 c9i 3.7. U) 1------!..!!...!>o..... ~'-!...l.Jo..<.._--t TYPE (0) 110 NA_AE:N* ISH 18) 76 '~~~~=---~P1_IROc4>* SL_ACLK ~L ACLIS I ISH 16) c9i 7.1"') ~·----"C>Co-=----3-B-U IOSEL* 1 ~L AE:N* I CSH 16) ISH J8) 1----~L-~~~~~{]P1_IROC3>* Sl.._AE:N* c9i 16) I---- SLOT 1 * SB1PICLK 3 ~BTPJCLK I cSH 18> 8 ISH 18) I--- P1_IROc2>* ____PUSBCLK I ISH 13016) cSH 16) PllSBCLK B .--"'-'''''''''...... '--t----'-''-I B_A3J _29L 26___ PllSBENNIII I ISH 115) cSH 18) ..!:.L-"':~ut.L=-""'--<] P L lRO< 1:>* PJ1SBt~ (SH 16) .__ Ii!..!~iI__'o'!'!!''-+...:!.:=----! B_A2B_26L 7 _____PllSBE t«.... I ISH 16) ISH 18) ,_...!:L-lmo!l.ol=--=1..::1...:,7-o P 1_1 ACKIN* PllSBtNL* (9i 16) .__ Io!.a!::!ii..,ol..JIii.:!.Io'-+----'-~ B_A25_24L 123 ISH 1&.18) ._-'!:j,.JIC!~~~....;:;{] P 1_D1ACK.~ PllSBE:NX* 34 ___P USBENX* I cSH 13> 39 ISH 16.18> !:"I..,..... ==------::;l.;;;; -a P l_BE:RR* SB1P1E:NN* 2-4 ~B1P1ENN* I ISH US! cSH 18.18) .t:...L'!!':1.JO>i!L-.--.:;;1,;;;29~-I P LANE:G< l~3) ~B1P1Et«.1II I cSH 16) 125 SBTPIE:NL* ---r~~L------r~~SYSXCI cSH 16. IS) ·~.!!.:~~----;P1_ANE:G(22) PL_SEL I ISH 15) '---·--"..,..,~rll-'''7-I SYSXCO 1---,_...t:."-!:llJIo..Ll'______-; PLANE:G(21) a-+--(] on* SB1P1E:NX* ---,B1P1ENX* I ISH 13.16> R1703 cSH 16. IS) 1-___P~a!A:llJIi!tL ___1_2_1___1PLANE:G<2I!I) -4.7N ISH 16. IS) l-----.p 126 P1_AI'1S3Uno f VNE Sl..(ll

8 7 6 5 4 8 7 6 5 4 3 2

o D VME PI CONNECTOR VME P2 CONNECTOR

PI PS0> PIBB~ ~~.... D.... ) ___ PI -1 PI -33 PI -155 P1 P NC ~:uIL___ _ P2' - 158 ~::...-...lGNQ~tLlLM--____ PI -2 PI - 34 PI -158 P1 P<9L­ P2 -2 ~~"""""§""'''--­ P2-34 PI Ps2> P2' - 157 (;_..:;P;,tji2... CL_K>-- ___ PI -3 PI - 35 ( NC PI -157 P1 PslDL P2 -3 ( P2 ACK32. P2-35 Rf'¥KP PI Ps3> P1 BGIN<")", Pi A(24) PI - .. PI -36 < PI -158 P1 PeU.L P2 - .. ~~nZ(D) P2-315 P2' - 158 (~~P... 2-I'£ ...... M...... c:...,AR*=-- P1 BGQUT P1 BGIN paRp pll Aei7) P2' - 71 .1,..: _ ....GNJ]t...... ""L ___ _ PI -7 PI -39 PI -71 P1 pel~ P2 -7 P2 -39 PI P<7) ( Pl BGINsau, pt pstl:U-,. p» Ae2Q) Pc! - '72 .1 :... _..I:p2;.&..£,JO:Z:w... .. LolI·l---_ PI -a PI -"0 PI - '72 P2 -8 P2 -"II PI -9 GNPIL ~ Pl BGQlJT<2)' PA A(29) PC! - 73 (r__ ~P2 ...... RC:_¥ ... I.L:.~_ PI -"1 PI -73 GNpIL P2 -9 P2 c PI SYSCLK -"1 c PI - 10 PI ( P1 QGINs3>' NC P2 -111 ( PA Ae3l!l) PC! - 74 ~E-t_~PlB*""",,,,,- ___ -"2 PI -7" P2 -"2 GNPIL ( P 1 BGO!JT s3>* ( PA Ae3h Pc! - 75 (; __~p2_c:.cRBLCooIc:Ior.IN!.J::..._ PI -ll PI -"3 PI -75 pt II~ P2 -11 P2 -"3 PI 05<1>. PI ~~m!C./_L ____ Pc! - 715 (; __---"GND~"_IL ____ _ PI -12 PI - .... BA' S~~ PI - 715 PI P2 -12 P2·· .... PI -13 PI P5<0>' ~P2 lOAd') ( vee Pc! - 77 ~: __~p2_ ... ne... e""l ... !5... )'--_ PI -"5 PI -77 PI UI!L.­ P2 -13 P2 ·· .. 5 PI HR. Pl BA(2)", ~£2..lOASA) ( PI Pc 115) PC! - 7B (;:...-_..!:P2;1ianel4J;e~1L.l7u:) ___ PI -1" PI -"6 PI -78 PI At~ P2 -1" P2 -"6 PI GNP/L PI BAs::!)", ~.E2.l!!A(2) ( Pi! p(11) PC! - 79 f-~----"pa_DA~(... 1... "u:)_- -15 PI -"7 PI -79 PI A.~ P2 -15 P2 ·· .. 7 PI PTACK' Pl At1.J(22 ...... ),___ PI -20 PI -52 PI -84 PI A'~ P2 -20 P2 -52 PI lACKlN. NC PI O(23) Pc! - 85 (,--_~p2I1i-.1neolC.lS.. 23... ),--_ PI -21 PI -53 PI -85 P1 A.i.J.D... P2 -21 ~ P2 -53 P I 1 AC/(OUHo NC ( GND...... IL ___ _ PI -22 PI -54 P1 - Be P1 A.~ P2 -22 P2 -54 PI -23 ( PI ANs") ~ GNPtl. f---~~ea__ ) __ __ pI Ps2·1) Pc! - 87 ('--_~pa..... DA~sIO.;M::z..)'--_ B PI -55 PI -87 P1 A'~ P2 -23 P2 -55 B ~ PI A(7) ( P1 180(7)", ( P2 PAeg) PI o(25) Pc! - Be .Je25 ..... )'___ PI -2" PI -56 P1 A'L1&.. P2 P2-56 P1 -ee -2" ~ ...e I... D... )'__ ___ PI A ~ PI 180<15>. P2 -25 PI o(26) Pc! - B9 .J<2!5 ..... )'___ PI -25 PI -57 P1 -89 PJ A'i..UL P2 -57 PI A ( PI IRQ<5>. P2 -26 P2 neon PI 0(27) Pc! - 90 .(-_--'p~2.... ne:::.lJ<2L7u):.._._ PI -26 PI -5a P1 -90 PJ A,i..12.t.. P2 -58 PI A< .. > < PI 180<4>. P2 -27 ( GNDIL PI 0(28) PO! - 91 ....( _---lGNDoC.!Aol£.lL ____ _ PI -27 PI -59 P1 -91 pI A,i..J.ll.. P2 -59 PI Aq> Pl 180<3>. P2 -28 ~.>.oe1... 2.... )---- PI 0(29) P'! - 92 .eE-_~p..Ii2.... ne:.:.>.J<28 ...... )'___ PI - 2a PI -60 PI -92 pI A'~ P2 -611 ~:~ -61 ~ Pl IRQ(2)", P2 -29 PI 0<3l!I) PO! - 93 .(r-__..:...... ne:.:.>.J<29 ..... >'___ PI - 29 PI P1 -93 P1 A'~ P2 -61 PI A -12V/L ~NC P2 -31 S;iNptL PO! - 95 .(r-_...:.P2__ ... IJA:.:.>.J< 3.... 1... )'--_ PI - 31 PI -63 P1 -95 "l2V,1.-. P2 '-63 P~~ _ ~ ('--_.liISiiN~OI

A A

B 7 6 5 4 ---_., ------

1.,,\,

1 'J o '1J'I>I ,.,,"

12V

---- . " (:O!?I (:0102 -j C~lel3 CI~ I i1~ ~l CPlIPI~) -1------i----. C0106 ~ cellP- U'l I I'llJ C0Hl9--=:i C01.10 lP0101 -] j -J ,11)1 r . lU'- .IU'- ~ ~)I . lUI .IUf .llll ·r .lur .IUf .ILlf ~)VJv ~J'')I,,' ~Plv ~'J~V 501..' H 5"'V 5"'V 51'lv rvl ~)'''/. 2"'% IVJ 21',. i)"':/. ----i 20% ---l1\1 2P1:-: ,J 21?!% 1\1 20% 20:-: i j '1 !~~~----j . -_.------.. 4-- ~ 1 C ... .I'lY. -.---i!~~.--i ~~~ - 1 ~~~ -- _U 2~ __i- 1\1 20% 1 20:-:

.,_r C~12? ~t C0128 -1-C0129--- ~I C0130 ..J C01:31 1 . lUI I . lUll.. lUf . lUr .L • lLIF {}_2~_ 1 ~~~---~~~---- -i_-~-~-~----l_~-~-,,--~--_t

-r-~I32-- C0133 C0134 .1-Ci'J3~;_-·-1 CI'l136 :! C0137 .l C0J38 --:1 C0139 ~I C0140 ..J C0141 · lUI 1 .IUf -I .1Uf 1.lUf .IUr "l.lUf· l.lUf ~l .IUf • lUI'" .L • JLIF 5P1V 50V 50V ~r 50V ruT 50V J 501.1 1\11 20% 20% 20% i 1_----1\1 ...1 ~~~ ___ ~~ ~~ .___ 1_-~-0-% . __ ..]~~___1_-2-0-%-. __. __ 'l_-2-0_:-.:--~

.j CPll42 C0144 ~ro;~-;;;~TC0147 1 C0148 · lUI ·r~1.IUF .IUF . lUI .IUf .IV .1Uf n 50V 50V 5"'V B 1\11 2"'% 20% 20% 1---- ....1-----1\1 ...1 ~~~ __ ._3 ~~~ -----i--~-~~-·---l_-~-~~-%

-j~ C0152 J·~-:tc0154 ~I CI'lI~)B--r-c0J59 ~I CI'l160 ----:J CI'l161 · lUll. lUr -1 ~ IUf . lUI 1. ~'lUr . lUI'" -l. ILIF NOT£5 - UNL(SS OTHERWlS( SP(C]r](D: ] 50v 50V .J 50V J J. PART]AL. R(r(R(NC( DESIGNATORS AR( I\I 20%___ 1_ 20% :l 20% L 1 ~~~i--~-.~-~-· ___l_-~-~-~----l_-~r-~--~--_t SHOWN; f'OR COMPI...(T( DESIGNAT]ON. PR(f]X W]TH UNIT NUMBER AND ASS(MBLY [J(S]GNA1r IONS. ····~!CI'lJ69--:l C0170 2. R(SISTANCE VALUE ]N OHMS. lUrl . lUF 1 . 3. CAPACIlANCE V~~UE ]N UF. 51'lV ~0V "2"'% 1\1 20% 4. p/o ]ND]CAT(S PART Or. .•. _. 1--'-'-"-" ------. 5. UNUS(D CONN(CTOR PINS NOT SHOWN. 6. • FOLLOWING S]GNAI... NAM( ]ND]CAT£S LOW on NOT fUNCT]ON.

n A

Lfl 7 5 5 I· I :3 ~-- .. ___L __~~~.~_ .. __ l l _____-, .sv

!', tll6 CONNI('O'·

[J ·r .{ o R02~!i R0?0B ~ 7~~~" 51 ~;~~~5 I",K 10K ~ N N I

Pel - 25 (. _.5~=.D' 3.l.L P3 - 49 ~ 513 CLK P3 -73 ~~~ (._ . .:ill- 51.?~L ~ SB_BGI* I P~J - ?G P3 - 50 P3 - 7<1 ~~.J..L (. ~ .. ~f \ : .. f.-~1)_5J.Zg) l P,I - 27 P3 - 51 ~-~~---. P3 - 7~'i (-----~~.-­ ~-)fj 1 ;~u ( 1 ) ... I 1",1 - 28 f--- .:o.ll~.lRO < 7 ) ". P3 - 52 ~-~---- P3 - 75 f-----~--- P,I . 29 '":-_, ~.!l=e-,.gJ2 ... P3 - 53 5B P P3 - 77 ~_ 5B_A'J> ~ __._5BJI< 3>__ 1'3 ( .. P:I - 30 ~ ... 5~"£\-'£.'). P3 - 5A ~-~->-... P3 - 7fl ~ SB D(5) ~ 5B A P:J - 3J ( .. :;;lI=e~_. P3 - 55 P3 - 7~~ ( 51l. J' P3 - 57 ~ 5B 0<7> P3 - Ell 5B P<9L- p:~ H" ( . P,I - 3A ~~""A.>..J<-- ___ P3 - 5B P:3 - e2 ~-~­ f-- . __ .5D~bLU~. __ ~ 5B A,J0? 5B 0<1.12 __ P3 1.1 P,I - 35 P3 - 59 P:3 - B:3 ~_!llI-.~ ( .. __ . ...d.EL.l RO< 3, ~,, ______~ 5B E:RR .. ~....m:m ___ P3 P:l - 35 P3 - 60 GNO P:3 - e"l P3 J::1 (_ .. _....?12=D<) ?'.__ PC! - 37 ~ 58 A.J?> P3 - 51 58_P<1~ P:3 - B5 t--- 55 PAcI3> (.... __ . .dJl=.12.0.'!2. __ _ ~ 58 PAt J4> 5B 0(15) 55 PAc IS> P3 I A P:I - 3B P3 - 6? P:3 -eG f-- ~ 5B D~-,<,-"J-,,5,-,-) __ 58 PA*,~ _____ 55 ACKB .. f--__v~ce~ _____ P3 J6 P:I - 40 P3 - 64 ( vee P:3 - Bf:! 5B PA.JB> P3 - J7 (-...... 2Jl~P~~?... __ P:I - 41 P3 -65 58 D 58 PA(?J) P3 - J8 ~P<2J) P:I - 42 P3 - 156 ~.---'5... BW-.lD...,( .... 2... 0u;)-_ P:3 - 90 f---- 55 PA 55 PAc 23) P3 J9 ~--.?l}~pg~2...._~ . P:I - 43 P3 - 67 58 D * P:I - 4A P3 - 6B ~.---'G""N".D"-'- P:3 - 9.? (_.... ~_B~lJ<.2;'? .. _ f---- 5B PA P3 - 69 ( 5B D<"~ P:3 - 9:' { __5_B-D ___ p3 - 22 ~ 55 PA.2fj> P:3 - 70 ~ 5B D __ ~~"""SE: ?~ ___ P3 - 23 P:l - 47 .....L.... P3 - 71 ~ 5B O<"!:ll..­ P:3 - 95 f-- 5B RE:5P* 5B_JRO<5>* P3 2" P:I - AEl ~ -J?WL P3 - 7? ~ vee P3 - 915 f---~--

A

.,-______.______~~_:~~__ T~m_.cr~J.:}~~.r~;=~0~~0~5=0-=80==35~-a05~~=50~ 8 7 5 5 4 3 8 7 5 5 4 3 2 -+SV

1'" ~lHERNEl ·~RP070J HlI( ._.~~ .2______.______.______._____ cSH 7) D ~------.------~~ cSH 3.7.18.1 11 D cSH 7) D<3J .. e1> r------.------~~

+12U U090J lJ0902 J0 MHz to HHU chIp . e < IS) . ( 1.4) ( 3> ... < 12 ~.12~~~ < > < > < > J < > < > < > ( )

c E_A<23> c E_A<22> 75 < ~_A<2l> 7... < ~_A<2e1) < ~_A(19) 78 < > E_A Sg < > E_A 68 < > ~_A 6, <

~_RDY* ~_DAS* ~_AS* E_HOLD* ~_HLDA'" E_READ E_CS... LBY1~

+5V

)(091')1 B .~~ B

10. A<3> ...... 6

1"' ...... e Y 'V SB.• SIZ<2 •. 1"1> SU 2,3.4.6. B. 1-4. 17)

L------4~+_------.------U09e15 A A

5CSl

B 7 5 5 3 8 7 6 4 3 2 ~J001 CRJ00~+5V 3A ~lBRB50 SCSI ]NTERf"ACE ~.

CI001 1LT o ~_SCO<7 •• 0> I· D

U1001 1(7) 07 53C90 SCSI <6 •• 0) < D6 SCSI ) 05 ~- 04 <5H 9) ) ~ 03 ) ~ 02 Dl 00 l . ". R:O REO SH 9) ACK* .~ ) ,>' RO* < I) >' IoIR* : < ~) CS* < IRO* 1< !.l.. RESET

C c

<51-i 2.4.6.7. e. 1I!1o.8& A(5) 6111 A3 <5H 9. J1 .J2) A2

~------4-~~=-~,~~~~n-~~------'------'----- ~~~~~-=~~~~~------.------~ +5V

RPl004 RPJ004 RPJ004 1~1~ RPl004 B .A3~ .!~ 330 220 I 330RPJe~~ 220 I J I B 7~~ .~~'41t~_ 7!~ .~·'4 ~~.--.. -".v-l-J-'.. ,-1-'4-i[T-7--~2 '4 0 "

~ ______-J ~ ------.------

A A

8 7 6 5 3 8 7 6 5 :3 2

(SH 4.6.7.12) ~\ ______~1~O~Da<~7~0KL) ______T_O_O __ CL_OC. __ K_____ . ______. ______, \ 58 1'1< 17 .0) " (5H 2.4.6.7.6.10.14.16.17) " ~ D tt<4BH!12 ~R AS "h J D ::!H. < 2. • TOO '58. 0. 7 l!7 r..::!H. t) < 58. ) Oa Qs < 0- < 1(") < / 1(3) Qs C\I- V. Oa~ X=: 0.-- ~ ~

(~I 2.6.7.6.9.J4) r----.----~S~B~RMD ______._r------+--.-- __ r_------.----____~ (SH 7) r----.----~T~Q~O~CKS*~------r_------1_----_t------______~ ~'118 +SV J1l0J +SV X DBJS C c:SH J2) ~ ..n c ~ ~-- f' J J0J c:SH J2) X _3-0 ~ 3A SILAS::!) ~ 0 12 .10 1'1<2> c:SH J2) RX .A< ,) 6 13 10.1'1<8> 100(0)­ ~ ...... t4 :100(2) .:51-1 J2) TXO LJJ0J 7 -0 ;; 15 1.6 ~ ~ I :IOD 12 10.1'1(3) .SB. 1'1(2) 111 10.1'1(2) "58. AS 1> 1> 10_ Act> B · SB. 1'1<0> 4 ~ Is 10.A

JU03

. S8. A

(SH 7) EPROM RO*

'-.______---L~~~ (SH 3.7.9. 'II) A A

TOO. PROM

50

8 7 6 5 4 :3 8 7 6 3 2--- SER1AL PORT5---~====~===== _____ :5~ __ --__ L__ --_ .... PORT A -- _.u> , ...... <10_ A • B • ~ <7 .• 0)

(SH 4.6.7.11> D ~~~~~___ ~~+H=~Jl20~l :::==~~;-~""B]- --f:"~~ D

c c

14 RPI1!302

2 11!11(

j;IECE]VER~

------8 B KEYBD&HOUSE:U1202 ___--.L_~___==~;:W9 ,__ c'6LS32 IJ ----fcSHlh ------.------_._---- 'n A A

8 7 6 5 4 2 13 7 6 5 1 3 2

cIlH8,1'7) cllH UI) cSH 18) UJ30J .UI n.~1 PI~ D cSH 2,8,8,9,1") D '1 n.I!Ii. . PI~ i Ira )~6 ~PA!&iIJg-..LlJ6I1*~-, cllH 17) cllH 18,18)

B+le eIT P1 DATA ~ER

UJ~ i!FclS2 +!5V

11'7 •E c~5i .. ) '/ c9i .. ) ... c9i I .. ) \= UjJ1j II! 112 III I. C • ~ 1M.I&';. c I$~ cSH 3) POI( Hk J. '----- cSH 1")

cSH .. ) ~D*

cSH 3,8,1'7) I RA!1CU<

~ cSH 1") I PU? 29F'CT62 ~ 1-'" ~ p-Ali ;- k- Ali ~ 1-"'" ~ !-A3 B ~ 1-" ;- r- Al B ". 11'7 ..... II! '!Y 112 III I. 0If'I • a:AIo rlk ClEa- ,.. " CPII a:a- HIS: ClEAIo ",---- L.. . cllH 17) , cllH 1'7) PIT"'''''''IW cllH 18,1'7) ""ITPlrl W cllH 1'7)

A A

VI'1E B-+1e en DATA

13 7 6 5 3 8 7 6 ~I 3 2 I

P2 INTERf"ACE r-____ . ______~------.------.------~~-~nA(u~:3~11~,~0)~C!H lB.

D +~ D

c!H lB. P2_ACt<32* c c L..-....!P~2.•"""'ACKl1.Uo

RP1:!101 10K

c!IH 2.3.... 6."1'.8.9.1"1" ,...-- U1"1!IEI r-' ,=t===:t===~~[U~I:l8!I!503-~.,l1~ c!H 111. ~: I:J c!H III. "'i-Lf-+----+----t"1&1Io-~OT' J6.: I '*:"--IC!H 1"1'. ~: '--- B ~: B

IHA ~n I( c!H III. (!IH 8. P.LRAt1* !IH 2.6.8.9.1"1' !:ULA(J~, 0) ••.• ?.'.11 .. ~'.. SB.• RD (!H 2 .... 6."1'.8.9.1"1" -

A A

SB._CU( CsH 2.3,

8 8 7 6 5 4 3 2 -.------~------,------.-~------______L______~ ______------~------.------~------'------.----_--~~-I-~--.w-- ..----

vt1I!: INTERf'ACE 32 BIT TRANSFER SBD TO PI

D D

~. - ~ ,...--. f=--~ Ie '-----

SBTPIE~

c c IU .SEl <0>

l SBTPIClt<-H

32 BJT TRANSFER

---

B B

L_-4--+-~~-r------.-+------.~~++-+.-+ ______,-______~_-----4-+-4-~--+-~------.------.------__ ~~ PtTSBCLt< _ ,i!P. 171 PITSBEt-I. * Si 171

r---+-----~----_~P~A,T~~~~NHI*~------~--r__+_--+_------+~~-+~~--,------~_+.--_r~ cSi 171

A cSi 2,6,8,9,13-1'71 A

Pl_D<31 ,Ill> cSi 13,181 vt'£ 32 BIT T~ER ______~---______------.----,-----~~------,~I~~,~'-~rm'~cr=~~.~t~=-~~~r~~~~~~ 8 7 I 6 5 4 3 2

IJ~)f ,,- RI Sf ,

I "1101 I ~;W1701 NC I> I i! .9~--- 126 D r--0--- I l)f!L~O~", cSH If)l IB, VME.AN<5> ::12 'Sli 16. ,J ~NO _lJl~[~or~_ !l. IRQ, 7> .. ~-----\ ---- ,SH lb. 10> VI1E.AN(4) VHE AN,.oI> I (SH 16. [J.IRO,6>· (SH 1f>.lfl, p I.AI 5K (.14> VN[.lACI. I (SH 16. .SH Ib.lfl, VN[.BR3" ·~JZl,.;z!!:.,.------11 (Sli 16. 'SH i!.4.~=:.~~:~~) :=~~~~ Mfl .. IRQ .. eSH 16,lft) ·'-'-"u.....---:-:::::::1 P LAI6B<:h 'SH ".", ['-g, I .... 16> !--_.:i~~ VME: _ BGOUT < :3 > 7~--1(SliI6) ILIRQ,4> .. c5H 16. IS} :..L~~------1 PLAI5B<,~> ,SH ;>.4.[, 9.14.16> f---~!'l-..e(~2. VME:.BGOUT<2> Vl'4E BGOUT<2> 1 ISH 16. U_IRQ<3>" (SH 2.7. cSH lb. sa, ~'------"-'9PLAI5B<.I > f~~ ?d,f, 9. 141. lfi} ~ ___ ~B_(hJ) VNE_BGOU1 (SH 161 IL IRO<2>'" ~B-=..!~O' 3~.. __ .~ cSt .. Ih. IE:., --i ! ISH ? iI.fi-q. J~. HI\ \ __ 5~,::/~~g,> VME:.BGOUT<~) Vl"1[ BGOUl (0) • -I (Sli 16. J 11. IRO, I > .. 5ljJ~.Q!.?'!~_\ ~~""-!.!'"------1 (SH 16. \-_____ .__ "Il".R!:~f 100 VNE:_BBSY" ISH? .d.6,'1.9. 1.4) ~U_ACt(32" --\ B_A5[N.. !:!>I.k!..!=--__--\ (SH 16. ,SH 3-A, \>------__ 5B_BG2"'_ 5B_ACK32'" 95 _?I!_ACI.. VN[_OS(0)" ·!l,u,~~~----ll ISH 16. \--___~l.L...5.1L 58_[RR .. 9~_?B. BR2.. --1 !.....,~.c:.:!..L..<..."'---UI='LBGIN<.I> .. VME:_AS* ~"""-""-=-----"'11 ISH 161 (SH 13. f.---~£.eJ~~U')~I"'- __ 49 P'11'L IbH", 5B_BR .. (SH 4' :..L~~~~--a P LBGIN c&t ;:'.6.e,9. 13.14.15.1&) 1JI'1(_IACI<* 5B_0<30> ISH li'o6,8.9.13, 1".15.16. ------~~B_BBSY .. 58_0<29> ISH .'.6.8.9.13.1".15.16. VI'1(_A<3J) :E ;::::::~::::::: Ei:~~~i~ ~::E: 5B_0<26> ISH .'.6,8.9.13, I'" 15.16. PLAS.. !::s;.....c:...... '-'-----11 ISH 161 5B_0<27> ISH .'.6.8.9.13.1".15.16. IJI'1(_A<30> ISH 161 5B_0<26> (SH 16.18. ~:"L,~u...t...<.=_~-{] P LOSe J >I. !..!Iou~"....."-----11 :: ::: ::: 67 ISH .'.6.8.9.13.1", IS. 16. VME:_A<29> ~::::: :~: f--_SB.PA<2~._ :::~~: 5B_0<25> ISH .'.6.8.9.13, I'" 15.16. 135 !.!Iou~Ui.oiU-----11 ISH 161 ,SH 7.B.9.12. I". 16. 5B.PA<23>. __ . 65 PA.23> 5B_0<24> (SH 16.18> ~"""""-'-"'-'-"'----U PL05(0),. I-- cSH e'.6.B.9. 13. Jdllt 15. 16) ..:.VME:~...... ,Pc.:.T:..:AC""K"'*"'___---11 (SH 16. ~5.... 8'-!.>.R .... 0 __ ---; 134 (Sli 7,B.9. 12.1", 16. I-----~~-~ PA.22> 5B_RO cSt-t .1, A. 6-9.1 S. .,.. 16) (SH 16.lfl> '-£...n!:""------U P LWR ... (Sli 7.B.901201.o1016. !--_SB.PA(21) 51 PA,21 > cSH 16.18> ~~C!:..... __.:..13=-5=a P LLW... !!3O...JlIlO.!:!=----t1 (SH 16) (Sli 7.B.51. 12. 1.01. 16. f--~B.PA'?~_ 51 PA.20> 3=<1 P 1_ I RO< 7) ... SB.S]Z<2>~-~~~~~~ cSH cPI •• 6iB,9.IA) (SH 18. '-!..>o.A::'-'C.-,-,--=--~J~I 1..'t1E_5Y5R* VME: :3YSR* I ISH U5) r-- 5ELA5L. __ .__ 7B SB_SIZ'I>~~~~~~~~ cSH el .41.6.8.9.1.) 112 (SH 18. .:::...L....c!>C-"<.<..~--U P 1_ IRQ(6)'" 1JI'1E_5YSCLK \,1,.£ 5YSCLK I 1!J'4 16) cSH 3, ".6-9.IA) SB_SIZ<0> cSH ;1, •• 6.8.9 ••• ) lIJ (SH 3.7, 14. ~---- NMU_S1Al < 31.. lYP[, I> t1A ACLK \ 1!J'4 16) 77 SB ME:RR .. (SH 18. ,-'-'oU!.!.'-"'-!...... "'---U P L I RQ< 5) * H'·LACLK t1A BEN* I (SH 161 (SH 3. 7. 1.01. ~I ____...!.M-"-M""U'=-"S'-'-l-'-"A'-'-l~< >=.2.'-.> ----i TYPE, 0> NA_AC~~* I---PI IRQ<4> ... I J0 ~,a.~...a!:AC~L.:.::K______1!J'4 161 (SH 18. SL_ACLK -1\ ISH 7.1.01. IOSEL" !------~Q..~F;:~_. P SL_ACN... J !iL BEN... I ISH 161 (SH 18. I--- J09 PLIRQ(3)'" (9-4 16) !--____:&..Q:u.~ -- SL 01 I .. SBTPJCLK l.W..!.::::..A..>u..!.!-----t1 ISH 161 ,51-1 18. !-__P=-I"'--'l=>I~~) "",-_J 0_B--<....J P I. I ROc 2)'" :.L.!.JOUj!Wo.~ ___-I\ ISH 13.16) B PJT5BCLK B ~ _____ ~~;:'>2L -~ B_A31_29L cSH 16. P:.,Jlw1.... :3... m:""""NN:..:.:::. ... ___-11 ISH lSI ,SH 10. !-__P'.::..Lo.A::~.l..L.> ...=--.:..J 0..;..7--0 P L I RQ< I ) * PJ15B(I'oI'1* .-._._____ Q~02l:L26L ~ B_A2B_26L cSH 16. 1:.J'JuT",,5!.1OBt!oE:!.!N!.~"' ___-I1 (SH lSI (SH 18. !-__pJ N ... 117 PI_IACl i;uz.!..!:.JLlo.!.:900.::.-__ ISH 161 5B1PJ("'-* -\1 125 PLAN[G(22) (SH 16.18. !-__pJ A(22) PL_SEL< I> 1::...J...... se::... L..,,< ... l,L) ___-11 (SH lSI PL_5(L<0> 1:.·Ji.&>SEo!!oo.l.L~<.SI0~> ____11 1!J'4 lSI SY5XCQ (SH 16.18. ~_PI 122 PI.AME:G(21) 5B1PJ(NX... !,i/J5BIo!..Tu:P:.,Jlu.(.:,;N"'X"".. ___ -11 ISH 13. 161 0.0", ISH 16.18, !-__.p J2J PLAN[G(20)

ISH 16. 18. ~_.PJ ~26 PI_AN53 lP170J (SH 16.18, \----P AN<4> PI_AN53<4> ----e (SH 16. lB. ~_.~ ____J_16 PLAN53<3> (SH 16.18) \--__.I>J AN< > J20 PLANI0< 1 >

ISIi 16.18. \--__.~AN<0> 124 PI_ANI0,0> )<1701 A - .._------32 5AVME: GAT(ARRAY JJ701 j[}- L I 71'1 I CI702 CI703----I I BMIl 54 VN( 132PF 156PF . ------Lo 0------,2 ~~ .. 50 1 VNE SLOT I

61 7 5 5 4 3 I ' I, J ~------.. -----_.. ---J..______'______. ___ .

() o VNf PI eOtlNI ('lOR VM( Pi? C()NN[ClOR

~ , I .. ! L! ( ., ~ ~'L~tI.!l1'l:r_'! t~ 1~.D$.e L. ( ___.effil:..!2L_ .. _. __ PI 3:1 (- . PI f>5 (___ ._ PI' - I P2 . 33 ( V4-e P;? - 65

~. F'L!l<12 ___ N<;;. ___ .. _ .. (-___.El ....11~1_ ~:.!J"P",-- GNP PJ P - .. PI 34 PJ 66 PC' -? f--~~ca.-- PC' .- 34 ____ P? - 66 ~ ____ .~Ln!J ql? P2 Cll( PI PI . 3~ (-_. __ . ."'(., ---_.- .-. PI . 57 P2 - 3 f-_~~K~~. ___ . P? .- 35 ( RfSCRVCP P2 - 67 I' l._. !~< ~ ~ ___ .__ _ '-'L~9.I.':'!~f'I~_ ,!~ l~lhJ ~I A(24) J..l I .36 ._ ... r,! 56 ( ____ U PC' - 4 (,_._.~.i."'!._ .. __ P? 36 PC' • 66 ~, ! . ~ < .. ) ----_. ( PI A<2S) PARs 3) PI PI . 37 t' - -- p 1=pyQI)..!.< "_? '!' PJ fi9 ~LIl!_l?) P2 - 5 f-_~m.tiL---.. Pi? " 37 P2 • 69 (---PAA~_, ____ _ 51! IRQ-~.!.-- PI '38 ( __ ._P.l~llW~'.l!~._. PI - 70 PI P< J;!? P2 - 6 P2 .- 36 ~I A(26) PC' "70 P-1_ U~t>! ______( __ .. ~l_ru;QUJ .!. ..Il. '!' _ (--ez..BJl___ ..__ PI As?7) PI - 3~ PI - 71 (-___el-Dli ~~. P2 - 7 P2 . 39 P2 - 71 ( GNP ( __ .. _~.I_O< ?!____ _ (_ .. __ .~.l_1l~1t!!..Z2.!L_ PJ fj PI - 40 P] • 72 ~-.Jli.l:IL 1"2 - 6 (--ez..:tlZ.!ZL_ P2 - 40 ~I A(26) P2 - 72 ~ __-Pw2~]~Q~"~I~.--- ~ ____ GNIL _____ I' J • ~I PI - 41 ~ __ ~'.L..lliiQ~. f--!:Z.PU5 [RR .. PI A ERR EN.. P] - 75 PI BC1i8..'!. P2 - 11 P2 - 75 pJ • Ie (_--El~~ PI - 4<1 (_._£'l...Jlli.~ __ ( GND GNP P] - 76 PI 5Y'~ P2 - 12 1"2 '" "'4 (--2:.!J"p"'-----­ 1"2 - 76 P2 MS 16) PI • 13 (-__ .'='..L...Q~~ PI - <15 ~] BRc]u ~Pi?llAs") V4-e 1"2 -77 1"] - 77 PI lW.' 1"2 - 13 1"2 - 45 ( __.£).L.!'4~ ___ ( P] OR (-- PI - 53 P2 ~~(7) D(23) 1"2 - 65 PI - 65 PI A .. <;NP PI - (>7 P] - 59 PI As P2 - 27 ( PI Ds2O) GNP PI - 91 lJ..l.. P2 -59 1"2 - 91 (--- PI lRQ<3>. pi Dsa) P2 CA(20) PJ . 2f! P] - 60 PI As~l.. 1"2 - 28 PI - 92 P2 '"60 1"2 - 92 (--P] A<2> (--.--1"1 lRQ

A A

8 7 5 5 8 7 6 5 4 3 DWG NO. I I I ~ I I i I~V I RE\1S1ON ZONE IREV I DESCRlP110N I 0Alt: IIoPPRO'

D D

J Pl1101 J Pl802 l F" . , . I' ., 'G' , , . I 'H ' .. I' .. 'J ' , ,. NOTE$: (UNLESS OTHERWISE INDICATED) 00000000000000000000000000000000 ~&S' ~t~o~~h~~~~~~~~~O~OO~~~~~~b~o~~g00000000000000000000000000000000 00000000000000000000000000000000 O 00000000000000000000000000000000 00000000000000000000000000000000 1. FlNISHED BOARDS SHALL MEET SUN'S WORKMANSHIP PO:Z03 STANDARD. 1nlllmmljUrmrrmlt_IIIII ta- 000000000000000000000000 000000000000000000000000 000000000000000000000000 o (A) PRINTED WIRE ASSY WORKMANSHIP STANDARD I r- 000000000000000000000000 910-1021 -xx. (B) MECHANICAL WORKMANSHIP STANDARD LJ """ Ii 910-1019-XX. ~ ATTACH BAR CODE l.ABEL IN APPROXIMATE AREA SHOWN. MARK DASH AND REVISION LEVEL WITH 6-2 INDEUBLE INK WITHIN ONE INCH OF BAR CODE LABEL. fiDa"--0-0----"'] x - im,'·I·ID'rn-;: J0801 t.1D.IQRY l.IOOutE ~D ~~,;;J701lll··1~··a· 1IIi!II!lt1,~·Iml· In~" bLb!. ~ 000000000000000000000000000000 0 c 0o~----~==~~====~~------~==~------~r------======~======00=8=0=3=;.J 3. LEAD LENGTH ~IMUM IS 1.50 mm. I4BIORY uoouu: CACHE IoIOOUlE c o 000000000000000000000000000000 000000000000000000000000000000000000000000000 I I 00~======~~::::~======~~======U=~==41L~0~0~0~0~0~0~0~0~0~0~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~o~O~O~O~O~O~O~O~O~Ji [B INSTALL CAPACITORS .1uf PIN 110-1192-01 ! MEMORY I.IOOUl£ 1.10503 11 QTY 71 AT THESE LOCAnONS iZi ON SOLDER goo 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ' 2DD080Dn&mmnmnoommmo " '"1 SIDE. AND 9 ON COMPONENT SIDE. 0~======U=08=05~ .. o ALL HARDWARE TO BE TORQUED TO 4.5 INCH LBS o I.IEMORY MODUl£ +1- 0.5 INCH LBS. o OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO~~ ~~~~o~------~------~~~------J U0601 INSTALL CHIP SOCKETS AT THESE LOCAnONS. Slim"

7. !NSTALL COMPLETED PROM BOARD 501-8013-XX' WITH HA.~DWARE .AT FINAL ASSEMBLY.

8. DO NOT INSTALL SOCKET (190-1072-XX) AND CHIP (100-1807-XX) AT THIS LOCATION FOR 501!SOO-80SB-XX.

INSTALL LED'S WITH CATHODE PIN (+) ON PAD B INDICATED (SEE DETAIL). B

ie. INSTALL SHUNTS (130-0272) ACROSS PINS 1 AND 2 AT THESE LOCATIONS,_

11. TAPE MEMORY AND CASHE MODULES TOWARD STIFFENER BAR PRIOR TO WAVE SOLDER.

00000 o o~-j 00000 J1:Z0:Z o g o <>

COMPONENT SIDE

I.N.£SS ~ SPt'OF1UI ~ME"'~ APPROVAlS DATE

~iH-I-RD--AN-G-LE:--'-'PR::-::OJ-'E:::CTI=ON"----I ~ ~IfQ.E.S ~:.:::.:!::...!:!=:"':";==':'::::":"'--f .X ± N/A ± N/A l.fORBES 2-15-90 .xx ± N/A ~=~"""------ICHECKID ~7 PC ASSY, $--8 MATERIAL .t>U-/ "Z-I( 'J,) N/A I----/~----+----~ SPARCengine 1 E, CPU BOARD

4 1 8 7 6 5 4 3

D D I

I J H G - D C 8 A 00000000000000000000000000000000 00000000000000000000000000000000 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO~IR'~'1 00000000000000000000000000000000 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO~ ~oooooooooooooooooooooooooooooooo 0 STAMP VENDOR LOGO AT THIS LOCATION ~11IOZO·11""_IIOD203II_II_ooll_II""=II_1 0 B~ ~~ [gJ cgJ Ll 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Eiu.... 0 R"' ... 000000000000000000000000 ~Pm'" 0=45 P 000000000000000000000000 ~ ~ ~ ~ ~ ~ 000000000000000000000000 ~ o [g1 ~ C8J ~ [g1 I2:SJ B: ~ o~ E B l,.noJI 00E1EJEI ooo1~1 ~o 0 I! 1""::::71 c o O,.QQ.,O 0 0 O.Q.Q...O 0 0 0 0000000000000000 _ ~ ~ 9 c . ~ ~~~~I-!!El ItlOIO'I~1ZI ~~""'~H~~ ~ ~~ !!I=e ~o t- IltCIlOzl I-I joc_1 I-j .. :::f'r;;~ ~ ~ ~ - . ~ Fl ~ .. ~o I ~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOoooo o~oooooo 0000 OOOOO~OOOOO~OOOOO,..o.a.p·OO 0 U le,tO ROe12 _.4 I ..,. 1 0 ~ 000000000000000000000000000000000000000000000 I 1It0Ct ~ ...."I~ -"!Zl _'$ cg] 0

OOOO .em 000001" 00 fI.:II'. A08'ZC ooooiHtoooo«OIn -«0824 g0 ~~D~ ~ C8] C8J i~~fi~ ------i f~ -C?Si....,~-~-11~0 H~OOO -- 0000 -00[><1- 0000"" 00 g 00 . [gJ 0 C8J ~~ 0 [2S] o ~~ ~ ~ o ~ 0 0 o r C ~c l-5<1 LSJl o C8:J [2Sl r 0 00000 .... I"O_N ... ~ 00000 U- !IIDIOJI 1-10 0 0 0 00000 nO:g!oi§OHOoooo 0 0 00000000 0 00000000 00000 ~!lc c~8 d"c c'B8 00000 0000000 o 0000000 -- ~ o reHJr;;H5J o gggg 0 0 0

LED POLARITY SOLDER SIDE (CATHODE1"¢

A A

4 -~ 8 7 6 5. 4 3 IMG._. 1

0 ~ ~ rB I I /~ ~ \\ I / I I I I I 1 4 PL~ ~

c

B

A i I t; ;2 iL------~------~------~r_------_r------~----~----~~~~~~ __ ~~~~ 4 3 2 8 7 6 5 4 3· -- .. 1

o

I ~

/ c /

B

A

REV. 51

A 3 2 1 REVISION DASH REV DESCRIPTION DATE APPROVED 50 RELEASE PER ECO - G725 - NOTES: (UNLESS OTHERWISE SPECIFIED)

1. FINISHED BOARD SHALL MEET SUN'S WORKMANSHIP STANDARD.

(A) PRINTED WIRE ASSY WORKMANSHIP STANDARD 910-1021-XX. (B) MECHANICAL WORKMANSHIP STANDARD o 0 0 0 ~ 0 nO 0 0 o 910-1019-XX. ~ 0 0D~ 0 ~DO 0 ~~ 0 / 0 0 0 a 0 0 000 11-41 PLACE BAR CODE LABEL ALONG EDGE OF BOARD, g~ C0102 MARK DASH AND REVISION LEVEL WITH INDELIBLE V gOU uog g INK WITHIN ONE INCH OF BAR CODE LABEL ON 00 0 0 0 00 COMPONENT SIDE. DO NDa 0 0 0 0 1000n~ ~ 0 0 0 0 U~ 00 ~ 0 0 0 0 0 a 00 12-11INSTALL 2 EA. 130-1664-XX ON SOLDER SIDE. 00 0 0 0 0 0 0 0 ~ 00 00 .. 0 0 0 8 0 0 a 0 00 3. INSTALL SOCKETS AT THESE LOCATIONS. 00 "" ~ 0 ,.., 00 o 0 ~D g g gog g U., ~ 0 0 00 ~ 0 0 0 0 0 0 a 00 ~ 00 - - - - .... ~ 00 a g~,M~ u 4. ASSY DRAWING CONSIST OF SINGLE BOARD gg gtM'02g gug gg ILLUSTRAT10N FROtv' 9 BOARD PANELIZED.

5. AFTER BOARD IS DEPANELIZED EDGES MUST BE CLEANED AND FLAT FOR BAR CODE PLACEMENT.

COMPONENT SIDE SEE SEPARATE BILL OF MATERIAL: 501-8013-XX ME/MA 500-8013-XX MA

IN..ESS cm£RWlSE SPECIF1fD OIMENSONS N£ IN INCHES ,"0L.fRANCES ARE: 0ECIt.W.S NG.£S .x ± N/A ± N/A APPROVALS DATE J..-..:.=-.X:..:.....:X_±----!...!.;N~A=______1 DRAWN L.r-ORBES '1-25-9C.... PC ASSEMBLY, MATERiAL N/A CHECKED I 'I SPARCengine 1 E, ~~~~~==~~~u ! ~~~~~~- FINISH ENGR PROM DAUGHTER CARD Ut\T1ON WHCH IS CQIIFDEN'I'W.. AND PRO- ,,! /A ~---41 SIZE REV iDWG ~~~~C~~E- II ___--·"-----~RELEASED ._ .. _-_. B NO. 504-8013-02 50· PRCX)UCED OR OISa..OSED TO THIRD PNmES - wnHOUf 1l£ PRIOR WRrMN CCMENT OF DO NOT SCALE DRAWING I SCALE: SHEET 1 OF 4 SUN t..IICROSYSTEMS. INC. 0 0 00 00 0 0 0 0 ~o6~ 0 0 0 o 0 0 ~D 0 0 0 00 00 0 0 0 0 0 0 0 0 1\ 0 0 0 0 0 V 0 0 00 0Ei 0 0 0 00 a 00 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 00 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 ~ 00 00 0 0 0 0 0 a 00 r.. r.. 00 v v v- v- v- 0 0 0 0 0 0 0 0 00 0 00 0 0 0 00 0 0 0 00 P0102~ P0101~

SOLDER SIDE

. SiS I DWG NO. 504-8013-02 REV. I 50 SCALE: r TSHEET 2 OF 4 0_0 0 o~ ~ 0 0 0 r 0 o 0 0 r5 00 0 ~ r5 01 0 o ~ 0 o 0 0 0 DO o~ 0 ~ 0' 0 00 d 1'"'\ n t:;\'-. 00 \oJ L...J 00 "'" f5 00 00 ~r5 0, 00 00 o~ r/ o'=€> A~ 00 /'0 ~ 0 00 00 0 00 0 0 00 0 0 0 00 00 ~ o 0 o~ 0 0 00 g~ 0 0 0 00

COMPONENT SIDE

1'\ A 81'\"13 01") REV. 5 U~- UI - L 50 SCALE: SHEET 3 OF 4 0 00 0 0 0 0 0 0 00 0 0 0 f\ 0 V °d 0 0 0 ~ 0 0 0 0 ~ 0 0 ~OH -V 0 0 Q~/ 0 ~ 0 0 00 rtf 0 0 ~O

SOLDER SIDE

SIZE n lA/G N I:u REV. I LJ' • • B 504-8013-02 50 SCALE: .SHEET 4 OF 4