|============================================================================== | RAIL (Rule Augmented Interconnect Layout) Specification | Version 1.2 December 18, 1997 | | The RAIL Specification defines a standard set of data types useful for the | design of printed circuit boards containing high-speed digital logic. |============================================================================== | Statement of Intent: | | In order to enable an industry standard method to electronically transport | high-performance design guidelines between silicon vendors, PCB layout | software vendors, and hardware design teams, this specification is proposed. | RAIL's goal is to enable automated "Rule Augmented Interconnect Layout". | "Rules" in this case refer to electrical constraints (flight times, skews, | overshoots, etc.) and guidelines essential to proper operation of a | digital design. These rules "Augment" the basic connectivity requirements | of an "Interconnect Layout", providing the missing data needed to derive | a robust high-performance design. | | To properly superimpose electrical constraints onto connectivity | requirements, RAIL assumes some level of integration between PCB layout | software and an analog simulation environment. However, standalone PCB | layout packages (no simulation available) may still find portions of a | RAIL file useful. | | A RAIL file is primarily a container for electrical design guidelines for | a given digital hardware design (schematic). Logical connectivity (netlist) | and mechanical information (placements, footprints) will enter the EDA | environment through other standard, previously defined mediums. RAIL files | may be developed by: | | 1) Silicon Vendors - desiring to communicate suggested use of components | 2) Hardware Design Teams - needing to document their design assumptions | 3) EDA Tool Vendors - seeking to demonstrate or enhance their capabilities | | Whatever its origin, a RAIL file must normally be tailored to a given | hardware design. For example, silicon vendors may release a standard | application design package including a RAIL file. But as this design | is modified/customized, changes must be reflected in the RAIL file. | This concept is illustrated in the following diagram. | | Silicon Vendor's Hardware | typical design development team's | representation unique design | | constraints | | | | V V | +-----------+ +------------+ | | Generic | | Design- | Load | | RAIL |------>| Specific |-------> into | | file | | RAIL | EDA tool | +-----------+ +------------+ | | RAIL file constraints are normally simulated and judged using component | IBIS (I/O Buffer Information Specification) models. IBIS models | conveniently contain sufficient detail both to model PCB net drivers | and receivers, and to measure their performance. RAIL information then | provides sufficient detail to judge the acceptability of that measured | performance. Like IBIS, the RAIL format must be both human readable AND | easily parsed by software. | | It is assumed that a RAIL file is one element of a design database | required to derive a robust physical implementation. Other elements, | mentioned throughout this specification, include the following: | 1) Schematic - original design drawing showing logical connectivity | 2) Netlist - normally compiled from the schematic, it contains a | complete ASCII text file of all logical connections | 3) Footprints - the mechanical representation of components | 4) Placement - orientation of components on a printed circuit board (PCB) | 5) PCB Fab - includes certain materials and mechanical tolerances | 6) Artwork - physical circuit connections, derived by the layout process | 7) Assembly - physical realization of the design | Normally, RAIL is combined through design tools with items 1 through 5 | to derive a manufacturable artwork and assembly (items 6 and 7). | | There are actually three different types of connectivity. They are | described as the following: | | 1) Logical connectivity - This is in the schematic netlist. It has a | different net_name for each schematic connection. | | 2) Physical connectivity - The artwork or layout physical connections | on the PCB board seen in the CAD tool. Derived directly from the | schematic netlist. However, not every logical net on the netlist | has a physical instantiation. | | 3) Electrical connectivity - An electrical net consists of one or more | physical nets, each with a separate net_name, possibly attached with | one or more series devices. | | The keywords assuming electrical nets are given in the General syntax rules | and guidelines for ASCII RAIL files section 10. | | The RAIL Specification was originally developed at the PCI Components | Division of Intel Corporation for the purpose of clearly communicating | the design guidelines for the Division's line of high-performance | Pentium(R) class platform solutions. It was cooperatively revised | to Version 1.0 RAIL Specification with the help of the EDA | Software vendors. | | Through additional cooperative efforts and formal processes, Version 1.1 is | issued with several minor textual and technical revisions. | | Version 1.2 is issued as a continuation of these efforts. | |============================================================================== | General syntax rules and guidelines for ASCII RAIL files: | | 1) The content of the files is case sensitive, except for reserved | words and keywords. File names must be all lower case. | | 2) The following words are reserved words and must not be used for | any other purposes in the document: | NA - used where data not available. | | 3) File names used in the file must only have lower case characters to | enhance compatibility between operating systems and must conform to | UNIX and DOS rules. (The length of a file name must not exceed eight | plus three characters and it must not contain special characters that | are illegal in UNIX and DOS). Also, the exclamation mark "!" | character must not be used in a file name. | | 4) The RAIL file normally has no more than 80 characters per line to aid | its display/readability. However, more than 80 characters per line is | allowed when necessary. | | 5) Anything following the comment character is ignored and considered a | comment on that line. The default "|" (pipe) character can be changed | by the keyword [Comment Char] to any other character. The [Comment Char] | keyword can be used throughout the file as desired. | | 6) Keywords must be enclosed in square brackets, [], and must start in | column 1 of the line. | | 7) Underscores and spaces are equivalent in keywords. Spaces are not | allowed in subparameter names. Spaces can be used on either side | of equal "=" signs when associating values with subparameters. | | 8) Valid scaling factors are: | T = tera k = kilo n = nano | G = giga m = milli p = pico | M = mega u = micro f = femto | If no scaling factors are specified the appropriate base units are | assumed. (These are volts, amperes, ohms, farads, henries, hertz, and | seconds.) Parsers should look at only one alphabetic character after a | numerical entry, therefore it is enough to use only the prefixes to | scale the parameters. However, for clarity, it is allowed to use full | abbreviations for the units, (e.g., pF, nH, mA, mOhm). In addition, | scientific notation IS allowed (e.g., 1.2345e-12). | | 9) Wide signal bundles, such as data buses, will be denoted by the net | name followed by the largest and smallest numerical signals enclosed | in parenthesis and separated by a colon. Using this nomenclature | assumes that all consecutive nets exist and are intended. For | example, HD(7:0) refers to all nets HD7, HD6, HD5, HD4, HD3, HD2, | HD1, HD0. Alphanumerics may be used on either side of the parenthesis, | such as C_BE(3:0)#. Expanded nets that must be bracketed (e.g., HD[7], | HD<7>, or HD(7)) can be denoted. For example: | HD[(7:0)] refers to signals HD[7], HD[6], ..., HD[0] | HD<(7:0)> refers to signals HD<7>, HD<6>, ..., HD<0> | HD((7:0)) refers to signals HD(7), HD(6), ..., HD(0) and so on. | It is the responsibility of the originator of the RAIL file to ensure | that the expanded syntax matches that of the schematic netlist. | |10) Nets With Series Elements. Defined keywords [Group Nets], [Topology], | [Clocks], [Clock Skew], [Edge Sens], and [Budgets] may refer to signal | nets that contain "series elements". Series elements (such as | resistors, inductors, diodes, jumpers, connectors, etc.) | normally cause a single connection or "electrical net" to have two | or more net_names in a schematic or netlist. In these cases, | the RAIL file will seemingly refer to only one section of a net, when | actually the entire "electrical net" is intended. The burden is | placed on the EDA software to recognize these situations, and apply | the data in these keywords to the larger "electrical net". | |11) RAIL file terminology glossary: | RAIL - acronym for Rule Augmented Interconnect Layout | RAIL file - an ASCII file of electrical constraints in RAIL syntax | component - a physical electronic device, used in a digital design | generic_name - the generic name given to components in a RAIL file | group - a group of nets or components that have shared constraints | group_name - the name of a group in a RAIL file | net - a logical connection, that may or may not have a | physical instantiation | net_name - the alphanumeric name given to a net (signal) in both a | RAIL file and a netlist file. In many places in a RAIL | file either net_name or group_name can be used to apply | constraints to one net or a group of nets. | keyword - syntax enclosed in square brackets [], used to mark | the beginning of a new RAIL-defined data type (and, | the end of the last one). | PCB - Printed Circuit Board | EDA - Electronic Design Automation | IBIS - I/O Buffer Information Specification | IBIS Model - a component model written in IBIS syntax | | Portions of this text are similar to the IBIS Specification, and are | reprinted with permission from the Electronic Industries Association. Text | from ANSI/EIA 656 "Input/Output Buffer Information Specification, (C) 1995." |============================================================================== | K E Y W O R D D E S C R I P T I O N S B E G I N H E R E |============================================================================== | Keyword: [RAIL Ver] | Required: Yes | Description: Specifies the RAIL template version. This keyword informs | electronic parsers of the kinds of data types that are | present in the file. | Usage Rules: [RAIL Ver] must be the first keyword in any RAIL file. It is | normally on the first line of the file, but can be preceded | by comment lines that must begin with a "|". | Other Notes: The keywords that are listed below must be positioned | before the [Rail Title] keyword since they make up the | preamble section: | [File Name], [File Rev], [Date], [Source], [Notes], | [Disclaimer], and [Copyright]. |------------------------------------------------------------------------------ [RAIL Ver] 1.2 | Used for template variations | |============================================================================== | Keyword: [Comment Char] | Required: No | Description: Defines a new comment character to replace the default | "|" (pipe) character, if desired. | Usage Rules: The new comment character to be defined must be followed by | the underscore character and the letters "char". For example: | "|_char" redundantly redefines the comment character to be | the pipe character. The new comment character is in effect | only following the [Comment Char] keyword. The following | characters may be used as comment characters: # $ & " | ' * , ; ? @ \ ^ ` ~ | % | Other Notes: The [Comment Char] keyword can be used throughout the file, as | desired. |------------------------------------------------------------------------------ [Comment Char] |_char | |============================================================================== | Keyword: [File Name] | Required: Yes | Description: Specifies the name of the RAIL file, "filename.ral". | Usage Rules: The file name must comply with normal DOS rules (8 char. max. | and no characters that are illegal in DOS). In addition, it | must be all lower case, and use the extension ".ral". |------------------------------------------------------------------------------ [File Name] newdesgn.ral | |============================================================================== | Keyword: [File Rev] | Required: Yes | Description: Tracks the revision level of a particular .ral file. | Usage Rules: Revision level is set at the discretion of the engineer | defining the file. The following guidelines are recommended: | 0.x file contains early design cycle targets only | 1.x parameters simulated as accurate in a real design | 2.x parameters sanitized against physical hardware | 3.x mature product, no more changes likely | The revision level is limited to 20 characters, and | must not contain spaces. |------------------------------------------------------------------------------ [File Rev] 1.0.A3 | Used for .ral file variations | |============================================================================== | Keywords: [Date] [Source] [Notes] [Disclaimer] [Copyright] | Required: No | Description: Optionally clarifies the file. | Usage Rules: Information following these keywords can contain blanks, and | be of any format. The [Date] keyword argument is limited to a | maximum of 40 characters. | | Because RAIL file writers may consider the information in | these keywords essential to users, and sometimes legally | required, design automation tools must make this information | available. Derivative files must include this text | verbatim. Any text following the [Copyright] keyword must be | included in any derivative files verbatim. The | [Disclaimer] keyword can occur more than once, but the | [Date], [Source], [Notes], and [Copyright] keywords can | occur only once. |------------------------------------------------------------------------------ [Date] December 18, 1997 | The latest file revision date | [Source] Put originator and the source of information here. For example: From design package generated at Intel. Internally derived at ACME Hardware. Demonstration file assembled EDAxyz. | [Notes] Use this section for any special notes related to the file. | [Disclaimer] This information provides basic design guidelines and is not guaranteed. | May vary by design | [Copyright] Copyright 1997, XYZ Corp., All Rights Reserved | |============================================================================== | P R E A M B L E S E C T I O N E N D S H E R E |============================================================================== | Keyword: [RAIL Title] | Required: Yes | Description: Marks the beginning of the RAIL description of the printed | circuit board design named after the keyword. | Usage Rules: The RAIL Title must be defined by the originator of the | RAIL file, using any appropriate nomenclature. The | length of the RAIL Title must not exceed 60 characters, | and blank characters are allowed. Only one [RAIL Title] | can be used in each RAIL file. | Other Notes: Several keywords that are described below must be positioned | in the following order so that definitions are presented | before usage: | [Unit Length] Required | [Stackup] Optional | [Map Table] Required | [Multiboard] Optional | [Group Nets] Optional | [Group Parts] Optional | [DC Nets] Optional | [Trace Char] Required | The remaining keywords except [End] may be in any order | following [Trace Char]. The final keyword in the file | must be [End]. |------------------------------------------------------------------------------ [RAIL Title] Pentium(R)_Pro_Processor Reference_Design_Kit | |============================================================================== | Keyword: [Unit Length] | Required: Yes | Description: Defines the base unit of length, inch or meter. | Usage Rules: The [Unit Length] must be followed by either "inch" or | "meter" in order to specify the base unit of length. Lengths | described later in the file (for trace length, width, height, | and velocity) will use scale factors that assume the base unit | specified here. Only one [Unit Length] keyword can be used | in a single RAIL file. |------------------------------------------------------------------------------ [Unit Length] inch | base unit of length throughout this file is inches | (e.g., "W=6m" is a 6 milli-inch trace width, or 6 mils) | "[Unit Length] meter" would mean "W=6m" is 6 millimeters | |============================================================================== | Keyword: [Stackup] | Required: No | Description: An ASCII representation of a typical PCB construction | ("stack-up") that could be used for the board's fabrication. | Sub-Params: H (Height), W (Trace Width), ER (Dielectric Constant). The | "H" subparameter is implied only ("H=" does not appear in file) | Usage Rules: List an example board stack up, using height, width, and | dielectric constants as shown. Each line represents a layer | of air, metal, or dielectric. The PCB stackup must be | ordered (top to bottom) to match a view seen by a 2-D | cross-section of the fabrication. Each layer must use one | of the following syntaxes: | (1) "AIR:" - followed by no subparameters | (2) "SIG:" - followed trace height_value and "W="width_value | (3) "DIEL:"- for dielectric, followed by height_value and | "ER="dielectric_constant | (4) "PLANE:"- followed by only metal height_value | Height measurements reference that layer only (i.e., from | bottom of upper layer to top of lower layer, not centerlines). | | Other Notes: If a layer is a PLANE but also may have signals, it should | be listed as a PLANE layer. Simulation software must examine | its physical structure to properly evaluate its electrical | characteristics/behavior. |------------------------------------------------------------------------------ [Stackup] | a typical 6 layer PCB is shown |layer height W/ER AIR: | no entries following "AIR:" SIG: 1.4m W=6m | "[Unit Length] inch" so "W=6m" is 6 mil wide traces DIEL: 6m ER=4.8 | 6 mils between signal layer and power plane PLANE: 1.4m | "PLANE:" layers only have height_value DIEL: 18m ER=4.8 | 18 mils to inner signal layer SIG: 1.4m W=6m | trace height (often called "thickness") is 1.4 mils DIEL: 6m ER=4.8 SIG: 1.4m W=6m DIEL: 18m ER = 4.8 | spaces OK around "=" sign PLANE: 1.4m | dielectric constant (ER) is 4.8 throughout DIEL: 6m ER=4.8 SIG: 1.4m W=6m AIR: | |============================================================================== | Keyword: [Map Table] | Required: Yes | Description: Maps a physical component (reference designator) to the | generic component name used in the RAIL file, its | model file name, and a part name. Though it can contain | an exhaustive Bill Of Materials, it is not required to. | Usage Rules: The Map Table must consist of 4 columns, in this order: | ref_des, generic_name, model_filename, part_name. | The ref_des and generic_name must not exceed 10 characters | each. The model_filename should be less than 17 characters, | but this is not required. The part_name may be | up to 40 characters long, and contain spaces. Consequently, | everything after the first three columns up to the end of the | line, excluding comments, must be taken as the part_name. | | USE OF NA. "NA" can not be used in the ref_des column. "NA" | can be used in any of the other columns, as desired, but it | can not be used in the last three columns of any one line | at the same time. Use "NA" to ensure that there are four | columns of data in each line of the [Map Table]. | | The model_filename may reference any model format understood | by the EDA software in use (e.g., xx.ibs, xx.mod, xx.mdl). | The model_filename column may append one extra defining file | by using the "!" character, without spaces. (For example, | pld22v10.ibs!my_prog1.jed defines both the general model file | and the JEDEC file that defines pins as inputs, outputs, etc.) | | The same model_filename and/or generic_name can be associated | with multiple reference designators. Also, it is acceptable | to use the same ref_des more than one time, provided that the | generic name remains the same. This allows multiple component | models to be applied/tested in a given in a certain location | (ref_des). When this occurs, EDA software will use the model | in the first listing of a ref_des as the default model. | Other Notes: The formation of a Map Table must track a certain schematic | and physical layout, and modified as physical locations | change through back-annotation or other means. Reference | designators must match components called out by the netlist | that the RAIL file is applied to. When EDA software needs to | differentiate between devices (e.g., display waveforms at | various SRAM receivers) unique names should be generated by | appending the ref_des to the generic_name. | | The part_name is normally used to specify a particular | component when the model_filename contains more than one | component. When referencing an IBIS model that contains | multiple components, the part_name column should contain the | text string following the [Component Name] keyword in the | IBIS file. If the model_file contains only one component, | it is acceptable to place "NA" in that column. If any other | item in the table is not available (e.g., no IBIS file | exists), that entry must use the reserved word "NA". |------------------------------------------------------------------------------ [Map Table] |ref_des generic_name model_filename part_name |------- ------------ -------------- ------------ U1 CPU cpu23.ibs NA | 1 comp. in .ibs file U2 SRAM sram_lib.mod m4998fjnp | non-ibis model file U3 SRAM sram_lib.mod m4998fjnp | OK to use names twice U4 TAG_SRAM sram_lib.mod m4925tknm | same model file, dif. part U10 TSC 82434fx.ibs NA U13 TDP 82433fx.ibs NA U24 DRAM_Bfr 74f245.dml NA | U24 has part options | v----------- However, note that generic_name must remain consistent. U24 DRAM_Bfr nat_fast.ibs s74f245jk-a | alternate 245 for U24 U24 DRAM_Bfr nat_fast.ibs s74f1245jk | another one U24 DRAM_Bfr nat_fast.ibs s74f245ts-a | another package option U24 DRAM_Bfr 3v_logic.mdl idt163245nkj | a 3.3V option U48 CTL_PLD pld.ibs!a1.jed mc22v10a-2 | prog file append to .ibs J10 SIMM1 NA NA | just need gen_name here J11 SIMM2 NA NA J12 SIMM3 NA NA U25 DRAM 16m2sx32.ibs jf1644 nk8b | spaces OK in part_name D12 DRAM_Diode 1n4148j.spi NA | |============================================================================== | Keyword: [Multiboard] | Required: No | Description: Allows other PCB assemblies to be connected to the design / | assembly described by the current RAIL file. | Usage Rules: There must be three columns of data following this keyword: | (1) out_going ref_des, 10 characters max, lists the ref_des | of a connector/header that goes off-board. "Out_going" | is from the perspective of the board addressed by the | RAIL file, irrespective of the direction of signals. | (2) in_going ref_des, 10 characters max, lists the ref_des | of the mating connector/header on another module. | "In_going" is from the perspective of another board | described external to the RAIL file, irrespective of the | direction of signal travel. | (3) assembly_name, 50 characters max, could simply be the | RAIL file name of the associated assembly referenced by | the in_going ref_des. Other uses of this 50 character | field are EDA software dependent, and spaces are allowed. |============================================================================== [Multiboard] | out_going in_going assembly | ref_des ref_des name | --------- -------- ------------------------------------------------------- J22 P39 dramdimm.ral J18 J21 coastmod.ral coast2a.job | pointer to an artwork file J31 PA1 pci_card.ral J2 P19 isa_card.ral | |============================================================================== | Keyword: [Group Nets] | Required: No | Description: Used to define a group of nets that will have shared | attributes. | Usage Rules: The [Group Nets] keyword must be followed by the group_name | and a list of group_names and/or net_names in that net group. | Groups within groups are optional, but if they exist they must | be listed immediately following the group_name. Each group in | a group must have its own [Group Nets] keyword elsewhere in the | RAIL file, where it is listed as the group_name (followed | by its own set of group_names and/or net_names). There is no | specified limit to the number of group_names and/or net_names | in a group. Group_names and net_names are separated by white | space (space, tab, linefeed). All group_names and net_names | must be unique within a single RAIL file. | Other Notes: A RAIL file will normally contain numerous net "Groups". | Allowing the nesting of groups provides a simple | mechanism to partition nets. One example use might be | to group nets with similar timings, but break out a small | nested group with unique topology assumptions. | | A net, or group of nets, can be assigned to one group only. | This group can become a subgroup of another group to allow | for hierarchical net grouping; however, a subgroup can have | only one parent group. That is, a subgroup is like a net in | that it can be assigned to one group only. | A net follows the budgets assigned to the group it is a member | of, and for those budgets not defined, the budgets of the | hierarchical parent group will be followed. If a budget is | defined for both the group and the parent group, then the | group budget will be followed, and the parent group budget | ignored. |------------------------------------------------------------------------------ [Group Nets] group_name group_name1 group_nameN net_name1 net_name2 net_nameN | [Group Nets] Host_Bus | net group with one nested group listed first Host_Addr HD(63:0) HDP(7:0) BRDY# NA# ADS# | [Group Nets] Host_Addr | nested group is defined here HA(31:0) | [Group Nets] PCI_Bus | net group with two nested groups Arb_sigs Int_sigs AD(31:0) FRAME# TRDY# IRDY# STOP# | |============================================================================== | Keyword: [Group Parts] | Required: No | Description: Used to group components. | Usage Rules: The [Group Parts] keyword must be followed by the group_name | and a list of group_names and/or generic_names in that group. | Groups within groups are optional, but if they exist they must | be listed immediately following the group_name. Each nested | group must have its own [Group Parts] keyword in the RAIL | file, where the nested group is listed as the group_name | (followed by its own group_names and/or generic_names). | There is no specified limit to the number of group_names | and/or generic_names in a part group. Group_names and/or | generic_names are separated by white space (space, tab, | linefeed). All group_names and generic_names must be unique | within a single RAIL file. Generic_names are limited to a | maximum of 10 characters. |------------------------------------------------------------------------------ [Group Parts] DRAM_SIMMs | a group of components (generic_names), not nets SIMM1 SIMM2 SIMM3 SIMM4 | |============================================================================== | Keyword: [DC Nets] | Required: No | Description: Used to define DC voltages of various net_names. | Usage Rules: [DC Nets] must be followed by two columns of data, | net_name and DC_voltage. NA is not allowed in either | column. For DC voltages, "+" should be used for positive | voltage, and "-" must be used for negative. If no sign | is stated, "+" is assumed. The DC_voltage is limited | to a maximum of 20 characters. |------------------------------------------------------------------------------ [DC Nets] |net_name DC_voltage 5V_Power +5V +3.3V 3.3V | DC Voltage = +3.3V, "+" is default V_tt 1.5V Neg_12v -12V | must use "-" sign GND 0V | |============================================================================== | Keyword: [Trace Char] | Required: Yes | Description: Defines the assumed targets for the PCB trace impedance | and velocity (description of electrical transmission line). | Sub-Params: Zo (Characteristic Impedance, ohms), Td (Propagation delay | per [Unit Length], in seconds). Only Zo and Td values | appear in the file, the strings "Zo" and "Td" are not listed. | Usage Rules: At least one Zo-Td pair must be listed following [Trace Char] | after the word "Default". The Zo-Td pair values must be | listed in the following order: Zo_typ, Zo_min, Zo_max, | Td_typ, Td_min, Td_max. A numerical value must be entered | for typical, but NA can be used for minimum and/or maximum | as desired. The first Zo-Td pair is considered the default | target for all nets in a RAIL file. | | Nets or net groups that have different trace characteristic | targets can be listed after the first (default) Zo-Td | pair by listing a net_name or group_name followed by another | Zo-Td pair. All Zo and Td values are limited to 10 | characters maximum. | | Other Notes: The values stated in [Trace Char] offer a clearer electrical | meaning to length quantities that might be listed in the | [Topology] section. When values are listed in the min/max | columns, the PCB artwork solution should be bounded by these | limits. If values are not listed in min/max, EDA software may | want to allow entry of unique fabrication tolerances and | intelligently test electrical constraints against those | limits. |------------------------------------------------------------------------------ [Trace Char] | due to "[Unit Length] inch" Td is in ps/inch if scaled by "p" |net/group_name Zo_typ Zo_min Zo_max Td_typ Td_min Td_max Default 70 NA 90 175p 150p 200p | all nets/groups GTL_sigs 50 NA NA 140p NA NA | over-ride default | for group "GTL_sigs" | |============================================================================== | Keyword: [Topology] | Required: No | Description: Used to express topological information of nets or net groups. | Usage Rules: The [Topology] keyword must be followed by at most one | group_name or net_name to which the topology applies. | Topologies are described with a simple SPICE-like syntax, | consisting of the following two-node primitives: | | Rxxx node1 node2 resistor_value | for resistors | Lxxx node1 node2 inductance_value | for inductors | Cxxx node1 node2 capacitance_value | for capacitors | Dxxx anode_node cathode_node generic_name | for diodes | Txxx node1 node2 len_typ len_min len_max | for traces | Vxxx pos_node neg_node DC_voltage | voltage source | | Node names can be either generic_names (e.g., P6), defined [DC | Nets], or invented nodes (e.g., trace "tee" points such as | "node_tee1"). | | When using the Vxxx elements, one of the nodes must | be a stable DC reference (such as GND). | | The "T" or "Trace" element nodes must be followed by three | parameters. These will provide the typical, minimum, and | maximum trace lengths, when defined. When lengths | are undefined, it is acceptable to use "NA" in any or all | of the length parameters. Alphabetic variables can also be | used in the length columns in order to express relationships | between trace segments (e.g., stub matching). The same | variable can be used in more than one [Topology] section | in order to express trace length relationships across nets | or net groups (i.e., variables are global to all [Topology] | sections). It is also allowed to include addition or | subtraction of other alphabetic variables or physical | lengths in any length parameter (e.g., stub-3+branch). | When addition/subtraction is used, it must be "close | concatenated" (i.e., no spaces) with variables and/or values. | | Trace parameter's len_xxx syntax should be less than 8 | characters (scaled assuming the previously defined [Unit | Length]), but this is not required. All other Topology | syntax words are limited to 20 characters max, except for | generic_names and Zo values which are limited to 10 | characters. | | When it is desired to specify a particular impedance at the | trace segment or stub level, it is acceptable to add three | impedance (Zo) parameters. If this option is used, three | entries must be used for Zo_typ, Zo_min, Zo_max in that order. | "NA" can be used for min, max, or both. Consequently Txxx | element lines can have either 6 or 9 columns. | | If a generic_name(node) contains more than one connection, | then the generic_name will be appended by an "instance | designator". This designator is appended immediately following | the generic_name with an exclamation mark. The instance | designator can only be either a pin number. (E.g., "DRAM1!34" | means pin thirty four of the component with the generic_name of | "DRAM1".) The pin number can be numeric or alphanumeric | and must not exceed five characters. This allows the generic | name with an instance designator to be up to 16 characters in | length. | | Other Notes: An electrical description of the T elements can be derived | by referencing the [Trace Char] keyword and applying the | lengths. If a diode pack is used on the end of a net, the | [Topology] can simply route up to the device on a Trace | element and stop without using a Dxxx element. Dxxx | elements are primarily provided to allow topologies with | diodes intermediate to the path. | | It is important to note that when "NA" is used in the | Txxx element length parameters, that simply means that | a length constraint is "not available". It does not mean | that any length is acceptable. | | Note that if a net or group of nets has guidelines under multiple | keywords the quantities expressed apply in the following order. | [Clock] and [Clock Skew] have the highest precedence. They are | followed by [Edge Sens], [Budgets], and [Topology]. | | Value assignments are made in inverse order of precedence. That | means a higher precedence key words always over-ride lower | precedence ones. This is true even when a higher precedence | assignment is less constraining then a lower precedence assignment. | | In such cases, the lower precedence assignment should be treated | as a suggested implementation or starting point to derive a layout | that will quickly satisfy higher precedence assignment. | | The following list contains the relevant key words with the | highest precedent key word first. | 1) [Clock] | 2) [Clock Skew] | 3) [Edge Sens] | 4) [Budgets] | 5) [Topology] | | Note that if a net or group of nets has guidelines under both | [Budgets] and [Topology] the quantities expressed in [Budgets] | should take precedence. In these cases, the [Topology] is just | listed as a suggested implementation or starting point to | derive a layout that will quickly satisfy the stated [Budgets]. |------------------------------------------------------------------------------ | for lengths-> typ min max / Zo \ [Topology] GTL+_sigs | end-terminated daisy chain V_end1 to_v1 GND 1.5V | voltage source as Vxxx element R_end1 to_v1 end_stub1 68 T_end1 end_stub1 P6_1 NA NA 2 | max trace length is 2 inches T_proc P6_1 P6_2 NA 3.5 NA | keep this segment at least 3.5" T_chip P6_2 PMC NA NA NA | any length, constrained by [Budgets] T_end2 PMC end_stub2 NA NA 2 R_end2 end_stub2 V_tt 68 | this voltage from defined [DC Net] | [Topology] RAS_sigs | series res. with diode on end T_res PMC res_pack1 0.5 NA NA | an example of an "electrical net" R_ras res_pack1 res_pack2 33 | (through a resistor) T_todr res_pack2 SIMM1 NA NA 6.5 50 40 60 | lower Zo on this segment T_1_2 SIMM1 SIMM2 0.8 NA NA T_2_3 SIMM2 SIMM3 0.8 NA NA T_3_4 SIMM3 SIMM4 0.8 NA NA T_dio SIMM4 DRAM_Diode 0.8 NA 1.5 | to diode comp. model, no Dxxx needed | [Topology] MOE# | MOE# has matched stubs T_drv CLK_SRC TEE 8 NA NA T_b1 TEE TDP1 A A-.1 A+.1 | OK to use variable "A" and "+", "-" T_b2 TEE TDP2 A A-.1 A+.1 | match these stubs, within 0.2 inches | [Topology] RAS#(3:2) Tpr PMC R1 NA NA 1 R10 R1 R2 10 Tmain R2 Tee1 NA NA 7 Tt1s2_a Tee1 DRAM2!34 2 NA NA Tt1s2_b Tee1 DRAM2!44 2 NA NA Tt1t2 Tee1 Tee2 NA NA 1 Tt2s4_a Tee2 DRAM4!34 2 NA NA Tt2s4_b Tee2 DRAM4!44 2 NA NA | |============================================================================== | Keyword: [Priority] | Required: No |Description: Recommended priority of routing the net groups. |Usage Rules: The [Priority] keyword must be followed by an (unlimited) | list of group_names and/or net_names. |Other Notes: The [Priority] list is simply counsel from the design | originators. A typical design should have greater success | deriving artwork that meets all RAIL and mechanical | guidelines by routing the nets and groups in the order | specified in the [Priority] list. The [Priority] list will | normally list the more critical (difficult to meet guidelines) | nets first. However, as the route proceeds, out of | [Priority] rip-up/retry is acceptable provided new routes | are tested against the various guidelines listed elsewhere | in the RAIL file. |--------------------------------------------------------------------------- [Priority] Host_Bus MOE# L2_Cache Host_Clks Chipset DRAM PCI_Clocks PCI ISA | |============================================================================== | Keyword: [Budgets] | Required: No |Description: Used to express signal flight time budget and signal integrity | (overshoot, crosstalk) targets. |Usage Rules: [Budgets] must be followed by the group_name of the groups/nets | that follow. Electrical targets are listed for each | driver/receiver pair and net group line by line. Each | line consists of the following parameters, in this order, | and separated by white space: | CHAR | PARAMETER PURPOSE MAX | ---------------- --------------------- ---- | drvr generic_name driver, from [Map Table] 10 | - (dash) separate driver & receiver 1 | rcvr generic_name receiver, from [Map Table] 10 | {sig} here come signal net_names 5 | one net/group_name nets that apply no limit | edge designator R=rising, F=falling, B=both 1 | duration simulation high/low time 6 | min flight minimum flight time 6 | max flight maximum flight time 6 | overshoot_high maximum overshoot high 6 | overshoot_low maximum overshoot low 6 | intra-xtalk intra-bundle crosstalk 6 | inter-xtalk inter-bundle crosstalk 6 | | Each line must have eight entries following the group/net_name. | If a certain parameter is unspecified, an "NA" must be used. | However, NA can not be used in the edge designator column. | |Other Notes: The following is the RAIL definition for the various | parameters defined by the [Budgets] keyword. | | FLIGHT TIME - A "flight time", as defined by the RAIL | Specification, can only be determined by an analog simulation | of the signals driven/received on a given net. In addition, | a "reference net" must also be simulated. The goal of the | flight time simulation is to quantify the difference (in | nanoseconds) between the actual PCB environment, and the timing | reference circuit specified in the driver's datasheet. | | A reference net is developed by combining the net driver with | its reference circuit. This can be extracted automatically | by the simulator from the driver's IBIS 2.1 (or greater) file | using the parameters Vref, Rref, and Cref. | | The flight time is calculated by simulating the net's driver | into both the reference net and the actual PCB route in | parallel. The flight time calculation can be automated by | extracting IBIS parameters Vmeas (from the driver model) and | Vinl or Vinh (from the receiver model). | | MINIMUM FLIGHT TIME - The minimum flight time is normally | computed using the strongest (fastest) driver model. | Minimum flight time for a signal's rising edge begins when the | waveform at the driver's output on the reference net reaches | Vmeas and ends when the receiver's input passes Vinl with | increasing voltage for the first time. Similarly, minimum | flight time for a signal's falling edge begins when the | waveform at the driver's output on the reference net reaches | Vmeas and ends when the receiver's input passes Vinh with | decreasing voltage for the first time. | | MAXIMUM FLIGHT TIME - The maximum flight time is normally | computed using the weakest (slowest) driver model. | However, when nets exhibit a lot of ringing, the strongest | driver model may actually yield the maximum flight time. | Maximum flight time for a signal's rising edge begins when the | waveform at the driver's output on the reference net reaches | Vmeas and ends when the receiver's input passes Vinh with | increasing voltage for the last time. Similarly, | the flight time for a signal's falling edge begins when the | waveform at the driver's output on the reference net reaches | Vmeas and ends when the receiver's input passes Vinl with | decreasing voltage for the last time. | | More elaborate definitions of flight time exist and have been | used. The positive points of these definitions are that they | are fairly simple and conservative. The negatives are (1) some | timing "double counting" may exist at the receiver, and (2) | longer flight times may be reported that are actually not | problematic in system operation. Workarounds for these | negatives may be offered by simulation tools in the form of | greater user control (e.g., derate slopes, ringback tolerances, | overdrive rules,...) or built in tolerancing. | | Also note that, according to these definitions, negative flight | times could legitimately be calculated. | | The "duration" column lists the amount of time the signal | should be in either the high or low state during the | simulation in which the flight time is measured (i.e., | "duration" is half the period of the simulated waveform). | | MAXIMUM OVERSHOOT HIGH - This parameter specifies an absolute | maximum allowable overshoot that could be used as a net or class | design rule and should be applied to the receiver's input | after a transition to a higher voltage level. EDA software | should flag an error if the simulated voltage at the | receiver(s) becomes higher than the voltage stated. | | MAXIMUM OVERSHOOT LOW - This parameter specifies an absolute | maximum allowable overshoot that could be used as a net or class | design rule and should be applied to the receiver's input | after a transition to a lower voltage level. EDA software | should flag an error if the simulated voltage at the | receiver(s) becomes lower than the voltage stated. | | CROSSTALK - Crosstalk is defined as the deviation from a | net's quiescent DC level caused by signals switching on | neighboring traces/structures. | | INTRA-BUNDLE CROSSTALK - Maximum allowable crosstalk induced | onto a quiet net (high or low state) by all signals switching | within the same [Group Nets] keyword. | | INTER-BUNDLE CROSSTALK - Maximum allowable crosstalk induced | onto a quiet net (high or low state) by adjacent switching | signals from other net groups. | | It is recommended that [Budgets] measurements be made at the | component's pins to be consistent with datasheet assumptions. | |--------------------------------------------------------------------------- [Budgets] Host_bus | over- over- |drvr- rcvr {sig} net/group edge dur- min max shoot shoot intra inter |\gen_names/ ation flights high low xtalk xtalk P54C - TXC {sig} HA(31:18) B 30n 0.4n 4.2n 4.8 -1.4 500m 300m P54C - TXC {sig} HA(17:5) B 30n 0.4n 5.1n 4.8 -1.4 500m 300m SRAM - P54C {sig} HD(63:0) B 15n 0.5n 2.7n 5.0 -1.6 600m 300m P54C - TXC {sig} H_ADS# F NA 0 2.3n 4.8 -1.4 NA 200m TXC - SRAM {sig} CADS# R 15n 0 3.9n 5.6 -1.1 NA 200m | |============================================================================== | Keyword: [Clocks] | Required: No | Description: Lists clock assumptions (Frequency, Duty cycle, and Jitter) | and requirements for PCB delivery at receivers. | Sub-Params: Frequency, Duty_cycle, Jitter, High_time, Low_time, Rise_time, | Fall_time, Overshoot_high, Overshoot_low, Crosstalk | Usage Rules: The [Clocks] keyword must be followed by the group/net_name of | the clock(s) to be examined. Following the group/net_name is | a list of subparameters. Each subparameter must be | followed by an equal "=" sign and a value. | Other Notes: The RAIL file provides the clock driver's Frequency, | Duty cycle, and Jitter as inputs to the PCB analog simulation. | EDA software simulates the clock nets, and measures the other | subparameters at all receivers against the value stated. | Subparameter usage is detailed here: | | Frequency - max frequency clocks will run at | Duty_cycle - list larger percentage of cycle that might be high | or low (e.g., use "0.5" for 50%, "0.6" for 60/40) | Jitter - potential single cycle narrowing of clock period | High_time -receiver waveform must stay above Vinh for this time | Low_time - receiver waveform must stay below Vinl for this time | Rise_time - receiver waveform time from Vinl-Vinh must be less | Fall_time - receiver waveform time from Vinh-Vinl must be less | Overshoot_high - same definition as in [Budgets] | Overshoot_low - same definition as in [Budgets] | Crosstalk - maximum acceptable crosstalk from any other source | | It is recommended that [Clocks] measurements be made at the | component's pins to be consistent with datasheet assumptions. |------------------------------------------------------------------------------ [Clocks] HCLKs Frequency = 66MHz | \ Duty_cycle = 0.55 | Duty_cycle is 55/45 >-----> driver characteristics Jitter = 200ps | / High_time = 4.5ns | \ Low_time = 4.5ns | \ Rise_time = 2.2ns | \ Fall_time = 2.2ns | >------> simulate to verify these at receivers Overshoot_high = 4.8V | / Overshoot_low = -1.4V | / Crosstalk = 100mv | / |============================================================================== | Keyword: [Clock Skew] | Required: No | Description: Defines skews between clock groups or nets. | Usage Rules: The Clock Skew keyword is followed by any number of pairs | of clock groups or nets. Pairs are separated by a dash | "-". When the specific receiver in a group or on a net | must be specified, the syntax {part} is used in either | of the pair followed by a generic_name of 10 characters max. | Immediately following the clock pair is the edge | designator: "R" if the skew is to be measured on rising | edges, "F" if the skew is to be measured on falling edges, | or "B" if the skew is to be measured on both edges. | NA is not allowed in the edge designator column. | Min and max skew guidelines are then listed for each pair. | Values must be 8 characters or less. When values are not | specified, "NA" must be used to ensure that there is an | entry in both the min and max column. If the min column | is not "NA", then the second part of the clock pair must | lag the first part of the pair by the amounts specified. | | Other Notes: The method for measuring clock skew is not specified by RAIL, | and must be defined by the hardware design team. Three | options normally used (in order of increasing conservatism) | are listed below. EDA software may elect to make any, or all | of these options available to the user. Assume that skew is | to be determined between rcvr_1 and rcvr_2: | | OPTION 1. Skew measured is the time delta between rcvr_1's | (Vinh-Vinl)/2 to rcvr_2's (Vinh-Vinl)/2. | OPTION 2. Skew is the larger of (1) the quantity determined | in option 1, (2) rcvr_1 @ Vinl to rcvr_2 @ Vinl, | and (3) rcvr_1 @ Vinh to rcvr_2 @ Vinh. | OPTION 3. Skew is the larger of (1) rcvr_1 @ Vinl to rcvr_2 | @ Vinh, or (2) rcvr_1 @ Vinh to rcvr_2 @ Vinl. | | Also note that "NA" must be used in the minimum skew column | when there is no phase relationship implied in the clock | pair maximum skew. | | It is recommended that [Clock Skew] measurements be made at the | component's pins to be consistent with datasheet assumptions. |------------------------------------------------------------------------------ [Clock Skew] |group/net_name {part} generic_name - group/net_name {part} generic_name |rcvr_1 rcvr_2 edge min max HCLKs - HCLKs R NA 500ps | all nets within "HCLKs" Group HCLK0 - HCLK1 R NA 250ps | two specific nets have tighter skew HCLK0 {part} TSC - HCLK0 {part} CPU R NA 150ps | tighter still within net HCLK0 HCLKs - PCLKs R 100ps 500ps | PCLKs Group must lag HCLKs Group PCLKs - PCLKs R NA 2ns | all nets within "PCLKs" Group | |============================================================================== | Keyword: [Edge Sens] | Required: No | Description: Used to list net groups and/or nets with special | monotonicity or crosstalk requirements. | Usage Rules: [Edge Sens] is followed by five columns of data. Entries | must be placed in each column, and NA can be used in | columns four and five as appropriate. The columns are | 1) net_name - name of net, can also be a net group_name | 2) mono_r - "Y" means rising edge must be monotonic | (constantly increasing) through all receiver's | range Vinl to Vinh, "N" means the rising edge | need not be monotonic | 3) mono_f - "Y" means falling edge must be monotonic | (constantly decreasing) through all receiver's | range Vinh to Vinl, "N" means the falling edge | need not be monotonic | 4) intra_xtalk - same definition as under [Budgets] | 5) inter_xtalk - same definition as under [Budgets] | Both intra_xtalk and inter_xtalk values are limited to | 6 characters maximum. | | Other Notes: If a net's crosstalk limits are defined under both | [Budgets] and [Edge Sens], the value under [Edge Sens] | would take precedence. | | It may be advisable to verify monotonicity at the component's | die (i.e., "inside" the package model), but this is not | required. |------------------------------------------------------------------------------ [Edge Sens] |net_name mono_r mono_f intra_xtalk inter_xtalk TC N Y NA 400m IORC# Y Y 300m 300m RESET# Y N NA 300m |============================================================================== | Keyword: [End] | Required: Yes | Description: Defines the end of the .ral file. |------------------------------------------------------------------------------ [End]